diff --git a/emergency-app/assistant/doc/PRD.md b/emergency-app/assistant/doc/PRD.md
index be7b76c..b709ed7 100644
--- a/emergency-app/assistant/doc/PRD.md
+++ b/emergency-app/assistant/doc/PRD.md
@@ -2,30 +2,30 @@
## 模块概述
-咨询小助手端为平台客服人员提供移动端工作平台,负责接收员工的初步咨询请求,进行图文对话沟通,并在需要时为员工推荐合适的专家。小助手端仅支持图文咨询,不支持视频咨询。
+咨询小助手端为平台客服人员提供移动端工作平台,负责接收员工步咨询请求,进行图文对话沟通,并在需要时为员工推荐合适的专家。小助手端仅支持图文咨询,不支持视频咨询。
### 页面导航结构
```
咨询小助手端
├── 工作台(底部Tab)
-│ ├── 工作台首页(3分类Tab)
-│ │ ├── 待回复 → 图文聊天
-│ │ ├── 进行中 → 图文聊天
-│ │ └── 已完成 → 咨询完成详情 → 历史对话
-│ ├── 图文聊天
-│ │ ├── 查看档案 → 员工健康档案
-│ │ ├── 结束咨询 → 结束咨询确认弹窗
-│ │ └── 推送专家 → 选择专家页 → 返回聊天(发送名片)
+│ ├── 工作台首页(3分类Tab + 过滤条件)
+│ │ ├── 待回复 → 图文聊天(进行中)
+│ │ ├── 进行中 → 图文聊天(进行中)
+│ │ └── 已完成
+│ │ ├── 已完成 → 图文咨询完成详情 → 历史对话(只读)→ 咨询人健康档案
+│ │ └── 已超时 → 图文咨询已超时详情 → 历史对话(只读)→ 咨询人健康档案
├── 知识库(底部Tab)
-│ ├── 知识库首页(4分类Tab)
-│ └── 知识详情
-├── AI助手(底部Tab,共享模块)
-├── 消息(底部Tab,共享模块)
+│ ├── 知识库首页
+│ │ ├── 知识文章(知识分类-知识列表)→ 知识详情
+│ │ └── 规章制度(PDF列表)→ 查看文件
+├── AI助手(底部Tab)
+├── 消息(底部Tab)
└── 我的(底部Tab)
├── 个人中心主页
- │ ├── 咨询统计
- │ └── 修改密码
+ │ ├── 个人信息设置
+ │ ├── 修改密码
+ │ └── 关于我们
└── 退出登录(确认弹窗)
```
@@ -36,223 +36,287 @@ stateDiagram-v2
[*] --> 待回复 : 员工发起咨询
待回复 --> 进行中 : 小助手首次回复
进行中 --> 进行中 : 推送专家名片
- 进行中 --> 已完成 : 小助手结束咨询
+ 进行中 --> 已完成 : 任一方结束咨询/有回复但是7天无更新自动变为已完成
+ 进行中 --> 已超时 : 7天首次未回复自动关闭
```
## 页面清单
-| 序号 | 文件名 | 页面名称 | 类型 | 所属模块 |
-|------|--------|----------|------|----------|
-| 1 | workbench/index.html | 工作台首页 | 页面 | 工作台 |
-| 2 | workbench/text-chat.html | 图文咨询 | 页面 | 工作台 |
-| 3 | workbench/consult-done.html | 咨询完成详情 | 页面 | 工作台 |
-| 4 | workbench/employee-profile.html | 员工健康档案 | 页面 | 工作台 |
-| 5 | workbench/end-consult-dialog.html | 结束咨询确认弹窗 | 弹窗 | 工作台 |
-| 6 | workbench/push-expert.html | 选择专家 | 页面 | 工作台 |
-| 7 | knowledge/index.html | 知识库首页 | 页面 | 知识库 |
-| 8 | knowledge/detail.html | 知识详情 | 页面 | 知识库 |
-| 9 | ../ai-assistant/index.html | AI 助手(共享) | 页面 | AI 助手 |
-| 10 | ../message/index.html | 消息列表(共享) | 页面 | 消息 |
-| 11 | ../message/contacts.html | 通讯录(共享) | 页面 | 消息 |
-| 12 | ../message/im-chat.html | IM 聊天(共享) | 页面 | 消息 |
-| 13 | profile/index.html | 个人中心主页 | 页面 | 我的 |
-| 14 | profile/stats.html | 咨询统计 | 页面 | 我的 |
-| 15 | profile/change-pwd.html | 修改密码 | 页面 | 我的 |
+| 序号 | 文件名 | 页面名称 | 所属模块 |
+|------|--------|-----|-------|
+| 1 | workbench/index.html | 工作台首页 | 工作台 |
+| 2 | workbench/text-chat.html | 图文聊天 | 工作台·图文咨询 |
+| 3 | workbench/text-chat-done.html | 历史对话(只读) | 工作台·图文咨询 |
+| 4 | workbench/text-consult-done.html | 图文咨询完成详情 | 工作台·图文咨询 |
+| 5 | workbench/text-consult-timeout.html | 图文咨询已超时详情 | 工作台·图文咨询 |
+| 6 | workbench/employee-profile.html | 咨询人健康档案 | 工作台 |
+| 7 | workbench/end-consult-dialog.html | 结束咨询确认弹窗 | 工作台 |
+| 8 | workbench/push-expert.html | 选择专家 | 工作台 |
+| 9 | knowledge/index.html | 知识库首页 | 知识库 |
+| 10 | knowledge/detail.html | 知识详情 | 知识库 |
+| 11 | ../ai-assistant/index.html | AI 助手 | AI 助手 |
+| 12 | ../message/index.html | 消息列表 | 消息 |
+| 13 | ../message/contacts.html | 通讯录 | 消息 |
+| 14 | ../message/im-chat.html | IM 聊天 | 消息 |
+| 15 | profile/index.html | 个人中心主页 | 我的 |
+| 16 | profile/edit-profile.html | 个人信息设置 | 我的 |
+| 17 | profile/change-pwd.html | 修改密码 | 我的 |
## 逐页说明
---
+## 一、工作台模块
+
### 1. 工作台首页(workbench/index.html)
-**功能说明:** 小助手工作台入口,展示图文咨询任务队列,按状态分类管理。
+
+
+**功能说明:** 小助手工作台入口,展示图文咨询任务队列,按状态分类管理,支持多维度过滤筛选。
**业务规则:**
-- 头部统计卡片展示:待回复数、进行中数、今日完成数、满意度百分比
-- 仅支持图文咨询,无视频咨询Tab
-- 分三个子Tab:待回复、进行中、已完成
+- 头部展示欢迎语和统计数据:待回复数、进行中数
+- 二级 Tab 切换:待回复、进行中、已结束(已完成、已超时)
+- 过滤条件栏支持按咨询类型(咨询专家 / 咨询小助手)和专家未回复筛选
+- 咨询卡片展示:咨询人头像、姓名、角色标签、最后消息、时间
+- 咨询类型标签:咨询专家、咨询小助手
+- 已完成面板同时展示已完成和已超时两种终态卡片
**交互说明:**
-- 点击待回复/进行中的咨询卡片跳转到图文聊天
-- 点击已完成的咨询卡片跳转到咨询完成详情
-- 底部5Tab导航:工作台/知识库/AI助手/消息/我的
+- 点击"待回复 / 进行中"咨询卡片:跳转到图文聊天页
+- 点击"已完成"咨询卡片:跳转到图文咨询完成详情页
+- 点击"已超时"咨询卡片:跳转到图文咨询已超时详情页
+- 点击过滤条件:动态筛选当前列表
---
-### 2. 图文咨询(workbench/text-chat.html)
+## 二、图文咨询业务线
-**功能说明:** 小助手与员工的实时图文对话界面,相比专家端多了"推送专家"功能。
+### 2. 图文聊天(workbench/text-chat.html)
+
+
+
+**功能说明:** 小助手与员工的实时图文对话界面,支持文字、语音、图片发送,提供常用语快捷填充和推送专家功能。
**业务规则:**
-- 聊天区分员工消息(左侧白色气泡)和小助手消息(右侧蓝色气泡,机器人头像)
-- 支持文字、语音、图片三种消息类型
-- 常用语面板提供5条预设快捷语
+- 导航栏展示咨询人姓名和咨询类型标签(咨询专家蓝色 / 咨询小助手紫色)
+- 咨询信息条(可折叠)展示:发起时间、咨询人信息、专家信息、查看档案入口。“咨询人档案”按钮需判断当前员工是否选择了咨询档案进行发起咨询,如果没有选择,则按钮置灰,点击时提示Toast“员工未选择咨询人档案”
+- 员工消息以左侧白色气泡展示(含咨询卡片),小助手消息以右侧蓝色气泡展示
+- 常用语面板支持分类 Tab:全部 / 问候语 / 注意事项 / 结束语/ 引导语
+- 媒体选择面板提供:拍照、图库、推送专家三个选项
- 推送专家后,聊天区自动插入专家名片气泡(含头像、姓名、科室、职称、医院、擅长病种)
**交互说明:**
-- 点击"查看档案"跳转到员工健康档案
-- 点击"结束咨询"跳转到结束咨询确认弹窗
-- 点击闪电图标展开/收起常用语面板
-- 点击加号展开媒体面板(拍照/图库/推送专家)
-- 点击"推送专家"跳转到选择专家页
+- 点击咨询人档案卡片或"查看档案":跳转到咨询人健康档案页
+- 点击右上角"结束咨询":跳转到结束咨询确认弹窗
+- 点击"⚡"图标:展开 / 收起常用语面板,点击常用语自动填入输入框
+- 点击"🎤"图标:切换语音 / 文字输入模式
+- 点击"+"图标:展开 / 收起媒体选择面板
+- 点击"推送专家":跳转到选择专家页
+- 点击"➤"发送按钮:将输入框内容发送为小助手消息气泡
---
-### 3. 咨询完成详情(workbench/consult-done.html)
+### 3. 历史对话(只读)(workbench/text-chat-done.html)
-**功能说明:** 展示已完结的员工咨询全部信息,包括咨询统计、评价及健康档案。
+
+
+**功能说明:** 展示已结束图文咨询的历史对话记录,为只读模式,无输入区,底部显示咨询结束说明。
**业务规则:**
-- 展示咨询类型(员工咨询)、发起/完成时间、员工评分
+- 布局与图文聊天页一致,但无导航栏右上角"结束咨询"按钮,无底部输入区
+- 底部固定条显示咨询状态文案:
+ - 正常完成:「— 本次咨询已结束 —」
+ - 超时关闭:「— 长时间未回复系统已自动结束本次咨询 —」
+- 聊天区末尾展示绿色结束卡片(含完成时间),超时状态下不展示该卡片
+
+**交互说明:**
+- 对话内交互与图文聊天页一致
+- 返回按钮:跳转到工作台首页
+
+---
+
+### 4. 图文咨询完成详情(workbench/text-consult-done.html)
+
+
+
+**功能说明:** 展示已完成图文咨询的摘要信息,提供查看历史对话和咨询人健康档案的入口。
+
+**业务规则:**
+- 顶部员工信息卡展示:头像、姓名、所属部门、"已完成"标签
+- 咨询信息区展示:咨询类型、发起时间、结束时间
- 员工评价以黄色引用框展示
-- 健康档案分基本信息、生活习惯、身体情况三组
+- 咨询人健康档案区支持折叠 / 展开
**交互说明:**
-- 点击"查看历史对话记录"跳转到图文聊天页(只读)
-- 健康档案支持折叠/展开
+- 点击"查看历史对话记录":跳转到历史对话(只读)页
+- 点击"咨询人健康档案"标题:展开 / 收起档案详情
+- 返回按钮:跳转到工作台首页
---
-### 4. 员工健康档案(workbench/employee-profile.html)
+### 5. 图文咨询已超时详情(workbench/text-consult-timeout.html)
-**功能说明:** 展示咨询员工的完整健康档案,供小助手参考。
+
+
+**功能说明:** 展示因 7 天未回复被系统自动关闭的图文咨询详情,提示超时原因,并提供查看历史记录和健康档案的入口。
**业务规则:**
-- 分三组展示:基本信息(姓名、性别/年龄、身高/体重)、生活习惯(吸烟、饮酒、饮食、睡眠)、身体情况(过敏史、遗传史、既往史)
-- 过敏史以红色高亮标记
+- 顶部员工信息卡展示:头像、姓名、所属部门、"已超时"标签
+- 咨询信息区展示:咨询对象、咨询单号、发起时间、结束时间
+- 橙色警示卡片展示超时原因:「超过七天无回复,本次咨询已自动关闭。」
**交互说明:**
-- 返回按钮跳转到图文聊天页
+- 点击"查看历史对话记录":跳转到历史对话(只读)页,
+- 点击"咨询人健康档案":跳转到咨询人健康档案页
+- 返回按钮:跳转到工作台首页
---
-### 5. 结束咨询确认弹窗(workbench/end-consult-dialog.html)
+### 6. 咨询人健康档案(workbench/employee-profile.html)
-**功能说明:** 小助手结束咨询的二次确认弹窗,作为独立HTML页面实现。
+
+
+**功能说明:** 展示咨询员工的完整健康档案,供小助手在咨询过程中参考。
+
+**业务规则:**
+- 基本信息卡:姓名、关系、性别、年龄、身高、体重
+- 生活习惯卡:以标签形式展示,吸烟、饮酒、饮食均衡、睡眠良好
+- 身体情况卡:红色高亮标记,过敏史、遗传史、既往史、其他疾病
+- 咨询信息卡:问题描述、持续时间、检查资料(图片展示)、就诊经历、期望帮助
+
+**交互说明:**
+- 返回按钮:返回来源页面
+
+---
+
+### 7. 结束咨询确认弹窗(workbench/end-consult-dialog.html)
+
+
+
+**功能说明:** 小助手结束咨询的二次确认弹窗,作为独立 HTML 页面实现。
**业务规则:**
- 弹窗提示"确认结束与XX的咨询?结束后将无法继续发送消息"
- 半透明蒙层背景
**交互说明:**
-- 点击"取消"返回图文聊天页
-- 点击"确认结束"跳转到工作台首页
+- 点击"取消":关闭弹窗
+- 点击"确认结束":跳转到工作台首页
---
-### 6. 选择专家(workbench/push-expert.html)
+### 8. 选择专家(workbench/push-expert.html)
+
+
**功能说明:** 小助手在咨询中为员工推荐合适的专家,选择后将专家名片发送至聊天会话。
**业务规则:**
- 展示可推荐的专家列表,每位含头像、姓名、医院、科室职称、本月咨询数、擅长病种标签
-- 选择专家后数据存入 sessionStorage,返回聊天页后自动发送名片气泡
+- 选择专家后返回聊天页后自动发送名片气泡
**交互说明:**
-- 顶部搜索框支持按姓名/科室搜索
-- 点击专家卡片选中并返回图文聊天页
+- 顶部搜索框支持按姓名 / 科室搜索
+- 点击专家卡片:选中并返回图文聊天页
---
-### 7. 知识库首页(knowledge/index.html)
+## 三、知识库模块
-**功能说明:** 小助手查阅专业医学知识的参考库,与专家端知识库结构和内容一致。
+### 9. 知识库首页(knowledge/index.html)
+
+
+
+**功能说明:** 后续规划,暂时显示”开发中,敬请期待~”。
-**业务规则:**
-- 4个分类Tab:体检知识、药品知识、疾病知识、保健知识
-- 共10条知识条目
-**交互说明:**
-- 切换分类Tab显示对应知识列表
-- 点击知识条目跳转到知识详情
---
-### 8. 知识详情(knowledge/detail.html)
+### 10. 知识详情(knowledge/detail.html)
-**功能说明:** 展示单条知识的完整内容,由URL参数动态渲染,与专家端内容一致。
+
-**业务规则:**
-- 共支持9个知识条目的动态渲染
-- 每条含概述段落和2-3个主要内容分项
-
-**交互说明:**
-- 返回按钮跳转到知识库首页
+**功能说明:** 后续规划,暂时显示”开发中,敬请期待~”。
---
-### 9. 个人中心主页(profile/index.html)
+## 四、我的模块
+
+### 11. 个人中心主页(profile/index.html)
+
+
**功能说明:** 小助手个人中心入口,展示用户信息和功能菜单。
**业务规则:**
-- 蓝色渐变头部展示小助手头像、姓名、角色标签、所属机构
-- 功能菜单分两组:第一组为咨询统计(显示今日完成次数),第二组为修改密码和关于我们
-- 底部提供退出登录按钮
+- 蓝色渐变头部展示:小助手头像、姓名、角色标签(咨询小助手)
+- 功能菜单:个人信息设置、修改密码、关于我们
+- 底部提供红色退出登录按钮
**交互说明:**
-- 点击"咨询统计"跳转到咨询统计页
-- 点击"修改密码"跳转到修改密码页
-- 点击"退出登录"弹出确认弹窗,确认后退出
-- 底部5Tab导航:工作台/知识库/AI助手/消息/我的
+- 点击"个人信息设置":跳转到个人信息设置页
+- 点击"修改密码":跳转到修改密码页
+- 点击"退出登录":弹出确认弹窗,确认后退出
---
-### 10. 咨询统计(profile/stats.html)
+### 12. 个人信息设置(profile/edit-profile.html)
-**功能说明:** 展示小助手的咨询工作量统计数据。
+
+
+**功能说明:** 小助手编辑个人基本信息,支持更换头像和修改姓名。
**业务规则:**
-- 数据概览2×2网格:今日完成、本周完成、本月完成、累计完成
-- 本月咨询类型仅图文咨询(小助手不支持视频咨询)
-- 近7日完成量以柱状图展示,今日高亮
+- 头像区支持点击更换(拍照 / 相册选择)
+- 姓名输入框可编辑
**交互说明:**
-- 返回按钮跳转到个人中心主页
+- 点击头像:弹出底部弹窗选择拍照或从相册选择
+- 点击"保存":显示 Toast 提示保存成功
+- 返回按钮:跳转到个人中心主页
---
-### 11. 修改密码(profile/change-pwd.html)
+### 13. 修改密码(profile/change-pwd.html)
+
+
**功能说明:** 小助手修改登录密码。
**业务规则:**
-- 表单包含当前密码、新密码(至少8位)、确认新密码三个字段
+- 表单包含当前密码、新密码(至少 8 位)、确认新密码三个字段
- 修改成功后弹窗提示
**交互说明:**
-- 点击"保存修改"弹出修改成功弹窗
-- 弹窗点击"确定"跳转到个人中心主页
+- 点击"保存修改":弹出修改成功弹窗
+- 弹窗点击"确定":跳转到个人中心主页
**表单字段表:**
-| 字段名 | 类型 | 必填 | 规则 |
-|--------|------|------|------|
-| 当前密码 | password | 是 | - |
-| 新密码 | password | 是 | 至少8位 |
-| 确认新密码 | password | 是 | 与新密码一致 |
+| 字段名 | 类型 | 必填 | 规则 |
+|--------|------|------|-----------|
+| 当前密码 | password | 是 | - |
+| 新密码 | password | 是 | 跟当前系统规则一致 |
+| 确认新密码 | password | 是 | 与新密码一致 |
---
-## 共享模块说明
+## 五、AI模块说明
以下模块为专家端和小助手端共用,通过 sessionStorage 的 `appRole` 标记区分当前端,动态设置底部导航栏的工作台返回目标。
-### 12. AI 助手(../ai-assistant/index.html)
+### 14. AI 助手(../ai-assistant/index.html)
-**功能说明:** AI 智能助手,提供医学知识问答辅助。
+**功能说明:** 后续规划,暂时显示”开发中,敬请期待~”。
-**业务规则:**
-- AI 回复为系统自动生成
-- 底部 Tab 导航中"工作台"按钮根据 `appRole` 动态跳转到对应端的工作台
-**交互说明:**
-- 底部输入框输入问题,AI 自动回复
-- 底部 Tab 导航切换到其他模块
---
-### 13. 消息列表(../message/index.html)
+## 六、消息模块说明
+### 15. 消息列表(../message/index.html)
**功能说明:** 内部消息模块,展示与其他角色的消息列表。
@@ -261,13 +325,13 @@ stateDiagram-v2
- 每条消息显示联系人头像、姓名、角色标签、最后一条消息预览、时间
**交互说明:**
-- 点击消息项跳转到 IM 聊天页
-- 点击右上角通讯录图标跳转到通讯录页
+- 点击消息项:跳转到 IM 聊天页
+- 点击右上角通讯录图标:跳转到通讯录页
- 底部 Tab 导航切换到其他模块
---
-### 14. 通讯录(../message/contacts.html)
+### 16. 通讯录(../message/contacts.html)
**功能说明:** 展示系统内所有可联系的内部人员,支持按角色筛选和姓名搜索。
@@ -276,15 +340,17 @@ stateDiagram-v2
- 支持搜索和角色筛选
**交互说明:**
-- 点击联系人跳转到 IM 聊天页
-- 返回按钮跳转到消息列表
+- 点击联系人:跳转到 IM 聊天页
+- 返回按钮:跳转到消息列表
---
-### 15. IM 聊天(../message/im-chat.html)
+### 17. IM 聊天(../message/im-chat.html)
**功能说明:** 与内部人员的即时通讯聊天界面。
**交互说明:**
- 底部输入框输入文字并发送
-- 返回按钮跳转到消息列表
+- 返回按钮:跳转到消息列表
+
+
diff --git a/emergency-app/assistant/doc/screenshot.mjs b/emergency-app/assistant/doc/screenshot.mjs
new file mode 100644
index 0000000..69969a7
--- /dev/null
+++ b/emergency-app/assistant/doc/screenshot.mjs
@@ -0,0 +1,88 @@
+/**
+ * 小助手端 APP 页面截图脚本
+ * 按规范:移除 phone-shell 高度限制、视口 390px、JPEG 85%
+ */
+import { chromium } from 'playwright';
+import { fileURLToPath } from 'url';
+import path from 'path';
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+const screenshotsDir = path.join(__dirname, 'screenshots');
+
+// 小助手端所有页面
+const pages = [
+ // 工作台
+ { file: '../../assistant/workbench/index.html', name: 'index' },
+ { file: '../../assistant/workbench/text-chat.html', name: 'text-chat' },
+ { file: '../../assistant/workbench/text-chat-done.html', name: 'text-chat-done' },
+ { file: '../../assistant/workbench/consult-done.html', name: 'consult-done' },
+ { file: '../../assistant/workbench/text-consult-done.html', name: 'text-consult-done' },
+ { file: '../../assistant/workbench/text-consult-timeout.html', name: 'text-consult-timeout' },
+ { file: '../../assistant/workbench/employee-profile.html', name: 'employee-profile' },
+ { file: '../../assistant/workbench/end-consult-dialog.html', name: 'end-consult-dialog' },
+ { file: '../../assistant/workbench/push-expert.html', name: 'push-expert' },
+ // 知识库
+ { file: '../../assistant/knowledge/index.html', name: 'knowledge-index' },
+ { file: '../../assistant/knowledge/detail.html', name: 'knowledge-detail' },
+ // 个人中心
+ { file: '../../assistant/profile/index.html', name: 'profile-index' },
+ { file: '../../assistant/profile/edit-profile.html', name: 'edit-profile' },
+{ file: '../../assistant/profile/change-pwd.html', name: 'change-pwd' },
+];
+
+(async () => {
+ const browser = await chromium.launch({
+ executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
+ args: ['--no-sandbox', '--disable-setuid-sandbox'],
+ });
+ const context = await browser.newContext({ viewport: { width: 390, height: 844 } });
+
+ for (const p of pages) {
+ const page = await context.newPage();
+ const filePath = path.resolve(__dirname, p.file);
+ await page.goto(`file:///${filePath.replace(/\\/g, '/')}`, { waitUntil: 'networkidle' });
+
+ // 移除 phone-shell 高度限制、圆角、阴影;展开内容
+ await page.evaluate(() => {
+ const shell = document.querySelector('.phone-shell');
+ if (shell) {
+ shell.style.height = 'auto';
+ shell.style.borderRadius = '0';
+ shell.style.boxShadow = 'none';
+ shell.style.overflow = 'visible';
+ }
+ const content = document.querySelector('.page-content') || document.querySelector('.scroll-content');
+ if (content) {
+ content.style.overflow = 'visible';
+ content.style.maxHeight = 'none';
+ content.style.height = 'auto';
+ content.style.flex = 'none';
+ }
+ document.body.style.padding = '0';
+ document.body.style.minHeight = 'auto';
+ document.body.style.background = '#fff';
+ });
+
+ await page.waitForTimeout(300);
+
+ const height = await page.evaluate(() => {
+ const shell = document.querySelector('.phone-shell');
+ return shell ? shell.scrollHeight : document.body.scrollHeight;
+ });
+ await page.setViewportSize({ width: 390, height: Math.max(height, 200) });
+
+ const shell = await page.$('.phone-shell');
+ const target = shell || page;
+ await target.screenshot({
+ path: path.join(screenshotsDir, `${p.name}.jpg`),
+ type: 'jpeg',
+ quality: 85,
+ });
+
+ console.log(`✓ ${p.name}.jpg`);
+ await page.close();
+ }
+
+ await browser.close();
+ console.log(`\n完成!共截取 ${pages.length} 张截图`);
+})();
diff --git a/emergency-app/assistant/doc/screenshots/change-pwd.jpg b/emergency-app/assistant/doc/screenshots/change-pwd.jpg
new file mode 100644
index 0000000..7f70b2a
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/change-pwd.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/consult-done.jpg b/emergency-app/assistant/doc/screenshots/consult-done.jpg
new file mode 100644
index 0000000..8c7ccdb
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/consult-done.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/edit-profile.jpg b/emergency-app/assistant/doc/screenshots/edit-profile.jpg
new file mode 100644
index 0000000..f00a5b8
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/edit-profile.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/employee-profile.jpg b/emergency-app/assistant/doc/screenshots/employee-profile.jpg
new file mode 100644
index 0000000..0e31635
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/employee-profile.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/end-consult-dialog.jpg b/emergency-app/assistant/doc/screenshots/end-consult-dialog.jpg
new file mode 100644
index 0000000..f0d4bb5
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/end-consult-dialog.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/index.jpg b/emergency-app/assistant/doc/screenshots/index.jpg
new file mode 100644
index 0000000..869f3f0
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/index.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/knowledge-detail.jpg b/emergency-app/assistant/doc/screenshots/knowledge-detail.jpg
new file mode 100644
index 0000000..3a5b22c
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/knowledge-detail.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/knowledge-index.jpg b/emergency-app/assistant/doc/screenshots/knowledge-index.jpg
new file mode 100644
index 0000000..6908e4e
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/knowledge-index.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/profile-index.jpg b/emergency-app/assistant/doc/screenshots/profile-index.jpg
new file mode 100644
index 0000000..6288ce7
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/profile-index.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/push-expert.jpg b/emergency-app/assistant/doc/screenshots/push-expert.jpg
new file mode 100644
index 0000000..ce57f3a
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/push-expert.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/text-chat-done.jpg b/emergency-app/assistant/doc/screenshots/text-chat-done.jpg
new file mode 100644
index 0000000..266e47e
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/text-chat-done.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/text-chat.jpg b/emergency-app/assistant/doc/screenshots/text-chat.jpg
new file mode 100644
index 0000000..e55b286
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/text-chat.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/text-consult-done.jpg b/emergency-app/assistant/doc/screenshots/text-consult-done.jpg
new file mode 100644
index 0000000..d8baf7f
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/text-consult-done.jpg differ
diff --git a/emergency-app/assistant/doc/screenshots/text-consult-timeout.jpg b/emergency-app/assistant/doc/screenshots/text-consult-timeout.jpg
new file mode 100644
index 0000000..36bfde7
Binary files /dev/null and b/emergency-app/assistant/doc/screenshots/text-consult-timeout.jpg differ
diff --git a/emergency-app/assistant/profile/change-pwd.html b/emergency-app/assistant/profile/change-pwd.html
index 1a2c804..2079c38 100644
--- a/emergency-app/assistant/profile/change-pwd.html
+++ b/emergency-app/assistant/profile/change-pwd.html
@@ -50,7 +50,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
新密码
-
+
确认新密码
diff --git a/emergency-app/assistant/profile/stats.html b/emergency-app/assistant/profile/stats.html
deleted file mode 100644
index 8723efd..0000000
--- a/emergency-app/assistant/profile/stats.html
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
咨询小助手 - 咨询统计 | 健康长庆原型
-
-
-
-
-
-
-
-
diff --git a/emergency-app/assistant/workbench/consult-done.html b/emergency-app/assistant/workbench/consult-done.html
deleted file mode 100644
index 11b9163..0000000
--- a/emergency-app/assistant/workbench/consult-done.html
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
咨询小助手 - 已完成咨询详情 | 健康长庆原型
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
📋 咨询信息
-
咨询类型员工咨询
-
发起时间2026-04-08 14:10
-
完成时间2026-04-08 14:38
-
员工评分⭐⭐⭐⭐⭐ 5.0
-
-
-
-
-
-
员工评价
-
"小助手回复很及时,解答很专业,帮我解决了体检报告的疑问,非常感谢!"
-
-
-
-
-
-
-
-
-
- 📋 咨询人健康档案
- ∨
-
-
-
基本信息
-
姓名孙丽
-
性别 / 年龄女 / 26岁
-
身高 / 体重160 cm / 50 kg
-
生活习惯
-
吸烟否
-
饮酒否
-
饮食喜好清淡
-
睡眠质量良好
-
身体情况
-
过敏史无
-
遗传史无
-
既往史无
-
其他疾病无
-
-
-
-
-
-
-
-
-
-
-
diff --git a/emergency-app/assistant/workbench/employee-profile.html b/emergency-app/assistant/workbench/employee-profile.html
index b199f3e..4d82bab 100644
--- a/emergency-app/assistant/workbench/employee-profile.html
+++ b/emergency-app/assistant/workbench/employee-profile.html
@@ -249,7 +249,12 @@ function goBack() {
'expert-chat': '../../expert/workbench/text-chat.html',
'expert-chat-done': '../../expert/workbench/text-chat-done.html',
'expert-consult-done': '../../expert/workbench/text-consult-done.html',
- 'expert-consult-timeout': '../../expert/workbench/text-consult-timeout.html'
+ 'expert-consult-timeout': '../../expert/workbench/text-consult-timeout.html',
+ 'expert-video-appt': '../../expert/workbench/video-appt.html',
+ 'expert-video-ongoing': '../../expert/workbench/video-ongoing.html',
+ 'expert-video-done': '../../expert/workbench/video-done.html',
+ 'expert-video-cancelled': '../../expert/workbench/video-cancelled.html',
+ 'expert-video-rejected': '../../expert/workbench/video-rejected.html'
};
location.href = backMap[from] || './text-chat.html';
}
diff --git a/emergency-app/assistant/workbench/text-consult-done.html b/emergency-app/assistant/workbench/text-consult-done.html
index ebbe8d8..c484fbf 100644
--- a/emergency-app/assistant/workbench/text-consult-done.html
+++ b/emergency-app/assistant/workbench/text-consult-done.html
@@ -60,7 +60,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
📋 咨询信息
-
咨询类型图文咨询
+
咨询对象咨询专家
发起时间2026-04-08 08:10
结束时间2026-04-08 08:40
diff --git a/emergency-app/assistant/workbench/text-consult-timeout.html b/emergency-app/assistant/workbench/text-consult-timeout.html
index 65c8619..20b9626 100644
--- a/emergency-app/assistant/workbench/text-consult-timeout.html
+++ b/emergency-app/assistant/workbench/text-consult-timeout.html
@@ -64,7 +64,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
📋 咨询信息
-
咨询类型图文咨询
+
咨询对象咨询小助手
咨询单号ZX202688552270
发起时间2026-04-06 14:20
结束时间2026-04-13 14:20
diff --git a/emergency-app/expert/doc/PRD.md b/emergency-app/expert/doc/PRD.md
index 2d6b4b4..71e1da5 100644
--- a/emergency-app/expert/doc/PRD.md
+++ b/emergency-app/expert/doc/PRD.md
@@ -11,23 +11,30 @@
├── 工作台(底部Tab)
│ ├── 工作台首页
│ │ ├── 图文咨询
-│ │ │ ├── 待回复 → 图文聊天 → 员工档案
-│ │ │ ├── 进行中 → 图文聊天
-│ │ │ └── 已完成 → 咨询完成详情 → 历史对话
+│ │ │ ├── 待回复 → 图文聊天(进行中)
+│ │ │ ├── 进行中 → 图文聊天(进行中)
+│ │ │ └── 已结束
+│ │ │ ├── 已完成 → 图文咨询完成详情 → 历史对话(只读)→ 咨询人健康档案
+│ │ │ └── 已超时 → 图文咨询已超时详情 → 历史对话(只读)→ 咨询人健康档案
│ │ └── 视频咨询
-│ │ ├── 待确认 → 视频预约确认
-│ │ ├── 进行中 → 视频进行中 → 视频通话
-│ │ └── 已完成 → 视频完成详情
+│ │ ├── 待确认 → 视频预约确认 → 咨询人健康档案
+│ │ ├── 待开始 → 视频待开始详情 → 咨询人健康档案
+│ │ └── 已结束
+│ │ ├── 已完成 → 视频完成详情 → 咨询人健康档案
+│ │ ├── 已取消 → 视频已取消详情 → 咨询人健康档案
+│ │ └── 已拒绝 → 视频已拒绝详情 → 咨询人健康档案
├── 知识库(底部Tab)
-│ ├── 知识库首页(4分类Tab)
-│ └── 知识详情
-├── AI助手(底部Tab,共享模块)
-├── 消息(底部Tab,共享模块)
+│ ├── 知识库首页(分为知识文章和规章制度)
+│ └── 知识详情/制度详情
+├── AI助手(底部Tab)
+├── 消息(底部Tab)
└── 我的(底部Tab)
├── 个人中心
- ├── 咨询统计 → 全部评价
+ ├── 咨询统计
+ ├── 我的评价
├── 排班设置
- ├── 编辑资料
+ ├── 个人信息设置
+ │ └── 擅长疾病选择
└── 修改密码
```
@@ -38,357 +45,498 @@ stateDiagram-v2
state "图文咨询" as TF {
[*] --> 待回复 : 员工发起
待回复 --> 进行中 : 专家首次回复
- 进行中 --> 已完成 : 任一方结束
+ 进行中 --> 已完成 : 任一方主动结束
+ 进行中 --> 已超时 : 7天无回复自动关闭
}
state "视频咨询" as VF {
[*] --> 待确认 : 员工预约
- 待确认 --> 已确认 : 专家接受
- 待确认 --> 已拒绝 : 专家拒绝
- 已确认 --> 通话中 : 发起视频
- 通话中 --> 已完成 : 挂断
+ 待确认 --> 待开始 : 专家接受
+ 待确认 --> 已拒绝 : 专家拒绝(填写原因)
+ 待开始 --> 已取消 : 任一方取消预约
+ 待开始 --> 已完成 : 完成通话
}
```
## 页面清单
-| 序号 | 文件名 | 页面名称 | 所属模块 |
-|------|--------|----------|----------|
-| 1 | workbench/index.html | 工作台首页 | 工作台 |
-| 2 | workbench/text-chat.html | 图文咨询 | 工作台 |
-| 3 | workbench/text-consult-done.html | 咨询完成详情 | 工作台 |
-| 4 | workbench/employee-profile.html | 员工健康档案 | 工作台 |
-| 5 | workbench/consult-person-detail.html | 咨询人档案详情 | 工作台 |
-| 6 | workbench/video-appt.html | 视频预约确认 | 工作台 |
-| 7 | workbench/video-call.html | 视频通话 | 工作台 |
-| 8 | workbench/video-done.html | 视频完成详情 | 工作台 |
-| 9 | workbench/video-ongoing.html | 视频进行中 | 工作台 |
-| 10 | knowledge/index.html | 知识库首页 | 知识库 |
-| 11 | knowledge/detail.html | 知识详情 | 知识库 |
-| 12 | ../ai-assistant/index.html | AI 助手(共享) | AI 助手 |
-| 13 | ../message/index.html | 消息列表(共享) | 消息 |
-| 14 | ../message/contacts.html | 通讯录(共享) | 消息 |
-| 15 | ../message/im-chat.html | IM 聊天(共享) | 消息 |
-| 16 | profile/index.html | 个人中心 | 我的 |
-| 17 | profile/edit-profile.html | 编辑资料 | 我的 |
-| 18 | profile/change-pwd.html | 修改密码 | 我的 |
-| 19 | profile/schedule.html | 排班设置 | 我的 |
-| 20 | profile/stats.html | 咨询统计 | 我的 |
-| 21 | profile/reviews.html | 全部评价 | 我的 |
+| 序号 | 文件名 | 页面名称 | 所属模块 |
+|------|--------|-------------|-----------------|
+| 1 | workbench/index.html | 工作台首页 | 工作台 |
+| 2 | workbench/text-chat.html | 图文聊天 | 工作台·图文咨询 |
+| 3 | workbench/text-chat-done.html | 历史对话(只读) | 工作台·图文咨询 |
+| 4 | workbench/text-consult-done.html | 图文咨询完成详情 | 工作台·图文咨询 |
+| 5 | workbench/text-consult-timeout.html | 图文咨询已超时详情 | 工作台·图文咨询 |
+| 6 | workbench/video-appt.html | 视频预约确认 | 工作台·视频咨询 |
+| 7 | workbench/video-ongoing.html | 视频待开始详情 | 工作台·视频咨询 |
+| 8 | workbench/video-done.html | 视频完成详情 | 工作台·视频咨询 |
+| 9 | workbench/video-cancelled.html | 视频已取消详情 | 工作台·视频咨询 |
+| 10 | workbench/video-rejected.html | 视频已拒绝详情 | 工作台·视频咨询 |
+| 11 | knowledge/index.html | 知识库首页 | 知识库 |
+| 12 | knowledge/detail.html | 知识详情 | 知识库 |
+| 13 | ../ai-assistant/index.html | AI 助手(共享) | AI 助手 |
+| 14 | ../message/index.html | 消息列表(共享) | 消息 |
+| 15 | ../message/contacts.html | 通讯录(共享) | 消息 |
+| 16 | ../message/im-chat.html | IM 聊天(共享) | 消息 |
+| 17 | profile/index.html | 个人中心 | 我的 |
+| 18 | profile/stats.html | 咨询统计 | 我的 |
+| 19 | profile/reviews.html | 我的评价 | 我的 |
+| 20 | profile/schedule.html | 排班设置 | 我的 |
+| 21 | profile/edit-profile.html | 个人信息设置 | 我的 |
+| 22 | profile/edit-diseases.html | 擅长疾病选择 | 我的 |
+| 23 | profile/change-pwd.html | 修改密码 | 我的 |
+| 24 | ../assistant/workbench/employee-profile.html | 咨询人健康档案 | 工作台已结束图文/视频详情页面 |
## 逐页说明
---
+## 一、工作台模块
+
### 1. 工作台首页(workbench/index.html)
-**功能说明:** 专家工作台入口,展示当前咨询任务队列,支持图文和视频两类咨询的分类管理。
+
+
+**功能说明:** 专家工作台入口,展示当前咨询任务队列,支持图文和视频两类咨询的分类管理,右上角提供服务状态控制。
**业务规则:**
-- 头部统计卡片展示:图文待回复数、视频待确认数、今日完成数、当前评分
-- 服务状态支持"服务中/暂停服务"切换(绿色/红色)
-- 图文咨询分三个子Tab:待回复、进行中、已完成
-- 视频咨询分三个子Tab:待确认、进行中、已完成
+- 头部展示:图文待回复数、视频待确认数
+- 服务状态按钮支持"咨询已开启 / 咨询已关闭"切换,绿色/红色指示点区分状态
+- 一级 Tab 切换图文咨询 / 视频咨询两个面板
+- 图文咨询分三个二级 Tab:待回复、进行中、已结束(已完成、已超时)
+- 视频咨询分三个二级 Tab:待确认、待开始、已结束(已完成、已拒绝、已取消)
+- 底部 5 Tab 导航:工作台 / 知识库 / AI助手 / 消息 / 我的
**交互说明:**
-- 一级Tab切换图文咨询/视频咨询
-- 点击待回复/进行中的咨询卡片跳转到图文聊天
-- 点击已完成的咨询卡片跳转到咨询完成详情
-- 点击视频待确认卡片跳转到视频预约确认
-- 点击视频进行中卡片跳转到视频进行中
-- 底部5Tab导航:工作台/知识库/AI助手/消息/我的
+- 点击服务状态按钮:弹出确认弹窗,确认后切换状态。
+- 点击图文"待回复 / 进行中"咨询卡片:跳转到图文聊天页
+- 点击图文"已完成"咨询卡片:跳转到图文咨询完成详情页
+- 点击图文"已超时"咨询卡片:跳转到图文咨询已超时详情页
+- 点击视频"待确认"咨询卡片:跳转到视频预约确认页
+- 点击视频"待开始"咨询卡片:跳转到视频待开始详情页
+- 点击视频"已完成"咨询卡片:跳转到视频完成详情页
+- 点击视频"已取消"咨询卡片:跳转到视频已取消详情页
+- 点击视频"已拒绝"咨询卡片:跳转到视频已拒绝详情页
---
-### 2. 图文咨询(workbench/text-chat.html)
+## 二、图文咨询业务线
+
+### 2. 图文聊天(workbench/text-chat.html)
+
+
**功能说明:** 专家与员工的实时图文对话界面,支持文字、语音、图片发送及常用语快捷填充。
**业务规则:**
-- 聊天区分员工消息(左侧白色气泡)和专家消息(右侧蓝色气泡)
-- 支持文字、语音、图片三种消息类型
-- 常用语面板提供 5 条预设快捷语
+- 员工消息以左侧白色气泡展示,专家消息以右侧蓝色气泡展示
+- 如果员工发起咨询时,选择了咨询人档案,则聊天消息为咨询人档案卡片(含姓名、性别/年龄、身高/体重、问题描述‘最多显示两行’、持续时间标签、检查图片‘最多显示三张’)
+- 聊天对话支持显示文字、语音、图片、文件、自定义卡片(位置、咨询人档案、体检报告、已结束本次咨询)消息类型
+- 常用语面板点击后可直接将常用语赋值到输入框中
+- 媒体选择面板提供相册、拍照、文件、位置四个选项
**交互说明:**
-- 点击"查看档案"跳转到员工健康档案
-- 点击"结束咨询"弹出确认弹窗,确认后返回工作台首页
-- 点击闪电图标展开/收起常用语面板
-- 点击麦克风切换语音/文字输入模式
-- 点击加号展开媒体选择面板(拍照/图库)
+- 点击对话中的顶部咨询人档案卡片:跳转到咨询人健康档案页
+- 点击对话中的位置卡片,进入二级页面,加载高德地图,显示位置信息
+- 点击对话中的体检报告卡片,进入二级页面,查看当前体检报告内容(参考体检模块)
+- 点击对话中的文件,使用手机中的软件打开文件
+- 点击对话中的语音,播放语音
+- 点击右上角"结束咨询":弹出确认弹窗,确认后返回工作台首页,并且该对话发出一条“已结束本次咨询”的卡片消息。
+- 点击"⚡"图标:展开 / 收起常用语面板,点击常用语自动填入输入框
+- 点击"🎤"图标:切换语音 / 文字输入模式
+- 点击"+"图标:展开 / 收起媒体选择面板,参考旧业务操作
+- 点击发送按钮:将输入框内容发送为专家消息气泡
---
-### 3. 咨询完成详情(workbench/text-consult-done.html)
+### 3. 历史对话(只读)(workbench/text-chat-done.html)
-**功能说明:** 展示已完结的图文咨询全部信息,包括咨询统计、员工评价及健康档案。
+
+
+**功能说明:** 展示已结束图文咨询的历史对话记录,为只读模式,无输入区,底部显示咨询结束说明。
**业务规则:**
-- 展示咨询类型、发起/完成时间、员工评分
-- 员工评价以黄色引用框展示
-- 健康档案分基本信息、生活习惯、身体情况三组
+- 布局与图文聊天页一致,但无导航栏右上角"结束咨询"按钮,无底部输入区
+- 底部固定条显示咨询状态文案:
+ - 正常完成:「— 本次咨询已结束 —」
+ - 超时关闭:「— 长时间未回复系统已自动结束本次咨询 —」
**交互说明:**
-- 点击"查看历史对话记录"跳转到图文聊天页(只读)
-- 健康档案支持折叠/展开
+- 返回按钮:跳转到工作台首页
+- 对话内交互与图文聊天也面一致
---
-### 4. 员工健康档案(workbench/employee-profile.html)
+### 4. 图文咨询完成详情(workbench/text-consult-done.html)
-**功能说明:** 展示咨询员工的完整健康档案,供专家参考。
+
+
+**功能说明:** 展示已完成图文咨询的摘要信息,提供查看历史对话和咨询人健康档案的入口。
**业务规则:**
-- 分三组展示:基本信息(姓名、性别/年龄、身高/体重)、生活习惯(吸烟、饮酒、饮食、睡眠)、身体情况(过敏史、遗传史、既往史)
-- 过敏史以红色高亮标记
+- 顶部员工信息卡展示:头像、姓名、所属单位、"已完成"标签
+- 咨询信息区展示:咨询类型、咨询单号、发起时间、结束时间
**交互说明:**
-- 返回按钮跳转到图文聊天页
+- 点击"查看历史对话记录":跳转到历史对话(只读)页
+- 点击"咨询人健康档案":跳转到咨询人健康档案页
+- 返回按钮:跳转到工作台首页
---
-### 5. 咨询人档案详情(workbench/consult-person-detail.html)
+### 5. 图文咨询已超时详情(workbench/text-consult-timeout.html)
-**功能说明:** 展示咨询人的完整档案信息,包括个人基本信息、生活习惯、身体情况以及本次咨询的健康档案(问题描述、持续时间、检查资料、期望帮助)。
+
+
+**功能说明:** 展示因 7 天未回复被系统自动关闭的图文咨询详情,提示超时原因,并提供查看历史记录和健康档案的入口。
**业务规则:**
-- 头部展示咨询人头像、姓名、性别/年龄、身高/体重
-- 生活习惯以标签形式展示,绿色标签表示良好习惯,橙色标签表示需关注项
-- 身体情况以网格布局展示过敏史、遗传史、既往史、其他疾病
-- 本次咨询档案展示问题描述、持续时间标签、检查资料图片、期望帮助
+- 顶部员工信息卡展示:头像、姓名、所属单位、"已超时"标签
+- 咨询信息区展示:咨询类型、咨询单号、发起时间、结束时间
+- 橙色警示卡片展示超时原因:「超过七天无回复,本次咨询已自动关闭。」
**交互说明:**
-- 返回按钮跳转到上一页(图文聊天页或咨询完成详情页)
+- 点击"查看历史对话记录":跳转到历史对话(只读)页
+- 点击"咨询人健康档案":跳转到咨询人健康档案页
+- 返回按钮:跳转到工作台首页
---
+## 三、视频咨询业务线
+
### 6. 视频预约确认(workbench/video-appt.html)
-**功能说明:** 展示员工发起的视频咨询预约详情,专家可接受或拒绝。
+
+
+**功能说明:** 展示员工发起的视频咨询预约详情,专家可接受或拒绝预约。
**业务规则:**
-- 预约信息卡展示预约时间、咨询类型、发起时间
-- 附带咨询人健康档案和咨询说明
+- 顶部员工信息区展示:头像、姓名性别年龄、"待确认"标签
+- 黄色预约信息卡展示:预约时间(高亮)、咨询类型、发起时间
+- 提供咨询人健康档案入口(点击跳转)
+- 底部双按钮:拒绝预约/ 接受预约
**交互说明:**
-- 点击"接受预约"弹出确认弹窗,确认后返回工作台首页
-- 点击"拒绝预约"拒绝该预约
-- 健康档案支持折叠/展开
+- 点击"接受预约":弹出确认弹窗,确认后返回工作台首页
+- 点击"拒绝预约":弹出拒绝弹窗(含必填原因文本框),填写原因后确认,返回工作台首页
+- 点击"咨询人健康档案":跳转到咨询人健康档案页
+- 返回按钮:跳转到工作台首页
---
-### 7. 视频通话(workbench/video-call.html)
+### 7. 视频待开始详情(workbench/video-ongoing.html)
-**功能说明:** 专家与员工进行视频通话的全屏界面。
+
+
+**功能说明:** 已确认但尚未开始通话的视频咨询详情,显示预约信息并提供发起通话和取消预约的入口。
**业务规则:**
-- 全屏深色背景,显示远端画面区、通话时长计时器、本地小窗
-- 底部三个控制按钮:麦克风、挂断、摄像头
+- 顶部员工信息区展示:头像、姓名、部门职位、"待开始"标签
+- 绿色预约信息卡展示:预约时间(高亮)、咨询类型、发起时间、接受时间
+- 提供咨询人健康档案入口
+- 咨询说明区提示:「请在预约时间内发起视频通话」
+- 底部按钮:取消预约和发起视频通话
**交互说明:**
-- 点击麦克风切换静音/取消静音
-- 点击摄像头切换开关
-- 点击挂断弹出确认弹窗,确认后返回工作台首页
+- 点击"取消预约":弹出取消弹窗(含必填原因文本框),填写原因后确认,返回工作台首页
+- 点击"咨询人健康档案":跳转到咨询人健康档案页
+- 点击发起视频通话,打开IM视频通话拨打页面
+- 返回按钮:跳转到工作台首页
---
### 8. 视频完成详情(workbench/video-done.html)
-**功能说明:** 展示已完结视频咨询的详情,包括通话时长、评分评价、健康档案。
+
+
+**功能说明:** 展示已完成视频咨询的详情,包含通话信息和咨询人健康档案入口。
**业务规则:**
-- 展示咨询时间段、通话时长、员工评分
-- 附带员工评价和健康档案
+- 顶部员工信息区展示:头像、姓名性别年龄、"已完成"标签
+- 灰色信息卡展示:预约时间、咨询类型、拨打时间、通话时长
+- 提供咨询人健康档案入口
**交互说明:**
-- 健康档案支持折叠/展开
-- 返回按钮跳转到工作台首页
+- 点击"咨询人健康档案":跳转到咨询人健康档案页
+- 返回按钮:跳转到工作台首页
---
-### 9. 视频进行中(workbench/video-ongoing.html)
+### 9. 视频已取消详情(workbench/video-cancelled.html)
-**功能说明:** 已确认但尚未开始通话的视频咨询详情,提供发起通话入口。
+
+
+**功能说明:** 展示因员工/专家主动取消而终止的视频咨询详情,包含取消信息和原因。
**业务规则:**
-- 预约信息卡展示预约时间、咨询类型、状态为"已确认"
-- 附带健康档案和咨询说明
+- 顶部员工信息区展示:头像、姓名性别年龄、"已取消"标签
+- 灰色信息卡展示:预约时间、咨询类型、取消时间、取消方(员工/专家)
+- 灰色左边框引用框展示取消原因
+- 提供咨询人健康档案入口
**交互说明:**
-- 点击"发起视频通话"跳转到视频通话页
-- 健康档案支持折叠/展开
+- 点击"咨询人健康档案":跳转到咨询人健康档案页
+- 返回按钮:跳转到工作台首页
---
-### 10. 知识库首页(knowledge/index.html)
+### 10. 视频已拒绝详情(workbench/video-rejected.html)
-**功能说明:** 专家查阅专业医学知识的参考库,按分类浏览条目列表。
+
+
+**功能说明:** 展示专家主动拒绝的视频咨询预约详情,包含拒绝信息和原因。
**业务规则:**
-- 4个分类Tab:体检知识、药品知识、疾病知识、保健知识
-- 共10条知识条目,每条含图标、标题、摘要
+- 顶部员工信息区展示:头像、姓名性别年龄、"已拒绝"红色标签
+- 灰色信息卡展示:预约时间、咨询类型、拒绝时间、拒绝方(专家)
+- 红色左边框引用框展示专家填写的拒绝原因
+- 提供咨询人健康档案入口
**交互说明:**
-- 切换分类Tab显示对应知识列表
-- 点击知识条目跳转到知识详情(带key参数)
+- 点击"咨询人健康档案":跳转到咨询人健康档案页
+- 返回按钮:跳转到工作台首页
---
-### 11. 知识详情(knowledge/detail.html)
+## 四、知识库模块
-**功能说明:** 展示单条知识的完整内容,由URL参数动态渲染。
+### 11. 知识库首页(knowledge/index.html)
-**业务规则:**
-- 共支持9个知识条目的动态渲染
-- 每条含概述段落和2-3个主要内容分项
+
-**交互说明:**
-- 返回按钮跳转到知识库首页
+**功能说明:** 等后续“知识普及”模块规划,暂时不做,先显示“开发中,敬请期待~”
---
-### 12. AI 助手(共享模块:../ai-assistant/index.html)
+### 12. 知识详情(knowledge/detail.html)
-**功能说明:** 专家端和小助手端共用的 AI 智能助手,提供医学知识问答辅助。
+
-**业务规则:**
-- 通过 sessionStorage 的 `appRole` 标记区分当前端,动态设置底部导航栏的工作台返回目标
-- AI 回复为系统自动生成
-
-**交互说明:**
-- 底部输入框输入问题,AI 自动回复
-- 底部 Tab 导航切换到其他模块
+**功能说明:** 等后续“知识普及”模块规划
---
-### 13. 消息列表(共享模块:../message/index.html)
+## 五、我的模块
-**功能说明:** 专家端和小助手端共用的内部消息模块,展示与其他角色的消息列表。
+### 13. 个人中心(profile/index.html)
-**业务规则:**
-- 通过 sessionStorage 的 `appRole` 标记区分当前端
-- 消息列表按最新消息时间倒序排列
-- 每条消息显示联系人头像、姓名、角色标签、最后一条消息预览、时间
-
-**交互说明:**
-- 点击消息项跳转到 IM 聊天页
-- 点击右上角通讯录图标跳转到通讯录页
-- 底部 Tab 导航切换到其他模块
-
----
-
-### 14. 通讯录(共享模块:../message/contacts.html)
-
-**功能说明:** 展示系统内所有可联系的内部人员,支持按角色筛选和姓名搜索。
-
-**业务规则:**
-- 人员按角色分类展示
-- 支持搜索和角色筛选
-
-**交互说明:**
-- 点击联系人跳转到 IM 聊天页
-- 返回按钮跳转到消息列表
-
----
-
-### 15. IM 聊天(共享模块:../message/im-chat.html)
-
-**功能说明:** 与内部人员的即时通讯聊天界面。
-
-**交互说明:**
-- 底部输入框输入文字并发送
-- 返回按钮跳转到消息列表
-
----
-
-### 16. 个人中心(profile/index.html)
+
**功能说明:** 专家个人信息中心,展示基础信息及功能入口列表。
**业务规则:**
-- 头部展示头像、姓名、科室职称、医院
-- 服务状态支持在线/暂停切换
-- 功能列表:咨询统计、排班设置、个人信息设置、修改密码、关于我们
+- 头部展示:头像、姓名、科室职称、所属医院
+- 服务状态按钮支持"咨询已开启 / 咨询已关闭"切换(与工作台首页状态联动)
+- 功能列表分两组:
+ - 第一组:咨询统计(附今日次数)、我的评价(附综合评分)、排班设置、个人信息设置
+ - 第二组:修改密码、关于我们
+- 底部"退出登录"红色按钮
**交互说明:**
-- 点击各功能项跳转到对应页面
-- 点击"退出登录"弹出确认弹窗
+- 点击"咨询统计":跳转到咨询统计页
+- 点击"我的评价":跳转到全部评价页
+- 点击"排班设置":跳转到排班设置页
+- 点击"个人信息设置":跳转到个人信息设置页
+- 点击"修改密码":跳转到修改密码页
+- 点击服务状态按钮:弹出确认弹窗,确认后切换状态
+- 点击"退出登录":弹出确认弹窗
---
-### 17. 编辑资料(profile/edit-profile.html)
+### 14. 咨询统计(profile/stats.html)
+
+
+
+**功能说明:** 展示专家的多维度咨询数据统计,含月度收益、咨询类型分布和月度趋势折线图。
+
+**业务规则:**
+- 月份切换器支持前后月份翻页
+- 收益概览展示:已结算收益(绿色)、未结算收益(橙色)
+- 咨询类型分布:环形图 + 图例,展示图文/视频咨询次数和占比,以及进行中/已完成拆分
+- 月度趋势:折线图,展示当月每日咨询量,今日数据点高亮蓝色,点击数据点弹出详情悬浮卡
+
+**交互说明:**
+- 点击"‹ / ›"翻月按钮:切换统计月份
+- 点击折线图数据点:在数据点上方弹出悬浮卡,展示当日图文/视频咨询分类数据,点击悬浮卡以外区域:关闭悬浮卡
+- 返回按钮:跳转到个人中心
+
+---
+
+### 15. 全部评价(profile/reviews.html)
+
+
+
+**功能说明:** 展示员工对专家的历史评价列表,含综合评分汇总。
+
+**业务规则:**
+- 固定头部展示综合评分:大字显示分值(如 4.9)、星级、评价总数
+- 右侧星级分布条形图展示 1–5 星各占比
+- 评价列表每条含:员工头像(部分匿名)、姓名、评价时间、星级、评价正文
+
+**交互说明:**
+- 返回按钮:跳转到咨询统计页
+
+---
+
+### 16. 排班设置(profile/schedule.html)
+
+
+
+**功能说明:** 专家自主设置每周固定排班计划,按星期配置各时段的开诊状态和接诊人数上限。
+
+**业务规则:**
+- 顶部"开启视频咨询"总开关,控制是否接受视频咨询预约,开启时显示绿色状态文案
+- 每周排班以卡片列表展示(周一~周日),每天一个可折叠卡片
+- 卡片折叠状态显示:星期名称 + 开诊时段数摘要(如"4个时段开诊"或"休息")
+- 每天分 4 个时段:上午 8:00–10:00、上午 10:00–12:00、下午 14:00–16:00、下午 16:00–18:00
+- 每个时段独立设置:开诊开关 + 接诊人数(±调节,范围 1–20 人)
+- 关闭时段时人数显示"—"且不可编辑
+- 默认排班:周一~周五开诊(上午5人、下午4人),周六日休息
+- 默认展开周一卡片,其余折叠
+- 导航栏右侧"保存"按钮提交排班配置
+
+**交互说明:**
+- 点击视频咨询开关:切换开启/关闭状态,文案同步更新
+- 点击卡片头部:展开/折叠该天的时段设置
+- 点击时段开关:切换该时段开诊/关闭状态
+- 点击"−"按钮:人数减 1(最小为 1)
+- 点击"+"按钮:人数加 1(最大为 20)
+- 点击"保存":提交排班配置
+- 返回按钮:跳转到个人中心
+
+---
+
+### 17. 个人信息设置(profile/edit-profile.html)
+
+
**功能说明:** 专家编辑个人基本资料、擅长病种和个人简介。
**表单字段表:**
-| 字段名 | 类型 | 必填 | 规则 |
-|--------|------|------|------|
-| 头像 | 图片上传 | 否 | 点击相机角标更换 |
-| 姓名 | 文本输入 | 是 | - |
-| 所属医院 | 文本输入 | 是 | - |
-| 科室 | 文本输入 | 是 | - |
-| 职称 | 文本输入 | 是 | - |
-| 执业年限 | 文本输入 | 是 | - |
-| 擅长病种 | 多选标签 | 否 | 10个可选标签,点击切换选中 |
-| 个人简介 | 多行文本 | 否 | 最多200字 |
-| 个人擅长 | 多行文本 | 否 | 最多300字 |
+| 字段名 | 类型 | 必填 | 规则 |
+|--------|------------|------|----------------------|
+| 头像 | 图片上传 | 否 | 点击相机角标更换 ,支持拍照和图库 |
+| 姓名 | 文本输入 | 是 | — |
+| 所属医院 | 选择 | 是 | — |
+| 科室 | 选择 | 是 | — |
+| 职称 | 选择 | 是 | — |
+| 擅长疾病 | 标签选择(跳转子页) | 否 | 已选标签只读展示,点击跳转擅长疾病选择页 |
+| 个人简介 | 多行文本 | 否 | 最多 300 字 |
+| 职业经历 | 多行文本 | 否 | 最多 300 字 |
+
+**交互说明:**
+- 点击头像区相机角标:弹出底部弹窗,支持拍照和图库,进行更换头像
+- 点击"擅长疾病"区域:跳转到擅长疾病选择页
+- 点击导航栏"保存":提交编辑结果
+- 返回按钮:跳转到个人中心
---
-### 18. 修改密码(profile/change-pwd.html)
+### 18. 擅长疾病选择(profile/edit-diseases.html)
+
+
+
+**功能说明:** 专家从按科室分类的疾病标签库中多选擅长病种,保存后同步回个人信息设置页。
+
+**业务规则:**
+- 顶部蓝色提示条展示已选数量(实时更新)
+- 疾病按科室分类展示:心内科、内分泌科、神经内科、精神心理科、骨科/康复科等
+- 每个科室分类支持折叠 / 展开,默认第一个科室展开
+- 已选标签显示蓝色填充,未选标签显示灰色背景
+
+**交互说明:**
+- 点击科室分类标题:折叠 / 展开该科室疾病标签列表
+- 点击疾病标签:切换选中 / 未选中状态,顶部已选数量同步更新
+- 点击导航栏"保存":保存已选病种并返回个人信息设置页
+- 返回按钮:跳转到个人信息设置页
+
+---
+
+### 19. 修改密码(profile/change-pwd.html)
+
+
**功能说明:** 专家修改登录密码。
**表单字段表:**
-| 字段名 | 类型 | 必填 | 规则 |
-|--------|------|------|------|
-| 当前密码 | 密码输入 | 是 | - |
-| 新密码 | 密码输入 | 是 | 至少8位 |
+| 字段名 | 类型 | 必填 | 规则 |
+|--------|------|------|---------|
+| 当前密码 | 密码输入 | 是 | — |
+| 新密码 | 密码输入 | 是 | 按系统目前规则 |
| 确认新密码 | 密码输入 | 是 | 须与新密码一致 |
**交互说明:**
-- 点击"保存修改"弹出成功提示,确认后返回个人中心
+- 点击"保存修改":弹出"修改成功"提示弹窗
+- 弹窗点击"确定":跳转到个人中心
+- 返回按钮:跳转到个人中心
---
-### 19. 排班设置(profile/schedule.html)
+## 六、AI助手模块
-**功能说明:** 专家自主设置接诊日期和时段的接诊人数上限。
+### 20. AI 助手(../ai-assistant/index.html)
+
+
+
+**功能说明:** 后续规划,暂时显示”开发中,敬请期待~”。
+
+
+---
+## 七、消息模块
+### 21. 消息列表(../message/index.html)
+
+
+
+**功能说明:** 内部消息模块,与当前系统中”咨询专家”、”咨询小助手”、”操作人员”、”专业人员”、”驻场人员”、”健康管理员”进行对话聊天的消息列表。
**业务规则:**
-- 月历选择排班日期,已选日期显示蓝色圆形背景
-- 时段分上午(09:00-12:00)和下午(14:00-17:00)
-- 接诊人数支持加减调节,范围1-10人
+- 消息列表按最新消息时间倒序排列
+- 每条消息显示联系人头像、姓名、角色标签、最后一条消息预览、时间
**交互说明:**
-- 点击日期格子切换选中/未选中
-- 点击加减按钮调整接诊人数
-- 支持前后月份翻页
+- 点击消息项:跳转到 IM 聊天页
+- 点击右上角通讯录图标:跳转到通讯录页
+- 底部 Tab 导航切换到其他模块
---
-### 20. 咨询统计(profile/stats.html)
+### 22. 通讯录(../message/contacts.html)
-**功能说明:** 展示专家的多维度咨询数据统计。
+
-**业务规则:**
-- 数据概览:今日完成、本周完成、本月完成、累计完成
-- 本月咨询类型分布:图文/视频占比
-- 近7日完成量柱状图
-- 综合评分卡:评分、星级、评价数、1-5星分布
+**功能说明:** 展示系统内所有可联系的内部人员,支持按角色筛选和姓名搜索。
**交互说明:**
-- 点击"查看全部评价"跳转到全部评价页
+- 点击联系人:跳转到 IM 聊天页
+- 输入名称进行模糊搜索
+- 角色分类可收起展开
+- 返回按钮:跳转到消息列表
---
-### 21. 全部评价(profile/reviews.html)
+### 23. IM 聊天(../message/im-chat.html)
-**功能说明:** 展示员工对专家的历史评价列表。
+
-**业务规则:**
-- 顶部统计:评价总数、综合评分
-- 评价卡片含:员工头像(脱敏)、姓名、咨询类型标签、时间、星级、评价正文
+**功能说明:** 与内部人员的即时通讯聊天界面。
**交互说明:**
-- 返回按钮跳转到咨询统计页
+- 底部输入框输入文字并发送
+- 支持语音和输入切换
+- 支持拍照和发送图库照片
+- 返回按钮:跳转到消息列表
+
+---
+## 八、咨询详情共用模块
+### 24. 咨询人健康档案(../assistant/workbench/employee-profile.html)
+
+
+
+**功能说明:** 展示咨询人的完整健康档案和本次咨询档案,由专家端和小助手端共用。专家端通过图文聊天、各类咨询详情页的"咨询人健康档案"入口跳转至此页面。
+
+**业务规则:**
+- 基本信息区展示:姓名、与本人关系、性别、年龄、身高、体重
+- 生活习惯区以标签展示:吸烟、饮酒、饮食、睡眠
+- 身体情况区展示:过敏史、遗传史、既往史、其他疾病(红色高亮)
+- 本次咨询档案区展示:问题描述、持续时间标签、检查资料图片、就诊经历(医院/科室/疾病名称)、期望帮助
diff --git a/emergency-app/expert/doc/screenshot.mjs b/emergency-app/expert/doc/screenshot.mjs
new file mode 100644
index 0000000..30c4e48
--- /dev/null
+++ b/emergency-app/expert/doc/screenshot.mjs
@@ -0,0 +1,101 @@
+/**
+ * 专家端 APP 页面截图脚本
+ * 按规范:移除 phone-shell 高度限制、视口 390px、JPEG 85%
+ */
+import { chromium } from 'playwright';
+import { fileURLToPath } from 'url';
+import path from 'path';
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+const screenshotsDir = path.join(__dirname, 'screenshots');
+
+// 专家端所有页面
+const pages = [
+ // 工作台
+ { file: '../../expert/workbench/index.html', name: 'index' },
+ { file: '../../expert/workbench/text-chat.html', name: 'text-chat' },
+ { file: '../../expert/workbench/text-chat-done.html', name: 'text-chat-done' },
+ { file: '../../expert/workbench/text-consult-done.html', name: 'text-consult-done' },
+ { file: '../../expert/workbench/text-consult-timeout.html', name: 'text-consult-timeout' },
+ { file: '../../expert/workbench/video-appt.html', name: 'video-appt' },
+ { file: '../../expert/workbench/video-ongoing.html', name: 'video-ongoing' },
+ { file: '../../expert/workbench/video-done.html', name: 'video-done' },
+ { file: '../../expert/workbench/video-cancelled.html', name: 'video-cancelled' },
+ { file: '../../expert/workbench/video-rejected.html', name: 'video-rejected' },
+ // 知识库
+ { file: '../../expert/knowledge/index.html', name: 'knowledge-index' },
+ { file: '../../expert/knowledge/detail.html', name: 'knowledge-detail' },
+ // 个人中心
+ { file: '../../expert/profile/index.html', name: 'profile-index' },
+ { file: '../../expert/profile/edit-profile.html', name: 'edit-profile' },
+ { file: '../../expert/profile/edit-diseases.html', name: 'edit-diseases' },
+ { file: '../../expert/profile/schedule.html', name: 'schedule' },
+ { file: '../../expert/profile/stats.html', name: 'stats' },
+ { file: '../../expert/profile/reviews.html', name: 'reviews' },
+ { file: '../../expert/profile/change-pwd.html', name: 'change-pwd' },
+ // 共享模块
+ { file: '../../ai-assistant/index.html', name: 'ai-assistant' },
+ { file: '../../message/index.html', name: 'message-index' },
+ { file: '../../message/contacts.html', name: 'message-contacts' },
+ { file: '../../message/im-chat.html', name: 'message-im-chat' },
+];
+
+(async () => {
+ const browser = await chromium.launch({
+ executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
+ args: ['--no-sandbox', '--disable-setuid-sandbox'],
+ });
+ const context = await browser.newContext({ viewport: { width: 390, height: 844 } });
+
+ for (const p of pages) {
+ const page = await context.newPage();
+ const filePath = path.resolve(__dirname, p.file);
+ await page.goto(`file:///${filePath.replace(/\\/g, '/')}`, { waitUntil: 'networkidle' });
+
+ // 移除 phone-shell 高度限制、圆角、阴影;展开内容
+ await page.evaluate(() => {
+ const shell = document.querySelector('.phone-shell');
+ if (shell) {
+ shell.style.height = 'auto';
+ shell.style.borderRadius = '0';
+ shell.style.boxShadow = 'none';
+ shell.style.overflow = 'visible';
+ }
+ const content = document.querySelector('.page-content') || document.querySelector('.scroll-content');
+ if (content) {
+ content.style.overflow = 'visible';
+ content.style.maxHeight = 'none';
+ content.style.height = 'auto';
+ content.style.flex = 'none';
+ }
+ document.body.style.padding = '0';
+ document.body.style.minHeight = 'auto';
+ document.body.style.background = '#fff';
+ });
+
+ // 等待渲染
+ await page.waitForTimeout(300);
+
+ // 获取 phone-shell 实际高度,调整视口
+ const height = await page.evaluate(() => {
+ const shell = document.querySelector('.phone-shell');
+ return shell ? shell.scrollHeight : document.body.scrollHeight;
+ });
+ await page.setViewportSize({ width: 390, height: Math.max(height, 200) });
+
+ // 截取 phone-shell 元素
+ const shell = await page.$('.phone-shell');
+ const target = shell || page;
+ await target.screenshot({
+ path: path.join(screenshotsDir, `${p.name}.jpg`),
+ type: 'jpeg',
+ quality: 85,
+ });
+
+ console.log(`✓ ${p.name}.jpg`);
+ await page.close();
+ }
+
+ await browser.close();
+ console.log(`\n完成!共截取 ${pages.length} 张截图`);
+})();
diff --git a/emergency-app/expert/doc/screenshots/ai-assistant.jpg b/emergency-app/expert/doc/screenshots/ai-assistant.jpg
new file mode 100644
index 0000000..2788d31
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/ai-assistant.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/change-pwd.jpg b/emergency-app/expert/doc/screenshots/change-pwd.jpg
new file mode 100644
index 0000000..7f70b2a
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/change-pwd.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/edit-diseases.jpg b/emergency-app/expert/doc/screenshots/edit-diseases.jpg
new file mode 100644
index 0000000..ef48780
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/edit-diseases.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/edit-profile.jpg b/emergency-app/expert/doc/screenshots/edit-profile.jpg
new file mode 100644
index 0000000..49b9913
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/edit-profile.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/employee-profile.jpg b/emergency-app/expert/doc/screenshots/employee-profile.jpg
new file mode 100644
index 0000000..0e31635
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/employee-profile.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/index.jpg b/emergency-app/expert/doc/screenshots/index.jpg
new file mode 100644
index 0000000..d4ff5ed
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/index.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/knowledge-detail.jpg b/emergency-app/expert/doc/screenshots/knowledge-detail.jpg
new file mode 100644
index 0000000..3a5b22c
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/knowledge-detail.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/knowledge-index.jpg b/emergency-app/expert/doc/screenshots/knowledge-index.jpg
new file mode 100644
index 0000000..6908e4e
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/knowledge-index.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/message-contacts.jpg b/emergency-app/expert/doc/screenshots/message-contacts.jpg
new file mode 100644
index 0000000..0359cd0
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/message-contacts.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/message-im-chat.jpg b/emergency-app/expert/doc/screenshots/message-im-chat.jpg
new file mode 100644
index 0000000..912b0ee
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/message-im-chat.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/message-index.jpg b/emergency-app/expert/doc/screenshots/message-index.jpg
new file mode 100644
index 0000000..7362017
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/message-index.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/profile-index.jpg b/emergency-app/expert/doc/screenshots/profile-index.jpg
new file mode 100644
index 0000000..ac2c2af
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/profile-index.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/reviews.jpg b/emergency-app/expert/doc/screenshots/reviews.jpg
new file mode 100644
index 0000000..76a4fc3
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/reviews.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/schedule.jpg b/emergency-app/expert/doc/screenshots/schedule.jpg
new file mode 100644
index 0000000..da7c3b2
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/schedule.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/stats.jpg b/emergency-app/expert/doc/screenshots/stats.jpg
new file mode 100644
index 0000000..e434e37
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/stats.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/text-chat-done.jpg b/emergency-app/expert/doc/screenshots/text-chat-done.jpg
new file mode 100644
index 0000000..163462e
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/text-chat-done.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/text-chat.jpg b/emergency-app/expert/doc/screenshots/text-chat.jpg
new file mode 100644
index 0000000..bfb72e8
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/text-chat.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/text-consult-done.jpg b/emergency-app/expert/doc/screenshots/text-consult-done.jpg
new file mode 100644
index 0000000..55048ae
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/text-consult-done.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/text-consult-timeout.jpg b/emergency-app/expert/doc/screenshots/text-consult-timeout.jpg
new file mode 100644
index 0000000..5d340f8
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/text-consult-timeout.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/video-appt.jpg b/emergency-app/expert/doc/screenshots/video-appt.jpg
new file mode 100644
index 0000000..ec02f9a
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/video-appt.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/video-call.jpg b/emergency-app/expert/doc/screenshots/video-call.jpg
new file mode 100644
index 0000000..b9bcdc9
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/video-call.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/video-cancelled.jpg b/emergency-app/expert/doc/screenshots/video-cancelled.jpg
new file mode 100644
index 0000000..26d1db2
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/video-cancelled.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/video-done.jpg b/emergency-app/expert/doc/screenshots/video-done.jpg
new file mode 100644
index 0000000..4024574
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/video-done.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/video-ongoing.jpg b/emergency-app/expert/doc/screenshots/video-ongoing.jpg
new file mode 100644
index 0000000..2ff7da4
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/video-ongoing.jpg differ
diff --git a/emergency-app/expert/doc/screenshots/video-rejected.jpg b/emergency-app/expert/doc/screenshots/video-rejected.jpg
new file mode 100644
index 0000000..f874af1
Binary files /dev/null and b/emergency-app/expert/doc/screenshots/video-rejected.jpg differ
diff --git a/emergency-app/expert/knowledge/index.html b/emergency-app/expert/knowledge/index.html
index beb36ae..72259cf 100644
--- a/emergency-app/expert/knowledge/index.html
+++ b/emergency-app/expert/knowledge/index.html
@@ -31,6 +31,27 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
.tab-item .tab-label { font-size: 10px; color: #999; font-weight: 500; }
.tab-item.active .tab-label { color: #1677ff; }
.tab-badge { position: absolute; top: 2px; right: 18px; background: #ff4d4f; color: #fff; font-size: 10px; font-weight: 700; min-width: 16px; height: 16px; border-radius: 8px; display: flex; align-items: center; justify-content: center; padding: 0 4px; }
+ /* ========== 子分类Tab ========== */
+ .sub-tabs { display: flex; gap: 8px; padding: 10px 16px; background: #fff; flex-shrink: 0; }
+ .sub-tab {
+ font-size: 12px; padding: 4px 14px; border-radius: 16px;
+ background: #f5f5f5; color: #666; cursor: pointer; transition: all 0.2s;
+ }
+ .sub-tab.active { background: #e6f4ff; color: #1677ff; font-weight: 600; }
+
+ /* ========== PDF文档条目 ========== */
+ .pdf-item {
+ background: #fff; border-radius: 10px; padding: 12px 14px;
+ display: flex; align-items: center; gap: 10px;
+ box-shadow: 0 1px 4px rgba(0,0,0,0.06); margin-bottom: 10px; cursor: pointer;
+ }
+ .pdf-item__icon {
+ width: 44px; height: 44px; border-radius: 10px; background: #fff1f0;
+ display: flex; align-items: center; justify-content: center; flex-shrink: 0;
+ }
+ .pdf-item__info { flex: 1; }
+ .pdf-item__name { font-size: 14px; font-weight: 600; color: #1a1a1a; }
+ .pdf-item__meta { font-size: 12px; color: #999; margin-top: 3px; display: flex; gap: 8px; }
@@ -48,14 +69,22 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
知识库
-
-
-
体检知识
-
药品知识
-
疾病知识
-
保健知识
+
+
+
+
+
+
+
体检知识
+
药品知识
+
疾病知识
+
保健知识
+
+
@@ -146,6 +175,54 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
+
+
+
+
+
+
+
+
+
员工健康管理办法(2026版)
+
PDF · 2.3MB2026-01-15
+
+
+
+
+
+
+
职业病防治管理规定
+
PDF · 1.8MB2025-12-20
+
+
+
+
+
+
+
体检异常结果处置流程
+
PDF · 0.9MB2025-11-08
+
+
+
+
+
+
+
健康咨询服务管理细则
+
PDF · 1.5MB2025-10-22
+
+
+
+
+
+
+
应急救护操作规范
+
PDF · 3.1MB2025-09-15
+
+
+
+
+
+
@@ -178,19 +255,31 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
/* 标记当前角色为专家 */
sessionStorage.setItem('appRole', 'expert');
+/**
+ * 切换一级Tab(知识文章 / 规章制度)
+ */
+function switchTopTab(el, panelId) {
+ el.closest('.seg-tabs').querySelectorAll('.seg-tab').forEach(function(t) {
+ t.classList.remove('active');
+ });
+ el.classList.add('active');
+ var displayMap = { 'panel-article': 'flex', 'panel-rule': 'block' };
+ ['panel-article', 'panel-rule'].forEach(function(id) {
+ var p = document.getElementById(id);
+ if (p) p.style.display = id === panelId ? displayMap[id] : 'none';
+ });
+}
+
/**
* 切换知识库分类Tab
* @param {HTMLElement} el - 被点击的Tab元素
* @param {string} panelId - 对应面板的ID
*/
function switchKbTab(el, panelId) {
- // 移除所有Tab的选中状态
- el.closest('.seg-tabs').querySelectorAll('.seg-tab').forEach(function(t) {
+ el.closest('.sub-tabs').querySelectorAll('.sub-tab').forEach(function(t) {
t.classList.remove('active');
});
- // 设置当前Tab为选中
el.classList.add('active');
- // 切换面板显示
['kb-exam', 'kb-drug', 'kb-disease', 'kb-health'].forEach(function(id) {
var p = document.getElementById(id);
if (p) p.style.display = id === panelId ? 'block' : 'none';
diff --git a/emergency-app/expert/profile/change-pwd.html b/emergency-app/expert/profile/change-pwd.html
index 5c7c293..11e9628 100644
--- a/emergency-app/expert/profile/change-pwd.html
+++ b/emergency-app/expert/profile/change-pwd.html
@@ -59,7 +59,7 @@
新密码
-
+
diff --git a/emergency-app/expert/profile/edit-diseases.html b/emergency-app/expert/profile/edit-diseases.html
new file mode 100644
index 0000000..660ba7c
--- /dev/null
+++ b/emergency-app/expert/profile/edit-diseases.html
@@ -0,0 +1,206 @@
+
+
+
+
+
+
擅长疾病 - 个人信息设置 | 健康长庆原型
+
+
+
+
+
+
+
+
+
+
+
+
+
擅长疾病
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/emergency-app/expert/profile/edit-profile.html b/emergency-app/expert/profile/edit-profile.html
index d7b20fa..6be8cc3 100644
--- a/emergency-app/expert/profile/edit-profile.html
+++ b/emergency-app/expert/profile/edit-profile.html
@@ -70,43 +70,34 @@
职称
-
- 执业年限
-
-
+
-
-
擅长病种
-
-
点击选择/取消(可多选)
-
diff --git a/emergency-app/expert/profile/index.html b/emergency-app/expert/profile/index.html
index 22c77a7..7825fcd 100644
--- a/emergency-app/expert/profile/index.html
+++ b/emergency-app/expert/profile/index.html
@@ -56,7 +56,7 @@
@@ -71,6 +71,12 @@
今日 18 次
+
+
📅排班设置
@@ -112,6 +118,18 @@
+
+
+
+
关闭咨询
+
是否要关闭咨询?关闭咨询后,员工无法发起咨询。
+
+
+
+
+
+
+
@@ -152,19 +170,31 @@
let isPaused = false;
/**
- * 切换服务状态(服务中/暂停服务)
+ * 点击按钮时弹窗确认
*/
function togglePause() {
+ var title = isPaused ? '开启咨询' : '关闭咨询';
+ var body = isPaused ? '是否要开启咨询?开启咨询后,员工可发起咨询。' : '是否要关闭咨询?关闭咨询后,员工无法发起咨询。';
+ document.getElementById('pause-modal-title').textContent = title;
+ document.getElementById('pause-modal-body').textContent = body;
+ openModal('modal-pause');
+ }
+
+ /**
+ * 确认切换服务状态
+ */
+ function confirmTogglePause() {
isPaused = !isPaused;
- const bg = isPaused ? '#ff4d4f' : '#52c41a';
- const text = isPaused ? '暂停服务' : '服务中';
- const mineBtn = document.getElementById('pause-btn-mine');
+ var bg = isPaused ? '#ff4d4f' : '#52c41a';
+ var text = isPaused ? '咨询已关闭' : '咨询已开启';
+ var mineBtn = document.getElementById('pause-btn-mine');
if (mineBtn) {
- const dot = mineBtn.querySelector('span');
+ var dot = mineBtn.querySelector('span');
if (dot) dot.style.background = bg;
- /* 更新按钮文字 */
- mineBtn.childNodes.forEach(function(n) { if (n.nodeType === 3) n.textContent = text; });
+ var pauseText = document.getElementById('pause-text');
+ if (pauseText) pauseText.textContent = text;
}
+ closeModal('modal-pause');
}
/**
diff --git a/emergency-app/expert/profile/reviews.html b/emergency-app/expert/profile/reviews.html
index e57974f..d8e48f6 100644
--- a/emergency-app/expert/profile/reviews.html
+++ b/emergency-app/expert/profile/reviews.html
@@ -40,10 +40,43 @@
全部评价
-
-
-
共 1,248 条评价
-
⭐ 综合 4.9
+
+
+
综合评分
+
+
+
4.9
+
⭐⭐⭐⭐⭐
+
1,248次评价
+
+
+
@@ -53,8 +86,8 @@
@@ -67,8 +100,8 @@
@@ -81,8 +114,8 @@
@@ -95,8 +128,8 @@
diff --git a/emergency-app/expert/profile/schedule.html b/emergency-app/expert/profile/schedule.html
index f52d9c5..a0d277d 100644
--- a/emergency-app/expert/profile/schedule.html
+++ b/emergency-app/expert/profile/schedule.html
@@ -5,7 +5,6 @@
个人中心 - 排班设置 | 健康长庆原型
-
-
-
-
-
-
-
-
-
-
-
-
-
日
-
一
-
二
-
三
-
四
-
五
-
六
-
-
-
1
-
2
-
3
-
4
-
5
-
6
-
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
+
+
+
+
开启视频咨询
+
+
已开启 — 患者可预约视频咨询
-
-
-
-
时段设置(每日)
-
-
-
-
上午 09:00 – 12:00
-
每时段接诊人数
-
-
- −
- 3
- +
-
-
-
-
-
-
下午 14:00 – 17:00
-
每时段接诊人数
-
-
- −
- 3
- +
-
-
+
+
+
+ 每周排班设置
+
+
+
-
-