feat(签署记录): 新增签署记录查询页并复用签署任务接口
This commit is contained in:
+23
-3
@@ -84,7 +84,7 @@ TanStack Vue Query、PDF 预览、报表图表、自动化测试和签字板适
|
||||
|
||||
## 当前状态
|
||||
|
||||
已完成 Vite 基础初始化、路由、Pinia、原型主题 CSS、登录页、首页、签署工作台和文档库管理页面。角色权限与系统设置中的菜单设置已接入 MEDISIGN RBAC 接口;导航、路由和页面操作按授权资源树控制,角色数据范围在角色配置中维护,员工页面只负责绑定角色。组织架构页按机构→院区→科室分组展示员工列表,新增院区默认归属“新华院区”,支持节点筛选、员工维护和组织节点维护。系统参数卡片仍保留 Mock,真实签字板/线上签名回调和打印服务仍需设备或后端能力。
|
||||
已完成 Vite 基础初始化、路由、Pinia、原型主题 CSS、登录页、首页、签署工作台、签署记录查询和文档库管理页面。角色权限与系统设置中的菜单设置已接入 MEDISIGN RBAC 接口;导航、路由和页面操作按授权资源树控制,角色数据范围在角色配置中维护,员工页面只负责绑定角色。组织架构页按机构→院区→科室分组展示员工列表,新增院区默认归属“新华院区”,支持节点筛选、员工维护和组织节点维护。系统参数卡片仍保留 Mock,真实签字板/线上签名回调和打印服务仍需设备或后端能力。
|
||||
|
||||
文档库管理的真实模式已打通「模板 → 版本 → 正文」三段:
|
||||
|
||||
@@ -94,7 +94,9 @@ TanStack Vue Query、PDF 预览、报表图表、自动化测试和签字板适
|
||||
|
||||
签署工作台的真实模式同样依赖正文:`GET /api/v1/templates/available-versions` 只返回 `contentSha256`,签署端用这个哈希当缓存键去换回正文快照(同一哈希命中同一份正文,版本更新后哈希变化即自动失效),避免版本更新后仍按旧正文签署。取不到正文时任务详情如实提示并给出占位版式,不退化成「看起来像真文书」的假纸样。
|
||||
|
||||
自测与演示:显式开启 `VITE_MOCK_DOCUMENTS=true` 或 `VITE_MOCK_SIGNING=true` 时,文档库和签署任务的演示数据会镜像到 localStorage(见 `utils/mock-storage.ts`),刷新页面后仍可继续,不必每次重建文书、重发签署;文档库页头的「重置演示数据」可清空这些本地数据回到初始状态(该按钮只在演示模式下出现)。文档库缺省使用真实接口,签署工作台暂时缺省使用演示数据;持久化只针对演示数据,不涉及登录态与真实患者信息。本地建议在 `.env.development.local` 里显式写出开关,不要依赖缺省值。
|
||||
自测与演示:显式开启 `VITE_MOCK_DOCUMENTS=true` 或 `VITE_MOCK_SIGNING=true` 时,文档库和签署任务的演示数据会镜像到 localStorage(见 `utils/mock-storage.ts`),刷新页面后仍可继续,不必每次重建文书、重发签署;文档库页头的「重置演示数据」可清空这些本地数据回到初始状态(该按钮只在演示模式下出现)。文档库缺省使用真实接口,签署工作台与签署记录查询暂时缺省使用演示数据;持久化只针对演示数据,不涉及登录态与真实患者信息。本地建议在 `.env.development.local` 里显式写出开关,不要依赖缺省值。
|
||||
|
||||
签署记录查询的演示数据不走 localStorage:它按「距今天数」现场生成(见 `api/workbench/records.ts` 的 `MOCK_RECORD_SEEDS`),每次打开都落在今日/近 3 天/近 7 天/近 30 天这些窗口内,演示时筛选条件不会因为数据过期而全部落空。
|
||||
|
||||
## 当前路由结构
|
||||
|
||||
@@ -105,6 +107,7 @@ TanStack Vue Query、PDF 预览、报表图表、自动化测试和签字板适
|
||||
ClinicalLayout(实际导航和页面路由由授权菜单资源树提供)
|
||||
├─ /dashboard 首页
|
||||
├─ /sign/workbench 签署工作台
|
||||
├─ /sign/records 签署记录查询
|
||||
├─ /system/org 组织架构 / 员工角色绑定
|
||||
├─ /system/role 角色权限与数据范围
|
||||
├─ /doc/library 文档库管理
|
||||
@@ -119,6 +122,9 @@ ClinicalLayout(实际导航和页面路由由授权菜单资源树提供)
|
||||
跨页面复用的业务组件和 composable 不放在具体 View 目录中:
|
||||
|
||||
- `components/signing/NewSigningTaskDialog.vue`:新增签署任务公共弹窗,供签署工作台和文档库管理复用;
|
||||
- `components/signing/SigningDocumentInteractive.vue`:签署态文书的交互化渲染(填写项回显、签名图回填、勾选收集),签署工作台详情与签署记录详情共用;
|
||||
- `components/signing/SigningDocumentPreview.vue`:正文取不到时的占位版式,不冒充真文书;
|
||||
- `components/signing/TaskAuditTimeline.vue`:操作留痕时间线,签署工作台详情与签署记录详情共用;
|
||||
- `composables/useSigningTaskForm.ts`:封装患者定位、就诊选择、模板选择、签署方式、校验和任务提交状态;
|
||||
- `utils/signing-document.ts`:把文书定稿 HTML 变换为签署态 HTML 的渲染管线(占位符填充、签名域、勾选与行内选项识别),签署工作台的任务详情和文档库「签署预览」共用同一份实现;
|
||||
- `utils/signing-editor-marks.ts`:编辑区里把占位符与勾选框渲染成带类型角标的胶囊,只改渲染不改数据(见下「文书编写约定」)。
|
||||
@@ -218,10 +224,24 @@ API 模块与页面按业务域对应。工作台页面使用 `api/workbench`
|
||||
|
||||
首页真实模式已接入 GET /api/v1/workbench/overview;接口口径、字段映射和验收标准见 [docs/workbench-home-api.md](./docs/workbench-home-api.md)。
|
||||
|
||||
## 签署记录查询
|
||||
|
||||
`views/workbench/records` 是「工作台 → 签署记录查询」(`/sign/records`,菜单资源 `sign/record/index`)的实现:工作台只保留当天的签署操作,历史记录的检索、核对与导出统一放在这里。页面只读——已签署的正式文书不可直接修改,需要追加内容时回签署工作台新建签署任务。
|
||||
|
||||
**接口现状与边界**(后端还没有「按条件检索历史签署记录」的专用接口):
|
||||
|
||||
- 真实模式复用 `GET /api/v1/sign-tasks` 的筛选能力(见 `api/workbench/records.ts` 的 `toTaskQuery`),映射口径与签署工作台保持一致,不另造一套;
|
||||
- 因此**「文档类别」在真实模式下不可筛**,筛选条会禁用该字段并给出原因(title 提示),而不是让它静默失效——一个「选了不生效」的筛选项比没有这个筛选项更误导人;
|
||||
- 类别字段签署任务接口不返回,列表与详情都按空值展示,只有演示数据带类别;
|
||||
- 导出是前端按当前筛选条件取全量后生成 CSV(UTF-8 带 BOM、CRLF 换行,Excel 直接打开不乱码)。**后端提供导出任务后应改为服务端导出**:导出范围与导出人都要写进审计日志,这一步在浏览器里做不到;
|
||||
- 详情弹窗复用签署工作台的文书渲染与留痕组件(`components/signing/`),签署后 PDF 优先取服务端产物(`sign-artifacts` 里的 `SIGNED_PDF`);演示环境没有文件服务时,按页面上当前渲染结果现场生成一份。
|
||||
|
||||
演示数据缺省开启(`VITE_MOCK_SIGN_RECORDS`),且与签署工作台**分开开关**:两者共用一个开关会导致「关掉工作台的演示数据」把记录页一起带进空态。
|
||||
|
||||
API 请求和响应类型按业务域放在 `api/workbench/types.ts`、`api/management/types.ts`;页面展示和交互类型放在对应 View 目录的 `types.ts`;全局复用类型放在 `types/common.ts`。页面提交模型会在 API 边界转换为后端 DTO,不向后端发送患者快照、文档名称或明文手机号等页面字段。
|
||||
|
||||
开发环境默认使用 `/api` 作为同源接口前缀,Vite 会将 `/api` 转发到 `https://ipad.shenynet.com`,因此浏览器不会直接跨域请求后端。代理配置位于 `vite.config.ts`,不改写 `/api/v1/...` 路径。修改代理或环境变量后需要重启 Vite 开发服务。
|
||||
|
||||
生产环境不会使用 Vite 的开发代理,需要在 Nginx 或其他网关中配置同样的 `/api` 反向代理。Mock 开关按业务模块(对齐菜单)拆分,缺省只有文档库和签署工作台使用演示数据,其余模块直接调用真实后端;各开关的环境变量名与缺省值见 `src/utils/mock-flags.ts`,需要临时切换时在本地 `.env.*.local` 里覆盖即可。使用本地开发代理时,`VITE_API_BASE_URL` 应填写 `/api`;如果改为直连后端,则需要后端配置允许当前前端源的 CORS。
|
||||
生产环境不会使用 Vite 的开发代理,需要在 Nginx 或其他网关中配置同样的 `/api` 反向代理。Mock 开关按业务模块(对齐菜单)拆分,缺省只有文档库之外的签署侧(签署工作台 `VITE_MOCK_SIGNING`、签署记录查询 `VITE_MOCK_SIGN_RECORDS`)使用演示数据,其余模块直接调用真实后端;各开关的环境变量名与缺省值见 `src/utils/mock-flags.ts`,需要临时切换时在本地 `.env.*.local` 里覆盖即可。使用本地开发代理时,`VITE_API_BASE_URL` 应填写 `/api`;如果改为直连后端,则需要后端配置允许当前前端源的 CORS。
|
||||
|
||||
当前尚未接入的签署能力包括手写板设备桥接、线上签署页面/签名回调和打印服务。签署投递、一次性 Token 消费和真实 PNG 上传 API 已完成封装,但页面不能用 Canvas 演示数据冒充真实签名;需要接入设备适配器或患者 H5 回调后再启用。短信初次发送接口需要完整手机号,而患者查询只返回脱敏手机号,因此真实模式会要求当前操作人员确认完整投递地址;生产环境也可以改为由后端根据患者 ID 解析投递地址。签署工作台缺省即使用演示数据(`VITE_MOCK_SIGNING`),需要走真实投递时把它设为 `false`。
|
||||
|
||||
Reference in New Issue
Block a user