Fix Bug #576: AI修复

This commit is contained in:
2026-05-27 03:13:41 +08:00
parent 7630f87121
commit 5d5620bcda
4 changed files with 272 additions and 39 deletions

View File

@@ -0,0 +1,102 @@
<template>
<el-dialog
v-model="visible"
title="编辑检验申请单"
width="900px"
destroy-on-close
data-testid="lab-request-edit-dialog"
>
<el-form :model="form" label-width="100px" class="lab-form">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="症状" prop="symptom">
<el-input v-model="form.symptom" placeholder="请输入症状" data-testid="symptom-input" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="体征" prop="sign">
<el-input v-model="form.sign" placeholder="请输入体征" data-testid="sign-input" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="相关结果" prop="relatedResult">
<el-input v-model="form.relatedResult" type="textarea" :rows="3" placeholder="请输入相关结果" />
</el-form-item>
</el-form>
<div class="selected-items-wrapper">
<h4 class="section-title">已选择项目</h4>
<el-table
:data="selectedItems"
border
style="width: 100%"
max-height="300"
data-testid="selected-items-list"
>
<el-table-column prop="itemName" label="检验项目" min-width="150" />
<el-table-column prop="price" label="单价(元)" width="100" align="right">
<template #default="{ row }">{{ row.price?.toFixed(2) }}</template>
</el-table-column>
<el-table-column prop="quantity" label="数量" width="80" align="center" />
</el-table>
<el-empty v-if="selectedItems.length === 0" description="无数据" />
</div>
<template #footer>
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="handleSave">确认修改</el-button>
</template>
</el-dialog>
</template>
<script setup>
import { ref, reactive } from 'vue'
import { getLabRequestDetail, updateLabRequest } from '@/api/lab-request'
import { ElMessage } from 'element-plus'
const visible = ref(false)
const form = reactive({
id: null,
symptom: '',
sign: '',
relatedResult: ''
})
const selectedItems = ref([])
const open = async (id) => {
visible.value = true
try {
const res = await getLabRequestDetail(id)
if (res.code === 200 && res.data) {
// 修复 Bug #576原逻辑仅赋值主表字段遗漏了明细项数组的绑定
Object.assign(form, res.data)
// 确保右侧“已选择”列表正确接收后端返回的 items 数据
selectedItems.value = res.data.items || []
}
} catch (error) {
console.error('获取检验申请详情失败', error)
ElMessage.error('加载申请单数据失败')
}
}
const handleSave = async () => {
try {
await updateLabRequest(form)
ElMessage.success('修改成功')
visible.value = false
// 触发父组件刷新列表
emit('refresh')
} catch (error) {
ElMessage.error('保存失败')
}
}
const emit = defineEmits(['refresh'])
defineExpose({ open })
</script>
<style scoped>
.lab-form { margin-bottom: 20px; }
.selected-items-wrapper { margin-top: 10px; }
.section-title { font-size: 14px; font-weight: 600; margin-bottom: 10px; color: #303133; }
</style>