feat(detailedReport): 基础指标完善评分单位、健康评价等级与BMI状态

- 健康评分补"分"单位
- 健康评价展示等级文案(如"亚健康")替代数值
- BMI名称后跟体型状态胶囊,颜色取底部刻度色

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
17792275749
2026-09-02 10:36:23 +08:00
co-authored by Claude Opus 4.7
parent 680794702e
commit 7a1e8942a9
3 changed files with 51 additions and 6 deletions
@@ -208,11 +208,27 @@
}
.basicIndicatorsLabel {
color: #808080;
display: flex;
align-items: center;
height: 30rpx;
font-size: 26rpx;
line-height: 30rpx;
margin-bottom: 20rpx;
.basicIndicatorsLabelText {
color: #808080;
height: 30rpx;
font-size: 26rpx;
line-height: 30rpx;
}
.basicIndicatorsLabelExtra {
color: #FFFFFF;
height: 28rpx;
font-size: 20rpx;
line-height: 28rpx;
padding: 0 12rpx;
border-radius: 8rpx;
margin-left: 8rpx;
}
}
.basicIndicatorsValueRow {
@@ -83,6 +83,10 @@ interface MetricRow {
/** 基础指标网格单元 */
interface BasicCell {
label: string
/** 名称后跟的状态文字(如 BMI 的"超重" */
labelExtra: string
/** 状态文字背景色 */
labelExtraColor: string
value: string
unit: string
}
@@ -108,10 +112,18 @@ interface BodyPartsCard {
rows: BodyPart[][]
}
const EMPTY_BASIC_CELL: BasicCell = { label: '', value: '', unit: '' }
const EMPTY_BASIC_CELL: BasicCell = { label: '', labelExtra: '', labelExtraColor: '', value: '', unit: '' }
const DEFAULT_STATUS_COLOR = '#B6B6B6'
/** BMI 体型状态对应的刻度色 */
const BMI_TYPE_COLOR: Record<string, string> = {
: '#1385FA',
: '#2AC79F',
: '#FFA151',
: '#F24439',
}
/** 将 bodyDataList 转为 key -> 指标 的映射 */
const toMap = (list: LefuBodyDatum[] = []): Record<string, LefuBodyDatum> => {
const map: Record<string, LefuBodyDatum> = {}
@@ -252,7 +264,19 @@ Page({
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 || '' }
const isScore = k === 'ppBodyScore'
const isHealth = k === 'ppBodyHealth'
const isBmi = k === 'ppBMI'
return {
label: d.bodyParamName || k,
// BMI 名称后跟体型状态(消瘦/正常/超重/肥胖)
labelExtra: isBmi ? data.bmiType || '' : '',
labelExtraColor: isBmi ? BMI_TYPE_COLOR[data.bmiType || ''] || DEFAULT_STATUS_COLOR : '',
// 健康评价展示等级文案(如"亚健康"),其余展示测量数值
value: isHealth ? d.standardTitle || d.currentValue || '' : d.currentValue || '',
// 健康评分补"分"
unit: isScore ? d.unit || '分' : isHealth ? '' : d.unit || '',
}
})
basicCells.push({ ...EMPTY_BASIC_CELL })
const basicRows = [basicCells.slice(0, 3), basicCells.slice(3, 6)]
@@ -48,7 +48,12 @@
<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="basicIndicatorsLabel">
<view class="basicIndicatorsLabelText">{{ cell.label }}</view>
<block wx:if="{{ cell.labelExtra }}">
<view class="basicIndicatorsLabelExtra" style="background-color: {{ cell.labelExtraColor }};">{{ cell.labelExtra }}</view>
</block>
</view>
<view class="basicIndicatorsValueRow">
<view class="basicIndicatorsValue">{{ cell.value }}</view>
<block wx:if="{{ cell.unit }}">