Fix Bug #412: 门诊医生站:传染病报告卡保存失败,提示报错

根因:infectiousDiseaseReportDialog.vue 的 show() 函数将 cardNo 初始化为空字符串,
而后端 DTO 的 cardNo 字段有 @NotBlank 校验,导致保存时后端拒绝请求。
同仓库的 infectiousReport/index.vue 已有此修复(调用 getNextCardNo API),
但诊断流程使用的 infectiousDiseaseReportDialog.vue 漏掉了此修复。

修复:在 show() 函数中调用 getNextCardNo API 获取卡片编号,
API 失败时降级为 TEMP_ 前缀的临时卡号,与 infectiousReport/index.vue 保持一致。
This commit is contained in:
赵云
2026-05-11 09:03:30 +08:00
parent 10b2c58a3e
commit 62a09a8b94

View File

@@ -486,7 +486,7 @@
<script setup>
import { ref, computed, getCurrentInstance, watch } from 'vue';
import pcas from 'china-division/dist/pcas-code.json';
import { saveInfectiousDiseaseReport } from '../api';
import { saveInfectiousDiseaseReport, getNextCardNo } from '../api';
import useUserStore from '@/store/modules/user';
import { useDict } from '@/utils/dict';
@@ -1201,7 +1201,7 @@ function calculateAge() {
* 显示对话框并初始化表单数据
* @param {Object} diagnosisData - 诊断数据,包含已选疾病和地址信息
*/
function show(diagnosisData) {
async function show(diagnosisData) {
dialogVisible.value = true;
// 重置地址选择器状态
@@ -1231,12 +1231,24 @@ function show(diagnosisData) {
});
}
// 生成默认卡片编号:医疗机构编码+当前年月日+4位流水
// 生成默认卡片编号:调用后端接口获取
const orgCode = userStore.fixmedinsCode || '0000';
let cardNo = '';
try {
const res = await getNextCardNo(orgCode);
if (res.code === 200 && res.data) {
cardNo = res.data;
} else {
cardNo = 'TEMP_' + Date.now();
}
} catch (err) {
console.error('获取卡片编号失败:', err);
cardNo = 'TEMP_' + Date.now();
}
form.value = {
// 卡片编号:单位自编,与网络直报一致
cardNo: '',
cardNo: cardNo,
// 患者基本信息
patName: patientInfo.patientName || patientInfo.name || '', // 患者姓名