diff --git a/employee-app/health-checkup/doc/PRD.md b/employee-app/health-checkup/doc/PRD.md new file mode 100644 index 0000000..06b245b --- /dev/null +++ b/employee-app/health-checkup/doc/PRD.md @@ -0,0 +1,1016 @@ +# 健康体检(员工端)产品需求文档 + +## 模块概述 + +健康体检员工端围绕「单位年度体检计划」为员工提供体检全周期服务,涵盖三类体检业务(常规体检、胃肠镜体检、冠脉CTA体检)的在线预约(选医院/选项目/填问卷/选日期)、预约结果管理(成功/失败/取消)、到院体检与进度查询(签到码、已检/未检项目)、历年体检报告查看(常规/胃肠镜/冠脉CTA 三类报告)、重点指标多年纵向对比(AI 趋势解读)、体检消息通知(报告生成/AI 预警/到院提醒)、异常指标一键咨询以及图文/视频操作指引等功能。 + +### 页面导航结构 + +``` +健康体检(员工端) +├── 健康体检主页(计划 Banner 轮播 · 预选通知条 · 服务入口) +│ └── 健康体检主页(未开展计划占位态) +├── 体检预约 +│ ├── 选择体检类型(常规体检 / 胃肠镜体检 / 冠脉CTA体检,单选分流) +│ ├── 常规体检流程(步骤条:1 选择医院 → 2 选择项目 → 3 预约日期) +│ │ ├── 选择医院(含「确认个人信息」弹窗 · 已婚/未婚体检切换) +│ │ ├── 选择项目(年度额度 · 必检/选检 · AI 智能推荐)→ 项目详情 +│ │ ├── 已选项目确认 +│ │ ├── 预约日期(月历号源 · 近30天可约) +│ │ └── 预约结果(成功/失败 · 取消预约需填原因) +│ ├── 胃肠镜流程(步骤条:1 选择医院 → 2 填问卷 → 3 预约日期) +│ │ ├── 选择医院(唐都医院需就诊卡号) +│ │ ├── 病史问卷(是/否单选 · 就诊卡条件题) +│ │ ├── 预约日期(7~30 天可约窗口) +│ │ └── 预约结果(成功/失败 · 取消预约) +│ └── 冠脉CTA流程(免问卷,两步:选择医院 → 预约日期 → 预约结果) +├── 胃肠镜医院预选(征集期一次性活动,与正式预约解耦) +│ ├── 医院预选填写(多选意向医院 · 仅可提交一次) +│ └── 预选提交完成(只读回显,不可修改) +├── 现场体检(Tab:常规/胃肠镜/冠脉CTA × 状态:待体检/已完成/无预约) +│ └── 到院体检(签到提醒 · 预约详情 · 须知) +├── 体检报告 +│ ├── 报告列表(累计年份统计 · 五年趋势入口 · 历年报告) +│ ├── 常规体检报告(AI 解读/结论/建议 · 14 科室明细) +│ ├── 冠脉CTA报告(钙化积分 · 冠脉分段 · 影像诊断) +│ ├── 胃肠镜报告(胃镜/肠镜/病理诊断) +│ └── 指标纵向对比(17 项数值指标 + 6 项定性检查)→ 指标分析详情 +├── 消息(列表 → 详情:报告生成 / AI 预警 / 到院提醒) +├── 一键咨询(报告异常指标分组展示 · 专家库咨询入口) +└── 操作流程讲解(全部/视频/图文筛选)→ 讲解详情(图文教程 / 视频播放) +``` + +### 核心状态流转(体检预约 → 体检 → 报告) + +```mermaid +stateDiagram-v2 + [*] --> 未预约: 单位开启年度体检计划 + 未预约 --> 预约中: 选择类型/医院/项目/日期 + 预约中 --> 已预约: 号源锁定(预约成功) + 预约中 --> 预约失败: 号源争抢失败 + 预约失败 --> 预约中: 重新预约 + 已预约 --> 已取消: 提前1天取消(必填原因) + 已取消 --> 预约中: 重新预约 + 已预约 --> 待体检: 体检当日(展示签到码) + 待体检 --> 已完成: 全部项目检查完毕 + 已完成 --> 报告已生成: 机构出具报告 + 报告已生成 --> [*] +``` + +> 胃肠镜医院预选为独立的一次性活动:征集期内「未提交 → 已提交」,提交后不可修改;征集期结束通知条隐藏。 + +--- + +## 页面清单 + +### 模块主页 + +| 序号 | 页面/弹窗 | 文件 | 类型 | +|------|-----------|------|------| +| 1 | 健康体检主页 | index.html | 页面 | +| 2 | 健康体检主页(未开展计划) | index-inactive.html | 页面 | + +### 体检预约(通用 + 常规体检流程) + +| 序号 | 页面/弹窗 | 文件 | 类型 | +|------|-----------|------|------| +| 3 | 选择体检类型 | booking-type.html | 页面 | +| 4 | 选择医院(常规) | booking-hospital.html | 页面 | +| 5 | 确认个人信息 | booking-hospital.html 内嵌弹窗 | 弹窗 | +| 6 | 选择项目 | booking-project.html | 页面 | +| 7 | 项目详情 | project-detail.html | 页面 | +| 8 | 已选项目确认 | booking-project-selected.html | 页面 | +| 9 | 预约日期 | booking-date.html | 页面 | +| 10 | 预约结果(成功/失败) | booking-date-selected.html | 结果态页面 | +| 11 | 取消预约 | 预约结果页内嵌弹窗 | 弹窗 | + +### 胃肠镜体检流程 + +| 序号 | 页面/弹窗 | 文件 | 类型 | +|------|-----------|------|------| +| 12 | 胃肠镜·选择医院 | gastro-hospital.html | 页面 | +| 13 | 胃肠镜·病史问卷 | gastro-questionnaire.html | 页面 | +| 14 | 就诊卡办理流程 | 病史问卷页内嵌弹窗 | 弹窗 | +| 15 | 胃肠镜·预约日期 | gastro-date.html | 页面 | +| 16 | 胃肠镜·预约结果(成功/失败) | gastro-date-selected.html | 结果态页面 | + +### 胃肠镜医院预选 + +| 序号 | 页面/弹窗 | 文件 | 类型 | +|------|-----------|------|------| +| 17 | 医院预选填写 | gastro-preselect.html | 页面 | +| 18 | 预选提交完成 | gastro-preselect-done.html | 结果态页面 | + +### 冠脉CTA体检流程 + +| 序号 | 页面/弹窗 | 文件 | 类型 | +|------|-----------|------|------| +| 19 | 冠脉CTA·选择医院 | cta-hospital.html | 页面 | +| 20 | 冠脉CTA·预约日期 | cta-date.html | 页面 | +| 21 | 冠脉CTA·预约结果(成功/失败) | cta-date-selected.html | 结果态页面 | + +### 现场体检 + +| 序号 | 页面/弹窗 | 文件 | 类型 | +|------|-----------|------|------| +| 22 | 现场体检(三类体检 × 三种状态) | my-appointments-all.html | 页面 | +| 23 | 到院体检 | hospital-checkin.html | 页面 | + +### 体检报告与指标对比 + +| 序号 | 页面/弹窗 | 文件 | 类型 | +|------|-----------|------|------| +| 24 | 体检报告列表 | reports.html | 页面 | +| 25 | 常规体检报告 | report-query.html | 页面 | +| 26 | 冠脉CTA报告 | report-cta.html | 页面 | +| 27 | 胃肠镜报告 | report-gastro.html | 页面 | +| 28 | 指标纵向对比 | indicator-compare.html | 页面 | +| 29 | 指标分析详情 | indicator-compare-detail.html | 页面 | + +### 消息与咨询 + +| 序号 | 页面/弹窗 | 文件 | 类型 | +|------|-----------|------|------| +| 30 | 消息列表 | messages.html | 页面 | +| 31 | 消息详情 | message-detail.html | 页面 | +| 32 | 一键咨询 | consult.html | 页面 | + +### 操作流程讲解 + +| 序号 | 页面/弹窗 | 文件 | 类型 | +|------|-----------|------|------| +| 33 | 操作流程讲解 | process-guide.html | 页面 | +| 34 | 讲解详情(图文/视频) | process-guide-detail.html | 页面 | + +> 预约结果页(10/16/21)、现场体检(22)的「成功/失败/待体检/已完成/无预约」等状态由原型内演示控件切换,实际由数据驱动,逐页说明中一并描述。 + +--- + +## 逐页说明 + +--- + +## 一、模块主页 + +### 1. 健康体检主页(index.html) + + + +**功能说明:** 员工端健康体检模块的主入口,顶部以年度体检计划 Banner 轮播呈现三类体检的当前进度,下方聚合体检预约、现场体检、体检报告等服务入口。 + +**主要UI元素:** +- 导航栏:返回箭头(回 APP 首页)、标题「健康体检」、消息铃铛(红色角标显示未读消息数) +- 年度体检计划 Banner 轮播(4 张滑动切换,圆点指示器随内容变色): + - 常规体检(青绿渐变):计划标题、体检日期范围、体检费用额度胶囊(¥1500.00)、右下角圆圈进度(已体检=满环) + - 胃肠镜体检(蓝青渐变):计划标题、体检日期范围、圆圈进度(已预约=60%) + - 冠脉CTA体检(暖红渐变):计划标题、体检日期范围、圆圈进度(已预约=60%) + - 未开启计划占位(灰色):🌱 图标 +「单位暂未开启本年度体检计划」+「2026 年度体检计划筹备中,开启后将第一时间通知您」 +- 胃肠镜医院预选通知条(橙色,仅征集期展示):📢 图标、标题「胃肠镜体检医院预选进行中」(红色呼吸圆点)、截止日期与「每人仅可填写一次」说明、「去选择」按钮 +- 体检服务入口卡片:体检预约(选医院和项目,预约日期)、现场体检(到院扫码/体检进度查询)、体检报告(查看报告/解读结果) +- 其他服务宫格:操作流程讲解、一键咨询 + +**业务规则:** +- Banner 圆圈进度按体检办理阶段推进:已选项目 20% → 已预约 60% → 体检中 80% → 已体检 100% +- Banner 按员工实际计划状态渲染:有计划显示对应类型卡片并按进度跳转,无计划的类型不出现;单位未开启任何计划时仅显示占位图 +- 预选通知条三态:征集期未提交(「去选择」,进入预选填写)、已提交(标题改「预选已完成」、绿色对勾、「查看结果」,进入完成页)、征集期结束(整条隐藏) +- 页面无计划开启时整体切换为「未开展」形态(见第 2 页) + +**交互说明:** +- 左右滑动切换 Banner,点击圆点跳转到对应张 +- 点击常规体检 Banner 跳转到「体检报告列表」(已体检态查看报告) +- 点击胃肠镜/冠脉CTA Banner 跳转到「现场体检」(对应体检类型页签) +- 点击预选通知条跳转到「医院预选填写」(已提交则跳转「预选提交完成」) +- 点击「体检预约」进入选择体检类型页 +- 点击「现场体检」进入现场体检页 +- 点击「体检报告」进入体检报告列表 +- 点击「操作流程讲解」进入操作流程讲解页 +- 点击「一键咨询」进入一键咨询页 +- 点击铃铛进入消息列表 + +--- + +### 2. 健康体检主页(未开展计划)(index-inactive.html) + + + +**功能说明:** 单位本年度未开启体检计划时的主页占位形态,保留历史报告入口与咨询服务。 + +**主要UI元素:** +- Hero 卡片:「年度体检计划」徽章、标题「健康体检」、「本年度暂未开展体检计划,请耐心等待」 +- 待查看报告卡片:「待查看的体检报告 2 份」+ 历史报告提示文案 +- 体检服务入口卡片:体检预约(查看预约入口与年度体检开放状态)、现场体检、体检报告 +- 辅助入口宫格:操作流程讲解、一键咨询(均为静态说明卡片,不可点击) + +**业务规则:** +- 无计划时不展示 Banner 轮播与预选通知条 +- 「待查看的体检报告」数量取历史已生成报告数 + +**交互说明:** +- 点击「体检预约」进入选择体检类型页 +- 点击「现场体检」进入现场体检页 +- 点击「体检报告」进入体检报告列表 + +--- + +## 二、体检预约(通用入口) + +### 3. 选择体检类型(booking-type.html) + + + +**功能说明:** 预约流程入口页,员工从单位发布的体检计划(类型)中单选一个,确定后按类型分流进入对应的预约流程。 + +**主要UI元素:** +- 导航栏:返回、标题「体检预约」 +- 体检类型单选卡片(3 张,右侧 radio 圆点,选中态青色描边+浅青底): + - 常规体检:🩺 图标;徽章「进行中」(绿)+「已开启预约」(青);体检时间、预约时间、所属人群;**当年体检额度 ¥2,500.00**(高亮行,仅常规体检卡片展示) + - 胃肠镜体检:🔬 图标;徽章同上;体检时间、预约时间、所属人群 + - 冠脉CTA体检:🫀 图标;徽章同上;体检时间、预约时间、所属人群 +- 底部「确定」按钮(青色渐变) + +**业务规则:** +- 卡片单选互斥,默认选中常规体检 +- 体检计划状态徽章三态:未开始(灰)/ 进行中(绿)/ 已结束(红);预约状态两态:已开启预约(青)/ 待开启预约(灰) +- 「当年体检额度」仅常规体检卡片展示 +- 仅「进行中 + 已开启预约」的计划可发起预约 + +**交互说明:** +- 点击类型卡片切换单选选中态 +- 点击「确定」按所选类型分流:常规体检跳转到「选择医院(常规)」、胃肠镜体检跳转到「胃肠镜·选择医院」、冠脉CTA体检跳转到「冠脉CTA·选择医院」(均携带 from 参数,下游页自动弹出个人信息确认弹窗) +- 点击返回回到健康体检主页 + +--- + +## 三、常规体检预约流程 + +> 步骤条:**1 选择医院 → 2 选择项目 → 3 预约日期**。已完成步骤可点击回跳,当前步骤高亮,未来步骤置灰不可点。 + +### 4. 选择医院(booking-hospital.html) + + + +**功能说明:** 常规体检流程第 1 步,选择承检医院(单选),并核对个人信息、选择已婚/未婚体检类型。 + +**主要UI元素:** +- 步骤条(当前第 1 步) +- 导航栏右侧「个人信息」入口 +- 医院单选卡片(默认选中「宁夏宝石花医院 / 宁夏银川市」,另含「CQ星龙园医院 / 陕西西安市」「西安CQ医院 / 陕西西安市」) +- 「确认个人信息」弹窗(见下) +- 底部「下一步」按钮 + + + +**确认个人信息弹窗:** 标题「确认个人信息」+ 副标题「请核对以下信息,确认无误后继续预约」;字段:姓名(刘韵琴)、单位(CQ能源第一采油厂)、身份证号(脱敏显示)、性别、年龄、体检类型(「已婚体检 / 未婚体检」胶囊切换,默认已婚);「确认」按钮关闭弹窗。 + +**业务规则:** +- 从选择体检类型页进入(from=booking-type)时自动弹出个人信息确认弹窗;也可从导航栏「个人信息」手动打开 +- 已婚/未婚体检切换仅影响本次预约的检查套餐口径 +- 医院单选互斥 + +**交互说明:** +- 点击医院卡片单选选中 +- 点击「个人信息」打开确认个人信息弹窗,点击「确认」关闭 +- 点击「下一步」跳转到选择项目页 +- 点击返回回到健康体检主页 + +--- + +### 5. 选择项目(booking-project.html) + + + +**功能说明:** 常规体检流程第 2 步,展示年度体检额度消耗情况,在必检项目(固定不可取消)基础上勾选自选项目,选检项目带 AI 智能推荐分级,提交前二次确认。 + +**主要UI元素:** +- 体检额度卡片:「年度体检总额度(元)」(¥1,600.00)、「已选项目费用」(随勾选联动)、额度进度条(超支变红)、三格统计:必检项目 ¥720.00 / 选检项目(已选合计)/ 可用额度(超支显示 ¥0.00 并标红) +- 项目 Tab:「选检项目」(默认)/「必检项目」 +- 必检项目 8 项(合计 ¥720,无勾选框、整卡只读):一般检查 ¥120、血常规 ¥80、尿常规 ¥45、肝功能 ¥160(重点)、肾功能 ¥110(重点)、血脂四项 ¥90、空腹血糖 ¥40、心电图 ¥75(重点) +- 选检项目 6 项(按 AI 推荐等级降序):腹部B超 ¥180(🔥 强烈推荐)、甲状腺彩超 ¥160(✨ 建议加做)、肿瘤标志物 ¥220(✨ 建议加做)、心脏彩超 ¥360(✨ 可选参考)、胃幽门螺杆菌检测 ¥480(✨ 可选参考)、胸部X光 ¥140(无推荐徽章,默认已勾选) +- AI 推荐徽章三档:「强烈推荐」(红橙渐变实底)、「建议加做」(紫蓝渐变实底)、「可选参考」(浅蓝描边) +- 「确认提交」弹窗:体检项目数、项目总额、必检项目费用、体检总额度、可用额度;「取消 / 确认提交」 +- 「✨ 智能推荐」弹窗:项目名、推荐等级徽章、等级说明、推荐理由(结合健康画像生成)、按钮「知道了」 +- 底部双按钮:「上一步」/「提交项目」 + +**业务规则:** +- 可用额度 = 年度总额度 − 必检合计 − 选检已选合计;可用额度为负时显示 ¥0.00 并标红,进度条封顶并变红(仅视觉警示,不阻止提交) +- 必检项目固定包含,不可取消;选检项目点击整卡切换勾选,默认选中胸部X光 +- 选检列表按 AI 推荐等级降序排列(强烈推荐 > 建议加做 > 可选参考 > 无推荐) +- AI 推荐理由基于员工健康画像生成,示例:腹部B超(BMI 超重+血脂偏高,脂肪肝高风险)、甲状腺彩超(既往甲状腺结节随访)、肿瘤标志物(家族史+年龄段)、心脏彩超(血压正常高值建立基线)、幽门螺杆菌(首次筛查建议) +- 金额千分位两位小数格式化 + +**交互说明:** +- 点击 Tab 切换选检/必检列表 +- 点击选检项目卡勾选/取消勾选,额度卡片金额即时联动 +- 点击卡片右侧箭头跳转到项目详情页 +- 点击 AI 推荐徽章打开智能推荐理由弹窗(不触发勾选) +- 点击「提交项目」打开确认提交弹窗,「确认提交」跳转到已选项目确认页 +- 点击「上一步」返回选择医院页 +- 点击步骤条「选择医院」可回跳选择医院页 + +--- + +### 6. 项目详情(project-detail.html) + + + +**功能说明:** 单个体检项目的介绍页,含项目说明与检前/检后/问题三类讲解视频。 + +**主要UI元素:** +- 顶部项目图片区 +- 项目名称 +「重点项目/一般项目」徽章 + 价格 +- 「项目介绍」卡片:项目用途文字说明(如腹部B超:「利用超声波成像技术,对肝脏、胆囊、脾脏、胰腺和双肾进行无创检查……」) +- 「体检说明」卡片:三个视频播放器占位——检前说明、检后说明、问题说明(各带时长标签,如 03:25) + +**业务规则:** +- 页面按 URL 参数 id 加载对应项目数据,缺省回退到第一个项目 +- 覆盖全部 14 个体检项目(必检 8 项 + 选检 6 项) + +**交互说明:** +- 点击返回返回上一页(选择项目页) + +--- + +### 7. 已选项目确认(booking-project-selected.html) + + + +**功能说明:** 项目提交成功后的确认页(第 2 步完成态),展示承检医院、体检额度、费用汇总与已选项目清单。 + +**主要UI元素:** +- 步骤条(第 1、2 步完成,第 3 步未来态) +- 基本信息卡片:承检医院(宁夏宝石花医院)、体检额度(¥1500.00)、已选费用合计(¥860.00)、费用包含(必检 ¥720.00 / 选检 ¥140.00) +- 已选项目卡片:标题「已选体检项目」+「共 9 项」;Tab「自选项目(1) / 必检项目(8)」;项目行(青色圆点 + 名称 + 描述 + 重点/一般徽章 + 价格) +- 底部双按钮:「重选项目」/「下一步」 +- Toast:「当前已提交项目,如需重新选择医院,请先点击下方重选项目按钮」 + +**业务规则:** +- 已提交项目后禁止通过步骤条回第 1 步换医院:点击步骤 1 弹 Toast 提示 +- 点击步骤 2 可跳回选择项目页重选 + +**交互说明:** +- 点击 Tab 切换自选/必检项目列表 +- 点击「重选项目」跳转到选择项目页 +- 点击「下一步」跳转到预约日期页 +- 点击步骤 1 弹 Toast,点击步骤 2 返回选择项目页 + +--- + +### 8. 预约日期(booking-date.html) + + + +**功能说明:** 常规体检流程第 3 步,在月历上选择体检号源日期(展示每日剩余号源),确认后提交预约。 + +**主要UI元素:** +- 步骤条(第 1、2 步完成,第 3 步当前) +- 体检信息卡片:体检医院(宁夏宝石花医院)、医院地址(银川市西夏区怀远路148号) +- 预约状态条:绿色徽章「● 可预约」+「预约开放日期:2026-03-16 至 2026-04-15」;提示「至多可预约近30天内的体检日期,超出范围日期不可选择」 +- 月历卡片:月份标题 + 前/后翻月按钮(越界禁用)、周一起始星期行、日期格(日期数字 + 号源文案「余N」/「不可约」,选中格青色实底、今日格青色描边、禁用格置灰) +- 「确认预约信息」弹窗:体检医院、体检日期;「取消 / 确认预约」 +- Loading 遮罩:「正在为您预约体检...」旋转动画(约 1.8 秒,模拟号源争抢) +- 底部双按钮:「上一步」/「确定预约」 + +**业务规则:** +- 可约范围 = 当天 ~ 近 30 天;已过日期与超范围日期不可选 +- 周末不可约(显示「不可约」);工作日号源随机模拟,约满日显示「不可约」且禁点 +- 不能翻到当月之前或可约范围所在月份之后 +- 默认选中当天;未选中日期时「确定预约」不响应 + +**交互说明:** +- 点击翻月按钮切换月份 +- 点击可选日期格单选选中 +- 点击「确定预约」打开确认弹窗,「确认预约」后显示 Loading 并跳转到预约结果页 +- 点击「上一步」返回已选项目确认页 +- 点击步骤 1 弹 Toast(已提交项目不可换医院),点击步骤 2 返回已选项目确认页 + +--- + +### 9. 预约结果(booking-date-selected.html) + + + +**功能说明:** 预约提交结果页,含「预约成功 / 预约失败」两态。成功态展示预约信息与体检须知,支持取消预约(必填原因);失败态展示失败原因并可重新预约。 + +**主要UI元素:** +- 步骤条(三步全部完成;点击已完成步骤弹 Toast 阻止回跳) +- 结果横幅: + - 成功态(绿色,圆形对勾图标):「预约成功」+「已为您锁定体检名额,请按预约日期准时到检」 + - 失败态(红色,圆形叉图标):「预约失败」+「失败原因:所选日期号源已约满」+ 红色「?」帮助按钮 +- 预约信息卡片:体检医院、体检员工、体检地址、体检日期(2026年3月23日,高亮)、体检项目数(9 项) +- 体检须知卡片(仅成功态显示):4 条须知(前一日勿饮酒高脂饮食、当天空腹、携带身份证、取消至少提前一天) +- 成功态按钮:「取消预约」(红色)/「查看预约详情」(主色);失败态按钮:「重新预约」(独占一行) +- 「失败原因详情」弹窗:失败原因(号源争抢失败:号源已被其他员工约满)、发生时间、处理建议(重新预约或联系健康管理专员协调加号) +- 「确认取消预约」弹窗(见下方表单字段表) + + + +**业务规则:** +- 失败语义为号源争抢失败(所选日期号源已被其他员工约满);失败态隐藏体检须知,引导重新预约 +- 已预约状态下点击步骤条弹 Toast「当前已预约体检,无法重新选择,请先取消预约」;失败态 Toast 文案切换为「预约未成功,请点击下方『重新预约』按钮重新预约」 +- 取消预约必须选择原因;选择「其他」时必须填写文字说明(上限 100 字) +- 取消成功后 Toast「预约已取消」并返回预约日期页重新预约 +- 取消时限约束:至少提前一天操作 + +**交互说明:** +- 失败态点击「?」打开失败原因详情弹窗 +- 成功态点击「取消预约」打开取消预约弹窗,校验通过确认后返回预约日期页 +- 成功态点击「查看预约详情」跳转到「现场体检」(常规体检·待体检) +- 失败态点击「重新预约」跳转到预约日期页 +- 点击返回回到健康体检主页 + +**表单字段表(取消预约弹窗):** + +| 字段名 | 类型 | 是否必填 | 校验规则 | +|--------|------|----------|----------| +| 取消原因 | chip 单选(时间冲突/医院选择不当/日期选择不当/个人健康原因/其他) | 是 | 未选择时提示「请选择或填写取消原因」 | +| 其他原因说明 | 多行文本(maxlength=100) | 选「其他」时必填 | 去空格后非空,否则提示同上 | + +--- + +## 四、胃肠镜体检预约流程 + +> 步骤条:**1 选择医院 → 2 填问卷 → 3 预约日期**。交互规则与常规流程一致。 + +### 10. 胃肠镜·选择医院(gastro-hospital.html) + + + +**功能说明:** 胃肠镜预约第 1 步,单选承检医院;唐都医院需先办理就诊卡(影响问卷页题目)。 + +**主要UI元素:** +- 步骤条(当前第 1 步)、导航栏「个人信息」入口 +- 医院单选卡片:宁夏宝石花医院(默认选中)、CQ星龙园医院、唐都医院(标记:胃肠镜预约需先办理就诊卡) +- 「确认个人信息」弹窗(与常规流程一致) +- 底部「下一步」按钮 + +**业务规则:** +- 从选择体检类型页进入时自动弹出个人信息确认弹窗 +- 选择唐都医院进入问卷页时携带 hospital 参数,问卷首页追加「就诊卡号」必填题 + +**交互说明:** +- 点击医院卡片单选选中 +- 点击「个人信息」打开/确认关闭个人信息弹窗 +- 点击「下一步」跳转到胃肠镜·病史问卷(唐都医院携带医院标识) +- 点击返回回到选择体检类型页 + +--- + +### 11. 胃肠镜·病史问卷(gastro-questionnaire.html) + + + +**功能说明:** 胃肠镜预约第 2 步,填写检查病史问卷(是/否单选),供医生评估检查方案;唐都医院场景额外要求填写就诊卡号。 + + + +**主要UI元素:** +- 区块标题「胃肠镜问卷」+ 说明「请如实填写以下信息,以便医生评估检查方案」 +- 就诊卡题(仅唐都医院显示,标红星):「请填写唐都医院就诊卡号」文本输入框(上限 20 字)+ 下划线链接「没有就诊卡?」 +- 就诊卡办理流程弹窗:3 步流程说明(门诊大厅建卡窗口/自助机现场办理,或「唐都医院」微信公众号在线申领电子就诊卡,办妥后返回填卡号继续预约)+ 提示「就诊卡号为预约必填项,未办理将无法完成胃肠镜预约」 +- 问卷题卡(序号圆徽 + 题干 + 是/否胶囊按钮,选中态青色):是否使用阿司匹林、是否有心脏疾病、是否有肺部疾病、是否有哮喘(默认「否」);胸部是否检查、血液是否检查(默认「是」) +- 底部双按钮:「上一步」/「下一步」 + +**业务规则:** +- 每题为是/否互斥单选 +- 就诊卡题按所选医院条件展示,展示后问卷题自动重新编号(唐都场景 1~7 题,其他医院 1~6 题) +- 就诊卡号为预约必填项 + +**交互说明:** +- 点击是/否按钮切换单选 +- 点击「没有就诊卡?」打开就诊卡办理流程弹窗,「知道了」关闭 +- 点击「下一步」跳转到胃肠镜·预约日期;点击「上一步」或步骤条回跳胃肠镜·选择医院 + +**表单字段表:** + +| 字段名 | 类型 | 是否必填 | 校验规则 | +|--------|------|----------|----------| +| 唐都医院就诊卡号(仅唐都医院) | 文本输入(maxlength=20) | 是 | 必填,未办理可查看办理流程弹窗 | +| 是否使用阿司匹林 | 是/否单选 | 是 | 默认「否」,互斥单选 | +| 是否有心脏疾病 | 是/否单选 | 是 | 默认「否」,互斥单选 | +| 是否有肺部疾病 | 是/否单选 | 是 | 默认「否」,互斥单选 | +| 是否有哮喘 | 是/否单选 | 是 | 默认「否」,互斥单选 | +| 胸部是否检查 | 是/否单选 | 是 | 默认「是」,互斥单选 | +| 血液是否检查 | 是/否单选 | 是 | 默认「是」,互斥单选 | + +--- + +### 12. 胃肠镜·预约日期(gastro-date.html) + + + +**功能说明:** 胃肠镜预约第 3 步,回显预约信息并在日历上选择检查日期。 + +**主要UI元素:** +- 步骤条(第 1、2 步完成,第 3 步当前) +- 预约信息摘要卡:体检类型(胃肠镜体检)、体检医院、问卷状态(已完成) +- 预约状态条:「● 可预约」徽章 + 可预约日期范围;提示「胃肠镜检查需提前预约,最早仅可预约7天后的日期,超出范围日期不可选择」 +- 月历卡片(日期格 + 号源「余N」/「不可约」,同常规流程样式) +- 「确认预约信息」弹窗:体检类型、体检医院、预约日期;「取消 / 确认预约」 +- 底部双按钮:「上一步」/「确定预约」 + +**业务规则:** +- 可约窗口:最早 7 天后、最晚 30 天后;窗口外日期禁选 +- 周末与约满日不可约;默认选中最早可约日 +- 翻月按钮按可约窗口边界禁用 + +**交互说明:** +- 点击可约日期格选中;点击翻月按钮切换月份 +- 点击「确定预约」打开确认弹窗,「确认预约」跳转到胃肠镜·预约结果 +- 点击「上一步」或步骤条回跳胃肠镜·病史问卷 + +--- + +### 13. 胃肠镜·预约结果(gastro-date-selected.html) + + + +**功能说明:** 胃肠镜预约结果页,成功/失败两态,结构与常规预约结果页一致。 + + + +**主要UI元素:** +- 结果横幅(成功:「预约成功」+「已为您锁定胃肠镜检查名额,请按预约日期准时到检」;失败:「预约失败」+ 失败原因 +「?」帮助按钮) +- 预约信息卡片:体检医院、体检员工、体检地址、体检日期、体检项目(胃肠镜体检) +- 体检须知卡片(仅成功态,6 条):检查前 3 天清淡饮食、前一晚服用肠道清洁剂遵医嘱、当天空腹禁食禁水至少 8 小时、携带身份证、无痛胃肠镜检查后 24 小时内勿驾车、取消至少提前一天 +- 成功态按钮「取消预约 / 查看预约详情」;失败态按钮「重新预约」 +- 「失败原因详情」弹窗:号源争抢失败说明 + 处理建议(胃肠镜仅可预约 7~30 天内号源,长期无号源可联系健康管理专员协调加号) +- 「确认取消预约」弹窗(原因 chips + 其他说明,与常规流程一致) + +**业务规则:** +- 与常规预约结果页一致:失败态隐藏须知、取消必填原因、取消成功后返回预约日期页 +- 已预约状态下点击步骤条弹 Toast 阻止回跳 + +**交互说明:** +- 成功态「查看预约详情」跳转到「现场体检」(胃肠镜体检页签) +- 失败态「重新预约」跳转到胃肠镜·预约日期 +- 取消预约、失败原因弹窗、返回交互与常规预约结果页一致 + +--- + +## 五、胃肠镜医院预选 + +> 独立于正式预约的意向征集活动:征集期内员工对下一年度承检医院进行意向多选,每人仅可填写一次、提交后不可修改。 + +### 14. 医院预选填写(gastro-preselect.html) + + + +**功能说明:** 胃肠镜体检医院意向征集填写页,员工多选意向医院后经二次确认提交。 + +**主要UI元素:** +- 征集说明卡:「📋 2027 年度胃肠镜体检医院意向征集」、预选日期(2026-07-01 至 2026-10-20)、红色警示条「⚠️ 本次预选每人仅可填写一次,提交后不可修改,请谨慎选择。」 +- 区块标题「选择意向医院」+「点击卡片可多选,当前已选 N 家」(计数实时更新) +- 医院多选卡片(方形复选框,选中态青色对勾):宁夏宝石花医院(标签:胃肠镜体检+常规体检)、CQ星龙园医院、唐都医院、西安市第四医院(胃肠镜体检+常规体检)、银川市第一人民医院,各带省市信息 +- 「确认提交预选」弹窗:警示「本次预选仅可填写一次,提交后不可修改」+ 已选医院数量与名称列表;「返回修改 / 确认提交」 +- 底部「提交预选」按钮(选中后文案变「提交预选(已选 N 家)」) + +**业务规则:** +- 多选互不影响,已选 0 家时提交按钮禁用 +- 提交前强制二次确认(因仅可填写一次) +- 每人限提交一次,提交后不可修改 + +**交互说明:** +- 点击医院卡片勾选/取消勾选,按钮文案与计数联动 +- 点击「提交预选」打开确认弹窗(未选医院时按钮禁用) +- 弹窗「返回修改」关闭弹窗,「确认提交」跳转到预选提交完成页 +- 点击返回回到健康体检主页 + +--- + +### 15. 预选提交完成(gastro-preselect-done.html) + + + +**功能说明:** 预选提交成功后的只读回显页。 + +**主要UI元素:** +- 成功卡:绿色对勾图标、「预选提交成功」、提交时间、绿色提示框(「感谢您的参与,您的意向将作为2027年度承检医院安排参考 / 预选结果提交后不可修改」) +- 「我选择的意向医院」区块:「共 2 家,以下为只读回显,不可再次编辑」+ 只读已选医院卡片(固定青色描边 + 对勾) +- 底部「返回首页」按钮 + +**业务规则:** +- 纯只读展示,医院卡片不可点击 +- 返回主页后,主页预选通知条变为「预选已完成」态 + +**交互说明:** +- 点击「返回首页」或返回箭头回到健康体检主页 + +--- + +## 六、冠脉CTA体检预约流程 + +> 冠脉CTA 免问卷,步骤条为两步:**1 选择医院 → 2 预约日期**。 + +### 16. 冠脉CTA·选择医院(cta-hospital.html) + + + +**功能说明:** 冠脉CTA预约第 1 步,单选承检医院;无问卷环节,选完医院直接进入预约日期。 + +**主要UI元素:** +- 两步步骤条(当前第 1 步)、导航栏「个人信息」入口 +- 医院单选卡片:宁夏宝石花医院(默认选中)、CQ星龙园医院、唐都医院 +- 「确认个人信息」弹窗(与常规流程一致) +- 底部「下一步」按钮 + +**业务规则:** +- 从选择体检类型页进入时自动弹出个人信息确认弹窗 +- 冠脉CTA无问卷环节 + +**交互说明:** +- 点击医院卡片单选选中 +- 点击「下一步」跳转到冠脉CTA·预约日期 +- 点击返回回到选择体检类型页 + +--- + +### 17. 冠脉CTA·预约日期(cta-date.html) + + + +**功能说明:** 冠脉CTA预约第 2 步,回显预约信息并在日历上选择检查日期。 + +**主要UI元素:** +- 两步步骤条(第 1 步完成,第 2 步当前) +- 预约信息摘要卡:体检类型(冠脉CTA体检)、体检医院 +- 预约状态条:「● 可预约」徽章 + 可预约日期范围;提示「冠脉CTA检查需提前预约,最早仅可预约7天后的日期,超出范围日期不可选择」 +- 月历卡片(同胃肠镜流程样式) +- 「确认预约信息」弹窗:体检类型、体检医院、预约日期 +- 底部双按钮:「上一步」/「确定预约」 + +**业务规则:** +- 可约窗口:最早 7 天后、最晚 30 天后;周末与约满日不可约;默认选中最早可约日 + +**交互说明:** +- 点击可约日期格选中;点击「确定预约」打开确认弹窗,「确认预约」跳转到冠脉CTA·预约结果 +- 点击「上一步」或步骤条回跳冠脉CTA·选择医院 + +--- + +### 18. 冠脉CTA·预约结果(cta-date-selected.html) + + + +**功能说明:** 冠脉CTA预约结果页,成功/失败两态,结构与常规预约结果页一致。 + + + +**主要UI元素:** +- 结果横幅(成功:「预约成功」+「已为您锁定冠脉CTA检查名额,请按预约日期准时到检」;失败:「预约失败」+ 失败原因 +「?」帮助按钮) +- 预约信息卡片:体检医院、体检员工、体检地址、体检日期、体检项目(冠脉CTA体检) +- 体检须知卡片(仅成功态,6 条):检查前 24 小时避免剧烈运动/吸烟/咖啡浓茶、心率过快者遵医嘱服控制心率药物、提前练习屏气 10~15 秒、碘对比剂过敏/甲功异常/肾功能不全/妊娠期提前告知医生、携带身份证、取消至少提前一天 +- 成功态按钮「取消预约 / 查看预约详情」;失败态按钮「重新预约」 +- 「失败原因详情」弹窗与「确认取消预约」弹窗(与常规流程一致) + +**业务规则:** +- 与常规预约结果页一致:失败态隐藏须知、取消必填原因、取消成功后返回预约日期页 + +**交互说明:** +- 成功态「查看预约详情」跳转到「现场体检」(冠脉CTA体检页签) +- 失败态「重新预约」跳转到冠脉CTA·预约日期 +- 其余交互与常规预约结果页一致 + +--- + +## 七、现场体检 + +### 19. 现场体检(my-appointments-all.html) + + + +**功能说明:** 查看各类体检的预约详情与现场体检信息:体检签到码(条形码/二维码)、预约概要、体检须知、已检/未检项目进度;无预约时提供立即预约入口。 + + + +**主要UI元素:** +- 体检类型 Tab(吸顶,3 等分):常规体检 / 胃肠镜体检 / 冠脉CTA体检 +- 常规体检·待体检视图: + - 「体检签到码」卡片:条形码/二维码双选项卡切换,条形码下编号(如 TJ2026032300871),提示「点击条码可放大查看」;点击打开放大遮罩 + - 预约概要卡:体检医院、预约日期、体检员工、单位部门、状态徽章(待体检=橙 / 已体检=绿) + - 体检进度卡:Tab「已检项目 (N) / 未检项目 (M)」,常规共 26 个项目(一般检查、内科、外科、眼科、耳鼻喉科、口腔科、血常规、尿常规、肝功能、肾功能、血脂四项、空腹血糖、甲状腺功能、肿瘤标志物、心电图、胸部DR、腹部彩超、甲状腺彩超、泌尿系彩超、心脏彩超、颈动脉彩超、骨密度、肺功能、幽门螺杆菌、中医体质辨识、总检报告),已检=绿色✓「已体检」、未检=橙色●「未检」 +- 胃肠镜/冠脉CTA视图:预约概要卡 + 体检须知卡(6 条,与预约结果页一致)+ 项目列表卡(胃肠镜:胃镜检查、肠镜检查;冠脉CTA:冠脉钙化积分扫描、冠脉CTA成像) +- 无预约空态:图标 +「暂无XX体检预约」+ 说明文案 +「立即预约」按钮 + + + +**业务规则:** +- 预约状态三态:待体检(橙)/ 已体检(绿)/ 无预约信息(空态);已完成视图无签到码卡片,进度为全部已检 +- 签到码仅「常规体检·待体检」状态展示 +- 已检/未检列表空态文案:「暂无已检项目」/「当前预约项目已全部完成」 + +**交互说明:** +- 点击类型 Tab 切换对应体检面板 +- 点击「条形码/二维码」切换签到码形态;点击码打开放大遮罩,点击遮罩空白关闭 +- 点击已检/未检 Tab 切换项目列表 +- 空态「立即预约」按类型分流:常规跳转到选择体检类型页,胃肠镜跳转到胃肠镜·选择医院,冠脉CTA跳转到冠脉CTA·选择医院 +- 点击返回回到健康体检主页 + +--- + +### 20. 到院体检(hospital-checkin.html) + + + +**功能说明:** 体检当天到院签到引导页,展示预约详情、体检须知与到院建议。 + +**主要UI元素:** +- Hero 渐变卡:「到院签到提醒」徽章、大标题「常规体检」、引导描述(按预约信息前往医院,完成签到后按体检单顺序检查,异常情况联系导检台) +- 预约详情卡:体检医院、预约日期、体检地址 +- 体检须知卡:前一日清淡饮食勿饮酒勿劳累,当天空腹禁食 +- 到院建议卡:建议提前 15 分钟到院,便于签到、核验身份与领取体检单 +- 底部「返回现场体检」按钮 + +**交互说明:** +- 点击「返回现场体检」或返回箭头回到现场体检页 + +--- + +## 八、体检报告与指标对比 + +### 21. 体检报告列表(reports.html) + + + +**功能说明:** 历年体检报告汇总入口页,展示体检年份统计、五年趋势分析入口和按年度/报告类型分类的历年报告列表。 + +**主要UI元素:** +- 汇总卡(青色渐变):「10年 累计体检年份」、起始年份 2012、报告总数 12 份、年度时间轴装饰 +- 五年趋势分析入口条:「17 项重点指标 · 较2024新增异常 1 / 改善 2」+ 右箭头 +- 历年报告列表(图标 + 标题 + 类型标签 + 机构名 + 箭头):同一年份可有多类报告(如 2025 年度:胃肠镜体检/冠脉CTA体检/常规体检各一份) + +**业务规则:** +- 报告类型标签三色:常规体检(蓝)、胃肠镜体检(青)、冠脉CTA体检(红) +- 报告按年度倒序排列 + +**交互说明:** +- 点击五年趋势分析条跳转到指标纵向对比页 +- 点击常规体检报告跳转到常规体检报告页 +- 点击胃肠镜体检报告跳转到胃肠镜报告页 +- 点击冠脉CTA体检报告跳转到冠脉CTA报告页 +- 点击返回回到健康体检主页 + +--- + +### 22. 常规体检报告(report-query.html) + + + +**功能说明:** 展示单年度常规体检完整报告:AI 解读/结论/建议三卡与 14 个科室章节的指标明细表。 + +**主要UI元素:** +- 报告头:「2025年体检报告」+「常规体检」标签;基本信息(姓名、性别、年龄、身份证号、体检日期、体检医院) +- 三张 AI 洞察卡(默认收起 2 行 + 渐隐遮罩 +「展开」按钮): + - 体检报告解读:整体完成度、需关注项(体重管理、血脂、尿酸、轻度脂肪肝、颈椎曲度)与干预建议 + - 体检结论(带语音播报按钮):BMI 偏高、尿酸偏高、血脂三项升高、轻度脂肪肝、颈椎生理曲度变直等结论 + - 体检建议(带语音播报按钮):饮食结构、运动、复查计划等建议 +- 14 个科室章节明细表(章节标题青色渐变条,四列:项目/结果/单位/参考值):一般检查、内科、外科、血常规、尿常规、肝功能、肾功能、血脂、血糖、甲状腺功能、肿瘤标志物、心电图、彩超检查、影像检查 +- 异常指标红字加粗并带 ↑ 箭头(如 BMI 25.8 ↑、尿酸 389 ↑、总胆固醇 6.10 ↑、甘油三酯 2.08 ↑、低密度脂蛋白 3.92 ↑) +- 导航栏右侧「下载」按钮;底部「返回报告列表」/「返回消息详情」按钮 + +**业务规则:** +- 异常判定:结果超出参考范围标红,高于上限带 ↑、低于下限带 ↓ +- 从体检消息详情进入时(携带消息参数)底部按钮变为「返回消息详情」,返回逻辑同步变化 + +**交互说明:** +- 点击「展开/收起」切换 AI 卡片段落展开状态 +- 点击语音按钮切换播放态 +- 点击返回/底部按钮:从消息进入时回消息详情,否则回报告列表 + +--- + +### 23. 冠脉CTA报告(report-cta.html) + + + +**功能说明:** 展示单年度冠脉CTA专项报告:检查所见、钙化积分、冠脉分段病变、诊断结论与影像附件入口。 + +**主要UI元素:** +- 报告头:「2025年冠脉CTA报告」+「冠脉CTA体检」标签 + 基本信息 +- 检查所见(可折叠字段):扫描技术与图像质量(扫描时心率、图像质量、冠脉分布)、心脏及心外所见 +- 冠状动脉钙化积分(橙色标题条):Agatston 总积分约 86 分(轻度钙化)及各血管分支积分 +- 冠脉病变分段列表(8 条,血管名 + 描述 + 等级徽章):「未见狭窄」(绿)/「轻度狭窄」(橙,如 LAD 近段混合斑块狭窄约30%、RCA 近段钙化斑块狭窄约40%) +- 诊断结论:影像诊断(含 CAD-RADS 分级)+ 健康建议 +- 影像报告:冠脉CTA原始图像、三维重建图像、钙化积分报告「查看」入口 +- 底部「返回报告列表」 + +**业务规则:** +- 长文本字段默认限高约 3 行,内容溢出时显示「展开/收起」按钮 + +**交互说明:** +- 点击「展开/收起」切换字段全文 +- 点击返回或底部按钮回到报告列表 + +--- + +### 24. 胃肠镜报告(report-gastro.html) + + + +**功能说明:** 展示单年度胃肠镜专项报告:胃镜检查、肠镜检查(含病理诊断)与影像附件入口。 + +**主要UI元素:** +- 报告头:「2025年体检报告」+「胃肠镜体检」标签 + 基本信息 +- 胃镜检查(橙色标题条,4 个可折叠字段):食管、胃、十二指肠所见描述;诊断结果「慢性非萎缩性胃炎(胃窦)」 +- 肠镜检查(青绿标题条,3 个字段):结肠所见;诊断结果「全结肠黏膜未见明显异常」;病理诊断「黏膜慢性炎」 +- 影像报告:胃镜报告、肠镜报告、活检报告「查看」入口 +- 底部「返回报告列表」 + +**业务规则:** +- 长文本字段默认折叠,溢出时显示「展开/收起」按钮(同冠脉CTA报告) + +**交互说明:** +- 点击「展开/收起」切换字段全文 +- 点击返回或底部按钮回到报告列表 + +--- + +### 25. 指标纵向对比(indicator-compare.html) + + + +**功能说明:** 按所选年份区间对 17 项重点数值指标与 6 项定性检查做历年纵向对比,含 AI 总结、统计概览、分类指标卡(带缩略趋势线)与定性项目历年状态。 + +**主要UI元素:** +- 年份区间选择条:「体检年份」两个下拉(2021~2025) +- AI 纵向总结卡:「AI」徽章 +「{N} 年纵向对比总结」+ 区间元信息;四宫格统计:期末异常(红)/ 变化趋势(橙)/ 新增异常(红)/ 转好恢复(绿);AI 总结正文;免责说明「内容由 AI 基于历年体检数据生成,仅供参考,不构成诊断依据」 +- 筛选 chips:全部 / 异常 / 正常 +- 数值指标分组卡(6 个可折叠大类:体格指标、血脂、血糖、肾功能、肝功能、血常规):每张指标卡含指标名 + 趋势徽章 + 期末年值(异常红字带 ↑/↓)+ 参考范围 + SVG 缩略折线(越界点红色、正常点青色) +- 趋势徽章语义:变化趋势/新增异常(红)、连续异常(橙)、转好(绿)、平稳(灰) +- 其他检查项目(定性区,可折叠):项目名 + 动态结论描述 + 五年状态圆点(绿=正常 / 红=异常 / 灰=未检):肝胆脾胰双肾彩超、颈椎CT、心电图、甲状腺彩超、胸部DR、尿常规 + +**业务规则:** +- 异常判定:数值超出参考范围即异常,期末值高于上限标 ↑、低于下限标 ↓ +- 统计口径(按所选区间端点计算):期末异常=区间末年越界数;变化趋势=期末异常且较期初恶化数;新增异常=末年异常且首年正常;转好恢复=末年正常且首年异常 +- 指标组内排序:期末异常者置前,同类内按不利走向 > 新增异常 > 持续异常 > 转好 > 平稳 +- 定性结论按区间动态生成(如「轻度脂肪肝持续 4 年」「2023 年曾异常,2024 年已恢复正常」) +- 年份联动:开始年不得超过结束年,调整后整页重渲染 + +**交互说明:** +- 修改年份下拉整页重渲染(AI 总结、统计、指标卡、定性区同步刷新) +- 点击筛选 chips 过滤异常/正常指标 +- 点击大类头折叠/展开该类指标 +- 点击指标卡跳转到指标分析详情(携带指标与年份区间) +- 点击定性项目卡跳转到对应定性项目分析详情 +- 点击返回回到报告列表 + +--- + +### 26. 指标分析详情(indicator-compare-detail.html) + + + +**功能说明:** 单个指标(数值型)或单个检查项目(定性型)的五年详情分析页,含趋势图、AI 解读、历年明细与同类目切换。 + +**主要UI元素:** +- 数值型视图: + - 头卡:指标名 + 类目标签 + 趋势徽章(无则不显示);当前值(2025 年值,异常红字带 ↑/↓)+「较2024 ±Δ」(升高橙/下降绿);参考范围 + - 「五年趋势图」:SVG 折线图(X 轴年份、Y 轴指标值),含绿色参考范围色带与上下限虚线,数据点带数值标签(正常青色、异常红色),图例「正常参考范围/正常值/异常值」 + - 「AI 趋势解读」卡:趋势分析与建议(含免责声明) + - 「历年明细」表(2025→2021 倒序,六列:年份/结果/单位/参考/状态/对比),状态徽章「正常」(绿)/「偏高 ↑」「偏低 ↓」(红),对比列含「基线年/平稳/持续异常/新增异常/转好恢复」标签 +- 定性型视图: + - 头卡:项目名 +「检查项目」标签 +「存在异常/正常」徽章 + 当前(2025)结果摘要 + - 「历年结果对比」时间轴:竖线 + 圆点(异常年红圈、正常年青圈),每年一行 = 年份 + 体检日期 + 状态徽章 + 结果文本(超长可展开) + - 「AI 解读」卡 +- 「切换查看同类目指标」chips 行;底部「返回体检报告」按钮 + +**业务规则:** +- 状态判定:超出参考范围即异常,高于上限「偏高 ↑」、低于下限「偏低 ↓」 +- 逐年对比标签规则:首年「基线年」(灰)、两年均异常「持续异常」(橙)、仅当年异常「新增异常」(红)、仅前年异常「转好恢复」(绿)、两年均正常「平稳」(灰) +- 定性型时间轴文本超长默认 2 行截断,可展开 + +**交互说明:** +- 点击同类目 chips 切换查看同组其他指标/项目 +- 点击时间轴「展开/收起」查看完整年份结论文本 +- 点击导航「报告」跳转到常规体检报告页 +- 点击返回回到指标纵向对比页,点击底部按钮跳转到常规体检报告页 + +--- + +## 九、消息与咨询 + +### 27. 消息列表(messages.html) + + + +**功能说明:** 健康体检模块的消息通知列表,区分已读/未读,点击进入消息详情。 + +**主要UI元素:** +- 消息卡片:类型图标(未读带红点)、徽标「健康体检」、时间(右上角)、单行省略标题 +- 示例消息:2026年度常规体检报告已生成(未读)、体检指标异常预警(未读)、心脑血管疾病风险预警(未读)、2型糖尿病发病风险预警(未读)、明日体检到院提醒(已读)、2025年度体检报告已生成(已读) + +**业务规则:** +- 未读态:图标右上角红点、卡片白底、标题深色加粗;已读态:无红点、卡片置灰、标题灰色 +- 已读状态本地持久化(同一设备会话内有效);从详情返回后红点即时消失 + +**交互说明:** +- 点击消息卡标记已读并跳转到消息详情 +- 点击返回回到健康体检主页 + +--- + +### 28. 消息详情(message-detail.html) + + + +**功能说明:** 按消息 id 渲染完整正文;AI 预警类消息附带免责声明与「查看报告/快速咨询」入口,报告/提醒类消息提供跳转入口。 + + + +**主要UI元素:** +- 详情卡:徽标「健康体检」+ 时间 + 大标题 + 正文(关键数值加粗) +- 三类消息内容: + - 报告生成类:报告完成说明、异常指标清单、纸质/电子报告领取方式;底部「查看报告详情 ›」文字链 + - AI 预警类(3 条):指标持续上行预警(近三年三项代谢指标对比数据)、心脑血管疾病 10 年风险中度偏高(风险评估模型与贡献因素)、2型糖尿病发病风险预警(进展概率与触发因素);底部黄色免责提示框(AI 生成内容不构成诊断结论)+「查看报告详情 ›」「快速咨询 ›」文字链 + - 到院提醒类:体检时间、空腹项目要求、注意事项;底部「查看预约详情」动作行 +- 消息不存在时显示空态「消息不存在或已删除」 + +**业务规则:** +- AI 预警类消息必带免责声明;快速咨询按病种跳转专家咨询列表(如高脂血症、冠心病、糖尿病),并携带消息标识便于返回 +- 进入详情即标记该消息已读 + +**交互说明:** +- 点击「查看报告详情」跳转到常规体检报告页(返回时回本消息详情) +- AI 预警消息点击「快速咨询」跳转到健康咨询模块的专家列表页 +- 到院提醒点击「查看预约详情」跳转到现场体检页 +- 点击返回回到消息列表 + +--- + +### 29. 一键咨询(consult.html) + + + +**功能说明:** 集中展示体检报告中的异常指标(按检查大类分组表格呈现),每个子项提供「专家库一键咨询」入口。 + +**主要UI元素:** +- 4 个大分类区块,每区块下分子项(子项名 + 右侧红色「专家库一键咨询 ›」链接): + - 化学检查:血脂(高密度脂蛋白 0.90 ↓)、乙肝(表面抗体弱阳性)、肝功(谷丙转氨酶 59、总胆红素 33.0、直接胆红素 7.5、间接胆红素 25.5)、生化检查(载脂蛋白-A1 0.88) + - 常规检查:血常规(中性粒细胞比率 78.6% ↑、淋巴细胞比率 15.2% ↓)、尿常规(尿蛋白弱阳性) + - 影像检查:彩超(轻度脂肪肝)、颈椎(颈椎CT生理曲度变直) + - 肠胃镜检查:胃镜(诊断:慢性非萎缩性胃炎(胃窦))、肠镜(病理诊断:黏膜慢性炎) +- 异常结果表:四列(名称/结果/单位/参考值),结果列红色加粗;肠胃镜为两列(名称/结果) + +**业务规则:** +- 仅展示异常项,结果列统一红色加粗标记异常 + +**交互说明:** +- 点击「专家库一键咨询 ›」跳转到健康咨询模块的专家列表页(按对应异常项病种检索) +- 点击返回回到健康体检主页 + +--- + +## 十、操作流程讲解 + +### 30. 操作流程讲解(process-guide.html) + + + +**功能说明:** 体检业务操作指引聚合页,以图文/视频卡片提供预约、到院、报告查询等流程讲解入口。 + +**主要UI元素:** +- 分段筛选器:全部 / 视频讲解 / 图文讲解 +- 讲解卡片(缩略图 + 标题 + 描述 + 类型标签 + 视频时长 + 箭头),5 条示例: + - 图文:体检预约流程、到院体检流程、报告查询流程 + - 视频:胃肠镜检查流程(03:20)、体检注意事项(02:10) + +**业务规则:** +- 筛选器按卡片类型显隐过滤 + +**交互说明:** +- 点击分段筛选切换列表 +- 点击讲解卡跳转到讲解详情(图文/视频形态由卡片类型决定) +- 点击返回回到健康体检主页 + +--- + +### 31. 讲解详情(process-guide-detail.html) + + + +**功能说明:** 按 type + id 渲染两种形态的指引详情:图文富文本教程(步骤条 + 温馨提示)或视频播放页。 + + + +**主要UI元素:** +- 图文页:蓝色渐变头图(指引标题)、导语框、编号步骤列表(如预约流程 4 步:进入预约页面 → 选择医院与项目 → 选择日期与时间段 → 确认并提交)、「💡 温馨提示」框(如「如需改期或取消,请提前在『现场体检』中操作,避免占用号源」) +- 视频页:16:9 播放器(封面 + 中央播放/暂停按钮 + 当前时间/总时长 + 进度条)、「视频讲解」徽标、标题、「视频简介」卡片 + +**业务规则:** +- type 仅 video 判为视频形态,其余均按图文处理;未知 id 回退到默认图文指引 +- 视频播放为原型模拟(自动播放、约 24 秒快放完整时长、可暂停) + +**交互说明:** +- 视频页点击中央按钮切换播放/暂停 +- 点击返回回到操作流程讲解页 + +--- + +## 附:原型演示数据口径说明 + +以下为各页面示例数据存在的不一致点,研发实现时以业务规则为准,不以下述演示数值为准: + +1. **体检额度**:选择体检类型页示例 ¥2,500.00、选择项目页年度总额度 ¥1,600.00、已选项目确认页 ¥1500.00、主页 Banner ¥1500.00,四处演示值不一致;实际额度由单位体检计划下发。 +2. **体检医院**:报告列表/胃肠镜/冠脉CTA报告机构为「CQ星龙园医院」,常规报告详情为「宁夏宝石花医院健康管理中心」,消息详情为「市中心医院」;实际以预约记录为准。 +3. **演示基准日期**:预约日期类页面以 2026-03-16 为「今天」模拟号源,而体检类型卡片中计划时间段为 2026-06-23 至 2026-08-31;实际以服务端号源为准。 +4. **消息标题**:消息列表与消息详情对同一条消息的标题文案不完全一致(列表为短标题、详情为完整标题),实现时建议同一数据源单字段渲染。 +5. **恶化趋势标签**:指标对比总览页对 BMI/总胆固醇/甘油三酯显示「变化趋势」红色徽章,分析详情页对这三项不显示趋势徽章(按需求已移除恶化趋势标签);实现时统一为详情页口径(不展示),总览页徽章文案与样式以设计稿为准。 diff --git a/employee-app/health-checkup/doc/screenshot.mjs b/employee-app/health-checkup/doc/screenshot.mjs new file mode 100644 index 0000000..321044e --- /dev/null +++ b/employee-app/health-checkup/doc/screenshot.mjs @@ -0,0 +1,155 @@ +/** + * 健康体检(员工端)PRD 截图脚本 + * 规则(同 health-monitor/doc/screenshot-final.mjs): + * - 标准 phone-shell 尺寸 390×844 + * - 短页面(实测内容 < 844):保持 844 高度,外壳完整 + * - 长页面(实测内容 > 844):phone-shell 解除高度限制,按真实内容展开 + * - 结果页(booking/gastro/cta-date-selected)通过导航栏演示下拉切换成功/失败两态 + */ +import { chromium } from 'playwright'; +import { fileURLToPath } from 'url'; +import path from 'path'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const docDir = __dirname; +const root = path.resolve(__dirname, '..'); + +// mode: auto(短页面最低 844 / 长页面真实高度) +const tasks = [ + // ========== 模块主页 ========== + { html: 'index.html', out: 'index' }, + { html: 'index-inactive.html', out: 'index-inactive' }, + + // ========== 体检预约(通用 + 常规体检流程) ========== + { html: 'booking-type.html', out: 'booking-type' }, + { html: 'booking-hospital.html', out: 'booking-hospital' }, + { html: 'booking-hospital.html', out: 'booking-hospital-dialog', query: '?from=booking-type' }, + { html: 'booking-project.html', out: 'booking-project' }, + { html: 'booking-project.html', out: 'booking-project-required', clickText: '必检项目' }, + { html: 'booking-project-selected.html', out: 'booking-project-selected' }, + { html: 'booking-date.html', out: 'booking-date' }, + { html: 'booking-date-selected.html', out: 'booking-date-selected' }, + { html: 'booking-date-selected.html', out: 'booking-date-selected-fail', demo: 'fail' }, + { html: 'project-detail.html', out: 'project-detail', query: '?id=general' }, + + // ========== 胃肠镜体检流程 ========== + { html: 'gastro-hospital.html', out: 'gastro-hospital' }, + { html: 'gastro-questionnaire.html', out: 'gastro-questionnaire' }, + { html: 'gastro-questionnaire.html', out: 'gastro-questionnaire-tangdu', query: '?hospital=tangdu' }, + { html: 'gastro-date.html', out: 'gastro-date' }, + { html: 'gastro-date-selected.html', out: 'gastro-date-selected' }, + { html: 'gastro-date-selected.html', out: 'gastro-date-selected-fail', demo: 'fail' }, + { html: 'gastro-preselect.html', out: 'gastro-preselect' }, + { html: 'gastro-preselect-done.html', out: 'gastro-preselect-done' }, + + // ========== 冠脉CTA体检流程 ========== + { html: 'cta-hospital.html', out: 'cta-hospital' }, + { html: 'cta-date.html', out: 'cta-date' }, + { html: 'cta-date-selected.html', out: 'cta-date-selected' }, + { html: 'cta-date-selected.html', out: 'cta-date-selected-fail', demo: 'fail' }, + + // ========== 现场体检 ========== + { html: 'my-appointments-all.html', out: 'my-appointments-all' }, + { html: 'my-appointments-all.html', out: 'my-appointments-all-gastro', query: '?type=gastro&status=pending' }, + { html: 'my-appointments-all.html', out: 'my-appointments-all-cta', query: '?type=cta&status=pending' }, + { html: 'hospital-checkin.html', out: 'hospital-checkin' }, + + // ========== 体检报告 ========== + { html: 'reports.html', out: 'reports' }, + { html: 'report-query.html', out: 'report-query' }, + { html: 'report-cta.html', out: 'report-cta' }, + { html: 'report-gastro.html', out: 'report-gastro' }, + { html: 'indicator-compare.html', out: 'indicator-compare' }, + { html: 'indicator-compare-detail.html', out: 'indicator-compare-detail', query: '?item=bmi' }, + + // ========== 消息 / 咨询 / 操作指引 ========== + { html: 'messages.html', out: 'messages' }, + { html: 'message-detail.html', out: 'message-detail', query: '?id=report-2026' }, + { html: 'message-detail.html', out: 'message-detail-ai', query: '?id=warn-indicator' }, + { html: 'consult.html', out: 'consult' }, + { html: 'process-guide.html', out: 'process-guide' }, + { html: 'process-guide-detail.html', out: 'process-guide-detail', query: '?type=image&id=booking' }, + { html: 'process-guide-detail.html', out: 'process-guide-detail-video', query: '?type=video&id=gastro' }, +]; + +(async () => { + const browser = await chromium.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] }); + const context = await browser.newContext({ viewport: { width: 390, height: 4000 } }); + + for (const t of tasks) { + const page = await context.newPage(); + const filePath = path.join(root, t.html); + const url = `file:///${filePath.replace(/\\/g, '/')}${t.query || ''}`; + await page.goto(url, { waitUntil: 'networkidle' }); + await page.waitForTimeout(300); + + // 演示下拉切换(预约结果页成功/失败两态) + if (t.demo) { + await page.evaluate((v) => { + const sel = document.querySelector('#demoSelect, .demo-select'); + if (sel) { + sel.value = v; + sel.dispatchEvent(new Event('change', { bubbles: true })); + if (typeof setResult === 'function') setResult(v); + } + }, t.demo); + await page.waitForTimeout(250); + } + + // 按文本点击(如「必检项目」Tab) + if (t.clickText) { + await page.evaluate((text) => { + const els = Array.from(document.querySelectorAll('div,span,button,li')); + const target = els.filter(el => el.textContent.trim() === text && el.offsetParent).pop(); + if (target) target.click(); + }, t.clickText); + await page.waitForTimeout(250); + } + + // 解除 phone-shell 高度限制:短页面保底 844,长页面按内容展开 + await page.evaluate(() => { + const shell = document.querySelector('.phone-shell'); + if (shell) { + shell.style.height = 'auto'; + shell.style.minHeight = '844px'; + shell.style.maxHeight = 'none'; + shell.style.borderRadius = '0'; + shell.style.boxShadow = 'none'; + shell.style.overflow = 'visible'; + shell.style.display = 'block'; + } + document.querySelectorAll('.scroll-content, .page-content, .main-content, .list-wrap, .content').forEach(c => { + c.style.overflow = 'visible'; + c.style.maxHeight = 'none'; + c.style.height = 'auto'; + c.style.flex = 'none'; + }); + document.body.style.padding = '0'; + document.body.style.minHeight = 'auto'; + document.body.style.background = '#fff'; + }); + await page.waitForTimeout(300); + + const measured = await page.evaluate(() => { + const shell = document.querySelector('.phone-shell'); + if (!shell) return document.body.scrollHeight; + return Math.ceil(shell.getBoundingClientRect().height); + }); + const h = Math.max(measured, 844); + await page.setViewportSize({ width: 390, height: h }); + await page.waitForTimeout(150); + + const shell = await page.$('.phone-shell'); + const target = shell || page; + await target.screenshot({ + path: path.join(docDir, 'screenshots', `${t.out}.jpg`), + type: 'jpeg', + quality: 85, + }); + console.log(`✓ ${t.out}.jpg`); + await page.close(); + } + + await browser.close(); + console.log(`\n完成!共截取 ${tasks.length} 张`); +})(); diff --git a/employee-app/health-checkup/doc/screenshots/booking-date-selected-fail.jpg b/employee-app/health-checkup/doc/screenshots/booking-date-selected-fail.jpg new file mode 100644 index 0000000..f38877c Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/booking-date-selected-fail.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/booking-date-selected.jpg b/employee-app/health-checkup/doc/screenshots/booking-date-selected.jpg new file mode 100644 index 0000000..ed654c6 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/booking-date-selected.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/booking-date.jpg b/employee-app/health-checkup/doc/screenshots/booking-date.jpg new file mode 100644 index 0000000..1b2631b Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/booking-date.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/booking-hospital-dialog.jpg b/employee-app/health-checkup/doc/screenshots/booking-hospital-dialog.jpg new file mode 100644 index 0000000..afcc3f3 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/booking-hospital-dialog.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/booking-hospital.jpg b/employee-app/health-checkup/doc/screenshots/booking-hospital.jpg new file mode 100644 index 0000000..06996b3 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/booking-hospital.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/booking-project-required.jpg b/employee-app/health-checkup/doc/screenshots/booking-project-required.jpg new file mode 100644 index 0000000..50310d0 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/booking-project-required.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/booking-project-selected.jpg b/employee-app/health-checkup/doc/screenshots/booking-project-selected.jpg new file mode 100644 index 0000000..a69b4b9 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/booking-project-selected.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/booking-project.jpg b/employee-app/health-checkup/doc/screenshots/booking-project.jpg new file mode 100644 index 0000000..43e46b5 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/booking-project.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/booking-type.jpg b/employee-app/health-checkup/doc/screenshots/booking-type.jpg new file mode 100644 index 0000000..a0c4e6c Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/booking-type.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/consult.jpg b/employee-app/health-checkup/doc/screenshots/consult.jpg new file mode 100644 index 0000000..bd998ff Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/consult.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/cta-date-selected-fail.jpg b/employee-app/health-checkup/doc/screenshots/cta-date-selected-fail.jpg new file mode 100644 index 0000000..2e238d9 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/cta-date-selected-fail.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/cta-date-selected.jpg b/employee-app/health-checkup/doc/screenshots/cta-date-selected.jpg new file mode 100644 index 0000000..8c8f410 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/cta-date-selected.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/cta-date.jpg b/employee-app/health-checkup/doc/screenshots/cta-date.jpg new file mode 100644 index 0000000..6e54885 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/cta-date.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/cta-hospital.jpg b/employee-app/health-checkup/doc/screenshots/cta-hospital.jpg new file mode 100644 index 0000000..bca6f80 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/cta-hospital.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/gastro-date-selected-fail.jpg b/employee-app/health-checkup/doc/screenshots/gastro-date-selected-fail.jpg new file mode 100644 index 0000000..db6f07e Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/gastro-date-selected-fail.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/gastro-date-selected.jpg b/employee-app/health-checkup/doc/screenshots/gastro-date-selected.jpg new file mode 100644 index 0000000..d366699 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/gastro-date-selected.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/gastro-date.jpg b/employee-app/health-checkup/doc/screenshots/gastro-date.jpg new file mode 100644 index 0000000..40ce225 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/gastro-date.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/gastro-hospital.jpg b/employee-app/health-checkup/doc/screenshots/gastro-hospital.jpg new file mode 100644 index 0000000..bd54d83 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/gastro-hospital.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/gastro-preselect-done.jpg b/employee-app/health-checkup/doc/screenshots/gastro-preselect-done.jpg new file mode 100644 index 0000000..21df33d Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/gastro-preselect-done.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/gastro-preselect.jpg b/employee-app/health-checkup/doc/screenshots/gastro-preselect.jpg new file mode 100644 index 0000000..c3e548a Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/gastro-preselect.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/gastro-questionnaire-tangdu.jpg b/employee-app/health-checkup/doc/screenshots/gastro-questionnaire-tangdu.jpg new file mode 100644 index 0000000..f1966c0 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/gastro-questionnaire-tangdu.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/gastro-questionnaire.jpg b/employee-app/health-checkup/doc/screenshots/gastro-questionnaire.jpg new file mode 100644 index 0000000..aeb8514 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/gastro-questionnaire.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/hospital-checkin.jpg b/employee-app/health-checkup/doc/screenshots/hospital-checkin.jpg new file mode 100644 index 0000000..f1372d5 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/hospital-checkin.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/index-inactive.jpg b/employee-app/health-checkup/doc/screenshots/index-inactive.jpg new file mode 100644 index 0000000..b92c79f Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/index-inactive.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/index.jpg b/employee-app/health-checkup/doc/screenshots/index.jpg new file mode 100644 index 0000000..01183af Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/index.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/indicator-compare-detail.jpg b/employee-app/health-checkup/doc/screenshots/indicator-compare-detail.jpg new file mode 100644 index 0000000..29eaa14 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/indicator-compare-detail.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/indicator-compare.jpg b/employee-app/health-checkup/doc/screenshots/indicator-compare.jpg new file mode 100644 index 0000000..8e424fd Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/indicator-compare.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/message-detail-ai.jpg b/employee-app/health-checkup/doc/screenshots/message-detail-ai.jpg new file mode 100644 index 0000000..ea9b8d3 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/message-detail-ai.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/message-detail.jpg b/employee-app/health-checkup/doc/screenshots/message-detail.jpg new file mode 100644 index 0000000..a6b2931 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/message-detail.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/messages.jpg b/employee-app/health-checkup/doc/screenshots/messages.jpg new file mode 100644 index 0000000..4003f98 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/messages.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/my-appointments-all-cta.jpg b/employee-app/health-checkup/doc/screenshots/my-appointments-all-cta.jpg new file mode 100644 index 0000000..9f69d11 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/my-appointments-all-cta.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/my-appointments-all-gastro.jpg b/employee-app/health-checkup/doc/screenshots/my-appointments-all-gastro.jpg new file mode 100644 index 0000000..6554714 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/my-appointments-all-gastro.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/my-appointments-all.jpg b/employee-app/health-checkup/doc/screenshots/my-appointments-all.jpg new file mode 100644 index 0000000..cd4650e Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/my-appointments-all.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/process-guide-detail-video.jpg b/employee-app/health-checkup/doc/screenshots/process-guide-detail-video.jpg new file mode 100644 index 0000000..f6b259e Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/process-guide-detail-video.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/process-guide-detail.jpg b/employee-app/health-checkup/doc/screenshots/process-guide-detail.jpg new file mode 100644 index 0000000..6fae716 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/process-guide-detail.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/process-guide.jpg b/employee-app/health-checkup/doc/screenshots/process-guide.jpg new file mode 100644 index 0000000..a5fec65 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/process-guide.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/project-detail.jpg b/employee-app/health-checkup/doc/screenshots/project-detail.jpg new file mode 100644 index 0000000..2e7ad00 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/project-detail.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/report-cta.jpg b/employee-app/health-checkup/doc/screenshots/report-cta.jpg new file mode 100644 index 0000000..02c70d7 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/report-cta.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/report-gastro.jpg b/employee-app/health-checkup/doc/screenshots/report-gastro.jpg new file mode 100644 index 0000000..4442528 Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/report-gastro.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/report-query.jpg b/employee-app/health-checkup/doc/screenshots/report-query.jpg new file mode 100644 index 0000000..dc9844c Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/report-query.jpg differ diff --git a/employee-app/health-checkup/doc/screenshots/reports.jpg b/employee-app/health-checkup/doc/screenshots/reports.jpg new file mode 100644 index 0000000..54bb6ad Binary files /dev/null and b/employee-app/health-checkup/doc/screenshots/reports.jpg differ diff --git a/employee-app/weight-management/doc/PRD.md b/employee-app/weight-management/doc/PRD.md index 79a15dd..e169416 100644 --- a/employee-app/weight-management/doc/PRD.md +++ b/employee-app/weight-management/doc/PRD.md @@ -675,7 +675,7 @@ stateDiagram-v2 - 周历(含月历弹窗):日期用彩色圆环标记来源(自记/蓝牙称/体重秤/体脂仪),圆环下方显示来源文字标签(自记/蓝牙称/体重秤/体脂仪) - 当日最新记录区:体重(大字)+ 较上次变化 + BMI(含偏瘦/正常/超重/肥胖标签)+ 体脂率/腰围 + 时间 + 来源标签 - 数据来源卡片:四张来源小卡(体重秤/蓝牙称/体脂仪/自记,各显示该来源最近一次体重值,无记录显示"尚未记录"),点击体重秤/蓝牙称/体脂仪卡片查看当日该来源体重记录,点击自记卡片打开记录体重弹窗 -- 变化趋势卡片:时间范围(周/月/季/年/活动期间)+ 三 Tab(体重变化/体脂变化/腰围变化),各含统计行(平均/最大/最小/变化)+ 折线图(初始线/目标线/推荐范围/实际趋势 + 数据点悬浮提示) + - 变化趋势卡片:时间范围(周/月/季/年/活动期间)+ 三 T························································································································································································································································································································ ab(体重变化/体脂变化/腰围变化),各含统计行(平均/最大/最小/变化)+ 折线图(初始线/目标线/推荐范围/实际趋势 + 数据点悬浮提示) - 记录明细列表:日期 + 时间 + 体重 + 体脂/腰围 + 来源标签;非自记来源带箭头可点击 - 记录体重弹窗:记录体重(必填)+ 记录体脂率(开关)+ 记录腰围(开关),滑动尺子调整数值 + 保存 diff --git a/index.html b/index.html index f7c4522..3bdecba 100644 --- a/index.html +++ b/index.html @@ -237,9 +237,9 @@ const SITE_MAP = [ { file:'pre-cta-plan-mgmt.html', label:'冠脉CTA单位体检计划管理' }, { file:'pre-special-cta.html', label:'冠脉CTA体检人员' }, { file:'pre-special-hospital.html', label:'指定员工体检医院' }, - { file:'mid-appointment-track.html', label:'员工预约跟踪' }, - { file:'mid-selected-items.html', label:'已选项目员工信息' }, - { file:'mid-participation.html', label:'员工参检情况' }, + { file:'mid-appointment-track.html', label:'体检预约' }, + { file:'mid-selected-items.html', label:'已选项目' }, + { file:'mid-participation.html', label:'已检员工' }, { file:'mid-unit-appointment.html', label:'单位预约人数统计' }, { file:'mid-hospital-realtime.html', label:'医院实时预约人数' }, { file:'mid-doctor-realtime.html', label:'医生实时检查情况' }, @@ -659,7 +659,7 @@ const SITE_MAP = [ { name:'应用主页', dir:'employee-app/home', entry:'index.html', pages:[ {n:'应用主页(收起态)',f:'index.html'}, ] }, - { name:'健康体检', dir:'employee-app/health-checkup', entry:'index.html', pages:[ + { name:'健康体检', dir:'employee-app/health-checkup', entry:'index.html', prd:'employee-app/health-checkup/doc/PRD.md', pages:[ { file:'index.html', label:'健康体检主页' }, { file:'index-inactive.html', label:'健康体检-未开展' }, { file:'booking-type.html', label:'选择体检类型' }, diff --git a/web-admin/health-checkup/archive-personal.html b/web-admin/health-checkup/archive-personal.html index 33d0a80..736d97f 100644 --- a/web-admin/health-checkup/archive-personal.html +++ b/web-admin/health-checkup/archive-personal.html @@ -119,6 +119,15 @@ .report-sub__title{font-size:var(--font-sm);font-weight:600;color:var(--text-primary);margin:14px 0 8px;} .report-sub:first-of-type .report-sub__title{margin-top:0;} .result-abnormal{color:var(--danger);font-weight:600;} +/* 体检年份选择控件 */ +.year-picker{position:relative;} +.year-picker .filter-input{padding-right:30px;cursor:pointer;} +.year-picker>svg{position:absolute;right:9px;top:50%;transform:translateY(-50%);pointer-events:none;} +.year-picker__dropdown{display:none;position:absolute;top:40px;left:0;width:120px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:50;max-height:180px;overflow-y:auto;} +.year-picker__dropdown.open{display:block;} +.year-picker__dropdown div{padding:8px 14px;font-size:var(--font-sm);cursor:pointer;} +.year-picker__dropdown div:hover{background:var(--primary-light);} +.year-picker__dropdown div.selected{color:var(--primary);font-weight:600;}
@@ -159,10 +168,16 @@