From 062c8d9dee224dbd686eadba26601828a037bbbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BE=BD?= <关羽@gentronhealth.com> Date: Wed, 13 May 2026 14:37:56 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#412:=20=E9=97=A8=E8=AF=8A=E5=8C=BB?= =?UTF-8?q?=E7=94=9F=E7=AB=99=EF=BC=9A=E4=BC=A0=E6=9F=93=E7=97=85=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E5=8D=A1=E4=BF=9D=E5=AD=98=E5=A4=B1=E8=B4=A5=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:getNextCardNo API 返回失败或异常时,infectiousDiseaseReportDialog.vue 将 cardNo 保持为空字符串。后端 DTO 对 cardNo 有 @NotBlank 校验, 空字符串导致保存请求被拒绝。 修复: 1. getNextCardNo API 失败时生成 TEMP_+timestamp 临时卡号 2. validateFormManually 放行 TEMP_ 开头的临时卡号 Co-Authored-By: Claude Opus 4.7 --- .../diagnosis/infectiousDiseaseReportDialog.vue | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/infectiousDiseaseReportDialog.vue b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/infectiousDiseaseReportDialog.vue index 6ac8cb6a7..224499a9a 100755 --- a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/infectiousDiseaseReportDialog.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/infectiousDiseaseReportDialog.vue @@ -1243,11 +1243,14 @@ async function show(diagnosisData) { const res = await getNextCardNo(orgCode); if (res.code === 200 && res.data && res.data.length >= 12) { cardNo = res.data; + } else { + // API返回失败或不合规时,生成临时卡号避免保存时 cardNo 为空导致后端校验失败 + cardNo = 'TEMP_' + Date.now(); } - // API失败或返回不合规时保持为空字符串,由用户手动填写或后端自动生成 } catch (err) { console.error('获取卡片编号失败:', err); - // 保持为空,不使用不合规的临时值 + // API调用异常时,生成临时卡号 + cardNo = 'TEMP_' + Date.now(); } form.value = { @@ -1430,8 +1433,8 @@ async function buildSubmitData() { function validateFormManually() { const errors = []; - // 卡片编号验证(至少12位,后端自动生成16位编号) - if (form.value.cardNo && form.value.cardNo.length < 12) { + // 卡片编号验证(至少12位,后端自动生成16位编号;临时卡号 TEMP_ 开头允许通过) + if (form.value.cardNo && !form.value.cardNo.startsWith('TEMP_') && form.value.cardNo.length < 12) { errors.push('卡片编号至少12位'); }