[AI Generated]: feat(*): 完善数据页切换成员、首页接口对接及我的页缓存信息展示
This commit is contained in:
@@ -54,7 +54,7 @@ const EMPTY_STATS: MeasureStatistics = {
|
||||
}
|
||||
|
||||
/** 从生日字符串(YYYY-MM-DD)计算周岁 */
|
||||
function calcAge(birthday: string): number {
|
||||
const calcAge = (birthday: string): number => {
|
||||
if (!birthday) return 0
|
||||
const [year, month, day] = birthday.split('-').map(Number)
|
||||
if (!year || !month || !day) return 0
|
||||
|
||||
@@ -68,7 +68,7 @@ interface DeviceCard {
|
||||
* 从生日字符串(YYYY-MM-DD)计算周岁
|
||||
* @param birthday 生日字符串
|
||||
*/
|
||||
function calcAge(birthday: string): number {
|
||||
const calcAge = (birthday: string): number => {
|
||||
if (!birthday) return 0
|
||||
const parts = birthday.split('-').map(Number)
|
||||
const [year, month, day] = parts
|
||||
@@ -81,26 +81,16 @@ function calcAge(birthday: string): number {
|
||||
return Math.max(0, age)
|
||||
}
|
||||
|
||||
/**
|
||||
* MemberDisplay → DeviceMember 转换,供 lefu 同步层使用
|
||||
* @param m 展示用成员
|
||||
*/
|
||||
function toDeviceMember(m: MemberDisplay): DeviceMember {
|
||||
return {
|
||||
id: m.id,
|
||||
name: m.realname,
|
||||
gender: m.sex === 1 ? 1 : 0,
|
||||
age: m.age,
|
||||
height: m.height,
|
||||
isSelf: m.relationType === 1,
|
||||
}
|
||||
}
|
||||
const toDeviceMember = (m: MemberDisplay): DeviceMember => ({
|
||||
id: m.id,
|
||||
name: m.realname,
|
||||
gender: m.sex === 1 ? 1 : 0,
|
||||
age: m.age,
|
||||
height: m.height,
|
||||
isSelf: m.relationType === 1,
|
||||
})
|
||||
|
||||
/**
|
||||
* 将成员列表全量同步到设备
|
||||
* @param members 展示用成员列表
|
||||
*/
|
||||
function syncToDevice(members: MemberDisplay[]): void {
|
||||
const syncToDevice = (members: MemberDisplay[]): void => {
|
||||
const deviceMembers = members.map(toDeviceMember)
|
||||
wx.showLoading({ title: '正在同步成员...', mask: true })
|
||||
lefuService.syncMembersToDevice(deviceMembers)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { get } from '../../utils/request/index'
|
||||
import { lefuService } from '../../lefu/index'
|
||||
|
||||
/** 设备信息 */
|
||||
interface DeviceInfo {
|
||||
@@ -49,7 +50,7 @@ interface StorageUserInfo {
|
||||
}
|
||||
|
||||
/** 将体重数字拆成整数 + 小数字符串 */
|
||||
function splitWeight(weight: number): { int: number; decimal: string } {
|
||||
const splitWeight = (weight: number): { int: number; decimal: string } => {
|
||||
const str = weight.toFixed(2)
|
||||
const [intPart, decPart] = str.split('.')
|
||||
return { int: Number(intPart), decimal: `.${decPart}` }
|
||||
@@ -66,9 +67,28 @@ Page({
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
this.setData({
|
||||
'device.connected': lefuService.isConnected,
|
||||
'device.name': lefuService.deviceInfo?.name ?? '智能体重秤',
|
||||
})
|
||||
lefuService.onDeviceInfo((info) => {
|
||||
this.setData({ 'device.name': info.name ?? '智能体重秤' })
|
||||
})
|
||||
lefuService.onDeviceConnect(() => {
|
||||
this.setData({ 'device.connected': true })
|
||||
})
|
||||
lefuService.onDisconnected(() => {
|
||||
this.setData({ 'device.connected': false })
|
||||
})
|
||||
this.loadData()
|
||||
},
|
||||
|
||||
onUnload() {
|
||||
lefuService.onDeviceConnect(() => {})
|
||||
lefuService.onDisconnected(() => {})
|
||||
lefuService.onDeviceInfo(() => {})
|
||||
},
|
||||
|
||||
onShareAppMessage(): WechatMiniprogram.Page.ICustomShareContent {
|
||||
return {
|
||||
title: '智能蓝牙秤',
|
||||
@@ -118,8 +138,8 @@ Page({
|
||||
wx.switchTab({ url: '/pages/data/data' })
|
||||
},
|
||||
|
||||
/** 切换设备 */
|
||||
/** 跳转设备列表页 */
|
||||
onTapSwitchDevice() {
|
||||
wx.showToast({ title: '切换设备', icon: 'none' })
|
||||
wx.switchTab({ url: '/pages/equipment/equipment' })
|
||||
},
|
||||
})
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<view class="device">
|
||||
<view class="device-icon"></view>
|
||||
<view class="device-info">
|
||||
<view class="device-name">智能体脂秤 Pro</view>
|
||||
<view class="device-name">{{ device.name }}</view>
|
||||
<view class="device-status">
|
||||
<view class="status-dot {{ device.connected ? 'dot-on' : 'dot-off' }}"></view>
|
||||
<view class="status-text">{{ device.connected ? '蓝牙已连接' : '未连接' }}</view>
|
||||
|
||||
@@ -63,7 +63,7 @@ const EMPTY_RECORD: WeightRecord = {
|
||||
}
|
||||
|
||||
/** 将体重数字拆成整数 + 小数字符串 */
|
||||
function splitWeight(weight: number): { int: number; decimal: string } {
|
||||
const splitWeight = (weight: number): { int: number; decimal: string } => {
|
||||
const str = weight.toFixed(2)
|
||||
const [intPart, decPart] = str.split('.')
|
||||
return { int: Number(intPart), decimal: `.${decPart}` }
|
||||
|
||||
@@ -17,7 +17,7 @@ interface PageUserInfo {
|
||||
}
|
||||
|
||||
/** 从生日字符串(YYYY-MM-DD)计算周岁 */
|
||||
function calcAge(birthday: string): number {
|
||||
const calcAge = (birthday: string): number => {
|
||||
if (!birthday) return 0
|
||||
const [year, month, day] = birthday.split('-').map(Number)
|
||||
if (!year || !month || !day) return 0
|
||||
|
||||
Reference in New Issue
Block a user