feat(addMember): 添加用户页改造,员工/家庭双tab + 员工编号查询表单

- 顶部胶囊式 tabs(员工/家庭用户)切换
- 员工 tab:员工编号输入 + 确认查询 → 回填用户信息 → 补充身高体重
- 家庭 tab:待实现
- 表单宽度调整为 100% 自适应

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
17792275749
2026-06-11 11:48:11 +08:00
co-authored by Claude Opus 4.7
parent fd93f37d72
commit 57950bd7c2
4 changed files with 340 additions and 183 deletions
+29
View File
@@ -42,6 +42,8 @@ interface UserInfoFromServer {
/** 表单数据模型 */
interface MemberForm {
/** 员工编号 */
workNo: string
/** 姓名 */
name: string
/** 身份证号 */
@@ -83,12 +85,15 @@ interface ExistingMember {
*/
Page({
data: {
/** tabs 当前选中:employee | family */
userType: 'employee' as 'employee' | 'family',
/** 编辑模式标记 */
isEdit: false,
/** 编辑时的用户 ID */
userId: '',
form: {
workNo: '',
name: '',
idCard: '',
gender: '',
@@ -122,6 +127,7 @@ Page({
if (!u) return
const parsed = this.parseIdCard(u.idCard ?? '')
this.setData({
'form.workNo': u.workNo ?? '',
'form.name': u.realname ?? '',
'form.idCard': u.idCard ?? '',
'form.gender': parsed.gender,
@@ -135,6 +141,26 @@ Page({
})
},
/** tabs 切换 */
onTabTap(e: WechatMiniprogram.TouchEvent) {
const tab = e.currentTarget.dataset.value as string
this.setData({ userType: tab as 'employee' | 'family' })
},
onWorkNoInput(e: WechatMiniprogram.Input) {
this.setData({ 'form.workNo': e.detail.value })
},
onQueryEmployee() {
const workNo = this.data.form.workNo.trim()
if (!workNo) {
wx.showToast({ title: '请填写员工编号', icon: 'none' })
return
}
// TODO: 调用员工编号查询接口
wx.showToast({ title: '员工编号查询功能待实现', icon: 'none' })
},
onNameInput(e: WechatMiniprogram.Input) {
const name = e.detail.value
this.setData({
@@ -292,6 +318,7 @@ Page({
this.setData({
showSelectDrawer: false,
selectedMember: member,
'form.workNo': member.workNo || '',
'form.name': member.name,
'form.idCard': member.idCard,
'form.gender': parsed.gender,
@@ -316,6 +343,7 @@ Page({
showConfirmModal: false,
readonly: false,
form: {
workNo: '',
name: '',
idCard: '',
gender: '',
@@ -372,6 +400,7 @@ Page({
parentUserId: userInfo?.userId ?? '',
sn: lefuService.deviceInfo?.serialNumber ?? '',
scaleDeviceId: lefuService.deviceInfo?.serialNumber ?? '',
workNo: this.data.form.workNo.trim(),
realname: name.trim(),
idCard,
sex: parsed.sex,