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)}}
+
))}