feat(签署任务): 新增「待科室确认」节点整条链路
原型 V10.2 的 needConfirm:检验 / 基因检测 / 自费类文书要求患者签完之后 由科室再复核签章,避免漏签补签。此前仓库完全没有这个节点,现在补全。 状态模型 - SigningTaskStatus 增加 confirming(待科室确认),BackendSigningTaskStatus 增加 WAITING_CONFIRM;文档侧 DocumentRecord / TemplateResponseDto / SigningTemplate / CreateSigningTaskInput 增加 needConfirm。 - normalizeTaskStatus、mapSigningTask、mapDocument、toBackendTaskQuery 的 statusMap、 mapAvailableTemplate、readLocalSigningTemplates 同步;needConfirm 取不到一律按 false, 不凭空给任务多插一道人工节点。 流转 - completeSigningTask 按 needConfirm 决定落 confirming 还是 signed; 新增 confirmDepartmentSigning(科室复核签章 → 已签署)。 真实模式暂未接入(后端要重做),如实提示"待接入",不前端自己改状态。 - 任务事件与记录页事件补「已推送至 X 确认队列」「科室复核签章完成,文档归档」两条留痕。 工作台 - 列表徽标走 .task-status--confirming(原型 tg-cfm 橙),状态筛选加「待科室确认」。 - 详情动作按原型给:🏛 科室复核签章(确认完成)+ 催办 + 在线预览 + 下载已签 PDF; 该状态下不给「作废」(原型只在待签署/已超时给)。 - 新增「科室确认节点」卡(待患者签署后 / 待科室确认 / ✓ 已确认三分支)—— 原型放在文书签名区那一格,这里做成紧跟文书的独立卡,真实模板与回退纸样都能显示。 - confirming 时文书只读(患者已签完,不该再改填写项)。 - 签署完成提示语按 needConfirm 分流:需科室确认的说「已流转至科室确认节点」, 否则说「签署完成,文档已归档」—— 一律说"完成"会让人以为可以关页面了。 - 新增权限码 sign:task:confirm / sign:task:remind。 记录查询与报表 - 记录查询状态筛选与演示数据加该状态(2 条样本)。 - 报表 STATUS_LABELS / STATUS_COLUMNS / ReportStatusCounts / ReportGroupRow 加这一栏, 单独成列不并进「已签署」——并进去会让已签署虚高,科室复核本来就是这类文书的卡点。 - 时效样本按「有签署用时」取,待科室确认同样计入;总览统计块加一块。 演示数据 - 工作台补 task-009(confirming + needConfirm),否则该状态的徽标、动作、 筛选、报表栏在演示环境里一次都走不到。 - 注意:演示文库的麻精同意书**没有** needConfirm(原型里也确实没有), 所以「新建任务 → 签署 → 落待科室确认」这条流转靠探针夹具验证,没有改产品种子。 验证:probe-dept-confirm.cjs(新建)36/36 PASS,含真实落笔签署后落待科室确认; 回归 probe-new-task 104/104、probe-method-domain 14/14、probe-workbench-lib 42/42、 probe-report-analytics 92/92(断言按七状态更新);vue-tsc 与 eslint 0 错。
This commit is contained in:
@@ -998,6 +998,7 @@ async function toSigningTemplate(template: DocumentTemplate): Promise<SigningTem
|
||||
category: template.category,
|
||||
description: template.description ?? '',
|
||||
supportedMethods: [...ALL_SIGNING_METHODS],
|
||||
needConfirm: template.needConfirm ?? false,
|
||||
contentHtml,
|
||||
contentSha256,
|
||||
}
|
||||
|
||||
@@ -88,6 +88,7 @@ function toLocalDocument(document: DocumentRecord): LocalDocument {
|
||||
// 否则刷新一次卡片上的标签就没了
|
||||
examType: document.examType,
|
||||
projectCodes: document.projectCodes,
|
||||
needConfirm: document.needConfirm,
|
||||
updatedAt: document.updatedAt,
|
||||
contentHtml: document.contentHtml,
|
||||
contentSha256: document.contentSha256,
|
||||
|
||||
@@ -23,6 +23,7 @@ const emit = defineEmits<{
|
||||
|
||||
const statusLabels: Record<ReportTaskStatus, string> = {
|
||||
signed: '已签署',
|
||||
confirming: '待科室确认',
|
||||
pending: '待签署',
|
||||
signing: '签署中',
|
||||
expired: '已超时',
|
||||
|
||||
@@ -814,6 +814,7 @@ function mapReportTaskStatus(status: ReportTaskResponseDto['status']): ReportTas
|
||||
CREATED: 'pending',
|
||||
WAITING_SIGN: 'pending',
|
||||
SIGNED: 'signed',
|
||||
WAITING_CONFIRM: 'confirming',
|
||||
EXPIRED: 'expired',
|
||||
VOIDED: 'void',
|
||||
GENERATING: 'signing',
|
||||
@@ -1018,6 +1019,7 @@ function handleView(row: ReportTask) {
|
||||
function getReportStatusLabel(status: ReportTaskStatus) {
|
||||
const labels: Record<ReportTaskStatus, string> = {
|
||||
signed: '已签署',
|
||||
confirming: '待科室确认',
|
||||
pending: '待签署',
|
||||
signing: '签署中',
|
||||
expired: '已超时',
|
||||
|
||||
@@ -60,6 +60,23 @@ export const reportTasks: ReportTask[] = [
|
||||
expiredAt: daysAgo(-1, 9, 12),
|
||||
durationMinutes: 7,
|
||||
},
|
||||
{
|
||||
id: 'T0818009',
|
||||
patientName: '王秀兰',
|
||||
patientId: 'P202610007',
|
||||
documentName: '内镜检查知情同意书',
|
||||
department: '消化内科',
|
||||
campus: '本部院区',
|
||||
category: 'consent',
|
||||
method: 'sms',
|
||||
// 「待科室确认」样本:患者已签完,等科室复核签章 ——
|
||||
// 没有这条样本,报表里的这一栏永远是 0,看不出它到底有没有接上
|
||||
status: 'confirming',
|
||||
createdAt: daysAgo(0, 10, 40),
|
||||
signedAt: daysAgo(0, 10, 45),
|
||||
expiredAt: daysAgo(-1, 10, 40),
|
||||
durationMinutes: 5,
|
||||
},
|
||||
{
|
||||
id: 'T0818002',
|
||||
patientName: '李淑芬',
|
||||
|
||||
@@ -30,7 +30,14 @@ export interface ReportMetricCard {
|
||||
tone: ReportMetricTone
|
||||
}
|
||||
|
||||
export type ReportTaskStatus = 'signed' | 'pending' | 'signing' | 'expired' | 'void' | 'failed'
|
||||
export type ReportTaskStatus =
|
||||
| 'signed'
|
||||
| 'confirming'
|
||||
| 'pending'
|
||||
| 'signing'
|
||||
| 'expired'
|
||||
| 'void'
|
||||
| 'failed'
|
||||
|
||||
export type ReportSigningMethod = SigningMethod
|
||||
|
||||
|
||||
Reference in New Issue
Block a user