Fix Bug #505: AI修复
This commit is contained in:
116
openhis-ui-vue3/src/views/inpatient/nurse/order-verify/index.vue
Normal file
116
openhis-ui-vue3/src/views/inpatient/nurse/order-verify/index.vue
Normal file
@@ -0,0 +1,116 @@
|
||||
<template>
|
||||
<div class="order-verify-container">
|
||||
<el-card>
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>医嘱校对 - 已校对</span>
|
||||
<div class="header-actions">
|
||||
<el-tooltip
|
||||
:content="returnTooltip"
|
||||
placement="top"
|
||||
:disabled="!isReturnDisabled"
|
||||
>
|
||||
<el-button
|
||||
type="danger"
|
||||
:disabled="isReturnDisabled"
|
||||
@click="handleBatchReturn"
|
||||
data-cy="batch-return-btn"
|
||||
>
|
||||
退回
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<el-table
|
||||
:data="verifiedOrders"
|
||||
@selection-change="handleSelectionChange"
|
||||
row-key="id"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column prop="drugName" label="药品名称" />
|
||||
<el-table-column prop="execStatus" label="执行状态" />
|
||||
<el-table-column prop="dispenseStatus" label="发药状态" />
|
||||
<el-table-column label="操作" width="120">
|
||||
<template #default="{ row }">
|
||||
<el-tooltip
|
||||
:content="row.dispenseStatus === 'DISPENSED' || row.execStatus === 'EXECUTED'
|
||||
? '该药品已由药房发放,请先执行退药处理,不可直接退回'
|
||||
: ''"
|
||||
placement="top"
|
||||
:disabled="!(row.dispenseStatus === 'DISPENSED' || row.execStatus === 'EXECUTED')"
|
||||
>
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
:disabled="row.dispenseStatus === 'DISPENSED' || row.execStatus === 'EXECUTED'"
|
||||
@click="handleSingleReturn(row.id)"
|
||||
:data-cy="`return-btn-${row.id}`"
|
||||
>
|
||||
退回
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import axios from 'axios'
|
||||
|
||||
const verifiedOrders = ref([])
|
||||
const selectedOrders = ref([])
|
||||
|
||||
const isReturnDisabled = computed(() => {
|
||||
if (selectedOrders.value.length === 0) return true
|
||||
// 只要选中列表中有一条已发药或已执行,批量按钮即置灰
|
||||
return selectedOrders.value.some(
|
||||
(o) => o.dispenseStatus === 'DISPENSED' || o.execStatus === 'EXECUTED'
|
||||
)
|
||||
})
|
||||
|
||||
const returnTooltip = computed(() => {
|
||||
return isReturnDisabled.value ? '该药品已由药房发放,请先执行退药处理,不可直接退回' : ''
|
||||
})
|
||||
|
||||
onMounted(async () => {
|
||||
const res = await axios.get('/api/inpatient/orders/verified')
|
||||
verifiedOrders.value = res.data
|
||||
})
|
||||
|
||||
const handleSelectionChange = (selection) => {
|
||||
selectedOrders.value = selection
|
||||
}
|
||||
|
||||
const handleSingleReturn = async (orderId) => {
|
||||
await doReturn([orderId])
|
||||
}
|
||||
|
||||
const handleBatchReturn = async () => {
|
||||
const ids = selectedOrders.value.map((o) => o.id)
|
||||
await doReturn(ids)
|
||||
}
|
||||
|
||||
const doReturn = async (ids) => {
|
||||
try {
|
||||
await axios.post('/api/inpatient/orders/return', ids)
|
||||
ElMessage.success('退回成功')
|
||||
// 刷新列表
|
||||
const res = await axios.get('/api/inpatient/orders/verified')
|
||||
verifiedOrders.value = res.data
|
||||
selectedOrders.value = []
|
||||
} catch (err) {
|
||||
ElMessage.error(err.response?.data?.message || '退回失败')
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.order-verify-container { padding: 20px; }
|
||||
.card-header { display: flex; justify-content: space-between; align-items: center; }
|
||||
</style>
|
||||
Reference in New Issue
Block a user