Browse Source

fix:头像必填,用户类型固定,邮箱非必填

张旭伟 3 weeks ago
parent
commit
0657f9a9ee
2 changed files with 19 additions and 9 deletions
  1. 6 7
      src/view/register/index.vue
  2. 13 2
      src/view/user/edit.vue

+ 6 - 7
src/view/register/index.vue

@@ -38,12 +38,9 @@
       </van-form>
       <van-form ref="personInfoRef" v-show="state.active == 1" required="auto">
         <van-cell-group inset>
-          <van-field>
-            <template #label>
-              <span>头像</span>
-            </template>
+          <van-field name="avatar" label="头像" :rules="[{ required: true, message: '请上传头像' }]">
             <template #input>
-              <van-uploader  v-model="state.form.fileList" multiple :max-count="1" :before-read="beforeRead" :after-read="afterRead" />
+              <van-uploader v-model="state.form.fileList" multiple :max-count="1" :before-read="beforeRead" :after-read="afterRead" />
             </template>
           </van-field>
 
@@ -58,7 +55,7 @@
               </van-radio-group>
             </template>
           </van-field>
-          <van-field>
+          <van-field v-if="false">
             <template #label>
               <span>用户类型</span>
               <el-tooltip class="box-item" effect="dark" placement="top" append-to="body">
@@ -87,7 +84,7 @@
           <van-field v-model="state.form.phone" type="tel" label="手机号" placeholder="手机号"
             @blur="checkUserNamePhoneExists('phone')" :rules="[{ required: true, message: '请填写手机号' }]" />
           <van-field v-model="state.form.email" label="邮箱" placeholder="邮箱"
-            :rules="[{ required: true, message: '请填写邮箱' }]" />
+             />
           <van-field label="证件类型" :rules="[{ required: true, message: '请选择证件类型' }]">
             <template #input>
               <van-radio-group disabled v-model="state.form.idType" label="证件类型" placeholder="证件类型"
@@ -677,6 +674,8 @@ const afterRead = async (file: any) => {
           url: result.Data,
           isImage: true
         }]
+        // 触发表单验证,更新头像字段的验证状态
+        personInfoRef.value?.validate('avatar').catch(() => {});
         showNotify({
           type: 'success',
           message: '头像上传成功'

+ 13 - 2
src/view/user/edit.vue

@@ -16,7 +16,7 @@
     </header> -->
     <van-form ref="formRef" @submit="onSubmit" class="mt10" required="auto">
       <van-cell-group>
-        <van-cell class="flex" is-link size="normal" title="头像" @click="editAvatar">
+        <van-cell class="flex" is-link size="normal" title="头像" @click="editAvatar" required>
           <template #value>
             <!-- <img class="avatar" width="30" height="30" :src="userInfos.avatar" alt="" /> -->
             <van-image width="30px" height="30px" :src="userInfos.avatar" />
@@ -228,6 +228,7 @@ const uploadBaseFunc = (file) => {
       if (res) {
         if (res.data.Code == 200) {
           // 图片上传成功,直接修改
+          state.form.avatar = res?.data.Data || '' // 更新表单中的头像字段
           const [err]: ToResponse = await to(userApi.setAvatar({ fileUrl: res?.data.Data || '' }))
           if (err) return
           showNotify({
@@ -265,6 +266,16 @@ const initForm = async () => {
 const onSubmit = async () => {
   const [errValid] = await to(formRef.value.validate())
   if (errValid) return
+  
+  // 验证头像是否存在
+  if (!state.form.avatar && !userInfos.value.avatar) {
+    showNotify({
+      type: 'danger',
+      message: '请上传头像'
+    })
+    return
+  }
+  
   state.form.userId = state.form.id
   const params = JSON.parse(JSON.stringify(state.form))
   const [err]: ToResponse = await to(userApi.updateProfile(params))
@@ -337,4 +348,4 @@ onMounted(() => {
     width: 500px;
   }
 }
-</style>
+</style>