feat(签署): 保存并还原患者勾选结果
签署完成时将患者勾选的条目固化到任务记录,重新打开已签署文书时还原勾选状态,重新发起签署则清空历史勾选。
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -190,6 +190,8 @@ export interface SigningTaskRecord extends WorkbenchTask {
|
||||
voidReason?: string
|
||||
/** 原型:任务创建时固化的文书 HTML(对应真实实现的模板版本快照 + contentSha256)。 */
|
||||
documentContentHtml?: string
|
||||
/** 原型:患者勾选结果,随签署一起留存(对应真实实现里随签署证据提交的勾选摘要)。 */
|
||||
selectedItems?: string[]
|
||||
}
|
||||
|
||||
export type SigningTaskListResponse = PageResult<SigningTaskRecord>
|
||||
|
||||
Reference in New Issue
Block a user