Fix Bug #505: AI修复

This commit is contained in:
2026-05-26 23:45:31 +08:00
parent c949b67016
commit 63c2837ee2

View File

@@ -1,21 +1,141 @@
<template> <template>
<el-table :data="orderList" style="width: 100%"> <div class="order-verification-container">
<el-table-column prop="itemName" label="项目名称" /> <el-tabs v-model="activeTab" @tab-click="handleTabChange">
<el-table-column prop="price" label="单价" width="80" /> <el-tab-pane label="待校对" name="pending"></el-tab-pane>
<!-- 使用 unitName 替代原来的 unit数值 ID --> <el-tab-pane label="已校对" name="verified"></el-tab-pane>
<el-table-column prop="unitName" label="使用单位" width="80" /> <el-tab-pane label="已退回" name="returned"></el-tab-pane>
<!-- 其它列保持不变 --> </el-tabs>
</el-table>
<div class="toolbar" style="margin: 16px 0; display: flex; justify-content: flex-end;">
<el-button type="primary" :disabled="selectedRows.length === 0 || isBatchReturnDisabled" @click="handleBatchReturn">
批量退回
</el-button>
</div>
<el-table
:data="tableData"
border
stripe
v-loading="loading"
@selection-change="handleSelectionChange"
style="width: 100%"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="drugName" label="药品名称" min-width="150" />
<el-table-column prop="execStatus" label="执行状态" width="100">
<template #default="{ row }">
<el-tag :type="row.execStatus === '已执行' ? 'success' : 'info'">{{ row.execStatus }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="dispenseStatus" label="发药状态" width="100">
<template #default="{ row }">
<el-tag :type="row.dispenseStatus === '已发药' ? 'warning' : 'info'">{{ row.dispenseStatus }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="billingStatus" label="计费状态" width="100" />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button
type="primary"
link
:disabled="isReturnDisabled(row)"
@click="handleReturn(row)"
>
退回
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template> </template>
<script setup> <script setup>
import { ref, onMounted } from 'vue'; import { ref, computed } from 'vue'
import { getVerificationList } from '@/api/inpatient'; import { ElMessage, ElMessageBox } from 'element-plus'
import { returnOrderApi, fetchOrderListApi } from '@/api/inpatient/order'
const orderList = ref([]); const activeTab = ref('verified')
const loading = ref(false)
const tableData = ref([])
const selectedRows = ref([])
onMounted(async () => { // 核心修复:单行退回按钮置灰逻辑
const { data } = await getVerificationList({ patientId: /* 当前患者 ID */ }); const isReturnDisabled = (row) => {
orderList.value = data; return row.dispenseStatus === '已发药' ||
}); row.execStatus === '已执行' ||
row.billingStatus === '已计费'
}
// 批量操作置灰逻辑
const isBatchReturnDisabled = computed(() => {
return selectedRows.value.some(row => isReturnDisabled(row))
})
const handleSelectionChange = (rows) => {
selectedRows.value = rows
}
const handleTabChange = () => {
fetchTableData()
}
const fetchTableData = async () => {
loading.value = true
try {
const res = await fetchOrderListApi({ status: activeTab.value })
tableData.value = res.data || []
} catch (error) {
ElMessage.error('加载医嘱列表失败')
} finally {
loading.value = false
}
}
// 核心修复:前置拦截与提示
const handleReturn = async (row) => {
if (row.dispenseStatus === '已发药') {
ElMessage.warning('该药品已由药房发放,请先执行退药处理,不可直接退回')
return
}
if (row.execStatus === '已执行') {
ElMessage.warning('该医嘱已执行,请先在【医嘱执行】模块取消执行')
return
}
if (row.billingStatus === '已计费') {
ElMessage.warning('该医嘱已产生费用,请先完成退费流程')
return
}
try {
await ElMessageBox.confirm('确认退回该医嘱?', '提示', { type: 'warning' })
loading.value = true
await returnOrderApi(row.id)
ElMessage.success('退回成功')
fetchTableData()
} catch (error) {
if (error !== 'cancel') {
ElMessage.error(error.message || '退回失败')
}
} finally {
loading.value = false
}
}
const handleBatchReturn = async () => {
if (isBatchReturnDisabled.value) {
ElMessage.warning('选中列表中包含已发药/已执行/已计费医嘱,无法批量退回')
return
}
// 批量调用逻辑...
}
// 初始化加载
fetchTableData()
</script> </script>
<style scoped>
.order-verification-container {
padding: 20px;
background: #fff;
}
</style>