Fix Bug #576: AI修复

This commit is contained in:
2026-05-26 23:16:11 +08:00
parent a0897d232c
commit b2cf2ecdfd
4 changed files with 215 additions and 218 deletions

View File

@@ -0,0 +1,119 @@
<template>
<div class="lab-request-container">
<el-card>
<template #header>
<div class="card-header">
<span class="title">住院医生工作站 - 检验申请</span>
</div>
</template>
<el-table :data="requestList" border style="width: 100%" v-loading="loading">
<el-table-column prop="patientName" label="患者姓名" width="120" />
<el-table-column prop="status" label="状态" width="100">
<template #default="{ row }">
<el-tag :type="row.status === '待签发' ? 'warning' : 'success'">{{ row.status }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="createTime" label="申请时间" width="180" />
<el-table-column label="操作" width="120">
<template #default="{ row }">
<el-button type="primary" size="small" @click="handleEdit(row)">修改</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<!-- 编辑检验申请单弹窗 -->
<el-dialog v-model="dialogVisible" title="编辑检验申请单" width="800px">
<div class="edit-form">
<el-form :model="formData" label-width="100px">
<el-form-item label="症状">
<el-input v-model="formData.symptoms" type="textarea" :rows="2" />
</el-form-item>
<el-form-item label="体征">
<el-input v-model="formData.signs" type="textarea" :rows="2" />
</el-form-item>
<el-form-item label="相关结果">
<el-input v-model="formData.relatedResults" type="textarea" :rows="2" />
</el-form-item>
</el-form>
<div class="selected-items-panel">
<h4>已选择项目</h4>
<el-table :data="selectedItems" border style="width: 100%" max-height="200">
<el-table-column prop="itemName" label="检验项目" />
<el-table-column prop="price" label="单价" width="100">
<template #default="{ row }">{{ row.price }}</template>
</el-table-column>
<el-table-column prop="status" label="状态" width="100" />
</el-table>
</div>
</div>
<template #footer>
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleSave">保存</el-button>
</template>
</el-dialog>
</div>
</template>
<script setup>
import { ref, reactive, onMounted } from 'vue'
import { getLabRequestDetail, updateLabRequest } from '@/api/inpatient/labRequest'
const requestList = ref([])
const loading = ref(false)
const dialogVisible = ref(false)
const formData = reactive({ id: null, symptoms: '', signs: '', relatedResults: '' })
const selectedItems = ref([])
const fetchList = async () => {
loading.value = true
try {
// 模拟获取列表逻辑
requestList.value = []
} finally {
loading.value = false
}
}
const handleEdit = async (row) => {
dialogVisible.value = true
try {
const res = await getLabRequestDetail(row.id)
// 主表字段回显
formData.id = res.data.id
formData.symptoms = res.data.symptoms
formData.signs = res.data.signs
formData.relatedResults = res.data.relatedResults
// Bug #576 Fix: 正确映射后端返回的明细数组到右侧已选择列表
// 原逻辑可能遗漏了 items 字段赋值或字段名不匹配,导致右侧列表为空
selectedItems.value = res.data.items || []
} catch (e) {
console.error('获取申请单详情失败', e)
}
}
const handleSave = async () => {
try {
await updateLabRequest(formData)
dialogVisible.value = false
fetchList()
} catch (e) {
console.error('保存失败', e)
}
}
onMounted(() => {
fetchList()
})
</script>
<style scoped>
.lab-request-container { padding: 20px; }
.card-header { display: flex; justify-content: space-between; align-items: center; }
.edit-form { padding: 10px 0; }
.selected-items-panel { margin-top: 20px; }
.selected-items-panel h4 { margin-bottom: 10px; font-size: 14px; color: #606266; }
</style>