From 55cdeae1bad5c9607fa33b03bfb4c8b2aa5533df Mon Sep 17 00:00:00 2001 From: 17792275749 <812100002@qq.com> Date: Wed, 2 Sep 2026 19:34:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(addUser):=20=E5=AE=B6=E5=BA=AD=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=BA=AB=E4=BB=BD=E8=AF=81=E6=9F=A5=E8=AF=A2=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E6=97=B6=E6=8F=90=E4=BA=A4=E5=89=8D=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B9=B6=E9=87=8D=E7=BD=AE=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- miniprogram/pages/addUser/addUser.ts | 45 ++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/miniprogram/pages/addUser/addUser.ts b/miniprogram/pages/addUser/addUser.ts index 955fcb7..1a3b2d2 100644 --- a/miniprogram/pages/addUser/addUser.ts +++ b/miniprogram/pages/addUser/addUser.ts @@ -54,6 +54,7 @@ Page({ employeeQueryResult: null as Record | null, rawUser: null as Record | null, isEdit: false, + queryError: false, }, onLoad(options: Record) { @@ -121,6 +122,7 @@ Page({ serverResult: null, form: { workNo: '', name: '', idCard: '', gender: '', age: '', height: '', weight: '', sex: 0 }, birthday: '', + queryError: false, }) }, @@ -200,6 +202,7 @@ Page({ 'form.weight': '', birthday: '', readonly: false, + queryError: false, }) }, @@ -222,6 +225,7 @@ Page({ 'form.weight': '', birthday: '', readonly: false, + queryError: false, }) if (idCard.length === 18) this.validateIdCard() }, @@ -241,9 +245,8 @@ Page({ }).then((res) => { const serverResult = res.result const { gender, age, sex, birthday } = parseIdCard(serverResult?.idCard || this.data.form.idCard) - this.setData({ 'form.gender': gender, 'form.age': age, 'form.sex': sex, birthday }) + this.setData({ 'form.gender': gender, 'form.age': age, 'form.sex': sex, birthday, queryError: false }) if (!serverResult) { - wx.showToast({ title: res.msg || '未查询到用户信息', icon: 'none' }) return } if (serverResult.flag === 101) { @@ -266,7 +269,11 @@ Page({ }) return } - }).catch(() => {}) + }).catch(() => { + // 查询报错:仍按身份证解析性别/年龄,标记需重新查询 + const { gender, age, sex, birthday } = parseIdCard(this.data.form.idCard) + this.setData({ 'form.gender': gender, 'form.age': age, 'form.sex': sex, birthday, queryError: true }) + }) }, /** 家庭用户:性别切换 */ @@ -302,6 +309,7 @@ Page({ serverResult: null, form: { workNo: '', name: '', idCard: '', gender: '', age: '', height: '', weight: '', sex: 0 }, birthday: '', + queryError: false, }) }, @@ -310,7 +318,7 @@ Page({ }, /** 提交用户 */ - onSubmit() { + async onSubmit() { const { name, idCard, gender, height, weight, sex } = this.data.form const { userType } = this.data const heightNum = parseFloat(height) @@ -344,6 +352,31 @@ Page({ } } + // 家庭用户新增:身份证查询报错 → 重新查询,成功后再提交 + let sexFinal = sex + let birthdayFinal = this.data.birthday + if (userType === 'family' && !editId && this.data.queryError) { + try { + const res = await getUserInfoByIdCard({ sn: targetSn, idCard, realname: name.trim() }) + const result = res.result + const parsed = parseIdCard(result?.idCard || idCard) + this.setData({ + serverResult: result, + 'form.gender': parsed.gender, + 'form.age': parsed.age, + 'form.sex': parsed.sex, + birthday: parsed.birthday, + queryError: false, + }) + sexFinal = parsed.sex + birthdayFinal = parsed.birthday + } catch (err: any) { + console.error('[addUser] 重新查询失败:', err) + wx.showToast({ title: err?.msg || err?.message || '查询失败,请重试', icon: 'none' }) + return + } + } + const userInfo = wx.getStorageSync('userInfo') as Record | null // 编辑:以详情接口返回为 base;新增:员工用查询结果、家庭用身份证查询结果 const baseSpread = editId @@ -360,8 +393,8 @@ Page({ scaleDeviceId: targetSn, realname: name.trim(), idCard: idCard || null, - sex, - birthday: this.data.birthday, + sex: sexFinal, + birthday: birthdayFinal, height: heightNum, weight: isNaN(weightNum) ? 0 : weightNum, mode: getApp().globalData.operationsEngineer ? 'ops' : 'normal',