diff --git a/employee-app/health-monitor/doc/PRD.md b/employee-app/health-monitor/doc/PRD.md
new file mode 100644
index 0000000..a2185e7
--- /dev/null
+++ b/employee-app/health-monitor/doc/PRD.md
@@ -0,0 +1,514 @@
+# 健康监测(员工端)产品需求文档
+
+## 模块概述
+
+健康监测员工端为员工提供个人健康数据的查看与管理能力,涵盖健康排查打卡签到、穿戴设备监测数据查看(心率/血氧/血压/体温/压力/步数/睡眠/心电图/锻炼)、体重监测数据与报告、环境监测设备数据查看与报警记录等功能。
+
+### 页面导航结构
+
+```
+健康监测(员工端)
+├── 健康监测主页
+├── 健康排查
+│ ├── 健康排查首页(积分/排行榜)
+│ ├── 每日健康打卡(问卷填写)
+│ ├── 打卡记录(日历+列表)
+│ ├── 问卷详情(只读回顾)
+│ └── 题目设置(自定义显示)
+├── 穿戴监测
+│ ├── 穿戴监测首页(指标卡片)
+│ ├── 心率详情 → 心率预警历史
+│ ├── 血氧详情 → 血氧预警历史
+│ ├── 血压详情 → 血压预警历史
+│ ├── 体温详情 → 体温预警历史
+│ ├── 压力详情 → 压力预警历史
+│ ├── 步数详情
+│ ├── 睡眠详情
+│ ├── 心电图列表 → 心电图详情
+│ └── 锻炼记录
+├── 体重监测
+│ ├── 体重监测首页
+│ ├── 历史数据(图表/列表)
+│ └── 详细报告
+└── 环境监测
+ ├── 环境监测首页(地图/列表)
+ ├── 设备详情
+ └── 报警数据
+```
+
+## 页面清单
+
+### 健康监测主页
+
+| 序号 | 页面/弹窗 | 文件 | 类型 |
+|------|-----------|------|------|
+| 1 | 健康监测主页 | index.html | 页面 |
+
+### 健康排查
+
+| 序号 | 页面/弹窗 | 文件 | 类型 |
+|------|-----------|------|------|
+| 2 | 健康排查首页 | health-screening/index.html | 页面 |
+| 3 | 每日健康打卡 | health-screening/questionnaire-fill.html | 页面 |
+| 4 | 打卡记录 | health-screening/checkin-record.html | 页面 |
+| 5 | 问卷详情 | health-screening/questionnaire-detail.html | 页面 |
+| 6 | 题目设置 | health-screening/questionnaire-setting.html | 页面 |
+
+### 穿戴监测
+
+| 序号 | 页面/弹窗 | 文件 | 类型 |
+|------|-----------|------|------|
+| 7 | 穿戴监测首页 | wearable/index.html | 页面 |
+| 8 | 心率详情 | wearable/heart-rate.html | 页面 |
+| 9 | 心率预警历史 | wearable/heart-rate-alerts.html | 页面 |
+| 10 | 血氧详情 | wearable/blood-oxygen.html | 页面 |
+| 11 | 血氧预警历史 | wearable/blood-oxygen-alerts.html | 页面 |
+| 12 | 血压详情 | wearable/blood-pressure.html | 页面 |
+| 13 | 血压预警历史 | wearable/blood-pressure-alerts.html | 页面 |
+| 14 | 体温详情 | wearable/temperature.html | 页面 |
+| 15 | 体温预警历史 | wearable/temperature-alerts.html | 页面 |
+| 16 | 压力详情 | wearable/stress.html | 页面 |
+| 17 | 压力预警历史 | wearable/stress-alerts.html | 页面 |
+| 18 | 步数详情 | wearable/steps.html | 页面 |
+| 19 | 睡眠详情 | wearable/sleep.html | 页面 |
+| 20 | 心电图列表 | wearable/ecg.html | 页面 |
+| 21 | 心电图详情 | wearable/ecg-detail.html | 页面 |
+| 22 | 锻炼记录 | wearable/exercise.html | 页面 |
+
+### 体重监测
+
+| 序号 | 页面/弹窗 | 文件 | 类型 |
+|------|-----------|------|------|
+| 23 | 体重监测首页 | weight/index.html | 页面 |
+| 24 | 历史数据 | weight/history.html | 页面 |
+| 25 | 详细报告 | weight/report-detail.html | 页面 |
+
+### 环境监测
+
+| 序号 | 页面/弹窗 | 文件 | 类型 |
+|------|-----------|------|------|
+| 26 | 环境监测首页 | environment/index.html | 页面 |
+| 27 | 设备详情 | environment/device-detail.html | 页面 |
+| 28 | 报警数据 | environment/alarm-data.html | 页面 |
+
+---
+
+## 逐页说明
+
+---
+
+## 一、健康监测主页
+
+### 1. 健康监测主页(index.html)
+
+
+
+**功能说明:** 员工端健康监测模块的主入口,展示穿戴设备连接状态和多个健康指标卡片概览。
+
+**主要UI元素:**
+- 设备连接状态栏(显示设备名称和连接状态)
+- 监测卡片网格:步数、睡眠、心率、体温、血氧、压力、血压、心电图、锻炼
+
+**交互说明:**
+- 点击各指标卡片进入对应的详情页面
+
+---
+
+## 二、健康排查
+
+### 2. 健康排查首页(health-screening/index.html)
+
+
+
+**功能说明:** 展示员工健康打卡积分、连续签到天数和积分排行榜,引导员工进行每日打卡。
+
+**主要UI元素:**
+- 积分卡片(显示当前积分、连续签到天数)
+- "立即打卡"按钮
+- "打卡记录"按钮
+- 积分排行榜列表
+
+**交互说明:**
+- 点击"立即打卡"跳转到每日健康打卡页面
+- 点击"打卡记录"跳转到打卡记录页面
+
+---
+
+### 3. 每日健康打卡(health-screening/questionnaire-fill.html)
+
+
+
+**功能说明:** 员工填写每日健康自查问卷,包含身体状况、心理状态、生活习惯三个类别共8个问题。
+
+**主要UI元素:**
+- 分类标题(身体状况、心理状态、生活习惯)
+- 问题卡片(含必填/选填标签)
+- 单选选项
+- 提交按钮
+- 成功弹窗(显示积分奖励)
+
+**业务规则:**
+- 必填题目必须全部作答才能提交
+- 选填题目可跳过
+- 提交成功后弹窗显示获得的积分
+
+**交互说明:**
+- 点击选项选中答案
+- 点击"提交"按钮提交问卷
+- 提交成功弹出积分奖励弹窗
+
+---
+
+### 4. 打卡记录(health-screening/checkin-record.html)
+
+
+
+**功能说明:** 以日历视图和列表形式展示员工的打卡历史记录。
+
+**主要UI元素:**
+- 月份日历(已打卡日期标记)
+- 日历展开/收起按钮
+- 历史记录列表(打卡时间、日期、积分)
+
+**交互说明:**
+- 点击日历导航按钮切换月份
+- 点击展开/收起按钮折叠日历
+- 点击历史记录项查看问卷详情
+
+---
+
+### 5. 问卷详情(health-screening/questionnaire-detail.html)
+
+
+
+**功能说明:** 只读展示已提交的每日健康自查问卷的详细内容和答案。
+
+**主要UI元素:**
+- 问卷信息头(标题、提交时间、积分)
+- 分类问题卡片(身体状况、心理状态、生活习惯)
+- 已选中的选项(高亮显示)
+
+**业务规则:**
+- 纯只读页面,不可修改已提交的答案
+
+---
+
+### 6. 题目设置(health-screening/questionnaire-setting.html)
+
+
+
+**功能说明:** 允许员工自定义问卷中选填题目的显示/隐藏,个性化打卡体验。
+
+**主要UI元素:**
+- 提示信息
+- 分类标题
+- 题目卡片(含开关按钮)
+- 保存按钮
+
+**业务规则:**
+- 必填题目的开关为禁用状态,不可关闭
+- 选填题目可自由开启/关闭
+
+**交互说明:**
+- 点击开关切换选填题目的显示状态
+- 点击"保存"按钮保存设置
+
+---
+
+## 三、穿戴监测
+
+### 7. 穿戴监测首页(wearable/index.html)
+
+
+
+**功能说明:** 穿戴设备监测数据的主页,以卡片网格形式展示各项健康指标的最新数据。
+
+**主要UI元素:**
+- 设备连接状态栏
+- 监测卡片网格:步数、睡眠、心率、体温、血氧、压力、血压、心电图、锻炼
+
+**交互说明:**
+- 点击各卡片进入对应详情页面
+
+---
+
+### 8. 心率详情(wearable/heart-rate.html)
+
+
+
+**功能说明:** 展示心率监测数据的详细信息,支持日/周/月/年多时间维度查看。
+
+**主要UI元素:**
+- 时间维度Tab(日/周/月/年)
+- 当前心率大字显示
+- 折线趋势图
+- 最高/最低/平均值统计卡片
+- "查看预警历史"按钮
+
+**交互说明:**
+- 点击时间Tab切换时间维度,图表数据随之更新
+- 点击"查看预警历史"跳转到心率预警历史页面
+
+---
+
+### 9. 心率预警历史(wearable/heart-rate-alerts.html)
+
+
+
+**功能说明:** 展示心率预警记录列表,支持按年份和月份筛选。
+
+**主要UI元素:**
+- 预警统计卡片(本月预警次数)
+- 筛选按钮
+- 预警记录卡片(时间、等级、数值、持续时长、触发原因)
+- 时间筛选弹窗(年份/月份下拉)
+
+**业务规则:**
+- 预警等级:严重(红色)、警告(橙色)
+
+**交互说明:**
+- 点击筛选按钮打开时间筛选弹窗
+- 选择年份和月份后点击"确定"应用筛选
+
+---
+
+### 10-11. 血氧详情与预警历史
+
+**血氧详情(wearable/blood-oxygen.html)** 和 **血氧预警历史(wearable/blood-oxygen-alerts.html)** 的页面结构与心率详情/预警历史一致,展示血氧监测数据和预警记录。
+
+
+
+
+---
+
+### 12-13. 血压详情与预警历史
+
+
+
+
+**血压详情(wearable/blood-pressure.html):** 展示收缩压/舒张压双线图表,统计卡片分别显示收缩压和舒张压的最高/最低值。
+
+**血压预警历史(wearable/blood-pressure-alerts.html):** 预警记录卡片同时显示收缩压和舒张压数值。
+
+---
+
+### 14-15. 体温详情与预警历史
+
+**体温详情(wearable/temperature.html)** 和 **体温预警历史(wearable/temperature-alerts.html)** 的页面结构与心率一致。
+
+
+
+
+---
+
+### 16-17. 压力详情与预警历史
+
+**压力详情(wearable/stress.html)** 和 **压力预警历史(wearable/stress-alerts.html)** 的页面结构与心率一致,额外显示压力等级评估徽章。
+
+
+
+
+---
+
+### 18. 步数详情(wearable/steps.html)
+
+
+
+**功能说明:** 展示步数数据,支持日/周/月/年查看,显示步数、消耗热量和距离换算。
+
+**主要UI元素:**
+- 时间维度Tab(日/周/月/年)
+- 步数大字显示
+- 折线趋势图
+- 消耗热量和距离统计卡片
+
+**交互说明:**
+- 点击Tab切换时间维度
+
+---
+
+### 19. 睡眠详情(wearable/sleep.html)
+
+
+
+**功能说明:** 展示睡眠数据,支持日/周/月/年查看,显示睡眠时长、阶段分布和质量分析。
+
+**主要UI元素:**
+- 时间维度Tab(日/周/月/年)
+- 日期切换器
+- 睡眠时长卡片
+- Hypnogram 睡眠阶段图(日视图)/ 堆积柱状图(周月年视图)
+- 睡眠阶段统计卡片(深睡、浅睡、REM、清醒)
+
+**交互说明:**
+- 点击Tab切换时间维度
+- 点击日期箭头切换日期
+
+---
+
+### 20. 心电图列表(wearable/ecg.html)
+
+
+
+**功能说明:** 展示心电图记录列表,支持按类型筛选。
+
+**主要UI元素:**
+- 筛选标签(全部、窦性心律、房颤、高低心率、不确定,含记录数)
+- 心电图卡片(类型、时间、心率、微型波形图)
+
+**交互说明:**
+- 点击筛选标签过滤心电图记录
+- 点击卡片跳转到心电图详情页面
+
+---
+
+### 21. 心电图详情(wearable/ecg-detail.html)
+
+
+
+**功能说明:** 展示单条心电图的完整波形图、心率数据和诊断结果。
+
+**主要UI元素:**
+- 心电图类型和记录时间
+- 心率显示
+- 完整心电图波形(可横向滑动)
+- 详细信息卡片(分类结果、时间、心率等)
+
+**交互说明:**
+- 左右滑动查看完整心电图波形
+
+---
+
+### 22. 锻炼记录(wearable/exercise.html)
+
+
+
+**功能说明:** 展示锻炼记录,支持周/月维度查看,显示锻炼次数、时长、消耗热量和距离。
+
+**主要UI元素:**
+- 时间维度Tab(周/月)
+- 日期切换器
+- 概览卡片(锻炼次数、总时长、消耗热量、总距离)
+- 锻炼记录卡片(运动类型、时间、四项指标)
+- 柱状图趋势
+- 统计摘要卡片
+
+**交互说明:**
+- 点击Tab切换周/月视图
+- 点击日期箭头切换日期
+
+---
+
+## 四、体重监测
+
+### 23. 体重监测首页(weight/index.html)
+
+
+
+**功能说明:** 展示最近一次体重测量数据和详细身体指标。
+
+**主要UI元素:**
+- 最近测量卡片(体重、变化趋势箭头、身高、BMI)
+- 详细信息卡片(体脂率、体脂肪量、基础代谢)
+- "查看历史"按钮
+- 健康建议卡片
+
+**交互说明:**
+- 点击"查看历史"跳转到历史数据页面
+
+---
+
+### 24. 历史数据(weight/history.html)
+
+
+
+**功能说明:** 展示体重历史数据,支持图表和列表两种视图,支持多时间范围筛选。
+
+**主要UI元素:**
+- 时间Tab(近7天/30天/3个月)
+- 视图切换按钮(图表/列表)
+- 统计卡片(最高/最低/平均/变化)
+- 趋势折线图(含数据点Tip)
+- 历史记录列表
+
+**交互说明:**
+- 点击Tab切换时间范围
+- 点击视图按钮切换图表/列表
+- 点击图表数据点显示详细Tip
+- 点击列表项跳转到详细报告
+
+---
+
+### 25. 详细报告(weight/report-detail.html)
+
+
+
+**功能说明:** 展示单次体重测量的完整数据报告,根据设备类型显示不同指标。
+
+**主要UI元素:**
+- 头部信息卡片(时间、设备、体重、BMI标签)
+- 数据分类卡片(基础指标、水分蛋白质、肌肉骨骼、脂肪分析等)
+- BMI指示条
+- 节段数据表格
+
+**业务规则:**
+- 根据URL参数 device 类型(体重秤/蓝牙秤/体脂仪)动态渲染对应的数据内容
+- 体脂仪设备显示最完整的数据(含节段分析)
+
+---
+
+## 五、环境监测
+
+### 26. 环境监测首页(environment/index.html)
+
+
+
+**功能说明:** 展示环境监测设备分布和数据,支持地图和列表两种视图,支持四种监测类型切换。
+
+**主要UI元素:**
+- 监测类型Tab(室外空气、室内空气、水质、花粉)
+- 地图视图(设备标记、图例、搜索框、定位按钮)
+- 列表视图(含筛选和搜索)
+- 底部弹窗(设备简要信息)
+
+**交互说明:**
+- 点击Tab切换监测类型
+- 点击视图按钮切换地图/列表
+- 点击设备标记或列表项弹出底部弹窗
+- 点击弹窗中"查看详情"跳转到设备详情页
+
+---
+
+### 27. 设备详情(environment/device-detail.html)
+
+
+
+**功能说明:** 展示单个环境监测设备的详细数据,包括当前指标、等级评价和变化趋势。
+
+**主要UI元素:**
+- 等级名称和指数显示
+- 主卡片(位置、时间、描述、仪表盘、指标网格)
+- 变化趋势卡片(指标选择下拉、时间Tab、柱状图)
+- "报警数据"按钮
+
+**交互说明:**
+- 点击指标下拉选择不同监测指标
+- 点击时间Tab切换近24小时/7日/30日
+- 点击"报警数据"跳转到报警数据页面
+
+---
+
+### 28. 报警数据(environment/alarm-data.html)
+
+
+
+**功能说明:** 展示环境监测设备的报警记录,支持按日期范围和报警类型筛选。
+
+**主要UI元素:**
+- 筛选区(日期范围、类型下拉)
+- 统计条(报警总数)
+- 报警卡片列表(报警值、阈值范围、设备信息)
+
+**交互说明:**
+- 设置日期范围和类型后点击"查询"筛选
+- 点击"重置"恢复默认筛选条件
diff --git a/employee-app/health-monitor/doc/screenshots/environment/alarm-data.jpg b/employee-app/health-monitor/doc/screenshots/environment/alarm-data.jpg
new file mode 100644
index 0000000..bbf5dc7
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/environment/alarm-data.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/environment/device-detail.jpg b/employee-app/health-monitor/doc/screenshots/environment/device-detail.jpg
new file mode 100644
index 0000000..d6c8f8f
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/environment/device-detail.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/environment/index.jpg b/employee-app/health-monitor/doc/screenshots/environment/index.jpg
new file mode 100644
index 0000000..067956f
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/environment/index.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/health-screening/checkin-record.jpg b/employee-app/health-monitor/doc/screenshots/health-screening/checkin-record.jpg
new file mode 100644
index 0000000..28f3787
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/health-screening/checkin-record.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/health-screening/index.jpg b/employee-app/health-monitor/doc/screenshots/health-screening/index.jpg
new file mode 100644
index 0000000..558b8aa
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/health-screening/index.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/health-screening/questionnaire-detail.jpg b/employee-app/health-monitor/doc/screenshots/health-screening/questionnaire-detail.jpg
new file mode 100644
index 0000000..c517cd6
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/health-screening/questionnaire-detail.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/health-screening/questionnaire-fill.jpg b/employee-app/health-monitor/doc/screenshots/health-screening/questionnaire-fill.jpg
new file mode 100644
index 0000000..974b8b4
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/health-screening/questionnaire-fill.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/health-screening/questionnaire-setting.jpg b/employee-app/health-monitor/doc/screenshots/health-screening/questionnaire-setting.jpg
new file mode 100644
index 0000000..510d01b
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/health-screening/questionnaire-setting.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/index.jpg b/employee-app/health-monitor/doc/screenshots/index.jpg
new file mode 100644
index 0000000..3c97c88
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/index.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/blood-oxygen-alerts.jpg b/employee-app/health-monitor/doc/screenshots/wearable/blood-oxygen-alerts.jpg
new file mode 100644
index 0000000..12097fd
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/blood-oxygen-alerts.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/blood-oxygen.jpg b/employee-app/health-monitor/doc/screenshots/wearable/blood-oxygen.jpg
new file mode 100644
index 0000000..8f7460a
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/blood-oxygen.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/blood-pressure-alerts.jpg b/employee-app/health-monitor/doc/screenshots/wearable/blood-pressure-alerts.jpg
new file mode 100644
index 0000000..eda549a
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/blood-pressure-alerts.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/blood-pressure.jpg b/employee-app/health-monitor/doc/screenshots/wearable/blood-pressure.jpg
new file mode 100644
index 0000000..3b50884
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/blood-pressure.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/ecg-detail.jpg b/employee-app/health-monitor/doc/screenshots/wearable/ecg-detail.jpg
new file mode 100644
index 0000000..3c53cb4
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/ecg-detail.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/ecg.jpg b/employee-app/health-monitor/doc/screenshots/wearable/ecg.jpg
new file mode 100644
index 0000000..5fef048
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/ecg.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/exercise.jpg b/employee-app/health-monitor/doc/screenshots/wearable/exercise.jpg
new file mode 100644
index 0000000..655b1cf
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/exercise.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/heart-rate-alerts.jpg b/employee-app/health-monitor/doc/screenshots/wearable/heart-rate-alerts.jpg
new file mode 100644
index 0000000..81e75d1
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/heart-rate-alerts.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/heart-rate.jpg b/employee-app/health-monitor/doc/screenshots/wearable/heart-rate.jpg
new file mode 100644
index 0000000..c1ebabd
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/heart-rate.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/index.jpg b/employee-app/health-monitor/doc/screenshots/wearable/index.jpg
new file mode 100644
index 0000000..495eb56
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/index.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/sleep.jpg b/employee-app/health-monitor/doc/screenshots/wearable/sleep.jpg
new file mode 100644
index 0000000..8a1e249
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/sleep.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/steps.jpg b/employee-app/health-monitor/doc/screenshots/wearable/steps.jpg
new file mode 100644
index 0000000..b3de317
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/steps.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/stress-alerts.jpg b/employee-app/health-monitor/doc/screenshots/wearable/stress-alerts.jpg
new file mode 100644
index 0000000..2c2e955
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/stress-alerts.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/stress.jpg b/employee-app/health-monitor/doc/screenshots/wearable/stress.jpg
new file mode 100644
index 0000000..e064749
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/stress.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/temperature-alerts.jpg b/employee-app/health-monitor/doc/screenshots/wearable/temperature-alerts.jpg
new file mode 100644
index 0000000..4e133dc
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/temperature-alerts.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/wearable/temperature.jpg b/employee-app/health-monitor/doc/screenshots/wearable/temperature.jpg
new file mode 100644
index 0000000..d0a9378
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/wearable/temperature.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/weight/history.jpg b/employee-app/health-monitor/doc/screenshots/weight/history.jpg
new file mode 100644
index 0000000..4147259
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/weight/history.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/weight/index.jpg b/employee-app/health-monitor/doc/screenshots/weight/index.jpg
new file mode 100644
index 0000000..f299b69
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/weight/index.jpg differ
diff --git a/employee-app/health-monitor/doc/screenshots/weight/report-detail.jpg b/employee-app/health-monitor/doc/screenshots/weight/report-detail.jpg
new file mode 100644
index 0000000..fd8d8b3
Binary files /dev/null and b/employee-app/health-monitor/doc/screenshots/weight/report-detail.jpg differ
diff --git a/index.html b/index.html
index fd100e9..0fcc018 100644
--- a/index.html
+++ b/index.html
@@ -289,7 +289,7 @@ const SITE_MAP = [
{ file:'ano-result.html', label:'结果异常' }
]},
{ name:'运动管理', dir:'web-admin/exercise', pages:[] },
- { name:'健康监测', dir:'web-admin/health-monitor', entry:'archive-personal.html', pages:[
+ { name:'健康监测', dir:'web-admin/health-monitor', entry:'archive-personal.html', prd:'web-admin/health-monitor/doc/PRD.md', done:true, pages:[
{ file:'archive-personal.html', label:'个人监测数据' },
{ file:'archive-unit.html', label:'单位报表数据' },
{ file:'archive-unit-health-checkup-detail.html', label:'单位报表-健康排查详情' },
@@ -511,20 +511,24 @@ const SITE_MAP = [
{ name:'体重管理', dir:'employee-app/weight-management', pages:[] },
{ name:'营养管理', dir:'employee-app/nutrition', pages:[] },
{ name:'运动管理', dir:'employee-app/exercise', pages:[] },
- { name:'健康监测', dir:'employee-app/health-monitor', entry:'index.html', pages:[
+ { name:'健康监测', dir:'employee-app/health-monitor', entry:'index.html', prd:'employee-app/health-monitor/doc/PRD.md', done:true, pages:[
{ file:'index.html', label:'健康监测主页' },
{ file:'wearable/index.html', label:'穿戴监测首页' },
{ file:'wearable/steps.html', label:'步数详情' },
{ file:'wearable/sleep.html', label:'睡眠详情' },
{ file:'wearable/heart-rate.html', label:'心率详情' },
{ file:'wearable/heart-rate-alerts.html', label:'心率预警历史' },
- { file:'wearable/temperature.html', label:'体温详情' },
- { file:'wearable/temperature-alerts.html', label:'体温预警历史' },
{ file:'wearable/blood-oxygen.html', label:'血氧详情' },
{ file:'wearable/blood-oxygen-alerts.html', label:'血氧预警历史' },
+ { file:'wearable/blood-pressure.html', label:'血压详情' },
+ { file:'wearable/blood-pressure-alerts.html', label:'血压预警历史' },
+ { file:'wearable/temperature.html', label:'体温详情' },
+ { file:'wearable/temperature-alerts.html', label:'体温预警历史' },
{ file:'wearable/stress.html', label:'压力详情' },
{ file:'wearable/stress-alerts.html', label:'压力预警历史' },
- { file:'wearable/exercise.html', label:'锻炼详情' },
+ { file:'wearable/ecg.html', label:'心电图列表' },
+ { file:'wearable/ecg-detail.html', label:'心电图详情' },
+ { file:'wearable/exercise.html', label:'锻炼记录' },
{ file:'health-screening/index.html', label:'健康排查首页' },
{ file:'health-screening/questionnaire-fill.html', label:'每日打卡填写' },
{ file:'health-screening/questionnaire-setting.html', label:'题目设置' },
diff --git a/web-admin/health-monitor/archive-algorithm.html b/web-admin/health-monitor/archive-algorithm.html
index 04ca99d..d37a434 100644
--- a/web-admin/health-monitor/archive-algorithm.html
+++ b/web-admin/health-monitor/archive-algorithm.html
@@ -40,9 +40,36 @@
.sidebar-subgroup.open>.sidebar-subgroup__body{display:block;}
.sidebar-subgroup__body .sidebar-item{padding-left:36px;font-size:12px;}
.main{margin-left:240px;margin-top:56px;padding:24px;min-height:calc(100vh - 56px);}
- .page-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:calc(100vh - 56px - 48px);color:var(--text-placeholder);gap:12px;}
- .page-placeholder svg{opacity:.25;}
- .page-placeholder p{font-size:var(--font-base);}
+ /* 筛选栏 */
+ .filter-bar{background:#fff;border-radius:var(--radius-md);padding:20px 24px;margin-bottom:16px;box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
+ .filter-item{display:flex;align-items:center;gap:8px;}
+ .filter-item label{font-size:var(--font-sm);color:var(--text-secondary);white-space:nowrap;}
+ .filter-input{height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 12px;font-size:var(--font-sm);color:var(--text-primary);outline:none;background:#fff;min-width:180px;}
+ .filter-input:focus{border-color:var(--primary);}
+ /* 按钮 */
+ .btn{height:36px;padding:0 16px;border-radius:var(--radius-sm);font-size:var(--font-sm);cursor:pointer;border:none;transition:all .2s;display:inline-flex;align-items:center;gap:6px;}
+ .btn-primary{background:var(--primary);color:#fff;}.btn-primary:hover{background:#40a9ff;}
+ .btn-default{background:#fff;color:var(--text-primary);border:1px solid var(--border);}.btn-default:hover{color:var(--primary);border-color:var(--primary);}
+ .btn-danger-link{background:none;border:none;color:var(--danger);cursor:pointer;font-size:var(--font-sm);padding:0 4px;}
+ .btn-danger-link:hover{color:#ff7875;}
+ /* 操作栏 */
+ .action-bar{display:flex;align-items:center;gap:8px;margin-bottom:16px;}
+ /* 表格卡片 */
+ .table-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;}
+ .table-card__content{overflow-x:auto;overflow-y:hidden;}
+ .table-card__content table{min-width:100%;white-space:nowrap;}
+ table{width:100%;border-collapse:collapse;}
+ thead th{background:#FAFAFA;padding:12px 16px;text-align:left;font-size:var(--font-sm);color:var(--text-secondary);font-weight:500;border-bottom:1px solid var(--border);white-space:nowrap;}
+ tbody td{padding:14px 16px;font-size:var(--font-sm);color:var(--text-primary);border-bottom:1px solid var(--border);white-space:nowrap;}
+ tbody tr:last-child td{border-bottom:none;}
+ tbody tr:hover{background:#F8FBFF;}
+ /* 链接 */
+ .link{color:var(--primary);cursor:pointer;font-size:var(--font-sm);text-decoration:none;}.link:hover{color:#40a9ff;}
+ /* 分页 */
+ .pagination{display:flex;align-items:center;justify-content:flex-end;padding:16px 24px;gap:8px;border-top:1px solid var(--border);}
+ .pagination span{font-size:var(--font-sm);color:var(--text-secondary);}
+ .page-btn{width:32px;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;cursor:pointer;font-size:var(--font-sm);display:inline-flex;align-items:center;justify-content:center;transition:all .2s;}
+ .page-btn:hover,.page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);}
@@ -72,9 +99,88 @@
-
-
-
算法模型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | 序号 |
+ 文档名称 |
+ 文档描述 |
+ 制作机构 |
+ 制作人 |
+ 制作年份 |
+ 上传日期 ↕ |
+ 附件 |
+ 操作 |
+
+
+
+
+ | 1 |
+ 测试PDF |
+ 测试PDF预览 |
+ 研发 |
+ 研发人员 |
+ 2023 |
+ 2026-04-17 13:36:34 |
+ 预览 下载 |
+ 编辑 删除 |
+
+
+ | 2 |
+ 预览WORD |
+ 测试的 |
+ 家里 |
+ 张老师 |
+ 2025 |
+ 2026-04-17 13:06:38 |
+ 预览 下载 |
+ 编辑 删除 |
+
+
+ | 3 |
+ 心理算法 |
+ 心理算法模型 |
+ 交大 |
+ 王老师 |
+ 2025 |
+ 2026-04-15 16:46:54 |
+ 预览 下载 |
+ 编辑 删除 |
+
+
+
+
+
+
diff --git a/web-admin/health-monitor/archive-personal.html b/web-admin/health-monitor/archive-personal.html
index 5b89609..b762294 100644
--- a/web-admin/health-monitor/archive-personal.html
+++ b/web-admin/health-monitor/archive-personal.html
@@ -68,7 +68,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
.table-card__title{font-size:var(--font-base);font-weight:600;}
.table-card__content{overflow-x:auto;-webkit-overflow-scrolling:touch;}
table{width:100%;border-collapse:collapse;min-width:100%;white-space:nowrap;}
-thead th{background:#FAFAFA;padding:12px 16px;text-align:left;font-size:var(--font-sm);color:var(--text-secondary);font-weight:500;border-bottom:1px solid var(--border);white-space:nowrap;}
+thead th{background:#FAFAFA;padding:12px 16px;text-align:center;font-size:var(--font-sm);color:var(--text-secondary);font-weight:500;border-bottom:1px solid var(--border);white-space:nowrap;}
tbody td{padding:14px 16px;font-size:var(--font-sm);color:var(--text-primary);border-bottom:1px solid var(--border);white-space:nowrap;}
tbody tr:last-child td{border-bottom:none;}
tbody tr:hover{background:#F8FBFF;}
@@ -119,46 +119,14 @@ tbody tr:hover{background:#F8FBFF;}
-
-
-
-
+
-
+
-
-
-
-
@@ -126,6 +126,7 @@ tbody tr:hover{background:#F8FBFF;}
室外设备
水质设备
花粉设备
+
报警次数
@@ -150,42 +151,42 @@ tbody tr:hover{background:#F8FBFF;}
- | 序号 |
设备名称 |
- 设备ID |
- 安装位置 |
- 运行状态 |
- 最后数据时间 |
- 报警次数 |
+ 设备编码 |
+ 设备分类 |
+ 所属单位 |
+ 设备位置 |
+ 布点日期 |
+ 监测时长(天) |
- | 1 |
- 温度传感器-研发部 |
- SENSOR-001 |
- 研发部办公室 |
- 正常 |
- 2026-05-13 08:30 |
- 0 |
+ 室内空气监测仪A1 |
+ IA-2024-001 |
+ PM2.5检测仪 |
+ 采油一厂 |
+ 办公楼3F会议室 |
+ 2024-06-15 |
+ 328 |
- | 2 |
- 湿度传感器-市场部 |
- SENSOR-002 |
- 市场部办公室 |
- 正常 |
- 2026-05-13 08:15 |
- 0 |
+ 室内空气监测仪A2 |
+ IA-2024-002 |
+ 甲醛检测仪 |
+ 采油一厂 |
+ 宿舍楼2F走廊 |
+ 2024-07-01 |
+ 312 |
- | 3 |
- 空气质量传感器-会议室 |
- SENSOR-003 |
- 一楼会议室 |
- 异常 |
- 2026-05-13 07:45 |
- 3 |
+ 室内空气监测仪B1 |
+ IA-2024-003 |
+ CO2检测仪 |
+ 采油二厂 |
+ 食堂大厅 |
+ 2024-08-10 |
+ 272 |
@@ -222,33 +223,33 @@ tbody tr:hover{background:#F8FBFF;}
- | 序号 |
设备名称 |
- 设备ID |
- 安装位置 |
- 运行状态 |
- 最后数据时间 |
- 报警次数 |
+ 设备编码 |
+ 设备分类 |
+ 所属单位 |
+ 设备位置 |
+ 布点日期 |
+ 监测时长(天) |
- | 1 |
- 气象站-停车场 |
- WEATHER-001 |
- 停车场北侧 |
- 正常 |
- 2026-05-13 08:45 |
- 1 |
+ 室外空气监测站A1 |
+ OA-2024-001 |
+ 空气质量监测站 |
+ 采油一厂 |
+ 厂区东门广场 |
+ 2024-05-10 |
+ 364 |
- | 2 |
- 风速计-厂区 |
- WIND-001 |
- 厂区中央 |
- 正常 |
- 2026-05-13 08:30 |
- 0 |
+ 室外空气监测站A2 |
+ OA-2024-002 |
+ 气象监测站 |
+ 采油一厂 |
+ 停车场北侧 |
+ 2024-06-20 |
+ 323 |
@@ -284,33 +285,33 @@ tbody tr:hover{background:#F8FBFF;}
- | 序号 |
设备名称 |
- 设备ID |
- 安装位置 |
- 运行状态 |
- 最后数据时间 |
- 报警次数 |
+ 设备编码 |
+ 设备分类 |
+ 所属单位 |
+ 设备位置 |
+ 布点日期 |
+ 监测时长(天) |
- | 1 |
- pH传感器-取水口 |
- WATER-001 |
- 取水口 |
- 正常 |
- 2026-05-13 07:50 |
- 0 |
+ 水质分析仪A1 |
+ WQ-2024-001 |
+ 水质多参数分析仪 |
+ 采油一厂 |
+ 生活区供水站 |
+ 2024-04-20 |
+ 384 |
- | 2 |
- 浊度计-处理池 |
- WATER-002 |
- 处理池 |
- 正常 |
- 2026-05-13 08:00 |
- 0 |
+ 水质分析仪A2 |
+ WQ-2024-002 |
+ 浊度检测仪 |
+ 采油一厂 |
+ 处理池出水口 |
+ 2024-05-15 |
+ 359 |
@@ -346,24 +347,24 @@ tbody tr:hover{background:#F8FBFF;}
- | 序号 |
设备名称 |
- 设备ID |
- 安装位置 |
- 运行状态 |
- 最后数据时间 |
- 报警次数 |
+ 设备编码 |
+ 设备分类 |
+ 所属单位 |
+ 设备位置 |
+ 布点日期 |
+ 监测时长(天) |
- | 1 |
- 花粉浓度计-办公楼前 |
- POLLEN-001 |
- 办公楼前广场 |
- 正常 |
- 2026-05-13 06:30 |
- 0 |
+ 花粉采样器A1 |
+ PL-2024-001 |
+ 花粉采样器 |
+ 采油一厂 |
+ 厂区绿化带东 |
+ 2024-03-01 |
+ 434 |
@@ -377,6 +378,107 @@ tbody tr:hover{background:#F8FBFF;}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | 设备名称 |
+ 设备编号 |
+ 设备类型 |
+ 所属单位 |
+ 设备位置 |
+ 监测类型 |
+ 单位 |
+ 阈值 |
+ 异常值 |
+ 报警时间 |
+
+
+
+
+ | 室内空气监测仪A1 |
+ IA-2024-001 |
+ 室内设备 |
+ 采油一厂 |
+ 办公楼3F会议室 |
+ PM2.5 |
+ μg/m³ |
+ 75 |
+ 128 |
+ 2026-05-13 14:20 |
+
+
+ | 室外空气监测站A1 |
+ OA-2024-001 |
+ 室外设备 |
+ 采油一厂 |
+ 厂区东门广场 |
+ CO2 |
+ ppm |
+ 1000 |
+ 1350 |
+ 2026-05-12 16:45 |
+
+
+ | 水质分析仪A1 |
+ WQ-2024-001 |
+ 水质设备 |
+ 采油一厂 |
+ 生活区供水站 |
+ 浊度 |
+ NTU |
+ 1.0 |
+ 2.3 |
+ 2026-05-11 09:30 |
+
+
+
+
+
+
+
+