From 251d2411f235e23209d57173857e05b637729ce8 Mon Sep 17 00:00:00 2001 From: LiuHao <liuhaoai545@gmail.com> Date: 星期日, 02 四月 2023 01:01:56 +0800 Subject: [PATCH] refactor ts --- src/views/system/user/profile/userInfo.vue | 77 +++++++++++++++++++++----------------- 1 files changed, 42 insertions(+), 35 deletions(-) diff --git a/src/views/system/user/profile/userInfo.vue b/src/views/system/user/profile/userInfo.vue index 2d62c84..13cc29b 100644 --- a/src/views/system/user/profile/userInfo.vue +++ b/src/views/system/user/profile/userInfo.vue @@ -1,56 +1,63 @@ -<template> - <el-form ref="userRef" :model="user" :rules="rules" label-width="80px"> - <el-form-item label="鐢ㄦ埛鏄电О" prop="nickName"> - <el-input v-model="user.nickName" maxlength="30" /> - </el-form-item> - <el-form-item label="鎵嬫満鍙风爜" prop="phonenumber"> - <el-input v-model="user.phonenumber" maxlength="11" /> - </el-form-item> - <el-form-item label="閭" prop="email"> - <el-input v-model="user.email" maxlength="50" /> - </el-form-item> - <el-form-item label="鎬у埆"> - <el-radio-group v-model="user.sex"> - <el-radio label="0">鐢�</el-radio> - <el-radio label="1">濂�</el-radio> - </el-radio-group> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="submit">淇濆瓨</el-button> - <el-button type="danger" @click="close">鍏抽棴</el-button> - </el-form-item> - </el-form> -</template> - -<script setup> +<script setup lang="ts"> import { updateUserProfile } from "@/api/system/user"; +import { FormRules } from "element-plus"; +import { ComponentInternalInstance } from "vue"; +import { PropType } from "vue"; +import { ElForm } from "element-plus"; const props = defineProps({ user: { - type: Object + type: Object as PropType<any>, } }); +const userForm = computed(() => props.user); -const { proxy } = getCurrentInstance(); +const { proxy } = getCurrentInstance() as ComponentInternalInstance; -const rules = ref({ +const userRef = ref(ElForm); + +const rules = ref<FormRules>({ nickName: [{ required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }], email: [{ required: true, message: "閭鍦板潃涓嶈兘涓虹┖", trigger: "blur" }, { type: "email", message: "璇疯緭鍏ユ纭殑閭鍦板潃", trigger: ["blur", "change"] }], phonenumber: [{ required: true, message: "鎵嬫満鍙风爜涓嶈兘涓虹┖", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", trigger: "blur" }], }); + /** 鎻愪氦鎸夐挳 */ -function submit() { - proxy.$refs.userRef.validate(valid => { +const submit = () => { + userRef.value.validate(async (valid: boolean) => { if (valid) { - updateUserProfile(props.user).then(response => { - proxy.$modal.msgSuccess("淇敼鎴愬姛"); - }); + await updateUserProfile(props.user) + proxy?.$modal.msgSuccess("淇敼鎴愬姛"); } }); }; /** 鍏抽棴鎸夐挳 */ -function close() { - proxy.$tab.closePage(); +const close = () => { + proxy?.$tab.closePage(); }; </script> + +<template> + <el-form ref="userRef" :model="userForm" :rules="rules" label-width="80px"> + <el-form-item label="鐢ㄦ埛鏄电О" prop="nickName"> + <el-input v-model="userForm.nickName" maxlength="30" /> + </el-form-item> + <el-form-item label="鎵嬫満鍙风爜" prop="phonenumber"> + <el-input v-model="userForm.phonenumber" maxlength="11" /> + </el-form-item> + <el-form-item label="閭" prop="email"> + <el-input v-model="userForm.email" maxlength="50" /> + </el-form-item> + <el-form-item label="鎬у埆"> + <el-radio-group v-model="userForm.sex"> + <el-radio label="0">鐢�</el-radio> + <el-radio label="1">濂�</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="submit">淇濆瓨</el-button> + <el-button type="danger" @click="close">鍏抽棴</el-button> + </el-form-item> + </el-form> +</template> -- Gitblit v1.9.3