From 63d8b7a65de1ccd4ee7930bcab6df91f50f97b3f Mon Sep 17 00:00:00 2001 From: iven Date: Thu, 30 Apr 2026 23:04:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(miniprogram):=20=E5=AF=B9=E9=BD=90=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=8E=9F=E5=9E=8B=20=E2=80=94=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E6=B8=90=E5=8F=98=E5=A4=B4=E9=83=A8+=E4=BD=93=E5=BE=81?= =?UTF-8?q?=E6=95=B0=E5=80=BC=E5=86=85=E8=81=94+=E5=8D=A1=E7=89=87?= =?UTF-8?q?=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 首页:移除渐变头部改为平铺背景,铃铛图标替代消息按钮 - 首页:体征数值与单位内联显示(同一行 baseline 对齐) - 健康页:标题改为"健康数据",整体样式贴近原型紧凑风格 - 我的页:移除渐变头部改为平铺卡片,积分/打卡分两个独立卡片 - 我的页:菜单使用 emoji 图标替代文字图标,间距更紧凑 --- apps/miniprogram/src/pages/health/index.scss | 144 ++++++++-------- apps/miniprogram/src/pages/health/index.tsx | 2 +- apps/miniprogram/src/pages/index/index.scss | 155 +++++++++--------- apps/miniprogram/src/pages/index/index.tsx | 10 +- apps/miniprogram/src/pages/profile/index.scss | 150 +++++++---------- apps/miniprogram/src/pages/profile/index.tsx | 91 +++++----- 6 files changed, 280 insertions(+), 272 deletions(-) diff --git a/apps/miniprogram/src/pages/health/index.scss b/apps/miniprogram/src/pages/health/index.scss index cf08e5f..eabf5f9 100644 --- a/apps/miniprogram/src/pages/health/index.scss +++ b/apps/miniprogram/src/pages/health/index.scss @@ -4,32 +4,32 @@ .health-page { min-height: 100vh; background: $bg; - padding-bottom: calc(120px + env(safe-area-inset-bottom)); + padding: 20px 16px 100px; + padding-bottom: calc(100px + env(safe-area-inset-bottom)); } /* ─── 页头 ─── */ .health-header { - padding: 24px 32px 8px; + margin-bottom: 16px; } .health-title { - font-family: 'Georgia', 'Times New Roman', serif; - font-size: 36px; - font-weight: bold; + font-size: 22px; + font-weight: 700; color: $tx; } /* ─── 类型 Tab ─── */ .vital-tabs { display: flex; - padding: 12px 24px; - gap: 12px; + padding: 0 0 16px; + gap: 8px; } .vital-tab { flex: 1; - height: $tab-h; - border-radius: $r; + height: 40px; + border-radius: 12px; background: $surface-alt; @include flex-center; position: relative; @@ -48,73 +48,74 @@ } .vital-tab-text { - font-size: 26px; + font-size: 15px; font-weight: 600; color: $tx2; } .vital-tab-dot { position: absolute; - top: 10px; - right: 10px; - width: 8px; - height: 8px; + top: 8px; + right: 8px; + width: 6px; + height: 6px; border-radius: 50%; background: $wrn; } /* ─── 录入区 ─── */ .input-section { - margin: 0 24px 24px; + margin-bottom: 12px; background: $card; border-radius: $r; - padding: 24px; + padding: 16px; box-shadow: $shadow-sm; } .input-group { - margin-bottom: 20px; + margin-bottom: 12px; } .input-label { - font-size: 26px; - color: $tx; - font-weight: 600; + font-size: 13px; + color: $tx3; display: block; - margin-bottom: 12px; + margin-bottom: 4px; } .input-field { height: 56px; background: $bg; border: 2px solid $bd; - border-radius: $r-sm; - padding: 0 20px; + border-radius: 12px; + padding: 0 16px; font-family: 'Georgia', 'Times New Roman', serif; font-size: 28px; + font-weight: 600; color: $tx; width: 100%; box-sizing: border-box; } .input-ref { - font-size: 22px; - color: $tx2; + font-size: 13px; + color: $tx3; display: block; - margin-top: 12px; + margin-top: 8px; + margin-bottom: 4px; } /* ─── 血糖时段选择 ─── */ .period-group { display: flex; - gap: 12px; - margin-top: 16px; + gap: 8px; + margin-top: 12px; } .period-btn { flex: 1; - height: $btn-primary-h; - border-radius: $r-sm; + height: 48px; + border-radius: 12px; background: $surface-alt; @include flex-center; @@ -132,53 +133,68 @@ } .period-btn-text { - font-size: 26px; + font-size: 15px; font-weight: 600; color: $tx2; } /* ─── 保存按钮 ─── */ .save-btn { - @include btn-primary; - margin-top: 24px; - border-radius: $r; + width: 100%; + height: 52px; + border-radius: 14px; + background: $pri; + @include flex-center; + margin-top: 12px; + + &:active { + opacity: 0.85; + } } .save-btn-text { - font-size: 28px; + font-size: 17px; font-weight: 600; color: #fff; } /* ─── 趋势图 ─── */ .trend-section { - margin: 0 24px 24px; + margin-bottom: 12px; +} + +.section-title { + @include section-title; } .trend-empty { background: $card; border-radius: $r; - padding: 36px; + padding: 24px; text-align: center; + box-shadow: $shadow-sm; } .trend-empty-text { - font-size: 24px; + font-size: 14px; color: $tx2; } .trend-chart { background: $card; border-radius: $r; - padding: 24px; + padding: 16px; box-shadow: $shadow-sm; } .trend-bars { display: flex; align-items: flex-end; - height: 200px; - gap: 8px; + height: 120px; + background: $bg; + border-radius: 12px; + padding: 12px 8px; + gap: 0; } .trend-bar-col { @@ -191,10 +207,10 @@ } .trend-bar { - width: 100%; - max-width: 40px; + width: 28px; border-radius: 6px 6px 0 0; - min-height: 16px; + min-height: 8px; + opacity: 0.8; &.trend-bar-normal { background: $pri; @@ -206,22 +222,23 @@ } .trend-bar-label { - font-size: 22px; - color: $tx2; - margin-top: 8px; + font-size: 11px; + color: $tx3; + margin-top: 6px; } /* ─── BLE 设备卡片 ─── */ .device-section { - margin: 0 24px 16px; + margin-bottom: 12px; } .device-card { display: flex; align-items: center; + gap: 12px; background: $card; border-radius: $r; - padding: 24px; + padding: 16px; box-shadow: $shadow-sm; &:active { @@ -230,19 +247,16 @@ } .device-icon { - width: 56px; - height: 56px; - border-radius: $r-sm; + width: 44px; + height: 44px; + border-radius: 12px; background: $pri-l; @include flex-center; - margin-right: 16px; flex-shrink: 0; } .device-icon-text { - font-size: 26px; - font-weight: bold; - color: $pri; + font-size: 22px; } .device-info { @@ -251,31 +265,29 @@ } .device-name { - font-size: 28px; - font-weight: 600; + font-size: 15px; + font-weight: 500; color: $tx; display: block; - margin-bottom: 4px; } .device-desc { - font-size: 22px; - color: $tx2; + font-size: 13px; + color: $acc; display: block; } .device-arrow { - font-size: 32px; + font-size: 14px; color: $tx3; flex-shrink: 0; } /* ─── 健康资讯入口 ─── */ .article-entry { - margin: 0 24px 24px; background: $card; border-radius: $r; - padding: 24px; + padding: 16px; box-shadow: $shadow-sm; &:active { @@ -284,7 +296,7 @@ } .article-entry-text { - font-size: 26px; - color: $pri; + font-size: 15px; + color: $tx; font-weight: 500; } diff --git a/apps/miniprogram/src/pages/health/index.tsx b/apps/miniprogram/src/pages/health/index.tsx index ab974cb..b3fbd2f 100644 --- a/apps/miniprogram/src/pages/health/index.tsx +++ b/apps/miniprogram/src/pages/health/index.tsx @@ -159,7 +159,7 @@ export default function Health() { {/* 页头 */} - 健康 + 健康数据 {/* 类型 Tab */} diff --git a/apps/miniprogram/src/pages/index/index.scss b/apps/miniprogram/src/pages/index/index.scss index 22e0d91..ae6c7fb 100644 --- a/apps/miniprogram/src/pages/index/index.scss +++ b/apps/miniprogram/src/pages/index/index.scss @@ -4,17 +4,16 @@ .home-page { min-height: 100vh; background: $bg; - padding-bottom: calc(120px + env(safe-area-inset-bottom)); + padding: 20px 16px 100px; + padding-bottom: calc(100px + env(safe-area-inset-bottom)); } -/* ─── 区域 1:问候 + 日期 + 消息 ─── */ +/* ─── 区域 1:问候 + 日期 + 铃铛 ─── */ .greeting-section { - background: linear-gradient(135deg, $pri 0%, $pri-d 100%); - padding: 48px 32px 60px; - color: #fff; display: flex; justify-content: space-between; - align-items: center; + align-items: flex-start; + margin-bottom: 16px; } .greeting-left { @@ -22,45 +21,44 @@ } .greeting-text { - font-size: 28px; - font-weight: bold; + font-size: 24px; + font-weight: 700; + color: $tx; display: block; - margin-bottom: 6px; + margin-bottom: 4px; } .greeting-date { - font-size: 22px; - opacity: 0.75; + font-size: 14px; + color: $tx3; } -.greeting-msg { - width: 56px; - height: 56px; - border-radius: 50%; - background: rgba(255, 255, 255, 0.2); +.greeting-bell { + position: relative; + width: 40px; + height: 40px; @include flex-center; + flex-shrink: 0; &:active { - background: rgba(255, 255, 255, 0.1); + opacity: 0.7; } } -.greeting-msg-icon { +.greeting-bell-icon { font-size: 22px; - color: #fff; - font-weight: 600; } /* ─── 区域 2:今日体征完成度 ─── */ .checkin-card { background: $card; border-radius: $r; - box-shadow: $shadow-md; - margin: -28px 24px 24px; - padding: 24px; + box-shadow: $shadow-sm; + padding: 16px; + margin-bottom: 12px; display: flex; align-items: center; - gap: 24px; + gap: 16px; &:active { opacity: 0.9; @@ -69,6 +67,7 @@ .checkin-left { flex-shrink: 0; + position: relative; } .checkin-right { @@ -77,22 +76,22 @@ } .checkin-title { - font-size: 26px; + font-size: 16px; font-weight: 600; color: $tx; display: block; - margin-bottom: 12px; + margin-bottom: 8px; } .checkin-capsules { display: flex; flex-wrap: wrap; - gap: 8px; + gap: 6px; } .capsule { - font-size: 22px; - padding: 4px 12px; + font-size: 11px; + padding: 3px 8px; border-radius: $r-pill; font-weight: 500; @@ -103,27 +102,30 @@ &.capsule-pending { background: $surface-alt; - color: $tx2; + color: $tx3; } } /* ─── 区域 3:今日体征 2x2 ─── */ .vitals-section { - margin: 0 24px 24px; + margin-bottom: 12px; +} + +.section-title { + @include section-title; } .vitals-grid { display: grid; grid-template-columns: 1fr 1fr; - gap: 16px; + gap: 10px; } .vital-card { background: $card; border-radius: $r; - padding: 20px; + padding: 14px 16px; box-shadow: $shadow-sm; - text-align: center; &:active { opacity: 0.7; @@ -131,40 +133,45 @@ } .vital-label { - font-size: 24px; + font-size: 13px; color: $tx2; display: block; - margin-bottom: 8px; + margin-bottom: 4px; +} + +.vital-value-row { + display: flex; + align-items: baseline; + margin-bottom: 4px; } .vital-value { @include serif-number; - font-size: 48px; - font-weight: bold; + font-size: 32px; + font-weight: 700; color: $tx; - display: block; line-height: 1.1; - margin-bottom: 8px; +} + +.vital-unit { + font-size: 12px; + color: $tx3; + margin-left: 2px; } .vital-bottom { display: flex; - justify-content: center; align-items: center; - gap: 8px; -} - -.vital-unit { - font-size: 22px; - color: $tx2; + gap: 0; } .vital-tag { - font-size: 22px; + font-size: 12px; font-weight: 500; - padding: 2px 10px; - border-radius: $r-sm; + padding: 2px 8px; + border-radius: $r-pill; display: inline-block; + margin-top: 4px; &.tag-ok { background: $acc-l; @@ -178,25 +185,25 @@ &.tag-empty { background: $surface-alt; - color: $tx2; + color: $tx3; } } /* ─── 区域 4:今日待办 ─── */ .todo-section { - margin: 0 24px 24px; + margin-bottom: 12px; } .todo-empty { background: $card; border-radius: $r; - padding: 36px 24px; + padding: 24px; text-align: center; box-shadow: $shadow-sm; } .todo-empty-text { - font-size: 24px; + font-size: 14px; color: $tx2; } @@ -210,8 +217,9 @@ .todo-item { display: flex; align-items: center; - padding: 24px; - border-bottom: 1px solid $bd-l; + gap: 10px; + padding: 12px 16px; + border-bottom: 1px solid $bd; &:last-child { border-bottom: none; @@ -223,17 +231,16 @@ } .todo-icon-wrap { - width: 48px; - height: 48px; - border-radius: $r-sm; + width: 36px; + height: 36px; + border-radius: 10px; background: $pri-l; @include flex-center; - margin-right: 16px; flex-shrink: 0; } .todo-icon-char { - font-size: 24px; + font-size: 18px; font-weight: bold; color: $pri; } @@ -244,16 +251,16 @@ } .todo-title { - font-size: 28px; + font-size: 15px; color: $tx; - font-weight: 600; + font-weight: 500; display: block; - margin-bottom: 4px; + margin-bottom: 2px; } .todo-sub { - font-size: 22px; - color: $tx2; + font-size: 13px; + color: $tx3; display: block; overflow: hidden; text-overflow: ellipsis; @@ -261,7 +268,7 @@ } .todo-arrow { - font-size: 32px; + font-size: 14px; color: $tx3; flex-shrink: 0; } @@ -269,17 +276,17 @@ /* ─── 区域 5:快捷操作 ─── */ .action-section { display: flex; - gap: 16px; - margin: 0 24px 24px; + gap: 10px; + margin-top: 16px; } .action-btn { flex: 1; - @include touch-target; - height: $btn-primary-h; - border-radius: $r; - font-size: 28px; + height: 52px; + border-radius: 14px; + font-size: 17px; font-weight: 600; + @include flex-center; &:active { opacity: 0.85; @@ -298,6 +305,6 @@ } .action-btn-text { - font-size: 28px; + font-size: 17px; font-weight: 600; } diff --git a/apps/miniprogram/src/pages/index/index.tsx b/apps/miniprogram/src/pages/index/index.tsx index e8c5531..6102ba8 100644 --- a/apps/miniprogram/src/pages/index/index.tsx +++ b/apps/miniprogram/src/pages/index/index.tsx @@ -118,10 +118,10 @@ export default function Index() { Taro.switchTab({ url: '/pages/messages/index' })} > - + 🔔 @@ -165,9 +165,11 @@ export default function Index() { onClick={() => Taro.navigateTo({ url: `/pages/pkg-health/trend/index?indicator=${item.indicator}` })} > {item.label} - {item.value} - + + {item.value} {item.unit} + + {tag && {tag.label}} {!item.status && 未记录} diff --git a/apps/miniprogram/src/pages/profile/index.scss b/apps/miniprogram/src/pages/profile/index.scss index 0b1694a..7046fee 100644 --- a/apps/miniprogram/src/pages/profile/index.scss +++ b/apps/miniprogram/src/pages/profile/index.scss @@ -4,103 +4,92 @@ .profile-page { min-height: 100vh; background: $bg; - padding-bottom: calc(120px + env(safe-area-inset-bottom)); + padding: 20px 16px 100px; + padding-bottom: calc(100px + env(safe-area-inset-bottom)); } -/* ─── 用户信息区 ─── */ -.profile-header { - background: linear-gradient(135deg, $pri 0%, $pri-d 100%); - padding: 60px 32px 40px; +/* ─── 用户信息卡片 ─── */ +.profile-user-card { + background: $card; + border-radius: $r; + padding: 16px; display: flex; - flex-direction: column; align-items: center; + gap: 14px; + box-shadow: $shadow-sm; + margin-bottom: 10px; } .profile-avatar { - width: 120px; - height: 120px; - border-radius: 50%; - background: rgba(255, 255, 255, 0.25); + width: 60px; + height: 60px; + border-radius: 30px; + background: $pri-l; @include flex-center; - margin-bottom: 16px; + flex-shrink: 0; } -.profile-avatar-text { - font-family: 'Georgia', 'Times New Roman', serif; - font-size: 48px; - color: #fff; - font-weight: bold; - line-height: 1; +.profile-avatar-icon { + font-size: 28px; +} + +.profile-user-info { + flex: 1; + min-width: 0; } .profile-name { - font-family: 'Georgia', 'Times New Roman', serif; - font-size: 34px; - color: #fff; - font-weight: bold; - margin-bottom: 4px; + font-size: 20px; + font-weight: 700; + color: $tx; + display: block; + margin-bottom: 2px; } .profile-phone { - font-size: 26px; - color: rgba(255, 255, 255, 0.75); + font-size: 14px; + color: $tx3; } -/* ─── 积分 + 打卡横排 ─── */ -.profile-stats { +/* ─── 积分 + 打卡并排 ─── */ +.profile-stats-row { display: flex; - align-items: center; - margin-top: 28px; - background: rgba(255, 255, 255, 0.12); - border: 1px solid rgba(255, 255, 255, 0.18); - border-radius: $r; - padding: 20px 32px; - width: 100%; - box-sizing: border-box; - - &:active { - background: rgba(255, 255, 255, 0.08); - } + gap: 10px; + margin-bottom: 12px; } .stat-card { flex: 1; - display: flex; - flex-direction: column; - align-items: center; + background: $card; + border-radius: $r; + padding: 16px; + text-align: center; + box-shadow: $shadow-sm; } .stat-value { @include serif-number; - font-size: 28px; - font-weight: bold; - color: #fff; + font-size: 24px; + font-weight: 700; + display: block; margin-bottom: 4px; -} -.stat-value-pri { - color: #FFD6C7; -} + &.stat-pri { + color: $pri; + } -.stat-value-acc { - color: #C8E6C9; + &.stat-acc { + color: $acc; + } } .stat-label { - font-size: 22px; - color: rgba(255, 255, 255, 0.7); -} - -.stat-divider { - width: 1px; - height: 48px; - background: rgba(255, 255, 255, 0.2); - margin: 0 24px; + font-size: 13px; + color: $tx3; } /* ─── 菜单 ─── */ .profile-menu { - margin: 24px; background: $card; border-radius: $r; overflow: hidden; @@ -110,10 +99,9 @@ .menu-item { display: flex; align-items: center; - padding: 28px 24px; - min-height: $menu-item-h; - box-sizing: border-box; - border-bottom: 1px solid $bd-l; + gap: 14px; + padding: 18px 16px; + border-bottom: 1px solid $bd; &:last-child { border-bottom: none; @@ -125,50 +113,36 @@ } .menu-icon { - width: 48px; - height: 48px; - border-radius: $r-sm; - background: $pri-l; + width: 40px; + height: 40px; + border-radius: 12px; @include flex-center; - margin-right: 20px; flex-shrink: 0; } -.menu-icon-char { - font-family: 'Georgia', 'Times New Roman', serif; - font-size: 24px; - font-weight: bold; - color: $pri; - line-height: 1; +.menu-icon-text { + font-size: 20px; } .menu-label { flex: 1; - font-size: 28px; + font-size: 16px; color: $tx; } .menu-arrow { - font-size: 32px; + font-size: 14px; color: $tx3; flex-shrink: 0; } /* ─── 退出登录 ─── */ .profile-logout { - margin: 24px; - background: $card; - border-radius: $r; - padding: 28px; + margin-top: 24px; text-align: center; - box-shadow: $shadow-sm; - - &:active { - opacity: 0.7; - } } .logout-text { - font-size: 28px; - color: $dan; + font-size: 14px; + color: $tx3; } diff --git a/apps/miniprogram/src/pages/profile/index.tsx b/apps/miniprogram/src/pages/profile/index.tsx index 9b15a0a..3fe06c7 100644 --- a/apps/miniprogram/src/pages/profile/index.tsx +++ b/apps/miniprogram/src/pages/profile/index.tsx @@ -6,21 +6,37 @@ import { usePointsStore } from '../../stores/points'; import './index.scss'; const MENU_ITEMS = [ - { label: '积分商城', char: '商', path: '/pages/mall/index' }, - { label: '我的订单', char: '单', path: '/pages/pkg-mall/orders/index' }, - { label: '积分明细', char: '明', path: '/pages/pkg-mall/detail/index' }, - { label: '就诊人管理', char: '人', path: '/pages/pkg-profile/family/index' }, - { label: '我的报告', char: '报', path: '/pages/pkg-profile/reports/index' }, - { label: '健康记录', char: '健', path: '/pages/pkg-profile/health-records/index' }, - { label: '诊断记录', char: '诊', path: '/pages/pkg-profile/diagnoses/index' }, - { label: '我的随访', char: '随', path: '/pages/pkg-profile/followups/index' }, - { label: '用药提醒', char: '药', path: '/pages/pkg-profile/medication/index' }, - { label: '透析记录', char: '透', path: '/pages/pkg-profile/dialysis-records/index' }, - { label: '透析处方', char: '方', path: '/pages/pkg-profile/dialysis-prescriptions/index' }, - { label: '知情同意', char: '知', path: '/pages/pkg-profile/consents/index' }, - { label: '设置', char: '设', path: '/pages/pkg-profile/settings/index' }, + { label: '积分商城', icon: '🎁', bg: '#FDEAEA' }, + { label: '我的订单', icon: '📦', bg: '#E8F0F8' }, + { label: '就诊人管理', icon: '👨‍👩‍👧', bg: '#F0DDD4' }, + { label: '我的报告', icon: '📄', bg: '#E8F0E8' }, + { label: '健康记录', icon: '📝', bg: '#E8F0F8' }, + { label: '诊断记录', icon: '📋', bg: '#E8F0E8' }, + { label: '我的随访', icon: '🏥', bg: '#F3E8F8' }, + { label: '用药提醒', icon: '💊', bg: '#FFF3E0' }, + { label: '透析记录', icon: '💉', bg: '#E8F0F8' }, + { label: '透析处方', icon: '💊', bg: '#E8F0E8' }, + { label: '知情同意', icon: '📋', bg: '#F3E8F8' }, + { label: '积分明细', icon: '📊', bg: '#F0DDD4' }, + { label: '设置', icon: '⚙️', bg: '#f0f0f0' }, ]; +const MENU_PATHS: Record = { + '积分商城': '/pages/mall/index', + '我的订单': '/pages/pkg-mall/orders/index', + '积分明细': '/pages/pkg-mall/detail/index', + '就诊人管理': '/pages/pkg-profile/family/index', + '我的报告': '/pages/pkg-profile/reports/index', + '健康记录': '/pages/pkg-profile/health-records/index', + '诊断记录': '/pages/pkg-profile/diagnoses/index', + '我的随访': '/pages/pkg-profile/followups/index', + '用药提醒': '/pages/pkg-profile/medication/index', + '透析记录': '/pages/pkg-profile/dialysis-records/index', + '透析处方': '/pages/pkg-profile/dialysis-prescriptions/index', + '知情同意': '/pages/pkg-profile/consents/index', + '设置': '/pages/pkg-profile/settings/index', +}; + export default function Profile() { const { user, logout } = useAuthStore(); const { account: pointsAccount, checkinStatus: checkinInfo, refresh: refreshPoints } = usePointsStore(); @@ -29,8 +45,9 @@ export default function Profile() { refreshPoints(); }); - const handleMenuClick = (path: string) => { - Taro.navigateTo({ url: path }); + const handleMenuClick = (label: string) => { + const path = MENU_PATHS[label]; + if (path) Taro.navigateTo({ url: path }); }; const handleLogout = () => { @@ -46,30 +63,26 @@ export default function Profile() { return ( - {/* 用户信息区 */} - + {/* 用户信息卡片 */} + - - {user?.display_name?.[0] || '?'} - + 👤 - {user?.display_name || '未登录'} - {user?.phone || ''} + + {user?.display_name || '未登录'} + {user?.phone || ''} + + - {/* 积分 + 连续打卡横排 */} - - Taro.navigateTo({ url: '/pages/pkg-mall/detail/index' })} - > - {(pointsAccount?.balance ?? 0).toLocaleString()} - 积分 - - - - {checkinInfo?.consecutive_days ?? 0} - 连续打卡(天) - + {/* 积分 + 打卡 — 两个独立卡片并排 */} + + + {(pointsAccount?.balance ?? 0).toLocaleString()} + 健康积分 + + + {checkinInfo?.consecutive_days ?? 0}天 + 连续打卡 @@ -79,10 +92,10 @@ export default function Profile() { handleMenuClick(item.path)} + onClick={() => handleMenuClick(item.label)} > - - {item.char} + + {item.icon} {item.label}