feat: 详细报告接入 v3 测量历史接口,设备列表接入设备接口
- 详细报告按 scaleType 区分 4/8 电极渲染,节段卡片 8 电极专属 - 设备列表改为接口驱动并新增空态 - 登录后统一跳首页,请求层兼容 code 0 返回风格 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
fce9701254
commit
d6e59df4e9
@@ -1,22 +1,366 @@
|
||||
// pages/detailedReport/detailedReport.ts
|
||||
import { get } from '../../utils/request/index'
|
||||
|
||||
/** 身体成分单项指标(bodyDataList 元素) */
|
||||
interface LefuBodyDatum {
|
||||
/** 指标 key,如 ppBMI、ppFat、ppMuscleKgLeftArm */
|
||||
bodyParamKey: string
|
||||
/** 指标中文名称 */
|
||||
bodyParamName: string
|
||||
/** UI 渲染颜色数组 */
|
||||
colorArray?: string[]
|
||||
/** 当前标准等级 */
|
||||
currentStandard?: number
|
||||
/** 当前测量值(字符串) */
|
||||
currentValue: string
|
||||
/** 指标介绍 */
|
||||
introduction?: string
|
||||
/** 标准范围数组 */
|
||||
standardArray?: number[]
|
||||
/** 当前等级标题 */
|
||||
standardTitle?: string
|
||||
/** 标准标题数组 */
|
||||
standardTitleArray?: string[]
|
||||
/** 标准颜色 */
|
||||
standColor?: string
|
||||
/** 标准评估结果 */
|
||||
standeEvaluation?: string
|
||||
/** 标准建议 */
|
||||
standSuggestion?: string
|
||||
/** 单位 */
|
||||
unit?: string
|
||||
}
|
||||
|
||||
/** 用户信息 */
|
||||
interface MeasureUserInfo {
|
||||
userId?: string
|
||||
realname?: string
|
||||
sex?: number
|
||||
height?: number
|
||||
birthday?: string
|
||||
avatar?: string | null
|
||||
[key: string]: any
|
||||
}
|
||||
|
||||
/** 测量历史详情 */
|
||||
interface MeasureHistoryVO {
|
||||
recordId?: string
|
||||
/** 身高(cm) */
|
||||
height?: number
|
||||
/** 体重(kg) */
|
||||
weight?: number
|
||||
/** 与上次体重增减量(kg) */
|
||||
weightChange?: number
|
||||
bmi?: number
|
||||
/** BMI 类型:消瘦/正常/超重/肥胖 */
|
||||
bmiType?: string
|
||||
standardWeight?: number
|
||||
fatRate?: number
|
||||
fatValue?: number
|
||||
basalMetabolism?: number
|
||||
/** 测量时间 */
|
||||
examTime?: string
|
||||
sn?: string
|
||||
userInfo?: MeasureUserInfo
|
||||
/** 电极类型:0=4电极,1/5=8电极 */
|
||||
scaleType?: number
|
||||
bodyDataList?: LefuBodyDatum[]
|
||||
}
|
||||
|
||||
/** 查询测量历史详情(recordId 不传时返回最近一次) */
|
||||
const getMeasureHistory = (params: { userId?: string; recordId?: string }) =>
|
||||
get<MeasureHistoryVO>('weighingScale/v3/getMeasureHistory', params)
|
||||
|
||||
/** 指标行(身体成分/脂肪分析等卡片) */
|
||||
interface MetricRow {
|
||||
label: string
|
||||
value: string
|
||||
unit: string
|
||||
status: string
|
||||
color: string
|
||||
}
|
||||
|
||||
/** 基础指标网格单元 */
|
||||
interface BasicCell {
|
||||
label: string
|
||||
value: string
|
||||
unit: string
|
||||
}
|
||||
|
||||
/** 躯干/四肢节段单元(同时含质量与占比) */
|
||||
interface BodyPart {
|
||||
label: string
|
||||
massValue: string
|
||||
massUnit: string
|
||||
rateValue: string
|
||||
rateUnit: string
|
||||
}
|
||||
|
||||
/** 指标卡片 */
|
||||
interface MetricCard {
|
||||
title: string
|
||||
rows: MetricRow[]
|
||||
}
|
||||
|
||||
/** 躯干/四肢卡片(每行 1~2 个节段单元) */
|
||||
interface BodyPartsCard {
|
||||
title: string
|
||||
rows: BodyPart[][]
|
||||
}
|
||||
|
||||
const EMPTY_BASIC_CELL: BasicCell = { label: '', value: '', unit: '' }
|
||||
|
||||
const DEFAULT_STATUS_COLOR = '#B6B6B6'
|
||||
|
||||
/** 将 bodyDataList 转为 key -> 指标 的映射 */
|
||||
const toMap = (list: LefuBodyDatum[] = []): Record<string, LefuBodyDatum> => {
|
||||
const map: Record<string, LefuBodyDatum> = {}
|
||||
list.forEach((d) => {
|
||||
if (d && d.bodyParamKey) map[d.bodyParamKey] = d
|
||||
})
|
||||
return map
|
||||
}
|
||||
|
||||
/** 按 key 取指标并转成行,缺失返回 null */
|
||||
const pick = (map: Record<string, LefuBodyDatum>, key: string): MetricRow | null => {
|
||||
const d = map[key]
|
||||
if (!d) return null
|
||||
return {
|
||||
label: d.bodyParamName || key,
|
||||
value: d.currentValue ?? '',
|
||||
unit: d.unit || '',
|
||||
status: d.standardTitle || '',
|
||||
color: d.standColor || DEFAULT_STATUS_COLOR,
|
||||
}
|
||||
}
|
||||
|
||||
/** 按一组 key 构建行,自动跳过缺失项 */
|
||||
const buildRows = (map: Record<string, LefuBodyDatum>, keys: string[]): MetricRow[] =>
|
||||
keys.map((k) => pick(map, k)).filter((r): r is MetricRow => r !== null)
|
||||
|
||||
/** 构建节段单元(质量 + 占比) */
|
||||
const buildPart = (
|
||||
map: Record<string, LefuBodyDatum>,
|
||||
label: string,
|
||||
massKey: string,
|
||||
rateKey: string,
|
||||
): BodyPart => ({
|
||||
label,
|
||||
massValue: map[massKey]?.currentValue ?? '--',
|
||||
massUnit: map[massKey]?.unit ?? 'kg',
|
||||
rateValue: map[rateKey]?.currentValue ?? '--',
|
||||
rateUnit: map[rateKey]?.unit ?? '%',
|
||||
})
|
||||
|
||||
/** 体重拆分整数 + 小数 */
|
||||
const splitWeight = (weight: number): { int: string; decimal: string } => {
|
||||
const str = weight.toFixed(2)
|
||||
const [int, dec] = str.split('.')
|
||||
return { int, decimal: `.${dec}` }
|
||||
}
|
||||
|
||||
/** 根据 BMI 计算刻度圆圈位置(百分比) */
|
||||
const calcBmiLeft = (bmi?: number): number => {
|
||||
if (bmi == null || isNaN(bmi)) return 0
|
||||
const pct = (bmi - 14) / (40 - 14)
|
||||
return Math.min(Math.max(pct, 0), 1) * 100
|
||||
}
|
||||
|
||||
Page({
|
||||
data: {
|
||||
// 导航栏背景色,根据滚动位置动态变化
|
||||
navBgColor: 'rgba(255,255,255,0)',
|
||||
|
||||
header: {
|
||||
date: '2026-07-23 16:32',
|
||||
bmi: 'BMI正常',
|
||||
change: '较上次-0.3kg'
|
||||
date: '',
|
||||
weightInt: '--',
|
||||
weightDecimal: '',
|
||||
bmiText: '',
|
||||
changeText: '',
|
||||
},
|
||||
|
||||
bmiCircleLeft: 0,
|
||||
|
||||
basicRows: [] as BasicCell[][],
|
||||
|
||||
bodyComposition: { title: '身体成分', rows: [] } as MetricCard,
|
||||
fatAnalysis: { title: '脂肪分析', rows: [] } as MetricCard,
|
||||
physique: { title: '体态管理', rows: [] } as MetricCard,
|
||||
weightControl: { title: '体重管控', rows: [] } as MetricCard,
|
||||
|
||||
// 以下卡片为 8 电极专属
|
||||
isEightElectrode: false,
|
||||
cellWater: { title: '细胞液分析', rows: [] } as MetricCard,
|
||||
advancedComposition: { title: '进阶成分', rows: [] } as MetricCard,
|
||||
bodyFat: { title: '躯干/四肢脂肪', rows: [] } as BodyPartsCard,
|
||||
bodyMuscle: { title: '躯干/四肢肌肉', rows: [] } as BodyPartsCard,
|
||||
},
|
||||
|
||||
onLoad(options: Record<string, string | undefined>) {
|
||||
const recordId = options.recordId || ''
|
||||
const userInfo = (wx.getStorageSync('userInfo') || {}) as Record<string, any>
|
||||
const userId = userInfo.userId || ''
|
||||
this.fetchHistory(userId, recordId)
|
||||
},
|
||||
|
||||
async fetchHistory(userId: string, recordId: string) {
|
||||
if (!userId && !recordId) return
|
||||
try {
|
||||
const res = await getMeasureHistory({ userId, recordId })
|
||||
this.applyResult(res.result)
|
||||
} catch {
|
||||
// 请求层已弹错误提示
|
||||
}
|
||||
},
|
||||
|
||||
applyResult(data: MeasureHistoryVO) {
|
||||
const map = toMap(data.bodyDataList)
|
||||
const isEight = data.scaleType === 1 || data.scaleType === 5
|
||||
|
||||
// 头部
|
||||
const hasWeight = data.weight != null && !isNaN(data.weight)
|
||||
const weight = hasWeight ? splitWeight(data.weight as number) : { int: '--', decimal: '' }
|
||||
const wc = data.weightChange
|
||||
const changeText =
|
||||
wc != null && wc !== 0 ? `较上次${wc > 0 ? '+' : ''}${wc}kg` : ''
|
||||
const header = {
|
||||
date: data.examTime || '--',
|
||||
weightInt: weight.int,
|
||||
weightDecimal: weight.decimal,
|
||||
bmiText: data.bmiType ? `BMI${data.bmiType}` : '',
|
||||
changeText,
|
||||
}
|
||||
|
||||
// 基础指标(2 行 x 3 列,第 6 格留空保持布局)
|
||||
const basicKeys = ['ppWeightKg', 'ppBMI', 'ppFat', 'ppBodyScore', 'ppBodyHealth']
|
||||
const basicCells: BasicCell[] = basicKeys.map((k) => {
|
||||
const d = map[k]
|
||||
if (!d) return { ...EMPTY_BASIC_CELL }
|
||||
return { label: d.bodyParamName || k, value: d.currentValue ?? '', unit: d.unit || '' }
|
||||
})
|
||||
basicCells.push({ ...EMPTY_BASIC_CELL })
|
||||
const basicRows = [basicCells.slice(0, 3), basicCells.slice(3, 6)]
|
||||
|
||||
// 身体成分
|
||||
const bodyComposition = {
|
||||
title: '身体成分',
|
||||
rows: buildRows(map, [
|
||||
'ppWaterPercentage',
|
||||
'ppWaterKg',
|
||||
'ppProteinPercentage',
|
||||
'ppProteinKg',
|
||||
'ppBodyfatKg',
|
||||
'ppMuscleKg',
|
||||
'ppMusclePercentage',
|
||||
'ppBodySkeletalKg',
|
||||
'ppBodySkeletal',
|
||||
'ppBoneKg',
|
||||
]),
|
||||
}
|
||||
|
||||
// 脂肪分析
|
||||
const fatAnalysis = {
|
||||
title: '脂肪分析',
|
||||
rows: buildRows(map, [
|
||||
'ppVisceralFat',
|
||||
'ppBodyFatSubCutPercentage',
|
||||
'ppBodyFatSubCutKg',
|
||||
]),
|
||||
}
|
||||
|
||||
// 体态管理(理想体重 key 随电极类型变化,推测腰臀比为 8 电极专属)
|
||||
const idealWeightKey = isEight ? 'ppBodyStandardWeightKg' : 'ppIdealWeightKg'
|
||||
const physiqueKeys = [idealWeightKey, 'ppLoseFatWeightKg', 'ppBodyAge', 'ppBodyType']
|
||||
if (isEight) physiqueKeys.push('ppWHR')
|
||||
const physique = { title: '体态管理', rows: buildRows(map, physiqueKeys) }
|
||||
|
||||
// 体重管控
|
||||
const weightControl = {
|
||||
title: '体重管控',
|
||||
rows: buildRows(map, [
|
||||
'ppControlWeightKg',
|
||||
'ppFatControlKg',
|
||||
'ppBodyMuscleControl',
|
||||
]),
|
||||
}
|
||||
|
||||
// 8 电极专属卡片
|
||||
const cellWater = isEight
|
||||
? { title: '细胞液分析', rows: buildRows(map, ['ppWaterICWKg', 'ppWaterECWKg']) }
|
||||
: { title: '细胞液分析', rows: [] }
|
||||
|
||||
const advancedComposition = isEight
|
||||
? {
|
||||
title: '进阶成分',
|
||||
rows: buildRows(map, ['ppMineralKg', 'ppCellMassKg', 'ppSmi']),
|
||||
}
|
||||
: { title: '进阶成分', rows: [] }
|
||||
|
||||
// 节段两列一行:[[左臂,右臂],[左腿,右腿],[躯干]]
|
||||
const chunkParts = (parts: BodyPart[]): BodyPart[][] => [
|
||||
[parts[0], parts[1]],
|
||||
[parts[2], parts[3]],
|
||||
[parts[4]],
|
||||
]
|
||||
|
||||
const fatPartLabels: [string, string, string][] = [
|
||||
['左臂', 'ppBodyFatKgLeftArm', 'ppBodyFatRateLeftArm'],
|
||||
['右臂', 'ppBodyFatKgRightArm', 'ppBodyFatRateRightArm'],
|
||||
['左腿', 'ppBodyFatKgLeftLeg', 'ppBodyFatRateLeftLeg'],
|
||||
['右腿', 'ppBodyFatKgRightLeg', 'ppBodyFatRateRightLeg'],
|
||||
['躯干', 'ppBodyFatKgTrunk', 'ppBodyFatRateTrunk'],
|
||||
]
|
||||
const bodyFat = isEight
|
||||
? {
|
||||
title: '躯干/四肢脂肪',
|
||||
rows: chunkParts(
|
||||
fatPartLabels.map(([label, massKey, rateKey]) =>
|
||||
buildPart(map, label, massKey, rateKey),
|
||||
),
|
||||
),
|
||||
}
|
||||
: { title: '躯干/四肢脂肪', rows: [] }
|
||||
|
||||
const musclePartLabels: [string, string, string][] = [
|
||||
['左臂', 'ppMuscleKgLeftArm', 'ppMuscleRateLeftArm'],
|
||||
['右臂', 'ppMuscleKgRightArm', 'ppMuscleRateRightArm'],
|
||||
['左腿', 'ppMuscleKgLeftLeg', 'ppMuscleRateLeftLeg'],
|
||||
['右腿', 'ppMuscleKgRightLeg', 'ppMuscleRateRightLeg'],
|
||||
['躯干', 'ppMuscleKgTrunk', 'ppMuscleRateTrunk'],
|
||||
]
|
||||
const bodyMuscle = isEight
|
||||
? {
|
||||
title: '躯干/四肢肌肉',
|
||||
rows: chunkParts(
|
||||
musclePartLabels.map(([label, massKey, rateKey]) =>
|
||||
buildPart(map, label, massKey, rateKey),
|
||||
),
|
||||
),
|
||||
}
|
||||
: { title: '躯干/四肢肌肉', rows: [] }
|
||||
|
||||
this.setData({
|
||||
header,
|
||||
bmiCircleLeft: calcBmiLeft(data.bmi),
|
||||
basicRows,
|
||||
bodyComposition,
|
||||
fatAnalysis,
|
||||
physique,
|
||||
weightControl,
|
||||
isEightElectrode: isEight,
|
||||
cellWater,
|
||||
advancedComposition,
|
||||
bodyFat,
|
||||
bodyMuscle,
|
||||
})
|
||||
},
|
||||
|
||||
// 滚动时导航栏背景渐显
|
||||
onScroll(e: WechatMiniprogram.ScrollViewScroll) {
|
||||
const scrollTop = e.detail.scrollTop;
|
||||
const opacity = Math.min(Math.max(scrollTop / 300, 0), 1);
|
||||
const scrollTop = e.detail.scrollTop
|
||||
const opacity = Math.min(Math.max(scrollTop / 300, 0), 1)
|
||||
this.setData({
|
||||
navBgColor: `rgba(255,255,255,${opacity})`,
|
||||
});
|
||||
})
|
||||
},
|
||||
})
|
||||
|
||||
@@ -23,13 +23,13 @@
|
||||
</view>
|
||||
<view class="header-bottom">
|
||||
<view class="header-weight">
|
||||
<view class="weight-num1">88</view>
|
||||
<view class="weight-num2">.88</view>
|
||||
<view class="weight-num1">{{ header.weightInt }}</view>
|
||||
<view class="weight-num2">{{ header.weightDecimal }}</view>
|
||||
<view class="weight-unit">kg</view>
|
||||
</view>
|
||||
<view class="header-info">
|
||||
<view class="header-bmi">{{ header.bmi }}</view>
|
||||
<view class="header-change">{{ header.change }}</view>
|
||||
<view class="header-bmi" wx:if="{{ header.bmiText }}">{{ header.bmiText }}</view>
|
||||
<view class="header-change" wx:if="{{ header.changeText }}">{{ header.changeText }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -41,43 +41,16 @@
|
||||
<view class="basicIndicatorsTitleText">基础指标</view>
|
||||
</view>
|
||||
<view class="basicIndicatorsGrid">
|
||||
<view class="basicIndicatorsRow">
|
||||
<view class="basicIndicatorsCell">
|
||||
<view class="basicIndicatorsLabel">体重</view>
|
||||
<view class="basicIndicatorsValueRow">
|
||||
<view class="basicIndicatorsValue">172</view>
|
||||
<view class="basicIndicatorsUnit">kg</view>
|
||||
</view>
|
||||
<view class="basicIndicatorsRow" wx:for="{{ basicRows }}" wx:for-item="row" wx:key="index">
|
||||
<view class="basicIndicatorsCell" wx:for="{{ row }}" wx:for-item="cell" wx:key="label">
|
||||
<block wx:if="{{ cell.label }}">
|
||||
<view class="basicIndicatorsLabel">{{ cell.label }}</view>
|
||||
<view class="basicIndicatorsValueRow">
|
||||
<view class="basicIndicatorsValue">{{ cell.value }}</view>
|
||||
<view class="basicIndicatorsUnit" wx:if="{{ cell.unit }}">{{ cell.unit }}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="basicIndicatorsCell">
|
||||
<view class="basicIndicatorsLabel">BMI</view>
|
||||
<view class="basicIndicatorsValueRow">
|
||||
<view class="basicIndicatorsValue">22.4</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="basicIndicatorsCell">
|
||||
<view class="basicIndicatorsLabel">体脂率</view>
|
||||
<view class="basicIndicatorsValueRow">
|
||||
<view class="basicIndicatorsValue">22.1</view>
|
||||
<view class="basicIndicatorsUnit">%</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="basicIndicatorsRow">
|
||||
<view class="basicIndicatorsCell">
|
||||
<view class="basicIndicatorsLabel">身体得分</view>
|
||||
<view class="basicIndicatorsValueRow">
|
||||
<view class="basicIndicatorsValue">73</view>
|
||||
<view class="basicIndicatorsUnit">分</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="basicIndicatorsCell">
|
||||
<view class="basicIndicatorsLabel">健康评估</view>
|
||||
<view class="basicIndicatorsValueRow">
|
||||
<view class="basicIndicatorsValue">一般</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="basicIndicatorsCell"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="basicIndicatorsScale">
|
||||
@@ -86,7 +59,7 @@
|
||||
<view class="basicIndicatorsBlock basicIndicatorsBlock--normal"></view>
|
||||
<view class="basicIndicatorsBlock basicIndicatorsBlock--over"></view>
|
||||
<view class="basicIndicatorsBlock basicIndicatorsBlock--obese"></view>
|
||||
<view class="basicIndicatorsCircle"></view>
|
||||
<view class="basicIndicatorsCircle" style="left: {{ bmiCircleLeft }}%;"></view>
|
||||
</view>
|
||||
<view class="basicIndicatorsScaleRow">
|
||||
<view>消瘦</view>
|
||||
@@ -107,58 +80,13 @@
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">身体成分</view>
|
||||
<view class="metricCardTitleText">{{ bodyComposition.title }}</view>
|
||||
</view>
|
||||
<view class="metricCardList">
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">水分率</view>
|
||||
<view class="metricCardValue">50%</view>
|
||||
<view class="metricCardStatus metricCardStatus--low">不足</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">水分量</view>
|
||||
<view class="metricCardValue">30.6kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">蛋白质率</view>
|
||||
<view class="metricCardValue">10%</view>
|
||||
<view class="metricCardStatus metricCardStatus--high">超量</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">蛋白质量</view>
|
||||
<view class="metricCardValue">8.2kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">脂肪量</view>
|
||||
<view class="metricCardValue">14.3kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">肌肉量</view>
|
||||
<view class="metricCardValue">38.8kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">肌肉率</view>
|
||||
<view class="metricCardValue">69.2%</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">骨骼肌量</view>
|
||||
<view class="metricCardValue">22.5kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">骨骼肌率</view>
|
||||
<view class="metricCardValue">40%</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">骨量</view>
|
||||
<view class="metricCardValue">2.3kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
<view class="metricCardRow" wx:for="{{ bodyComposition.rows }}" wx:key="label">
|
||||
<view class="metricCardLabel">{{ item.label }}</view>
|
||||
<view class="metricCardValue">{{ item.value }}{{ item.unit }}</view>
|
||||
<view class="metricCardStatus" wx:if="{{ item.status }}" style="background-color: {{ item.color }};">{{ item.status }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -167,23 +95,13 @@
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">脂肪分析</view>
|
||||
<view class="metricCardTitleText">{{ fatAnalysis.title }}</view>
|
||||
</view>
|
||||
<view class="metricCardList">
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">内脏脂肪</view>
|
||||
<view class="metricCardValue">6</view>
|
||||
<view class="metricCardStatus metricCardStatus--low">不足</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">皮下脂肪率</view>
|
||||
<view class="metricCardValue">22.5%</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">皮下脂肪量</view>
|
||||
<view class="metricCardValue">12.6kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
<view class="metricCardRow" wx:for="{{ fatAnalysis.rows }}" wx:key="label">
|
||||
<view class="metricCardLabel">{{ item.label }}</view>
|
||||
<view class="metricCardValue">{{ item.value }}{{ item.unit }}</view>
|
||||
<view class="metricCardStatus" wx:if="{{ item.status }}" style="background-color: {{ item.color }};">{{ item.status }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -192,33 +110,13 @@
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">体态管理</view>
|
||||
<view class="metricCardTitleText">{{ physique.title }}</view>
|
||||
</view>
|
||||
<view class="metricCardList">
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">理想体重</view>
|
||||
<view class="metricCardValue">62.1kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">去脂体重</view>
|
||||
<view class="metricCardValue">41.7kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">身体年龄</view>
|
||||
<view class="metricCardValue">20岁</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">身体类型</view>
|
||||
<view class="metricCardValue">缺乏运动型</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">推测腰臀比</view>
|
||||
<view class="metricCardValue">0.8%</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
<view class="metricCardRow" wx:for="{{ physique.rows }}" wx:key="label">
|
||||
<view class="metricCardLabel">{{ item.label }}</view>
|
||||
<view class="metricCardValue">{{ item.value }}{{ item.unit }}</view>
|
||||
<view class="metricCardStatus" wx:if="{{ item.status }}" style="background-color: {{ item.color }};">{{ item.status }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -227,203 +125,94 @@
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">体重管控</view>
|
||||
<view class="metricCardTitleText">{{ weightControl.title }}</view>
|
||||
</view>
|
||||
<view class="metricCardList">
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">控制体重</view>
|
||||
<view class="metricCardValue">3.9kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">脂肪控制量</view>
|
||||
<view class="metricCardValue">-0.5kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">肌肉控制量</view>
|
||||
<view class="metricCardValue">4.4kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
<view class="metricCardRow" wx:for="{{ weightControl.rows }}" wx:key="label">
|
||||
<view class="metricCardLabel">{{ item.label }}</view>
|
||||
<view class="metricCardValue">{{ item.value }}{{ item.unit }}</view>
|
||||
<view class="metricCardStatus" wx:if="{{ item.status }}" style="background-color: {{ item.color }};">{{ item.status }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 细胞液分析 -->
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">细胞液分析</view>
|
||||
</view>
|
||||
<view class="metricCardList">
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">细胞内水量</view>
|
||||
<view class="metricCardValue">19.1kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">细胞外水量</view>
|
||||
<view class="metricCardValue">11.4kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<block wx:if="{{ isEightElectrode }}">
|
||||
|
||||
<!-- 进阶成分 -->
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">进阶成分</view>
|
||||
</view>
|
||||
<view class="metricCardList">
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">无机盐量</view>
|
||||
<view class="metricCardValue">2.9kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--low">不足</view>
|
||||
<!-- 细胞液分析 -->
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">{{ cellWater.title }}</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">身体细胞量</view>
|
||||
<view class="metricCardValue">27.4kg</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
</view>
|
||||
<view class="metricCardRow">
|
||||
<view class="metricCardLabel">骨骼肌质量指数</view>
|
||||
<view class="metricCardValue">7.2kg/m²</view>
|
||||
<view class="metricCardStatus metricCardStatus--normal">标准</view>
|
||||
<view class="metricCardList">
|
||||
<view class="metricCardRow" wx:for="{{ cellWater.rows }}" wx:key="label">
|
||||
<view class="metricCardLabel">{{ item.label }}</view>
|
||||
<view class="metricCardValue">{{ item.value }}{{ item.unit }}</view>
|
||||
<view class="metricCardStatus" wx:if="{{ item.status }}" style="background-color: {{ item.color }};">{{ item.status }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 躯干/四肢脂肪 -->
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">躯干/四肢脂肪</view>
|
||||
</view>
|
||||
<view class="bodyPartsList">
|
||||
<view class="bodyPartsRow">
|
||||
<view class="bodyPartCell">
|
||||
<view class="bodyPartLabel">左臂</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">2.3</view>
|
||||
<view class="bodyPartUnit">kg</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">80.9</view>
|
||||
<view class="bodyPartUnit">%</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bodyPartCell">
|
||||
<view class="bodyPartLabel">右臂</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">2.3</view>
|
||||
<view class="bodyPartUnit">kg</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">80.9</view>
|
||||
<view class="bodyPartUnit">%</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 进阶成分 -->
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">{{ advancedComposition.title }}</view>
|
||||
</view>
|
||||
<view class="bodyPartsRow">
|
||||
<view class="bodyPartCell">
|
||||
<view class="bodyPartLabel">左腿</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">6.3</view>
|
||||
<view class="bodyPartUnit">kg</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">100</view>
|
||||
<view class="bodyPartUnit">%</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bodyPartCell">
|
||||
<view class="bodyPartLabel">右腿</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">6.3</view>
|
||||
<view class="bodyPartUnit">kg</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">100</view>
|
||||
<view class="bodyPartUnit">%</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bodyPartsRow">
|
||||
<view class="bodyPartCell">
|
||||
<view class="bodyPartLabel">躯干</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">18.4</view>
|
||||
<view class="bodyPartUnit">kg</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">97.8</view>
|
||||
<view class="bodyPartUnit">%</view>
|
||||
</view>
|
||||
<view class="metricCardList">
|
||||
<view class="metricCardRow" wx:for="{{ advancedComposition.rows }}" wx:key="label">
|
||||
<view class="metricCardLabel">{{ item.label }}</view>
|
||||
<view class="metricCardValue">{{ item.value }}{{ item.unit }}</view>
|
||||
<view class="metricCardStatus" wx:if="{{ item.status }}" style="background-color: {{ item.color }};">{{ item.status }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 躯干/四肢肌肉 -->
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">躯干/四肢肌肉</view>
|
||||
</view>
|
||||
<view class="bodyPartsList">
|
||||
<view class="bodyPartsRow">
|
||||
<view class="bodyPartCell">
|
||||
<view class="bodyPartLabel">左臂</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">2.3</view>
|
||||
<view class="bodyPartUnit">kg</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">80.9</view>
|
||||
<view class="bodyPartUnit">%</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bodyPartCell">
|
||||
<view class="bodyPartLabel">右臂</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">2.3</view>
|
||||
<view class="bodyPartUnit">kg</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">80.9</view>
|
||||
<view class="bodyPartUnit">%</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 躯干/四肢脂肪 -->
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">{{ bodyFat.title }}</view>
|
||||
</view>
|
||||
<view class="bodyPartsRow">
|
||||
<view class="bodyPartCell">
|
||||
<view class="bodyPartLabel">左腿</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">6.3</view>
|
||||
<view class="bodyPartUnit">kg</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">100</view>
|
||||
<view class="bodyPartUnit">%</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bodyPartCell">
|
||||
<view class="bodyPartLabel">右腿</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">6.3</view>
|
||||
<view class="bodyPartUnit">kg</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">100</view>
|
||||
<view class="bodyPartUnit">%</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bodyPartsRow">
|
||||
<view class="bodyPartCell">
|
||||
<view class="bodyPartLabel">躯干</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">18.4</view>
|
||||
<view class="bodyPartUnit">kg</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">97.8</view>
|
||||
<view class="bodyPartUnit">%</view>
|
||||
<view class="bodyPartsList">
|
||||
<view class="bodyPartsRow" wx:for="{{ bodyFat.rows }}" wx:key="index" wx:for-item="row">
|
||||
<view class="bodyPartCell" wx:for="{{ row }}" wx:key="label" wx:for-item="part">
|
||||
<view class="bodyPartLabel">{{ part.label }}</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">{{ part.massValue }}</view>
|
||||
<view class="bodyPartUnit">{{ part.massUnit }}</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">{{ part.rateValue }}</view>
|
||||
<view class="bodyPartUnit">{{ part.rateUnit }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 躯干/四肢肌肉 -->
|
||||
<view class="metricCard">
|
||||
<view class="metricCardTitle">
|
||||
<view class="metricCardBar"></view>
|
||||
<view class="metricCardTitleText">{{ bodyMuscle.title }}</view>
|
||||
</view>
|
||||
<view class="bodyPartsList">
|
||||
<view class="bodyPartsRow" wx:for="{{ bodyMuscle.rows }}" wx:key="index" wx:for-item="row">
|
||||
<view class="bodyPartCell" wx:for="{{ row }}" wx:key="label" wx:for-item="part">
|
||||
<view class="bodyPartLabel">{{ part.label }}</view>
|
||||
<view class="bodyPartValue">
|
||||
<view class="bodyPartNum">{{ part.massValue }}</view>
|
||||
<view class="bodyPartUnit">{{ part.massUnit }}</view>
|
||||
<view class="bodyPartSep">丨</view>
|
||||
<view class="bodyPartNum">{{ part.rateValue }}</view>
|
||||
<view class="bodyPartUnit">{{ part.rateUnit }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</block>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -1,29 +1,74 @@
|
||||
// pages/equipment/equipment.ts
|
||||
import { get } from '../../utils/request/index'
|
||||
|
||||
/** 体重设备(对应 /weighingScale/list/device 返回的 result 元素) */
|
||||
interface ScaleDevice {
|
||||
/** 设备ID */
|
||||
id: string
|
||||
/** 设备名称 */
|
||||
equipmentName: string
|
||||
/** 设备SN */
|
||||
equipmentCode: string
|
||||
/** 状态 */
|
||||
status: number
|
||||
canteenId: string | null
|
||||
/** MAC 地址 */
|
||||
macAddress: string
|
||||
/** WiFi 名称 */
|
||||
wifiName: string
|
||||
isSync: number
|
||||
/** 成员人数 */
|
||||
subUserNum: number
|
||||
}
|
||||
|
||||
/** 获取体重设备列表 */
|
||||
const getDeviceList = () =>
|
||||
get<ScaleDevice[]>('weighingScale/list/device')
|
||||
|
||||
/** 展示用设备项 */
|
||||
interface DeviceItem {
|
||||
id: string
|
||||
name: string
|
||||
status: string
|
||||
connected: boolean
|
||||
model: string
|
||||
serial: string
|
||||
subUserNum: number
|
||||
}
|
||||
|
||||
Page({
|
||||
data: {
|
||||
devices: [
|
||||
{
|
||||
id: 1,
|
||||
name: '家庭蓝牙体脂秤 S1',
|
||||
status: '已连接',
|
||||
connected: true,
|
||||
model: 'BS-A100',
|
||||
serial: 'BL2024A00158',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: '家庭蓝牙体脂秤 S1',
|
||||
status: '未连接',
|
||||
connected: false,
|
||||
model: 'BW-B200',
|
||||
serial: 'BL2024B00321',
|
||||
}
|
||||
],
|
||||
loadingShow: true,
|
||||
devices: [] as DeviceItem[],
|
||||
loadingShow: false,
|
||||
loadingTitle: '正在连接设备',
|
||||
loadingContent: '请确保设备处于开启状态\n请勿离开...'
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
this.loadDevices()
|
||||
},
|
||||
|
||||
/** 拉取体重设备列表 */
|
||||
async loadDevices() {
|
||||
try {
|
||||
const res = await getDeviceList()
|
||||
this.setData({
|
||||
devices: res.result.map(item => ({
|
||||
id: item.id,
|
||||
name: item.equipmentName,
|
||||
// status 具体枚举待确认,先按 1 = 已连接处理
|
||||
status: item.status === 1 ? '已连接' : '未连接',
|
||||
connected: item.status === 1,
|
||||
// 接口无独立「型号」字段,先用设备名称占位
|
||||
model: item.equipmentName,
|
||||
serial: item.equipmentCode,
|
||||
subUserNum: item.subUserNum,
|
||||
})),
|
||||
})
|
||||
} catch {
|
||||
// 请求失败已由 request 层统一 toast
|
||||
}
|
||||
},
|
||||
|
||||
/** 取消配对:使用小程序自带 showModal */
|
||||
onTapUnpair() {
|
||||
wx.showModal({
|
||||
@@ -63,7 +108,7 @@ Page({
|
||||
},
|
||||
|
||||
onTapAdd() {
|
||||
// 添加设备(待接入)
|
||||
wx.navigateTo({ url: '/pages/connectedDevice/connectedDevice' })
|
||||
},
|
||||
|
||||
/** 关闭运维模式 */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<view class="equipment">
|
||||
<view class="equipment">
|
||||
<!-- 运维模式提示行 -->
|
||||
<view class="ops-bar">
|
||||
<view class="ops-mode">当前为:运维模式</view>
|
||||
@@ -7,14 +7,14 @@
|
||||
|
||||
<!-- 顶部卡片(渐变背景 + 设备图片占位) -->
|
||||
<view class="top-banner">
|
||||
<image src="/images/equipment/bg.png" />
|
||||
<image src="/images/equipment/bg.png"/>
|
||||
</view>
|
||||
|
||||
<!-- 已配对设备行 -->
|
||||
<view class="section-bar">
|
||||
<view class="section-left">
|
||||
<view class="bt-icon">
|
||||
<image src="/images/equipment/bluetooth.png" />
|
||||
<image src="/images/equipment/bluetooth.png"/>
|
||||
</view>
|
||||
<view class="section-title">已配对设备</view>
|
||||
</view>
|
||||
@@ -22,65 +22,71 @@
|
||||
</view>
|
||||
|
||||
<!-- 设备列表 -->
|
||||
<block wx:for="{{ devices }}" wx:key="id">
|
||||
<view class="device-card">
|
||||
<view class="device-top">
|
||||
<view class="device-icon"></view>
|
||||
<view class="device-info">
|
||||
<view class="device-info_">
|
||||
<view class="device-name">{{ item.name }}</view>
|
||||
<view class="device-unpair" bind:tap="onTapUnpair">取消配对</view>
|
||||
</view>
|
||||
<view class="device-status">
|
||||
<view class="device-status--connected">
|
||||
<view class="status-dot"></view>
|
||||
<view class="status-text">{{ item.status }}</view>
|
||||
<block wx:if="{{ devices && devices.length }}">
|
||||
<block wx:for="{{ devices }}" wx:key="id">
|
||||
<view class="device-card">
|
||||
<view class="device-top">
|
||||
<view class="device-icon"></view>
|
||||
<view class="device-info">
|
||||
<view class="device-info_">
|
||||
<view class="device-name">{{ item.name }}</view>
|
||||
<view class="device-unpair" bind:tap="onTapUnpair">取消配对</view>
|
||||
</view>
|
||||
<view class="device-status">
|
||||
<view class="device-status--connected">
|
||||
<view class="status-dot"></view>
|
||||
<view class="status-text">{{ item.status }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="device-meta">
|
||||
<view class="meta-row">
|
||||
<view class="meta-label">型号</view>
|
||||
<view class="meta-value">{{ item.model }}</view>
|
||||
<view class="device-meta">
|
||||
<view class="meta-row">
|
||||
<view class="meta-label">型号</view>
|
||||
<view class="meta-value">{{ item.model }}</view>
|
||||
</view>
|
||||
<view class="meta-row">
|
||||
<view class="meta-label">设备编号</view>
|
||||
<view class="meta-value">{{ item.serial }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="meta-row">
|
||||
<view class="meta-label">设备编号</view>
|
||||
<view class="meta-value">{{ item.serial }}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="device-actions">
|
||||
<view class="device-action-btn">
|
||||
<view>
|
||||
<image src="/images/equipment/wifi.png" />
|
||||
<view class="device-actions">
|
||||
<view class="device-action-btn">
|
||||
<view>
|
||||
<image src="/images/equipment/wifi.png"/>
|
||||
</view>
|
||||
<view>设备WIFI</view>
|
||||
</view>
|
||||
<view>设备WIFI</view>
|
||||
</view>
|
||||
<view class="device-action-btn" bind:tap="onTapUser">
|
||||
<view>
|
||||
<image src="/images/equipment/users.png" />
|
||||
<view class="device-action-btn" bind:tap="onTapUser">
|
||||
<view>
|
||||
<image src="/images/equipment/users.png"/>
|
||||
</view>
|
||||
<view>用户({{ item.subUserNum }})</view>
|
||||
</view>
|
||||
<view>用户(4)</view>
|
||||
</view>
|
||||
<view class="device-action-btn">
|
||||
<view>
|
||||
<image src="/images/equipment/reload.png" />
|
||||
<view class="device-action-btn">
|
||||
<view>
|
||||
<image src="/images/equipment/reload.png"/>
|
||||
</view>
|
||||
<view>数据补传</view>
|
||||
</view>
|
||||
<view>数据补传</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
<block wx:else>
|
||||
<empty-data containerStyle="margin: 100rpx 0 200rpx;" />
|
||||
</block>
|
||||
|
||||
<!-- 添加设备按钮 -->
|
||||
<view class="add-btn" bind:tap="onTapAdd">
|
||||
<view class="add-icon">
|
||||
<image src="/images/addBtn.png" />
|
||||
<image src="/images/addBtn.png"/>
|
||||
</view>
|
||||
<view class="add-text">添加设备</view>
|
||||
</view>
|
||||
|
||||
<equipment-dialog show="{{ loadingShow }}" title="{{ loadingTitle }}" content="{{ loadingContent }}" bind:close="onCloseLoading" />
|
||||
<equipment-dialog show="{{ loadingShow }}" title="{{ loadingTitle }}" content="{{ loadingContent }}"
|
||||
bind:close="onCloseLoading"/>
|
||||
</view>
|
||||
|
||||
@@ -56,9 +56,8 @@ Page({
|
||||
|
||||
onTapQuestion(e: WechatMiniprogram.TouchEvent) {
|
||||
const id = e.currentTarget.dataset.id as string
|
||||
const title = e.currentTarget.dataset.title as string
|
||||
wx.navigateTo({
|
||||
url: '/pages/questionDetails/questionDetails?id=' + id + '&title=' + encodeURIComponent(title)
|
||||
url: '/pages/questionDetails/questionDetails?id=' + id
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<view class="list">
|
||||
<scroll-view class="scrollView" scroll-y>
|
||||
<block wx:for="{{ questions }}" wx:key="id">
|
||||
<view class="question" bind:tap="onTapQuestion" data-id="{{ item.id }}" data-title="{{ item.title }}">
|
||||
<view class="question" bind:tap="onTapQuestion" data-id="{{ item.id }}">
|
||||
<view class="dot"></view>
|
||||
<view class="question-title">{{ item.title }}</view>
|
||||
<view class="arrow"></view>
|
||||
|
||||
@@ -25,12 +25,12 @@ Page({
|
||||
const { token, user } = res.result
|
||||
// 持久化登录凭证和用户信息
|
||||
wx.setStorageSync('token', token)
|
||||
if (user) {
|
||||
wx.setStorageSync('userInfo', user)
|
||||
// if (user) {
|
||||
// wx.setStorageSync('userInfo', user)
|
||||
wx.reLaunch({ url: '/pages/home/home' })
|
||||
} else {
|
||||
wx.reLaunch({ url: '/pages/supplementPersonal/supplementPersonal' })
|
||||
}
|
||||
// } else {
|
||||
// wx.reLaunch({ url: '/pages/supplementPersonal/supplementPersonal' })
|
||||
// }
|
||||
}).catch((err) => {
|
||||
wx.showToast({ title: err.msg || '登录失败,请重试', icon: 'none' })
|
||||
}).finally(() => {
|
||||
|
||||
Reference in New Issue
Block a user