userInfo.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <el-form ref="userRef" :model="user" :rules="rules" label-width="80px">
  3. <el-form-item label="性别">
  4. <el-radio-group v-model="user.sex">
  5. <el-radio label="0">男</el-radio>
  6. <el-radio label="1">女</el-radio>
  7. </el-radio-group>
  8. </el-form-item>
  9. <el-form-item label="用户昵称" prop="nickName">
  10. <el-input v-model="user.nickName" maxlength="30" />
  11. </el-form-item>
  12. <el-form-item label="手机号码" prop="phonenumber">
  13. <!-- <el-input v-model="user.phonenumber" @input="phoneNumChange" maxlength="11" /> -->
  14. <el-input v-model="showPhone" @input="phoneNumChange" maxlength="11" />
  15. </el-form-item>
  16. <el-form-item label="邮箱" prop="email">
  17. <el-input v-model="user.email" maxlength="50" />
  18. </el-form-item>
  19. <el-form-item>
  20. <el-button type="primary" @click="submit" class="sure">保存</el-button>
  21. <el-button type="danger" @click="close" class="cancel">关闭</el-button>
  22. </el-form-item>
  23. </el-form>
  24. </template>
  25. <script setup>
  26. import {
  27. ref,
  28. computed,
  29. reactive,
  30. defineComponent,
  31. watch,
  32. toRaw,
  33. onMounted,
  34. onBeforeMount,
  35. defineExpose,
  36. onDeactivated,
  37. inject
  38. } from "vue";
  39. import { updateUserProfile,getUserProfile } from "@/api/system/user";
  40. import { encode, decode } from '@/utils/sm2util'
  41. const delMenuFn = inject("delMenuFn");
  42. const props = defineProps({
  43. user: {
  44. type: Object
  45. }
  46. });
  47. const { proxy } = getCurrentInstance();
  48. const clickPath = inject("clickPath");
  49. const rules = ref({
  50. nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
  51. email: [{ required: false, message: "邮箱地址不能为空", trigger: "blur" }, { type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
  52. phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
  53. });
  54. const showPhone = ref()
  55. function getUser() {
  56. getUserProfile().then(response => {
  57. showPhone.value = decode(response.data.phonenumber);
  58. showPhone.value = phoneNumber(showPhone.value)
  59. });
  60. };
  61. const emit = defineEmits(["chengeUser"]);
  62. /** 提交按钮 */
  63. function submit() {
  64. proxy.$refs.userRef.validate(valid => {
  65. if (valid) {
  66. let query=props.user
  67. query.phonenumber = encode(query.phonenumber+'')
  68. // console.log('props.user',query);
  69. updateUserProfile(query).then(response => {
  70. proxy.$modal.msgSuccess("修改成功");
  71. });
  72. }
  73. });
  74. };
  75. /** 关闭按钮 */
  76. function close() {
  77. // proxy.$tab.closePage();
  78. delMenuFn('个人中心')
  79. clickPath(null,{label: "首页",path: "/home"})
  80. };
  81. const phoneNumChange = (num)=>{
  82. emit('chengeUser',num)
  83. // console.log('num',num);
  84. }
  85. const phoneNumber = (num)=>{
  86. if(num){
  87. num = num+''
  88. // console.log('num',num);
  89. const str1 = num.substr(0,3)
  90. const str2 = num.substr(3,4)
  91. const str3 = num.substr(7,4)
  92. // console.log(str1,str2,str3);
  93. return str1+'****'+str3
  94. }
  95. }
  96. getUser();
  97. onMounted(()=>{
  98. console.log('showPhone',showPhone);
  99. })
  100. </script>
  101. <style lang="scss" scoped>
  102. :deep(.el-form-item--default .el-form-item__label){
  103. color: #505870 !important;
  104. font-weight: 400;
  105. font-size: 14px;
  106. }
  107. .el-button{
  108. width: 120px;
  109. }
  110. :deep(.sure.el-button){
  111. --el-button-bg-color:#2E6BC8
  112. }
  113. :deep(.cancel.el-button){
  114. --el-button-bg-color:#fff;
  115. color: #505870;
  116. --el-button-border-color:#C1CCE3;
  117. }
  118. </style>