Fix Bug #595: AI修复
This commit is contained in:
124
openhis-ui-vue3/src/views/inpatient/nurse/orderVerify/index.vue
Normal file
124
openhis-ui-vue3/src/views/inpatient/nurse/orderVerify/index.vue
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
<template>
|
||||||
|
<div class="order-verify-container">
|
||||||
|
<el-card shadow="never">
|
||||||
|
<template #header>
|
||||||
|
<div class="card-header">
|
||||||
|
<span class="title">住院护士站 - 医嘱校对</span>
|
||||||
|
<el-button type="primary" @click="handleQuery">刷新</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
:data="verifyList"
|
||||||
|
v-loading="loading"
|
||||||
|
border
|
||||||
|
stripe
|
||||||
|
style="width: 100%"
|
||||||
|
:header-cell-style="{ background: '#f5f7fa', color: '#606266' }"
|
||||||
|
>
|
||||||
|
<el-table-column prop="orderNo" label="医嘱号" width="130" fixed />
|
||||||
|
<el-table-column prop="itemName" label="医嘱内容" min-width="180" show-overflow-tooltip />
|
||||||
|
<el-table-column prop="startTime" label="开始时间" width="160" />
|
||||||
|
<el-table-column prop="stopTime" label="停嘱时间" width="160" />
|
||||||
|
<el-table-column prop="prescribingDoctor" label="开嘱医生" width="100" />
|
||||||
|
<el-table-column prop="stoppingDoctor" label="停嘱医生" width="100" />
|
||||||
|
<el-table-column prop="singleDose" label="单次剂量" width="100" align="center" />
|
||||||
|
<el-table-column prop="totalDose" label="总量" width="100" align="center" />
|
||||||
|
<el-table-column prop="totalAmount" label="总金额" width="100" align="center" />
|
||||||
|
<el-table-column prop="frequency" label="频次" width="100" align="center" />
|
||||||
|
<el-table-column prop="usage" label="用法" width="120" align="center" />
|
||||||
|
<el-table-column prop="diagnosis" label="诊断" width="140" show-overflow-tooltip />
|
||||||
|
<el-table-column label="注射药品" width="90" align="center">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-tag v-if="row.isInjection" type="primary" size="small">是</el-tag>
|
||||||
|
<span v-else class="text-muted">-</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="皮试" width="110" align="center">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-tag
|
||||||
|
v-if="row.skinTestRequired"
|
||||||
|
type="danger"
|
||||||
|
effect="dark"
|
||||||
|
class="skin-test-alert"
|
||||||
|
>
|
||||||
|
需皮试
|
||||||
|
</el-tag>
|
||||||
|
<span v-else class="text-muted">{{ row.skinTestStatus || '无需皮试' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="100" fixed="right" align="center">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button type="primary" link @click="handleVerify(row)">校对</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<el-pagination
|
||||||
|
v-model:current-page="queryParams.pageNum"
|
||||||
|
v-model:page-size="queryParams.pageSize"
|
||||||
|
:total="total"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next"
|
||||||
|
@size-change="handleQuery"
|
||||||
|
@current-change="handleQuery"
|
||||||
|
class="pagination"
|
||||||
|
/>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, reactive, onMounted } from 'vue'
|
||||||
|
import { getVerifyOrderList } from '@/api/inpatient/nurse/order'
|
||||||
|
|
||||||
|
const loading = ref(false)
|
||||||
|
const verifyList = ref([])
|
||||||
|
const total = ref(0)
|
||||||
|
const queryParams = reactive({
|
||||||
|
patientId: null, // 实际应从路由参数或全局患者上下文获取
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20
|
||||||
|
})
|
||||||
|
|
||||||
|
const getList = async () => {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
const res = await getVerifyOrderList(queryParams)
|
||||||
|
verifyList.value = res.data?.rows || []
|
||||||
|
total.value = res.data?.total || 0
|
||||||
|
} catch (error) {
|
||||||
|
console.error('获取医嘱校对列表失败:', error)
|
||||||
|
} finally {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleQuery = () => {
|
||||||
|
queryParams.pageNum = 1
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleVerify = (row) => {
|
||||||
|
// 触发校对业务逻辑
|
||||||
|
console.log('执行医嘱校对:', row.orderNo)
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getList()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.order-verify-container { padding: 16px; background: #f0f2f5; min-height: 100vh; }
|
||||||
|
.card-header { display: flex; justify-content: space-between; align-items: center; }
|
||||||
|
.title { font-size: 16px; font-weight: 600; color: #303133; }
|
||||||
|
.pagination { margin-top: 16px; display: flex; justify-content: flex-end; }
|
||||||
|
.text-muted { color: #909399; font-size: 12px; }
|
||||||
|
.skin-test-alert { font-weight: bold; animation: pulse 2s infinite; }
|
||||||
|
@keyframes pulse {
|
||||||
|
0% { opacity: 1; }
|
||||||
|
50% { opacity: 0.8; }
|
||||||
|
100% { opacity: 1; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user