From fda9a14966481f0b1fc7756670cfcf4033fd9009 Mon Sep 17 00:00:00 2001 From: guanyu Date: Wed, 27 May 2026 02:29:17 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#505:=20AI=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/inpatient/nurse/OrderVerify.vue | 58 +++++++++---------- .../tests/e2e/specs/bug-regression.spec.ts | 22 ++++++- 2 files changed, 46 insertions(+), 34 deletions(-) diff --git a/openhis-ui-vue3/src/views/inpatient/nurse/OrderVerify.vue b/openhis-ui-vue3/src/views/inpatient/nurse/OrderVerify.vue index 67dfadc83..d6a91dba5 100644 --- a/openhis-ui-vue3/src/views/inpatient/nurse/OrderVerify.vue +++ b/openhis-ui-vue3/src/views/inpatient/nurse/OrderVerify.vue @@ -55,57 +55,51 @@ const loading = ref(false); const orderList = ref([]); const selectedOrders = ref([]); -onMounted(async () => { - loading.value = true; - try { - const res = await getVerifiedOrders(); - orderList.value = res.data || []; - } finally { - loading.value = false; - } +// Bug #505 核心修复:计算属性控制按钮状态 +const isReturnDisabled = computed(() => { + if (selectedOrders.value.length === 0) return true; + // 只要选中项中存在已执行或已发药的医嘱,即禁用退回按钮 + return selectedOrders.value.some(order => + order.executeStatus === 1 || order.dispenseStatus === 1 + ); }); const handleSelectionChange = (selection) => { selectedOrders.value = selection; }; -// Bug #505 修复:计算属性控制按钮可用性 -// 规则:未选中、或任意选中项为已发药/已执行时,按钮置灰 -const isReturnDisabled = computed(() => { - if (selectedOrders.value.length === 0) return true; - return selectedOrders.value.some( - (order) => order.dispenseStatus === 1 || order.executeStatus === 1 - ); -}); - const handleReturn = async () => { - if (isReturnDisabled.value) return; - + if (selectedOrders.value.length === 0) return; + try { - await ElMessageBox.confirm('确认将选中医嘱退回至医生站?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning', - }); - - const ids = selectedOrders.value.map((o) => o.id); + await ElMessageBox.confirm('确定要退回选中的医嘱吗?', '提示', { type: 'warning' }); + const ids = selectedOrders.value.map(o => o.id); await returnOrdersApi(ids); ElMessage.success('退回成功'); - // 刷新列表 - const res = await getVerifiedOrders(); - orderList.value = res.data || []; - selectedOrders.value = []; + fetchOrders(); } catch (error) { if (error !== 'cancel') { // 捕获后端抛出的 IllegalStateException 并展示 - ElMessage.error(error.message || '退回失败'); + const msg = error.response?.data?.message || error.message || '退回失败'; + ElMessage.error(msg); } } }; + +const fetchOrders = async () => { + loading.value = true; + try { + orderList.value = await getVerifiedOrders(); + } finally { + loading.value = false; + } +}; + +onMounted(fetchOrders);