feat: 健康监测模块同步—清理废弃页面、补充环境监测页面、导航页与PRD对齐

- 删除 web-admin 健康监测 7 个废弃页面(survey-question/score/template、maxim、record-user/dept)
- 删除 employee-app 健康监测 5 个废弃健康排查页面与 3 个废弃体重监测截图
- 新增 employee-app 环境监测多分类截图(indoor/outdoor/water/pollen 各维度细分)
- 更新 index.html 导航页:健康监测条目对齐磁盘实际文件,web 端标记为已完成
- 同步更新 PRD、design-overview、CHANGELOG 及相关页面截图

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
liuyunqin
2026-06-09 17:53:44 +08:00
co-authored by Claude Opus 4.7
parent 7cd7e83679
commit 9b57f6164e
162 changed files with 1191 additions and 3373 deletions
+144 -58
View File
@@ -29,31 +29,55 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
.module__title { font-size: 16px; font-weight: 700; color: #1a1a1a; }
.module__more { font-size: 12px; color: #999; cursor: pointer; }
/* 体重管理 */
.weight-stats { display: flex; justify-content: space-around; text-align: center; margin-bottom: 16px; }
.weight-stats__item span { display: block; }
.weight-stats__val { font-size: 18px; font-weight: 700; color: #1a1a1a; }
.weight-stats__label { font-size: 11px; color: #999; margin-top: 2px; }
.weight-ball-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 16px; }
.weight-side { width: 74px; text-align: center; flex-shrink: 0; }
.weight-side__label { font-size: 12px; color: #666; margin-bottom: 6px; }
.weight-side__val { font-size: 32px; line-height: 1; font-weight: 700; color: #1a1a1a; }
.weight-side__unit { font-size: 12px; color: #999; margin-top: 4px; }
.weight-ball { width: 140px; height: 140px; margin: 0; border-radius: 50%; background: linear-gradient(180deg, #e6f7ff 0%, #1890ff 100%); position: relative; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 20px rgba(24,144,255,0.3); }
.weight-ball__inner { width: 110px; height: 110px; border-radius: 50%; background: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.weight-ball__val { font-size: 28px; font-weight: 800; color: #1890ff; }
.weight-ball__unit { font-size: 12px; color: #999; }
.weight-ball__wave { position: absolute; bottom: 0; left: 0; right: 0; height: 60%; border-radius: 0 0 70px 70px; background: linear-gradient(180deg, rgba(24,144,255,0.15), rgba(24,144,255,0.4)); overflow: hidden; }
.daily-date { font-size: 14px; color: #666; text-align: center; margin-bottom: 10px; }
.daily-checkin { display: flex; justify-content: space-around; margin-bottom: 14px; }
.checkin-item { text-align: center; flex: 1; }
.checkin-item__icon { font-size: 24px; margin-bottom: 4px; }
.checkin-item__label { font-size: 11px; color: #999; }
.checkin-item__val { font-size: 13px; font-weight: 600; color: #333; margin-top: 2px; }
.checkin-item__sub { font-size: 11px; color: #999; margin-top: 2px; line-height: 1.4; }
.bmi-box { background: #f5f7fa; border-radius: 8px; padding: 12px; text-align: center; }
.bmi-box__formula { font-size: 13px; color: #666; }
.bmi-box__result { font-size: 20px; font-weight: 700; color: #52c41a; margin-top: 4px; }
.bmi-box__tag { display: inline-block; font-size: 11px; color: #52c41a; background: #f6ffed; border-radius: 4px; padding: 2px 8px; margin-top: 4px; }
.weight-header { background: linear-gradient(135deg, #ff6b6b, #ff9a56); border-radius: 12px 12px 0 0; margin: -16px -16px 0; padding: 16px 16px 20px; position: relative; }
.weight-header__title { font-size: 20px; font-weight: 700; color: #fff; }
.weight-header__info { position: absolute; top: 12px; right: 16px; font-size: 11px; color: rgba(255,255,255,0.85); }
.weight-header__info strong { color: #fff; }
.weight-ball-section { background: #fff; border-radius: 0 0 12px 12px; margin-bottom: 16px; overflow: hidden; }
.weight-avatars { display: flex; align-items: center; justify-content: space-around; padding: 20px 16px 16px; }
.weight-avatar-side { text-align: center; flex: 1; }
.weight-avatar__img { width: 56px; height: 72px; margin: 0 auto 8px; position: relative; }
.weight-avatar__img svg { width: 100%; height: 100%; }
.weight-avatar__label { font-size: 13px; color: #666; margin-bottom: 4px; }
.weight-avatar__val { font-size: 22px; font-weight: 700; color: #1a1a1a; }
.weight-avatar__bmi { font-size: 12px; color: #999; margin-top: 2px; }
.weight-ball-wrap { text-align: center; flex: 0 0 auto; position: relative; z-index: 1; margin: 0 8px; }
.weight-ball-wrap__top { font-size: 12px; color: #666; margin-bottom: 2px; }
.weight-ball-wrap__ruler { width: 2px; height: 12px; background: #ddd; margin: 0 auto 2px; }
.weight-ball { width: 150px; height: 150px; border-radius: 50%; position: relative; overflow: hidden; box-shadow: 0 4px 20px rgba(24,144,255,0.15); }
.weight-ball__bg { position: absolute; inset: 0; background: linear-gradient(180deg, #f0f8ff 0%, #e6f7ff 50%, #7ec8e3 100%); }
.weight-ball__wave { position: absolute; bottom: 0; left: 0; right: 0; height: 55%; }
.weight-ball__wave svg { width: 100%; height: 100%; display: block; }
.weight-ball__content { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 2; }
.weight-ball__val { font-size: 36px; font-weight: 800; color: #1a1a1a; line-height: 1; }
.weight-ball__unit { font-size: 13px; color: #333; }
.weight-ball__meta { font-size: 11px; color: #666; margin-top: 2px; }
.weight-middle { padding: 0 16px 16px; display: flex; justify-content: center; }
.weight-change { text-align: center; }
.weight-change__label { font-size: 12px; color: #999; }
.weight-change__val { font-size: 20px; font-weight: 700; color: #1890ff; margin: 4px 0; }
.weight-change__val.negative { color: #52c41a; }
.weight-change__need { font-size: 12px; color: #faad14; }
.weight-change__need span { font-weight: 600; }
.daily-date { font-size: 13px; color: #666; text-align: center; margin-bottom: 12px; font-weight: 600; }
.daily-checkin { display: flex; gap: 10px; margin-bottom: 16px; }
.checkin-card { flex: 1; border-radius: 12px; padding: 14px 10px; text-align: center; color: #fff; }
.checkin-card--eat { background: linear-gradient(135deg, #52c41a, #73d13d); }
.checkin-card--move { background: linear-gradient(135deg, #fa8c16, #ffa940); }
.checkin-card--weight { background: linear-gradient(135deg, #722ed1, #9254de); }
.checkin-card__icon { font-size: 22px; margin-bottom: 4px; }
.checkin-card__val { font-size: 18px; font-weight: 800; line-height: 1.2; }
.checkin-card__unit { font-size: 12px; font-weight: 400; }
.checkin-card__recommend { font-size: 11px; opacity: 0.85; margin-top: 4px; }
.checkin-card__days { font-size: 11px; opacity: 0.85; margin-top: 2px; }
.bmi-section { background: #f8f9fa; border-radius: 10px; padding: 14px; margin-bottom: 12px; }
.bmi-formula { font-size: 13px; color: #666; text-align: center; margin-bottom: 12px; }
.bmi-table { display: flex; border: 1px solid #e0e0e0; border-radius: 8px; overflow: hidden; background: #fff; }
.bmi-table__cell { flex: 1; text-align: center; padding: 10px 4px; border-right: 1px solid #e0e0e0; }
.bmi-table__cell:last-child { border-right: none; }
.bmi-table__range { font-size: 12px; color: #333; font-weight: 600; }
.bmi-table__label { font-size: 11px; color: #999; margin-top: 4px; }
.bmi-center-note { font-size: 11px; color: #999; text-align: center; margin-top: 10px; }
/* 健康数据 */
.health-scroll { display: flex; gap: 10px; overflow-x: auto; padding-bottom: 4px; }
.health-scroll::-webkit-scrollbar { display: none; }
@@ -138,44 +162,106 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
</div>
</div>
<!-- 体重管理模块 -->
<div class="module">
<div class="module__hd"><span class="module__title">体重管理</span><span class="module__more">查看详情 </span></div>
<div class="weight-stats">
<div class="weight-stats__item"><span class="weight-stats__val">28</span><span class="weight-stats__label">活动天数</span></div>
<div class="weight-stats__item"><span class="weight-stats__val">156</span><span class="weight-stats__label">排名</span></div>
<div class="module" style="padding:0;overflow:hidden;">
<div class="weight-header">
<span class="weight-header__title">体重管理</span>
<span class="weight-header__info">体重管理活动 <strong>58</strong> 天,第 <strong>8</strong></span>
</div>
<div class="weight-ball-row">
<div class="weight-side">
<div class="weight-side__label">初始体重</div>
<div class="weight-side__val">75.0</div>
<div class="weight-side__unit">BMI:30</div>
</div>
<div class="weight-ball">
<div class="weight-ball__wave"></div>
<div class="weight-ball__inner">
<span class="weight-ball__val">70.5</span>
<span class="weight-ball__unit">当前体重(kg)</span>
<span class="weight-ball__unit">BMI:28</span>
<span class="weight-ball__unit">体脂率:26</span>
<div class="weight-ball-section">
<div class="weight-avatars">
<div class="weight-avatar-side">
<div class="weight-avatar__img">
<svg viewBox="0 0 56 72" fill="none">
<circle cx="28" cy="12" r="10" fill="#FFD591"/>
<rect x="16" y="22" width="24" height="20" rx="4" fill="#FF4D4F"/>
<rect x="12" y="42" width="10" height="22" rx="4" fill="#FF4D4F"/>
<rect x="34" y="42" width="10" height="22" rx="4" fill="#FF4D4F"/>
<circle cx="22" cy="10" r="1.5" fill="#333"/>
<circle cx="34" cy="10" r="1.5" fill="#333"/>
<path d="M25 14 Q28 16 31 14" stroke="#333" stroke-width="1" fill="none"/>
</svg>
</div>
<div class="weight-avatar__label">初始体重</div>
<div class="weight-avatar__val">73.5</div>
<div class="weight-avatar__bmi">BMI 23.6</div>
</div>
<div class="weight-ball-wrap">
<div class="weight-ball-wrap__top">当前体重</div>
<div class="weight-ball-wrap__ruler"></div>
<div class="weight-ball">
<div class="weight-ball__bg"></div>
<div class="weight-ball__wave">
<svg viewBox="0 0 150 82" preserveAspectRatio="none">
<path d="M0 30 Q25 15 50 30 Q75 45 100 30 Q125 15 150 30 L150 82 L0 82 Z" fill="#36cfc9" opacity="0.7"/>
<path d="M0 35 Q25 20 50 35 Q75 50 100 35 Q125 20 150 35 L150 82 L0 82 Z" fill="#1890ff" opacity="0.5"/>
</svg>
</div>
<div class="weight-ball__content">
<span class="weight-ball__val">62.6</span>
<span class="weight-ball__unit">公斤</span>
<span class="weight-ball__meta">BMI 23.6</span>
<span class="weight-ball__meta">体脂率 20%</span>
</div>
</div>
</div>
<div class="weight-avatar-side">
<div class="weight-avatar__img">
<svg viewBox="0 0 56 72" fill="none">
<circle cx="28" cy="12" r="10" fill="#FFD591"/>
<rect x="16" y="22" width="24" height="20" rx="4" fill="#1890ff"/>
<rect x="12" y="42" width="10" height="22" rx="4" fill="#1890ff"/>
<rect x="34" y="42" width="10" height="22" rx="4" fill="#1890ff"/>
<circle cx="22" cy="10" r="1.5" fill="#333"/>
<circle cx="34" cy="10" r="1.5" fill="#333"/>
<path d="M25 14 Q28 16 31 14" stroke="#333" stroke-width="1" fill="none"/>
</svg>
</div>
<div style="font-size:11px;color:#ff4d4f;margin-bottom:4px;">目标承诺</div>
<div class="weight-avatar__label">目标体重</div>
<div class="weight-avatar__val">56</div>
<div class="weight-avatar__bmi">BMI 22.5</div>
</div>
</div>
<div class="weight-side">
<div class="weight-side__label">目标体重</div>
<div class="weight-side__val">65.0</div>
<div class="weight-side__unit">BMI:25</div>
<div class="weight-middle">
<div class="weight-change">
<div class="weight-change__label">体重变化</div>
<div class="weight-change__val negative">-10.9</div>
<div class="weight-change__need">还要减 <span>6.6</span></div>
</div>
</div>
</div>
<div class="bmi-box">
<div class="bmi-box__formula">BMI = 体重(kg) ÷ 身高(m)² = 70.5 ÷ 1.75² </div>
<div class="bmi-box__formula">BMI<18.5消瘦 BMI<24正常 BMI<28超重 BMI>32肥胖</div>
<span class="bmi-box__tag">中心型肥胖:男性腰围≥90cm 女性腰围≥85cm</span>
</div>
<div class="daily-date">📅 2026年4月29日 星期三</div>
<div class="daily-checkin">
<div class="checkin-item"><div class="checkin-item__icon">🍽️</div><div class="checkin-item__label"></div><div class="checkin-item__val">1680 kcal</div><div class="checkin-item__sub">推荐 1900 kcal</div><div class="checkin-item__sub">累计行动 52 天</div></div>
<div class="checkin-item"><div class="checkin-item__icon">🏃</div><div class="checkin-item__label"></div><div class="checkin-item__val">320 kcal</div><div class="checkin-item__sub">推荐 300 kcal</div><div class="checkin-item__sub">累计行动 36 天</div></div>
<div class="checkin-item"><div class="checkin-item__icon">⚖️</div><div class="checkin-item__label">体重</div><div class="checkin-item__val">70.5 kg</div><div class="checkin-item__sub">推荐 68.0 kg</div><div class="checkin-item__sub">累计行动 28 天</div></div>
<div style="padding:0 16px;">
<div class="daily-date">2025年08月12日</div>
<div class="daily-checkin">
<div class="checkin-card checkin-card--eat">
<div class="checkin-card__icon">🍽️</div>
<div class="checkin-card__val">1086<span class="checkin-card__unit">kcal</span></div>
<div class="checkin-card__recommend">推荐 1950千卡</div>
<div class="checkin-card__days">累计行动52天</div>
</div>
<div class="checkin-card checkin-card--move">
<div class="checkin-card__icon">🏃</div>
<div class="checkin-card__val">12586<span class="checkin-card__unit"></span></div>
<div class="checkin-card__recommend">推荐 12000步</div>
<div class="checkin-card__days">累计行动362天</div>
</div>
<div class="checkin-card checkin-card--weight">
<div class="checkin-card__icon">⚖️</div>
<div class="checkin-card__val">62.60<span class="checkin-card__unit">kg</span></div>
<div class="checkin-card__recommend">推荐 75-80公斤</div>
<div class="checkin-card__days">累计行动3122天</div>
</div>
</div>
<div class="bmi-section">
<div class="bmi-formula">BMI = 体重(kg) ÷ 身高(m)²</div>
<div class="bmi-table">
<div class="bmi-table__cell"><div class="bmi-table__range">BMI&lt;18.5</div><div class="bmi-table__label">消瘦</div></div>
<div class="bmi-table__cell"><div class="bmi-table__range">18.5≤BMI&lt;24</div><div class="bmi-table__label">正常</div></div>
<div class="bmi-table__cell"><div class="bmi-table__range">24≤BMI&lt;28</div><div class="bmi-table__label">超重</div></div>
<div class="bmi-table__cell"><div class="bmi-table__range">BMI≥28</div><div class="bmi-table__label">肥胖</div></div>
</div>
<div class="bmi-center-note">(中心型肥胖:男性腰围≥90cm、女性≥85cm)</div>
</div>
</div>
</div>
<!-- 健康数据模块 -->