上传文件至 md/需求

This commit is contained in:
2026-02-06 16:07:22 +08:00
parent f9d897c081
commit 8d45cfe9db

View File

@@ -0,0 +1,434 @@
## 报卡管理界面PRD文档
### 一、页面概述
**页面名称**:报卡管理界面
**页面目标**:提供传染病报卡的审核、管理、筛选及批量操作功能,帮助疾控人员高效完成报卡审核工作
**适用场景**:疾控中心工作人员日常审核医疗机构上报的传染病病例
- 医院CDC管理员日常审核传染病报卡
- 批量处理待审核/退回的报卡
- 按条件筛选统计报卡数据
**页面类型**:数据管理列表页(含详情抽屉)
**核心功能**
1. 报卡数据概览统计(今日待审/本月失败/本月成功/本月上报)
2. 多维度筛选报卡数据(时间/状态/科室/来源等)
3. 报卡列表展示与批量操作(审核/退回/导出)
4. 报卡详情查看与单条审核
5. 审核记录追溯与意见填写
**用户价值**
- 疾控人员可快速处理待审报卡
- 支持批量审核提升工作效率
- 完整记录审核过程便于追溯
- 多维度筛选快速定位目标报卡
**原型图地址**https://static.pm-ai.cn/prototype/20260206/cc9991b716df0303fa3459042e33a1ea/index.html
**流程图**
```mermaid
flowchart TD
A["进入报卡管理界面"] --> B["查看报卡概览统计"]
B --> C["点击统计卡片"]
C --> D["悬停统计卡片"]
D --> E["自动设置筛选项"]
B --> F["鼠标悬停"]
F --> G["筛选报卡数据"]
G --> H["卡片上浮+阴影"]
E --> I["设置筛选条件"]
I --> K["点击重置按钮"]
K --> J["清空条件"]
I --> L["点击查询按钮"]
L --> M["触发筛选"]
M --> N["操作报卡列表"]
N --> O["勾选报卡"]
N --> P["处理单条报卡"]
O --> Q["批量操作报卡"]
P --> R["点击单条审核"]
P --> S["点击单条查看"]
Q --> T["点击批量审核"]
Q --> U["点击批量退回"]
R --> V{"报卡状态"}
S --> W{"报卡状态"}
V -- 已审核 --> X["打开查看抽屉"]
V -- 待审核/失败 --> Y["校验选择状态"]
W -- 任意 --> X
T --> Z["校验选择状态"]
U --> AA["校验选择状态"]
Y -- 选择有效 --> AB["打开审核抽屉"]
AB-->AN["展示审核记录"]
AB-->AO["展示审核记录"]
Y -- 未选择 --> AC["提示请选择报卡"]
Z -- 选择有效 --> AD{"包含已审核项"}
Z -- 未选择 --> AE["提示请选择报卡"]
AD -- 是 --> AF["提示只能选择待审核报卡"]
AD -- 否 --> AG["弹出审核弹窗"]
AA -- 选择有效 --> AH{"包含已审核项"}
AA -- 未选择 --> AI["提示请选择报卡"]
AH -- 是 --> AF
AH -- 否 --> AJ["弹出退回弹窗"]
AG --> AK["加载报卡详情"]
AJ --> AL["加载报卡详情"]
AK -- 加载失败 --> AM["提示数据加载失败"]
AL -- 加载失败 --> AM
AK -- 成功 --> AN["展示审核记录"]
AL -- 成功 --> AO["展示审核记录"]
AN --> AP["填写审核意见"]
AO --> AQ["填写退回原因"]
AP --> AR{"意见是否为空"}
AQ --> AS{"原因是否为空"}
AR -- 是 --> AT["红字提示必填"]
AS -- 是 --> AU["红字提示必填"]
AR -- 否 --> AV["点击确认审核"]
AS -- 否 --> AW["点击确认退回"]
AV --> AX["点击审核通过"]
AW --> AY["点击退回修改"]
AX --> AZ["更新报卡状态"]
AY --> BA["更新报卡状态"]
AZ --> BB["生成审核记录"]
BA --> BC["生成审核记录"]
BB --> BD["按钮置灰"]
BC --> BD["按钮置灰"]
AX --> BE["提示操作失败,请检查网络"]
AY --> BE
AZ --> BF["刷新表格数据"]
BA --> BF
BF --> BG["刷新行状态"]
BG --> BH["结束"]
BE --> BH
```
### 二、整体布局分析
**页面宽度**:自适应布局
**主要区域划分**
1. **顶部导航栏**固定高度60px
2. **报卡管理概览区**(统计卡片+快捷操作,高度自适应)
3. **筛选控制区**(多条件组合筛选,折叠式布局)
4. **报卡列表区**表格展示占主体60%高度)
**布局特点**:上下层级结构,筛选区支持折叠/展开
5. **抽屉详情区**
### 三、页面区域详细描述
#### 1. 顶部导航栏
**区域位置**:页面顶部固定
**区域尺寸**高度60px100%宽度
**区域功能**:展示系统标识和用户信息
**包含元素**
- **系统Logo**
- - 元素类型:图标+文字组合
- 显示内容:"CDC"图标+"报卡管理"文字
- 样式特征:蓝色主色调(#4a6fa5),左侧对齐
#### 2. 报卡管理概览
**区域位置**:导航栏下方
**区域尺寸**100%宽度,自适应高度
**区域功能**:关键数据统计与快速操作入口
**包含元素**
- **统计卡片组**4个
- - 展示方式网格布局4列
- 数据字段:
| **字段名** | **类型** | **示例值** | **可操作** | **计算逻辑** |
| ------------ | -------- | ---------- | ---------- | ------------------------- |
| 今日待审核 | 数字 | 12 | 可点击 | 当天created_at+待审状态 |
| 本月审核失败 | 数字 | 3 | 可点击 | 当月created_at+失败状态 |
| 本月审核成功 | 数字 | 2 | 可点击 | 当月created_at+成功状态 |
| 本月已上报 | 数字 | 156 | 可点击 | 当月created_at+已上报状态 |
o 交互行为:
- - - 悬停卡片上浮5px+阴影加深
- 点击:自动设置对应筛选项
- 样式特征:左侧状态色条(蓝/橙/红/绿)
#### 3. 筛选控制区
**区域功能**:多维度组合筛选报卡数据
**区域尺寸**100%宽度,高度自适应(展开状态)
**包含元素**
- **筛选条件组**(横向排列→移动端垂直堆叠)
- - 登记来源(下拉单选):全部/门诊/住院/急诊/体检
- 上报时间范围(双日期选择器)--默认值:最近一个月
- 患者姓名(文本输入)
- 审核状态(下拉单选):全部/待审核/审核通过/审核失败/已上报
- 上报科室(树形下拉多选)--全部科室/取值于《科室管理》adm_organization表
- **操作按钮**
- - “查询”(主按钮,触发筛选)
- “重置”(次要按钮,清空条件)
#### 4. 报卡列表区
**区域功能**:展示报卡数据及操作入口
**包含元素**
- **表格头部**
- - 全选复选框(联动所有行选择状态)
- 列标题:报卡名称/病种名称/患者信息等11列
- **快捷操作按钮组**
- - 包含按钮:
- - “批量审核”蓝色按钮,(需选择条目)点击弹出填写审核备注弹窗
- “批量退回修改”橙色警示按钮,(需选择条目)点击弹出退回原因填写弹窗
- “导出当前”(按筛选条件)
- **表格行**
- - 数据字段:
取值于传染病报卡表infectious_card
| **列名** | **数据类型** | **示例值** | **说明** |
| -------- | ------------ | ---------------- | --------------- |
| 选择框 | boolean | - | 带全选功能 |
| 报卡名称 | string | 传染病报告卡 | - |
| 病种名称 | string | 病毒性肝炎 | - |
| 报卡编号 | string | HOSP202601150001 | 唯一标识 |
| 患者姓名 | string | 张某某 | 脱敏显示 |
| 性别 | enum | 男 | 男/女/未知 |
| 年龄 | number | 32 | - |
| 上报科室 | string | 儿科 | - |
| 登记来源 | string | 门诊 | - |
| 上报时间 | datetime | 2026-01-31 09:23 | - |
| 状态 | badge | 待审核 | 待审核<->已提交 |
| 操作 | button | 审核/查看 | 根据状态禁用 |
- - 行操作按钮:
- - “审核”(主按钮,打开可编辑抽屉)
- “查看”(次要按钮,打开只读抽屉)
- 交互规则:
- - 已审核通过的报卡禁用"审核"按钮
- 行hover时显示浅蓝色背景
- 分页功能:
- - 实现分页功能可以设置每页5/10/20条
#### 5. 抽屉详情区
**区域位置**:右侧滑出
**区域尺寸**:自适应布局
**包含元素**
· **报卡表单(****根据具体报卡登记的界面内容比如《中华人民共和国传染病报告卡》内容和功能与需求编号102界面保持一致建议用同一个界面**
- - 字段分组:
- 1. 患者基本信息(姓名、身份证等)
2. 临床信息(发病日期、诊断分类等)
3. 疾病选择(甲/乙/丙类传染病复选框)
4. 上报信息(报告单位、医生等)
· **审核记录**
- - 展示方式:时间轴列表
- 数据字段:时间、操作人、操作类型、意见
· **操作按钮组**
- - 主按钮:审核通过(绿色)
- 次按钮:退回修改(橙色)
### 四、交互功能详细说明
#### 1. 批量审核流程
**触发条件**:勾选多行后点击"批量审核"
**操作流程**
1. 系统校验至少选择1条非"已通过"状态的报卡
2. 弹出审核弹窗500px居中模态框
3. 填写审核意见(必填)
4. 点击"确认审核"
5. 批量更新状态为"审核通过",(自动批量写入每一条审核记录(插入infectious_audit 字段详表②、更改表infectious_card. Statu= 2和infectious_card. update_time= now()
6. 刷新表格数据
7. - 成功:更新状态为"审核通过",添加审核记录
- 失败:提示"审核失败,请检查网络"
- 包含已审核项:提示"只能选择待审核报卡"
- 未填写意见:阻止提交并红字提示
#### 2. 批量退回修改操作
**触发方式**:勾选多选框后点击"批量退回"
**前置校验**
- 至少勾选一条非"已审核"状态报卡
- 选中已审核报卡时提示"只能操作待审核报卡"
**执行流程**
1. 弹出模态框要求填写退回原因(必填)填写退回原因:阻止提交并红字提示
2. 提交后批量更新选中报卡状态
3. 每条生成审核记录①、插入infectious_audit 字段详表②、更改表infectious_card. Statu=5和infectious_card. update_time= now()
#### 3.单卡审核流程
**触发方式**:点击操作列"审核"按钮
**状态控制**
- 待审核/审核失败:可操作
- 审核通过:按钮禁用
**执行流程**
1. 右侧滑出审核抽屉
2. 从行数据获取报卡ID自动填充患者报卡信息异步加载报卡详情数据
3. 展示历史审核记录(如有)
4. 填写审核意见/退回原因
5. 点击"审核通过"或"退回修改"
6. 更新表格行状态生成审核记录①、插入infectious_audit 字段详表②、更改表infectious_card. Statu=2/5和infectious_card. update_time= now()
**异常处理**
· 数据加载失败:提示"数据加载失败,请重试"
**·** 重复提交:按钮置灰防止重复点击
**状态变化**
- 审核通过:表格行变绿色,按钮禁用,状态变成“审核通过”
- 退回修改:表格行变橙色,生成退回记录,状态变成“审核失败”审核失败<->退回
**数据校验**
- 必填字段红框提示
- 身份证号格式校验
- 日期逻辑校验(发病日期≤诊断日期)
#### 4. 筛选查询功能
**触发方式**:点击"查询"按钮
**查询逻辑**
- 登记来源:精确匹配
- 患者姓名:模糊匹配
- 时间范围:闭区间查询
- 状态筛选:精确匹配
- 上报科室:多选
**性能优化**
- 500ms防抖处理
- 分页加载可以设置每页5/10/20条实现分页功能
#### 5. 报卡详情查看
**触发条件**:点击行"查看"按钮
**抽屉内容**
- 只读表单(包含所有报卡字段)
- 审核记录时间轴(倒序展示)
- 关闭按钮(右上角×图标)
**数据加载**根据行数据获取报卡ID自动填充患者报卡信息异步加载报卡详情数据
#### 6. 筛选联动逻辑
| **操作** | **系统响应** |
| ---------------------- | ------------------------------------------ |
| 点击"今日待审核"统计卡 | 自动设置: - 时间=当天 - 状态=待审核 |
| 本月审核失败 | 自动设置: - 时间=本月 - 状态=审核失败 |
| 本月审核成功 | 自动设置: - 时间=本月 - 状态=审核成功 |
| 本月已上报 | 自动设置: - 时间=本月 - 状态=已上报 |
### 五、数据结构说明
**关键数据表**
```
infectious_card 与报卡审核记录表infectious_audit采用 一对多 关联:
① 、一张报卡可经历多次审核(初审、复审、退回、重审等)。
② 、关联键infectious_card.card_no → infectious_audit.card_idFK
*infectious_card. Statu增加状态5退回=审核失败(当批量退回修改/退回修改时更改表infectious_card. Statu=5 and infectious_card. update_time= now()
*infectious_audit 字段详表
```
| **字段名** | **中文名称** | **取值说明** | **类型****(PG)** | **约束** |
| ----------------- | ------------ | ------------------------------------------------------------ | ---------------- | ---------------------------------------- |
| audit_id | 审核记录ID | 主键,自增 | BIGINT | PRIMARY KEY |
| card_id | 报卡ID | 关联infectious_card.card_no | BIGINT | NOT NULL, FK |
| audit_seq | 审核序号 | 第几次审核从1开始 | SMALLINT | NOT NULL, ≥1 |
| audit_type | 审核类型 | 1批量审核/2单审核通过/3批量退回修改/4单退回修改 /5其他 | CHAR(1) | NOT NULL, IN('1','2','3','4','5') |
| audit_status_from | 审核前状态 | 同infectious_card.status(0暂存/1已提交=待审核/2已审核=审核通过/3已上报/4失败/5退回=审核失败) | CHAR(1) | NOT NULL, IN('0','1','2','3','4','5') |
| audit_status_to | 审核后状态 | 同上,审核后的新状态 | CHAR(1) | NOT NULL, IN('0','1','2','3','4') |
| audit_time | 审核时间 | 精确到秒,当前时间戳 | TIMESTAMP | NOT NULL, DEFAULT now() |
| auditor_id | 审核人账号 | 登录账号 | VARCHAR(20) | NOT NULL |
| auditor_name | 审核人姓名 | 登录账号的姓名 | VARCHAR(50) | NOT NULL |
| audit_opinion | 审核意见 | 审核意见简述 | TEXT | |
| Reason_for_return | 退回原因 | 退回原因简述 | TEXT | |
| fail_reason_code | 失败原因码 | 字典001必填项/002逻辑错误/003网络超时等 | VARCHAR(20) | |
| fail_reason_desc | 失败详情 | 详细描述,可空 | TEXT | |
| is_batch | 是否批量 | 0单条审核/1批量审核 | BOOLEAN | NOT NULL, DEFAULT false |
| batch_size | 批量数量 | 批量时涉及报卡数 | INTEGER | NOT NULL, DEFAULT 1, ≥1 |
| created_time | 记录创建时间 | 自动生成 | TIMESTAMP | NOT NULL, DEFAULT now() |
| updated_time | 记录更新时间 | 自动更新 | TIMESTAMP | NOT NULL, DEFAULT now(), ON UPDATE now() |
```
```
### 六、开发实现要点
**样式规范**
- **主色调**`#4a6fa5`(导航栏/主按钮)
- **状态色**
- - 待审核:`rgba(74, 111, 165, 0.1)`
- 审核失败:`rgba(231, 76, 60, 0.1)`
- **字体**
- - 标题:`16px/1.5 #333`
- 表格内容:`14px/1.5 #666`
**注意事项**
- 审核记录需永久保存不可删除
### 七、补充说明
1. **日期格式**:统一使用`YYYY/MM/DD`(符合医疗系统惯例)
2. **地址组件**:四级联动(省→市→区→街道)
3. **职业选项**:使用国家标准职业分类
4. **病种名称**:严格遵循《传染病报告卡》规范用词