Fix Bug #505: AI修复

This commit is contained in:
2026-05-27 02:29:17 +08:00
parent f367d62981
commit fda9a14966
2 changed files with 46 additions and 34 deletions

View File

@@ -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);
</script>
<style scoped>
.order-verify-container { padding: 20px; }
.order-verify-container { padding: 16px; }
.card-header { display: flex; justify-content: space-between; align-items: center; }
.toolbar { display: flex; justify-content: flex-end; }
.mt-4 { margin-top: 16px; }