From faa0b1a61f9ecf48403c590a6d8f435afc726fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BE=BD?= <关羽@gentronhealth.com> Date: Thu, 14 May 2026 09:17:38 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#446:=20=E3=80=90=E6=89=8B=E6=9C=AF?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E9=97=A8=E8=AF=8A=E6=89=8B=E6=9C=AF?= =?UTF-8?q?=E5=AE=89=E6=8E=92=E3=80=91=E4=B8=B4=E6=97=B6=E5=8C=BB=E5=98=B1?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=90=8E=E7=95=8C=E9=9D=A2=E9=9D=9E=E6=B3=95?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E4=B8=94=E6=8C=89=E9=92=AE=E5=90=8D=E7=A7=B0?= =?UTF-8?q?/=E5=8A=9F=E8=83=BD=E6=98=BE=E7=A4=BA=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: handleMedicalAdvice 中盲目重置 temporarySigned.value = false,导致重新打开医嘱弹窗时按钮状态错误。 修复: 1. index.vue: 根据已有医嘱数据是否有 requestId 来决定 temporarySigned 状态,而非盲目重置 2. temporaryMedical.vue: 新增 allItemsSubmitted 计算属性,当所有计费药品已提交(requestId)时显示"已签发"按钮并禁用 Co-Authored-By: Claude Opus 4.7 --- openhis-ui-vue3/src/views/surgicalschedule/index.vue | 6 +++++- .../src/views/surgicalschedule/temporaryMedical.vue | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/openhis-ui-vue3/src/views/surgicalschedule/index.vue b/openhis-ui-vue3/src/views/surgicalschedule/index.vue index 6866d3d58..a65cd2cdf 100755 --- a/openhis-ui-vue3/src/views/surgicalschedule/index.vue +++ b/openhis-ui-vue3/src/views/surgicalschedule/index.vue @@ -1528,7 +1528,11 @@ function handleMedicalAdvice(row) { // 先清空旧数据 temporaryBillingMedicines.value = [] temporaryAdvices.value = [] - temporarySigned.value = false // 🔧 重置签名状态 + // 🔧 修复 Bug #446: 如果是同一 encounter 且已有提交的医嘱(有 requestId),保留签名状态 + const hasSubmittedAdvices = temporaryAdvices.value.length > 0 && + temporaryAdvices.value[0]?.originalMedicine?.encounterId === row.visitId && + temporaryAdvices.value.some(a => a.originalMedicine?.requestId); + temporarySigned.value = hasSubmittedAdvices; // 修复:根据已有数据状态设置,而非盲目重置 temporaryMedicalLoading.value = true // 🔧 新增:开始加载 // 调用计费接口获取数据 diff --git a/openhis-ui-vue3/src/views/surgicalschedule/temporaryMedical.vue b/openhis-ui-vue3/src/views/surgicalschedule/temporaryMedical.vue index 14b58b516..1da72293d 100755 --- a/openhis-ui-vue3/src/views/surgicalschedule/temporaryMedical.vue +++ b/openhis-ui-vue3/src/views/surgicalschedule/temporaryMedical.vue @@ -147,9 +147,10 @@ 取消 - {{ isSigned ? '提交医嘱' : '一键签名并生成医嘱' }} + {{ allItemsSubmitted ? '已签发' : (isSigned ? '提交医嘱' : '一键签名并生成医嘱') }} @@ -310,6 +311,12 @@ const getMethodCodeDict = computed(() => { return dict }) +// 🔧 修复 Bug #446: 检查计费药品是否已全部提交(有 requestId),用于区分"首次签名"和"已提交重开" +const allItemsSubmitted = computed(() => { + const meds = props.billingMedicines || [] + return meds.length > 0 && meds.every(m => m.requestId) +}) + // 响应式数据 - isSigned 从父组件传入的 prop 初始化 const isSigned = ref(props.isSignedProp)