diff --git a/src/views/team/athlete/index.vue b/src/views/team/athlete/index.vue index 3e85f46..463e656 100644 --- a/src/views/team/athlete/index.vue +++ b/src/views/team/athlete/index.vue @@ -218,6 +218,26 @@ const formData = ref(getDefaultFormData()) // 证件识别类型:idcard-身份证,passport-护照, household-户口本 const ocrType = ref('idcard') +/** + * 解析OCR返回的性别字段,统一转换为数字格式 + * 约定:0 = 男,1 = 女 + * 支持多种格式:男、男性、M、Male、m、male、女、女性、F、Female、f、female + */ +const parseOcrGender = (genderStr) => { + if (!genderStr || typeof genderStr !== 'string') return ''; + const g = genderStr.trim().toLowerCase(); + // 匹配男性:男、男性、m、male + if (g === '男' || g === '男性' || g === 'm' || g === 'male' || g === 'man' || g === 'men') { + return 0; + } + // 匹配女性:女、女性、f、female、woman、women + if (g === '女' || g === '女性' || g === 'f' || g === 'female' || g === 'woman' || g === 'women') { + return 1; + } + // 无法识别,返回空字符串 + return ''; +}; + const initParam = ref({ personType: 1, refresh: true, @@ -697,18 +717,18 @@ const handleAvatarSuccess = async (response, formData.value.idCardImageUrl = imageUrl; if (ocrType.value === 'household') { formData.value.name = data.name || ''; - formData.value.gender = data.gender === '男' ? 0 : 1; + formData.value.gender = parseOcrGender(data.gender); formData.value.idCardNumber = data.idCardNumber || ''; formData.value.birthDate = data.birthDate || ''; } else if (ocrType.value === 'passport') { formData.value.name = data.name; formData.value.passportNumber = data.passportNumber; - formData.value.gender = data.gender === 'Male' ? 0 : 1; + formData.value.gender = parseOcrGender(data.gender); formData.value.birthDate = data.birthDateYmd; } else { formData.value.name = data.name; formData.value.idCardNumber = data.idCardNumber; - formData.value.gender = data.gender === '男' ? 0 : 1; + formData.value.gender = parseOcrGender(data.gender); formData.value.birthDate = data.birthDate || ''; } } else { diff --git a/src/views/team/trainer/index1.vue b/src/views/team/trainer/index1.vue index fb472f7..b612223 100644 --- a/src/views/team/trainer/index1.vue +++ b/src/views/team/trainer/index1.vue @@ -128,6 +128,26 @@ const formData = ref(getDefaultFormData()) // 证件识别类型:idcard-身份证,passport-护照 const ocrType = ref('idcard') +/** + * 解析OCR返回的性别字段,统一转换为数字格式 + * 约定:0 = 男,1 = 女 + * 支持多种格式:男、男性、M、Male、m、male、女、女性、F、Female、f、female + */ +const parseOcrGender = (genderStr) => { + if (!genderStr || typeof genderStr !== 'string') return 0; + const g = genderStr.trim().toLowerCase(); + // 匹配男性:男、男性、m、male + if (g === '男' || g === '男性' || g === 'm' || g === 'male' || g === 'man' || g === 'men') { + return 0; + } + // 匹配女性:女、女性、f、female、woman、women + if (g === '女' || g === '女性' || g === 'f' || g === 'female' || g === 'woman' || g === 'women') { + return 1; + } + // 无法识别,返回默认0(男) + return 0; +}; + const formRules = ref({ name: [ { required: true, message: '请输入教练姓名', trigger: 'blur' } @@ -211,13 +231,13 @@ const handleAvatarSuccess = async (response, if (ocrType.value === 'passport') { formData.value.name = res.data.name formData.value.idCardNumber = res.data.passportNumber - formData.value.gender = res.data.gender == 'Male' ? 0 : 1 + formData.value.gender = parseOcrGender(res.data.gender) formData.value.idCardImageUrl = imageUrl formData.value.birthDate = res.data.issueDateYmd } else { formData.value.name = res.data.name formData.value.idCardNumber = res.data.idCardNumber - formData.value.gender = res.data.gender == '男' ? 0 : 1 + formData.value.gender = parseOcrGender(res.data.gender) formData.value.idCardImageUrl = imageUrl formData.value.birthDate = res.data.birthDate }