feat(签署工作台): 按原型分流签名位点击,Pad 任务就地落笔并补齐弹窗标题

This commit is contained in:
yelan
2026-09-27 18:55:23 +08:00
parent c6262726d7
commit 2a0681287c
3 changed files with 63 additions and 9 deletions
@@ -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() {