From bd29a5aff3f7b86b2bdbfc3ab18bfcd0dc3bf2f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=A2=93=E5=BD=AD?= Date: Mon, 13 Jul 2026 14:25:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=A7=E5=88=AB=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- subpackages/mine/auth/auth.js | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/subpackages/mine/auth/auth.js b/subpackages/mine/auth/auth.js index a5d507a..2dbe404 100644 --- a/subpackages/mine/auth/auth.js +++ b/subpackages/mine/auth/auth.js @@ -2,6 +2,26 @@ const auth = require('../../../utils/auth'); 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); @@ -206,7 +226,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) || '', @@ -221,7 +241,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) || '', @@ -239,7 +259,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) || '',