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)