From 3c62c31b5db2f7965b02c64870f303d975978769 Mon Sep 17 00:00:00 2001 From: 17792275749 <812100002@qq.com> Date: Mon, 17 Aug 2026 15:59:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(data):=20=E6=95=B0=E6=8D=AE=E9=A1=B5?= =?UTF-8?q?=E6=8E=A5=E5=85=A5=E9=80=89=E6=8B=A9=E6=88=90=E5=91=98=E6=8A=BD?= =?UTF-8?q?=E5=B1=89=EF=BC=8C=E7=AE=80=E5=8C=96=E6=8A=BD=E5=B1=89=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E5=B9=B6=E5=A4=8D=E7=94=A8=E7=A9=BA=E6=80=81=E7=BB=84?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../selectMemberDrawer.less | 9 - .../selectMemberDrawer/selectMemberDrawer.ts | 246 ++++++------------ .../selectMemberDrawer.wxml | 9 +- miniprogram/pages/data/data.json | 4 +- miniprogram/pages/data/data.ts | 45 +--- miniprogram/pages/data/data.wxml | 4 +- 6 files changed, 87 insertions(+), 230 deletions(-) diff --git a/miniprogram/components/selectMemberDrawer/selectMemberDrawer.less b/miniprogram/components/selectMemberDrawer/selectMemberDrawer.less index 976f2cd..ce22bae 100644 --- a/miniprogram/components/selectMemberDrawer/selectMemberDrawer.less +++ b/miniprogram/components/selectMemberDrawer/selectMemberDrawer.less @@ -36,15 +36,6 @@ } } -/* 拖拽把手 */ -.drawer-handle { - width: 72rpx; - height: 6rpx; - background-color: #77849E; - border-radius: 3rpx; - margin: 32rpx auto 40rpx; -} - /* 标题栏 */ .drawer-header { width: 100%; diff --git a/miniprogram/components/selectMemberDrawer/selectMemberDrawer.ts b/miniprogram/components/selectMemberDrawer/selectMemberDrawer.ts index aae634c..e54abb8 100644 --- a/miniprogram/components/selectMemberDrawer/selectMemberDrawer.ts +++ b/miniprogram/components/selectMemberDrawer/selectMemberDrawer.ts @@ -1,52 +1,21 @@ -import { get } from '../../utils/request/index' -import { lefuService } from '../../lefu/index' -import { calcAge } from '../../utils/common' - -/** GET /weighingScale/v3/select/addMembers/user 返回的单条结构 */ -interface AddMemberApiItem { - id: string - realname: string - sex_dictText: '男' | '女' - birthday: string - height: number - weight: number - idCard: string | null - avatar: string | null - dataType?: number - relationType?: number | string | null -} - -/** GET /weighingScale/v3/select/history/user 返回的单条结构 */ -interface HistoryApiItem { - id: string - userId: string - realname: string - sex: number - height: number - birthday: string - avatar: string | null - relationType: number | string | null - dataType?: number -} - /** 抽屉内部用户项(含回填所需全量字段) */ interface ExistingMember { - id: string - name: string - gender: '男' | '女' - age: number - height: number - weight: number - idCard: string - avatar?: string - selected?: boolean - /** history 模式额外携带,供页面构建 userInfo */ - userId?: string - sex?: number - birthday?: string - relationType?: number | string | null - /** 0=员工 1=家庭成员 */ - dataType?: number + id: string + name: string + gender: '男' | '女' + age: number + height: number + weight: number + idCard: string + avatar?: string + selected?: boolean + /** history 模式额外携带,供页面构建 userInfo */ + userId?: string + sex?: number + birthday?: string + relationType?: number | string | null + /** 0=员工 1=家庭成员 */ + dataType?: number } /** @@ -55,136 +24,71 @@ interface ExistingMember { * Events: close(关闭), select(选中用户,携带 ExistingMember) */ Component({ - properties: { - /** 是否显示抽屉 */ - show: { - type: Boolean, - value: false - }, - /** 数据来源模式:addMember=新增用户选择 / history=历史数据切换用户 */ - source: { - type: String, - value: 'addMember' - }, - /** 需要排除的用户 ID(history 模式下排除当前查看的用户) */ - excludeUserId: { - type: String, - value: '' - } - }, - - data: { - /** 控制 wx:if,DOM 是否存在 */ - innerShow: false, - /** 控制 --visible 类,触发 CSS transition */ - animVisible: false, - /** 用户列表(组件内部拉取) */ - members: [] as ExistingMember[] - }, - - observers: { - /** - * 监听外部 show 变化: - * 打开时先拉数据再展示抽屉;关闭时移除动画类后移除 DOM - */ - show(val: boolean) { - if (val) { - this._fetchMembers() - this.setData({ innerShow: true }) - setTimeout(() => { - this.setData({ animVisible: true }) - }, 20) - } else { - this.setData({ animVisible: false }) - setTimeout(() => { - this.setData({ innerShow: false }) - }, 300) - } - } - }, - - methods: { - /** 调接口获取可选用户列表,根据 source 调不同接口 */ - _fetchMembers() { - const userInfo = wx.getStorageSync('userInfo') as { userId?: string } | null - const userId = userInfo?.userId ?? '' - - wx.showLoading({ title: '加载中...', mask: true }) - - if (this.properties.source === 'history') { - const params: Record = { userId } - if (this.properties.excludeUserId) { - params.userIdExclude = this.properties.excludeUserId + properties: { + /** 是否显示抽屉 */ + show: { + type: Boolean, + value: false + }, + /** 数据来源模式:addMember=新增用户选择 / history=历史数据切换用户 */ + source: { + type: String, + value: 'addMember' + }, + /** 需要排除的用户 ID(history 模式下排除当前查看的用户) */ + excludeUserId: { + type: String, + value: '' } - get('weighingScale/v3/select/history/user', params, { loading: false }) - .then((res: any) => { - const members: ExistingMember[] = (res.result ?? []).map((item: HistoryApiItem) => ({ - id: item.id, - name: item.realname, - gender: item.sex === 1 ? '男' : '女', - age: calcAge(item.birthday), - height: item.height, - weight: 0, - idCard: '', - avatar: item.avatar ?? '', - userId: item.userId, - sex: item.sex, - birthday: item.birthday, - relationType: item.relationType, - dataType: item.dataType, - })) - this.setData({ members }) - }) - .catch(() => { - wx.showToast({ title: '加载失败', icon: 'none' }) - }) - .finally(() => { - wx.hideLoading() - }) - } else { - const sn = lefuService.deviceInfo?.serialNumber ?? '' - get('weighingScale/v5/select/addMembers/user', { userId, sn }, { loading: false }) - .then((res: any) => { - const members: ExistingMember[] = (res.result ?? []).map((item: AddMemberApiItem) => ({ - id: item.id, - name: item.realname, - gender: item.sex_dictText, - age: calcAge(item.birthday), - height: item.height, - weight: item.weight, - idCard: item.idCard ?? '', - avatar: item.avatar ?? '', - relationType: item.relationType, - dataType: item.dataType, - })) - this.setData({ members }) - }) - .catch(() => { - wx.showToast({ title: '加载失败', icon: 'none' }) - }) - .finally(() => { - wx.hideLoading() - }) - } }, - /** 点击遮罩关闭 */ - onTapMask() { - this.triggerEvent('close') + data: { + /** 控制 wx:if,DOM 是否存在 */ + innerShow: false, + /** 控制 --visible 类,触发 CSS transition */ + animVisible: false, + /** 用户列表(组件内部拉取) */ + members: [] as ExistingMember[] }, - /** 点击关闭按钮 */ - onTapClose() { - this.triggerEvent('close') + observers: { + /** + * 监听外部 show 变化: + * 打开时先拉数据再展示抽屉;关闭时移除动画类后移除 DOM + */ + show(val: boolean) { + if (val) { + this.setData({innerShow: true}) + setTimeout(() => { + this.setData({animVisible: true}) + }, 20) + } else { + this.setData({animVisible: false}) + setTimeout(() => { + this.setData({innerShow: false}) + }, 300) + } + } }, - /** - * 点击用户行,触发 select 事件 - * @param e 携带 data-member 的点击事件 - */ - onTapMember(e: WechatMiniprogram.TouchEvent) { - const member = e.currentTarget.dataset.member as ExistingMember - this.triggerEvent('select', member) + methods: { + /** 点击遮罩关闭 */ + onTapMask() { + this.triggerEvent('close') + }, + + /** 点击关闭按钮 */ + onTapClose() { + this.triggerEvent('close') + }, + + /** + * 点击用户行,触发 select 事件 + * @param e 携带 data-member 的点击事件 + */ + onTapMember(e: WechatMiniprogram.TouchEvent) { + const member = e.currentTarget.dataset.member as ExistingMember + this.triggerEvent('select', member) + } } - } }) diff --git a/miniprogram/components/selectMemberDrawer/selectMemberDrawer.wxml b/miniprogram/components/selectMemberDrawer/selectMemberDrawer.wxml index cfe1365..13594ee 100644 --- a/miniprogram/components/selectMemberDrawer/selectMemberDrawer.wxml +++ b/miniprogram/components/selectMemberDrawer/selectMemberDrawer.wxml @@ -5,10 +5,6 @@ - - - - 选择已有用户 @@ -61,10 +57,7 @@ - - - 暂无可选用户 - + diff --git a/miniprogram/pages/data/data.json b/miniprogram/pages/data/data.json index 2a8eb39..f6251ba 100644 --- a/miniprogram/pages/data/data.json +++ b/miniprogram/pages/data/data.json @@ -1,5 +1,7 @@ { - "usingComponents": {}, + "usingComponents": { + "select-member-drawer": "/components/selectMemberDrawer/selectMemberDrawer" + }, "navigationBarTitleText": "历史数据", "navigationBarTextStyle": "black", "navigationBarBackgroundColor": "#FFFFFF" diff --git a/miniprogram/pages/data/data.ts b/miniprogram/pages/data/data.ts index 00b3760..c281326 100644 --- a/miniprogram/pages/data/data.ts +++ b/miniprogram/pages/data/data.ts @@ -5,7 +5,7 @@ Page({ * 页面的初始数据 */ data: { - + showSelectDrawer: false, }, /** @@ -15,13 +15,6 @@ Page({ }, - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady() { - - }, - /** * 生命周期函数--监听页面显示 */ @@ -29,38 +22,12 @@ Page({ }, - /** - * 生命周期函数--监听页面隐藏 - */ - onHide() { - + onTapSwitchMember() { + this.setData({ showSelectDrawer: true }) }, - /** - * 生命周期函数--监听页面卸载 - */ - onUnload() { - + /** 抽屉关闭 */ + onCloseDrawer() { + this.setData({ showSelectDrawer: false }) }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh() { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom() { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage() { - - } }) \ No newline at end of file diff --git a/miniprogram/pages/data/data.wxml b/miniprogram/pages/data/data.wxml index 46a123d..7f7c50d 100644 --- a/miniprogram/pages/data/data.wxml +++ b/miniprogram/pages/data/data.wxml @@ -83,10 +83,10 @@ - +/>