diff --git a/miniprogram/components/selectMemberDrawer/selectMemberDrawer.wxml b/miniprogram/components/selectMemberDrawer/selectMemberDrawer.wxml index 55d955e..d281a59 100644 --- a/miniprogram/components/selectMemberDrawer/selectMemberDrawer.wxml +++ b/miniprogram/components/selectMemberDrawer/selectMemberDrawer.wxml @@ -55,7 +55,7 @@ - + 暂无可选成员 diff --git a/miniprogram/images/data/noData.png b/miniprogram/images/data/noData.png new file mode 100644 index 0000000..9a7fab2 Binary files /dev/null and b/miniprogram/images/data/noData.png differ diff --git a/miniprogram/images/device/CF568_G.png b/miniprogram/images/device/CF568_G.png new file mode 100644 index 0000000..d4e3516 Binary files /dev/null and b/miniprogram/images/device/CF568_G.png differ diff --git a/miniprogram/images/device/CF577.png b/miniprogram/images/device/CF577.png new file mode 100644 index 0000000..128435b Binary files /dev/null and b/miniprogram/images/device/CF577.png differ diff --git a/miniprogram/images/device/CF636_G.png b/miniprogram/images/device/CF636_G.png new file mode 100644 index 0000000..f77d79f Binary files /dev/null and b/miniprogram/images/device/CF636_G.png differ diff --git a/miniprogram/images/device/YX-B4-568-BW.png b/miniprogram/images/device/YX-B4-568-BW.png new file mode 100644 index 0000000..d4e3516 Binary files /dev/null and b/miniprogram/images/device/YX-B4-568-BW.png differ diff --git a/miniprogram/images/device/YX-B8-636-BW.png b/miniprogram/images/device/YX-B8-636-BW.png new file mode 100644 index 0000000..f77d79f Binary files /dev/null and b/miniprogram/images/device/YX-B8-636-BW.png differ diff --git a/miniprogram/images/selectMemberDrawer/noData.png b/miniprogram/images/selectMemberDrawer/noData.png new file mode 100644 index 0000000..9a7fab2 Binary files /dev/null and b/miniprogram/images/selectMemberDrawer/noData.png differ diff --git a/miniprogram/lefu/service.ts b/miniprogram/lefu/service.ts index b2b3cb4..4d73db0 100644 --- a/miniprogram/lefu/service.ts +++ b/miniprogram/lefu/service.ts @@ -344,7 +344,7 @@ class LeFuService { } // ─── 成员同步 ───────────────────────────────── - syncMembersToDevice(members: DeviceMember[]): Promise { + syncMembersToDevice(members: DeviceMember[], onProgress?: (current: number, total: number) => void): Promise { return new Promise((resolve, reject) => { if (!this._activeProtocol) { reject(new Error('[LeFu] 设备未连接')); return } const mainUser = members.find(m => m.isSelf) @@ -368,6 +368,7 @@ class LeFuService { return } const member = members[index] + onProgress?.(index + 1, members.length) resetTimer() this._activeProtocol.dataSyncUserInfo( { diff --git a/miniprogram/pages/addMember/addMember.ts b/miniprogram/pages/addMember/addMember.ts index 3d0d3e7..7211558 100644 --- a/miniprogram/pages/addMember/addMember.ts +++ b/miniprogram/pages/addMember/addMember.ts @@ -36,14 +36,17 @@ interface IdCardParsed { birthday: string } -/** 从抽屉组件 select 事件接收的成员数据 */ +/** 从抽屉组件 select 事件接收的成员数据(完整 item) */ interface ExistingMember { + id: string name: string gender: '男' | '女' age: number height: number weight: number idCard: string + avatar?: string + [key: string]: any } /** @@ -66,6 +69,8 @@ Page({ weight: '' } as MemberForm, + /** 从抽屉选中的完整成员数据,提交时作为 base spread */ + selectedMember: null as ExistingMember | null, showSelectDrawer: false, }, @@ -146,19 +151,21 @@ Page({ }, onSelectMember(e: WechatMiniprogram.CustomEvent) { - const { name, gender, age, height, weight, idCard } = e.detail + const member = e.detail + const parsed = this.parseIdCard(member.idCard) this.setData({ showSelectDrawer: false, - 'form.name': name, - 'form.idCard': idCard, - 'form.gender': gender, - 'form.age': String(age), - 'form.height': String(height), - 'form.weight': String(weight), + selectedMember: member, + 'form.name': member.name, + 'form.idCard': member.idCard, + 'form.gender': parsed.gender, + 'form.age': parsed.age, + 'form.height': String(member.height), + 'form.weight': String(member.weight), }) }, -onCancel() { + onCancel() { wx.navigateBack() }, @@ -193,6 +200,7 @@ onCancel() { const connectDeviceInfoRaw = wx.getStorageSync('connectDeviceInfo') const payload: Record = { + ...(this.data.selectedMember ?? {}), parentUserId: userInfo?.userId ?? '', scaleDeviceId: lefuService.deviceInfo?.serialNumber ?? '', realname: name.trim(), diff --git a/miniprogram/pages/data/data.wxml b/miniprogram/pages/data/data.wxml index 1b9ef92..338b277 100644 --- a/miniprogram/pages/data/data.wxml +++ b/miniprogram/pages/data/data.wxml @@ -88,7 +88,7 @@ - + 暂无称重数据 diff --git a/miniprogram/pages/equipmentMember/equipmentMember.less b/miniprogram/pages/equipmentMember/equipmentMember.less index 1250de4..311a0c3 100644 --- a/miniprogram/pages/equipmentMember/equipmentMember.less +++ b/miniprogram/pages/equipmentMember/equipmentMember.less @@ -160,9 +160,12 @@ height: 90rpx; border-radius: 20rpx; margin-right: 24rpx; - box-sizing: border-box; - border: 3rpx solid #50A6FF; - background: var(--avatar-bg); + background-color: #1385FA; + color: #ffffff; + font-size: 36rpx; + font-weight: bold; + line-height: 90rpx; + text-align: center; } .member-info { diff --git a/miniprogram/pages/equipmentMember/equipmentMember.ts b/miniprogram/pages/equipmentMember/equipmentMember.ts index be8446f..c86d488 100644 --- a/miniprogram/pages/equipmentMember/equipmentMember.ts +++ b/miniprogram/pages/equipmentMember/equipmentMember.ts @@ -54,6 +54,8 @@ interface MemberDisplay { sex: number /** 周岁数值,供 lefu 层使用 */ age: number + /** 身份证号,下发设备时作为用户唯一标识 */ + idCard: string } /** 设备卡展示模型 */ @@ -82,7 +84,7 @@ const calcAge = (birthday: string): number => { } const toDeviceMember = (m: MemberDisplay): DeviceMember => ({ - id: m.id, + id: m.idCard, name: m.realname, gender: m.sex === 1 ? 1 : 0, age: m.age, @@ -92,8 +94,11 @@ const toDeviceMember = (m: MemberDisplay): DeviceMember => ({ const syncToDevice = (members: MemberDisplay[]): void => { const deviceMembers = members.map(toDeviceMember) - wx.showLoading({ title: '正在同步成员...', mask: true }) - lefuService.syncMembersToDevice(deviceMembers) + const total = deviceMembers.length + wx.showLoading({ title: `正在下发第1/${total}个用户...`, mask: true }) + lefuService.syncMembersToDevice(deviceMembers, (current, t) => { + wx.showLoading({ title: `正在下发第${current}/${t}个用户...`, mask: true }) + }) .then(() => { wx.hideLoading() wx.showToast({ title: '成员同步成功', icon: 'success' }) @@ -183,6 +188,7 @@ Page({ avatar: item.avatar, sex: item.sex, age, + idCard: item.idCard ?? '', } }) this.setData({ diff --git a/miniprogram/pages/equipmentMember/equipmentMember.wxml b/miniprogram/pages/equipmentMember/equipmentMember.wxml index 2e0d593..57124a7 100644 --- a/miniprogram/pages/equipmentMember/equipmentMember.wxml +++ b/miniprogram/pages/equipmentMember/equipmentMember.wxml @@ -37,8 +37,8 @@ - - + + {{ item.realname[0] }}