Quellcode durchsuchen

认证状态下禁用性别

yuanmingze vor 1 Monat
Ursprung
Commit
7ee324ddd2

+ 5 - 1
src/pages-mine/personal-card/components/UserInfoCard.vue

@@ -18,7 +18,7 @@
             type="text"
             align-right
             placeholder="请选择性别"
-            suffix-icon="down"
+            :suffix-icon="disabled ? '' : 'down'"
             @click="showPicker('gender')"
           />
         </wd-form-item>
@@ -192,6 +192,8 @@ const areaLabel = computed<string>({
 })
 
 const showPicker = (type: PickerType): void => {
+  if (type === 'gender' && props.disabled) return
+
   const columns =
     type === 'gender'
       ? props.genderColumns
@@ -212,6 +214,8 @@ const showPicker = (type: PickerType): void => {
 }
 
 const pickerConfirm = (event: PickerConfirmEvent): void => {
+  if (pickerType.value === 'gender' && props.disabled) return
+
   const item = event.selectedItems[0] as DictItem | undefined
   if (!item) return
 

+ 19 - 8
src/pages-mine/personal-card/index.vue

@@ -3,7 +3,7 @@
     <UserInfoCard
       v-if="personalBusinessCardInfo"
       v-model="personalBusinessCardInfo"
-      :disabled="disabled"
+      :disabled="identityLocked"
       :gender-columns="genderColumns"
       :degree-columns="degreeColumns"
       :major-columns="majorColumns"
@@ -14,7 +14,7 @@
     <ProfessionalSkillCard
       v-if="personalBusinessCardInfo"
       v-model="personalBusinessCardInfo"
-      :disabled="disabled"
+      :disabled="currentUserInfo?.faceAuthStatus ?? false"
     />
 
     <view v-if="personalBusinessCardInfo" class="save-section">
@@ -55,6 +55,13 @@ const userStore = useUserStore()
 const currentUserInfo = computed(() => userStore.currentUserInfo)
 
 const personalBusinessCardInfo = ref<PersonalBusinessCardResponse>()
+const originalIdentity =
+  ref<Pick<PersonalBusinessCardResponse, 'realname' | 'idCardNumber' | 'gender'>>()
+const identityLocked = computed(
+  () =>
+    currentUserInfo.value?.faceAuthStatus === true ||
+    personalBusinessCardInfo.value?.isLivenessAuth === 1
+)
 
 const genderColumns = ref<DictItem[]>([])
 const degreeColumns = ref<DictItem[]>([])
@@ -64,10 +71,7 @@ onLoad(() => {
   initPage()
 })
 
-const disabled = ref(false)
-
 async function initPage() {
-  disabled.value = currentUserInfo.value?.faceAuthStatus ?? false
   await Promise.all([getDict(), getPersonalBusinessCardInfo()])
 }
 
@@ -79,6 +83,12 @@ async function getPersonalBusinessCardInfo() {
   const res = await getPersonalBusinessCardApi(userId)
   const data = res.data
 
+  originalIdentity.value = {
+    realname: data.realname,
+    idCardNumber: data.idCardNumber,
+    gender: data.gender,
+  }
+
   personalBusinessCardInfo.value = {
     ...data,
     qualificationsUrl: Array.isArray(data.qualificationsUrl) ? data.qualificationsUrl : [],
@@ -106,14 +116,15 @@ function buildSavePayload(): SavePersonalBusinessCardRequest | null {
   if (!info) return null
 
   const filingList = Array.isArray(info.filingList) ? info.filingList : []
+  const identity = identityLocked.value && originalIdentity.value ? originalIdentity.value : info
 
   return {
     degree: info.degree ?? null,
-    gender: info.gender ?? null,
-    idCardNumber: info.idCardNumber ?? null,
+    gender: identity.gender ?? null,
+    idCardNumber: identity.idCardNumber ?? null,
     qualificationRecordNumber: info.qualificationRecordNumber ?? null,
     qualificationsUrl: Array.isArray(info.qualificationsUrl) ? info.qualificationsUrl : [],
-    realname: info.realname ?? null,
+    realname: identity.realname ?? null,
     userId: info.userId,
     majorCategory: normalizeValue(info.majorCategory),
     province: info.province ?? '',