From fa21bbcaddbe888c1d07e1eede006ab8c0657160 Mon Sep 17 00:00:00 2001 From: iven Date: Fri, 24 Apr 2026 12:35:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(health):=20=E5=81=A5=E5=BA=B7=E5=8D=A1?= =?UTF-8?q?=E7=89=87=E5=A2=9E=E5=8A=A0=E7=8A=B6=E6=80=81=E8=89=B2=EF=BC=88?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E7=BB=BF/=E5=BC=82=E5=B8=B8=E7=BA=A2?= =?UTF-8?q?=EF=BC=89+=20=E5=8F=82=E8=80=83=E8=8C=83=E5=9B=B4=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/miniprogram/src/pages/health/index.scss | 16 ++++++++- apps/miniprogram/src/pages/health/index.tsx | 37 +++++++++++++------- apps/miniprogram/src/pages/index/index.scss | 18 ++++++++++ apps/miniprogram/src/pages/index/index.tsx | 22 ++++++++---- 4 files changed, 73 insertions(+), 20 deletions(-) diff --git a/apps/miniprogram/src/pages/health/index.scss b/apps/miniprogram/src/pages/health/index.scss index 015745e..acb9e7b 100644 --- a/apps/miniprogram/src/pages/health/index.scss +++ b/apps/miniprogram/src/pages/health/index.scss @@ -44,6 +44,12 @@ border-radius: $r; padding: 24px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); + border-left: 6px solid $bd; + transition: border-left-color 0.2s; + + &.status-normal { border-left-color: $acc; } + &.status-high { border-left-color: $dan; } + &.status-low { border-left-color: $dan; } } .health-card-label { @@ -73,7 +79,15 @@ .health-card-status { font-size: 22px; - color: $acc; + + &.status-normal { color: $acc; } + &.status-high, &.status-low { color: $dan; font-weight: bold; } +} + +.health-card-ref { + font-size: 20px; + color: $tx3; + margin-top: 4px; } .health-actions { diff --git a/apps/miniprogram/src/pages/health/index.tsx b/apps/miniprogram/src/pages/health/index.tsx index bef1033..e61f9d2 100644 --- a/apps/miniprogram/src/pages/health/index.tsx +++ b/apps/miniprogram/src/pages/health/index.tsx @@ -4,6 +4,13 @@ import { useHealthStore } from '../../stores/health'; import Loading from '../../components/Loading'; import './index.scss'; +function getStatusStyle(status?: string) { + if (status === 'high') return { cls: 'status-high', label: '偏高 ▲' }; + if (status === 'low') return { cls: 'status-low', label: '偏低 ▼' }; + if (status === 'normal') return { cls: 'status-normal', label: '正常 ─' }; + return { cls: '', label: '' }; +} + export default function Health() { const { todaySummary, loading, refreshToday } = useHealthStore(); @@ -21,10 +28,10 @@ export default function Health() { const summary = todaySummary || {}; const items = [ - { label: '血压', value: summary.blood_pressure ? `${summary.blood_pressure.systolic}/${summary.blood_pressure.diastolic}` : '--/--', unit: 'mmHg', indicator: 'blood_pressure_systolic', status: summary.blood_pressure?.status }, - { label: '心率', value: summary.heart_rate ? `${summary.heart_rate.value}` : '--', unit: 'bpm', indicator: 'heart_rate', status: summary.heart_rate?.status }, - { label: '血糖', value: summary.blood_sugar ? `${summary.blood_sugar.value}` : '--', unit: 'mmol/L', indicator: 'blood_sugar_fasting', status: summary.blood_sugar?.status }, - { label: '体重', value: summary.weight ? `${summary.weight.value}` : '--', unit: 'kg', indicator: 'weight', status: summary.weight?.status }, + { label: '血压', value: summary.blood_pressure ? `${summary.blood_pressure.systolic}/${summary.blood_pressure.diastolic}` : '--/--', unit: 'mmHg', indicator: 'blood_pressure_systolic', status: summary.blood_pressure?.status, ref: summary.blood_pressure?.reference_range }, + { label: '心率', value: summary.heart_rate ? `${summary.heart_rate.value}` : '--', unit: 'bpm', indicator: 'heart_rate', status: summary.heart_rate?.status, ref: summary.heart_rate?.reference_range }, + { label: '血糖', value: summary.blood_sugar ? `${summary.blood_sugar.value}` : '--', unit: 'mmol/L', indicator: 'blood_sugar_fasting', status: summary.blood_sugar?.status, ref: summary.blood_sugar?.reference_range }, + { label: '体重', value: summary.weight ? `${summary.weight.value}` : '--', unit: 'kg', indicator: 'weight', status: summary.weight?.status, ref: summary.weight?.reference_range }, ]; return ( @@ -40,16 +47,20 @@ export default function Health() { ) : ( - {items.map((item) => ( - goToTrend(item.indicator)}> - {item.label} - {item.value} - - {item.unit} - {item.status && {item.status}} + {items.map((item) => { + const style = getStatusStyle(item.status); + return ( + goToTrend(item.indicator)}> + {item.label} + {item.value} + + {item.unit} + {style.label && {style.label}} + + {item.ref && 参考: {item.ref}} - - ))} + ); + })} )} diff --git a/apps/miniprogram/src/pages/index/index.scss b/apps/miniprogram/src/pages/index/index.scss index e4f587c..c96782d 100644 --- a/apps/miniprogram/src/pages/index/index.scss +++ b/apps/miniprogram/src/pages/index/index.scss @@ -57,6 +57,24 @@ border-radius: $r-sm; padding: 20px; text-align: center; + border-left: 4px solid transparent; + + &.health-item-ok { border-left-color: $acc; } + &.health-item-warn { border-left-color: $dan; } +} + +.health-item-bottom { + display: flex; + justify-content: center; + align-items: center; + gap: 8px; +} + +.health-status { + font-size: 20px; + + &.normal { color: $acc; } + &.high, &.low { color: $dan; font-weight: bold; } } .health-label { diff --git a/apps/miniprogram/src/pages/index/index.tsx b/apps/miniprogram/src/pages/index/index.tsx index ffd8631..7bdfe4c 100644 --- a/apps/miniprogram/src/pages/index/index.tsx +++ b/apps/miniprogram/src/pages/index/index.tsx @@ -31,12 +31,19 @@ export default function Index() { }; const healthItems = [ - { label: '血压', value: todaySummary?.blood_pressure ? `${todaySummary.blood_pressure.systolic}/${todaySummary.blood_pressure.diastolic}` : '--/--', unit: 'mmHg' }, - { label: '心率', value: todaySummary?.heart_rate ? `${todaySummary.heart_rate.value}` : '--', unit: 'bpm' }, - { label: '血糖', value: todaySummary?.blood_sugar ? `${todaySummary.blood_sugar.value}` : '--', unit: 'mmol/L' }, - { label: '体重', value: todaySummary?.weight ? `${todaySummary.weight.value}` : '--', unit: 'kg' }, + { label: '血压', value: todaySummary?.blood_pressure ? `${todaySummary.blood_pressure.systolic}/${todaySummary.blood_pressure.diastolic}` : '--/--', unit: 'mmHg', status: todaySummary?.blood_pressure?.status }, + { label: '心率', value: todaySummary?.heart_rate ? `${todaySummary.heart_rate.value}` : '--', unit: 'bpm', status: todaySummary?.heart_rate?.status }, + { label: '血糖', value: todaySummary?.blood_sugar ? `${todaySummary.blood_sugar.value}` : '--', unit: 'mmol/L', status: todaySummary?.blood_sugar?.status }, + { label: '体重', value: todaySummary?.weight ? `${todaySummary.weight.value}` : '--', unit: 'kg', status: todaySummary?.weight?.status }, ]; + const getStatusLabel = (status?: string) => { + if (status === 'high') return '偏高 ▲'; + if (status === 'low') return '偏低 ▼'; + if (status === 'normal') return '正常'; + return ''; + }; + return ( @@ -54,10 +61,13 @@ export default function Index() { ) : ( {healthItems.map((item) => ( - + {item.label} {item.value} - {item.unit} + + {item.unit} + {item.status && {getStatusLabel(item.status)}} + ))}