性别识别

This commit is contained in:
马梓彭 2026-07-13 14:26:13 +08:00
parent cbff1eea80
commit 95e5ff73b8
2 changed files with 45 additions and 5 deletions

View File

@ -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 {

View File

@ -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
}