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)