feat(签署): 保存并还原患者勾选结果

签署完成时将患者勾选的条目固化到任务记录,重新打开已签署文书时还原勾选状态,重新发起签署则清空历史勾选。
This commit is contained in:
yelan
2026-09-14 15:36:19 +08:00
parent d34ef0a0ce
commit c7da24cef6
6 changed files with 93 additions and 9 deletions
+10 -1
View File
@@ -346,7 +346,11 @@ function clonePatient(patient: PatientProfile): PatientProfile {
}
function cloneTask(task: SigningTaskRecord): SigningTaskRecord {
return { ...task }
return {
...task,
// 勾选结果是数组,浅拷贝会让调用方和内存数据共享同一个引用
selectedItems: task.selectedItems ? [...task.selectedItems] : task.selectedItems,
}
}
function getRangeStart(range: SigningTaskQuery['dateRange']) {
@@ -1002,6 +1006,7 @@ export function updateSigningTaskMethod(
export function completeSigningTask(
id: string,
signatureDataUrl: string,
selectedItems: string[] = [],
): Promise<SigningTaskRecord | null> {
if (!useMockData) {
throw new Error('真实签署需要通过签署投递与文件上传接口完成')
@@ -1017,6 +1022,8 @@ export function completeSigningTask(
task.signatureDataUrl = signatureDataUrl
task.signedAt = formatMockDate()
task.updatedAt = task.signedAt
// 勾选结果随签署一起固化,否则重新打开文书会丢掉患者勾了哪些项
task.selectedItems = [...selectedItems]
persistMockRecords()
return Promise.resolve(cloneTask(task))
}
@@ -1042,6 +1049,8 @@ export async function reopenSigningTask(
task.status = 'pending'
task.signatureDataUrl = undefined
task.signedAt = undefined
// 重新发起等于重新签,上一次的勾选不再沿用
task.selectedItems = []
task.updatedAt = formatMockDate()
persistMockRecords()
return Promise.resolve(cloneTask(task))
+2
View File
@@ -190,6 +190,8 @@ export interface SigningTaskRecord extends WorkbenchTask {
voidReason?: string
/** 原型:任务创建时固化的文书 HTML(对应真实实现的模板版本快照 + contentSha256)。 */
documentContentHtml?: string
/** 原型:患者勾选结果,随签署一起留存(对应真实实现里随签署证据提交的勾选摘要)。 */
selectedItems?: string[]
}
export type SigningTaskListResponse = PageResult<SigningTaskRecord>