From bdc2d07c1c7e6f221ffe69d144e2c18543cc7d1c Mon Sep 17 00:00:00 2001 From: iven Date: Fri, 22 May 2026 08:22:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(miniprogram):=20=E8=A1=80=E5=8E=8B?= =?UTF-8?q?=E5=BD=95=E5=85=A5=E8=B7=B3=E7=84=A6=20+=20=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E5=8F=82=E8=80=83=E5=80=BC=20(U2-2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 收缩压 onConfirm 自动聚焦到舒张压输入框 - 显示上次血压测量值作为参考 - 新增 .input-field-ref 样式 --- .../src/pages/pkg-health/input/index.scss | 6 ++++ .../src/pages/pkg-health/input/index.tsx | 35 +++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/apps/miniprogram/src/pages/pkg-health/input/index.scss b/apps/miniprogram/src/pages/pkg-health/input/index.scss index 61259e5..30bbdae 100644 --- a/apps/miniprogram/src/pages/pkg-health/input/index.scss +++ b/apps/miniprogram/src/pages/pkg-health/input/index.scss @@ -149,6 +149,12 @@ margin-bottom: var(--tk-gap-xs); } +.input-field-ref { + color: var(--tk-text-secondary); + font-size: var(--tk-font-cap); + margin-left: 8px; +} + .input-bp-divider { display: flex; flex-direction: column; diff --git a/apps/miniprogram/src/pages/pkg-health/input/index.tsx b/apps/miniprogram/src/pages/pkg-health/input/index.tsx index f2ee0cd..4ece65d 100644 --- a/apps/miniprogram/src/pages/pkg-health/input/index.tsx +++ b/apps/miniprogram/src/pages/pkg-health/input/index.tsx @@ -67,6 +67,8 @@ export default function HealthInput() { const [submitting, setSubmitting] = useState(false); const { safeSetTimeout } = useSafeTimeout(); const [loadingThresholds, setLoadingThresholds] = useState(true); + const [focusedField, setFocusedField] = useState(null); + const [lastBp, setLastBp] = useState<{ systolic: number; diastolic: number } | null>(null); const currentPatient = useAuthStore((s) => s.currentPatient); const clearCache = useHealthStore((s) => s.clearCache); @@ -102,7 +104,24 @@ export default function HealthInput() { } catch { // 解析失败则忽略,不影响正常使用 } - }, []); + + // 加载上次血压参考值 + try { + const pid = currentPatient?.id; + if (pid) { + const res = await import('../../../services/request').then((m) => m.api); + const data = await res.get<{ data: Array<{ morning_bp_systolic?: number; morning_bp_diastolic?: number }> }>( + `/health/patients/${pid}/daily-monitoring`, + { page: 1, page_size: 1 }, + ); + const items = Array.isArray(data) ? data : (data as Record)?.data; + const latest = Array.isArray(items) ? items[0] : null; + if (latest?.morning_bp_systolic && latest?.morning_bp_diastolic) { + setLastBp({ systolic: latest.morning_bp_systolic, diastolic: latest.morning_bp_diastolic }); + } + } + } catch { /* 不影响主流程 */ } + }, [currentPatient?.id]); usePageData(loadThresholdsAndSync, { throttleMs: 10000 }); @@ -226,13 +245,18 @@ export default function HealthInput() { 血压数值 - 收缩压 + + 收缩压 + {lastBp && 上次 {lastBp.systolic}} + setSystolic(e.detail.value)} + onConfirm={() => setFocusedField('diastolic')} /> @@ -241,13 +265,18 @@ export default function HealthInput() { - 舒张压 + + 舒张压 + {lastBp && 上次 {lastBp.diastolic}} + setDiastolic(e.detail.value)} + onConfirm={() => setFocusedField(null)} />