diff --git a/subpackages/mine/auth/auth.js b/subpackages/mine/auth/auth.js index 85263a0..e145e72 100644 --- a/subpackages/mine/auth/auth.js +++ b/subpackages/mine/auth/auth.js @@ -3,6 +3,26 @@ const { ROLE, getProfileRole } = require('../../../utils/role'); const PHONE_RE = /^1[3456789]\d{9}$/; +/** + * 解析OCR返回的性别字段,统一转换为索引格式 + * 约定:0 = 男,1 = 女 + * 支持多种格式:男、男性、M、Male、m、male、女、女性、F、Female、f、female + */ +function parseOcrGender(genderStr) { + if (genderStr == null || genderStr === '') return 0; + const g = String(genderStr).trim().toLowerCase(); + // 匹配女性:女、女性、f、female、woman、women、1 + if (g === '女' || g === '女性' || g === 'f' || g === 'female' || g === 'woman' || g === 'women' || g === '1') { + return 1; + } + // 匹配男性:男、男性、m、male、man、men、0 + if (g === '男' || g === '男性' || g === 'm' || g === 'male' || g === 'man' || g === 'men' || g === '0') { + return 0; + } + // 无法识别,返回默认0(男) + return 0; +} + function normalizeAuthStatus(v) { if (v == null || v === '') return 0; const n = Number(v); @@ -210,7 +230,7 @@ Page({ wx.showToast({ title: ocr.message || '身份证识别失败', icon: 'none' }); return; } - const genderIndex = (ocr && (ocr.gender === '女' || ocr.gender === 'F' || ocr.gender === '1')) ? 1 : 0; + const genderIndex = parseOcrGender(ocr && ocr.gender); this.setData({ name: (ocr && ocr.name) || '', idCardNumber: (ocr && ocr.idCardNumber) || '', @@ -225,7 +245,7 @@ Page({ wx.showToast({ title: ocr.message || '护照识别失败', icon: 'none' }); return; } - const genderIndex = (ocr && (ocr.gender === '女' || ocr.gender === 'F' || ocr.gender === '1')) ? 1 : 0; + const genderIndex = parseOcrGender(ocr && ocr.gender); this.setData({ name: (ocr && ocr.name) || '', passportNumber: (ocr && ocr.passportNumber) || '', @@ -243,7 +263,7 @@ Page({ wx.showToast({ title: ocr.message || '户口本识别失败', icon: 'none' }); return; } - const genderIndex = (ocr && (ocr.gender === '女' || ocr.gender === 'F' || ocr.gender === '1')) ? 1 : 0; + const genderIndex = parseOcrGender(ocr && ocr.gender); this.setData({ name: (ocr && ocr.name) || '', idCardNumber: (ocr && ocr.idCardNumber) || '',