feat(签署工作台): 按原型分流签名位点击,Pad 任务就地落笔并补齐弹窗标题
This commit is contained in:
@@ -43,6 +43,7 @@ import NewSigningTaskDialog from '@/components/signing/NewSigningTaskDialog.vue'
|
||||
import { useAppStore } from '@/stores/app'
|
||||
import { useLoginStore } from '@/stores/login'
|
||||
import type { SigningFieldProgress, SigningSignatureRequest } from '@/utils/signing-document'
|
||||
import { PRIMARY_SIGNATURE_FIELD_ID } from '@/utils/signing-fields'
|
||||
import { formatSigningMethodTitle, readSigningMethod, toggleSigningMethod } from '@/utils/signing-method'
|
||||
import { downloadSigningPdf } from '@/utils/signing-pdf'
|
||||
|
||||
@@ -462,14 +463,44 @@ async function assertSigningReady() {
|
||||
}
|
||||
}
|
||||
|
||||
/** 点击文中签名位:先记下采的是哪一个,再由弹窗把签名图回灌到该位置 */
|
||||
function handleSignatureRequest(request: SigningSignatureRequest) {
|
||||
if (!selectedTask.value) {
|
||||
/**
|
||||
* 点击文中签名位。
|
||||
*
|
||||
* 分两条路 —— 原型 renderPreview 给每个签名位挂的 onclick 是
|
||||
* `if(curTask.method==='sms')openPhone();else openPad();`,且只挂在「待签署」任务上。
|
||||
*
|
||||
* ① **主签名位**(患者签名,`PRIMARY_SIGNATURE_FIELD_ID`)正是任务级签署要采的那一笔,
|
||||
* 与「手写板签署 / Pad 签署」按钮走的是同一件事,所以必须开**任务级**弹窗。
|
||||
* 这条不能少:Pad 方式的按钮只负责「把文书滚到签名位」(原型 openIpad 不弹窗),
|
||||
* 真正落笔就是靠点这个签名位 —— 若这里只回灌一张图而不结束任务,
|
||||
* Pad 任务就会永远停在「待签署」。
|
||||
* 短信任务照原型走患者端 H5 页(患者在自己手机上签,不是在这台电脑上画)。
|
||||
* ② 其余签名位(医师签名……)是本仓库在原型之外的扩展:它们只是文书上的填写项,
|
||||
* 采完只回填该位置、不结束任务,所以走签名位弹窗。
|
||||
*/
|
||||
async function handleSignatureRequest(request: SigningSignatureRequest) {
|
||||
const task = selectedTask.value
|
||||
|
||||
if (!task) {
|
||||
return
|
||||
}
|
||||
|
||||
pendingSignatureField.value = request
|
||||
fieldSignatureDialogVisible.value = true
|
||||
if (request.fieldId !== PRIMARY_SIGNATURE_FIELD_ID || task.status !== 'pending') {
|
||||
pendingSignatureField.value = request
|
||||
fieldSignatureDialogVisible.value = true
|
||||
return
|
||||
}
|
||||
|
||||
if (task.method === 'sms') {
|
||||
await handleTaskAction('online-sign')
|
||||
return
|
||||
}
|
||||
|
||||
if (!(await assertSigningReady())) {
|
||||
return
|
||||
}
|
||||
|
||||
signatureDialogVisible.value = true
|
||||
}
|
||||
|
||||
function closeFieldSignatureDialog() {
|
||||
|
||||
Reference in New Issue
Block a user