userInfo.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <template>
  2. <el-form ref="userRef" :model="userForm" :rules="rules" label-width="80px">
  3. <el-form-item label="用户昵称" prop="nickName">
  4. <el-input v-model="userForm.nickName" maxlength="30" />
  5. </el-form-item>
  6. <el-form-item label="手机号码" prop="phonenumber">
  7. <el-input v-model="userForm.phonenumber" maxlength="11" />
  8. </el-form-item>
  9. <el-form-item label="邮箱" prop="email">
  10. <el-input v-model="userForm.email" maxlength="50" />
  11. </el-form-item>
  12. <el-form-item label="性别">
  13. <el-radio-group v-model="userForm.sex">
  14. <el-radio label="0">男</el-radio>
  15. <el-radio label="1">女</el-radio>
  16. </el-radio-group>
  17. </el-form-item>
  18. <el-form-item>
  19. <el-button type="primary" @click="submit">保存</el-button>
  20. <el-button type="danger" @click="close">关闭</el-button>
  21. </el-form-item>
  22. </el-form>
  23. </template>
  24. <script setup lang="ts">
  25. import { updateUserProfile } from '@/api/system/user';
  26. const props = defineProps({
  27. user: {
  28. type: Object as PropType<any>,
  29. required: true
  30. }
  31. });
  32. const userForm = computed(() => props.user);
  33. const { proxy } = getCurrentInstance() as ComponentInternalInstance;
  34. const userRef = ref<ElFormInstance>();
  35. const rules = ref<ElFormRules>({
  36. nickName: [{ required: true, message: '用户昵称不能为空', trigger: 'blur' }],
  37. email: [
  38. { required: true, message: '邮箱地址不能为空', trigger: 'blur' },
  39. {
  40. type: 'email',
  41. message: '请输入正确的邮箱地址',
  42. trigger: ['blur', 'change']
  43. }
  44. ],
  45. phonenumber: [
  46. {
  47. required: true,
  48. message: '手机号码不能为空',
  49. trigger: 'blur'
  50. },
  51. { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: '请输入正确的手机号码', trigger: 'blur' }
  52. ]
  53. });
  54. /** 提交按钮 */
  55. const submit = () => {
  56. userRef.value?.validate(async (valid: boolean) => {
  57. if (valid) {
  58. await updateUserProfile(props.user);
  59. proxy?.$modal.msgSuccess('修改成功');
  60. }
  61. });
  62. };
  63. /** 关闭按钮 */
  64. const close = () => {
  65. proxy?.$tab.closePage();
  66. };
  67. </script>