From 59e450310f28a284cc11d3982a44d775d5d68901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Sun, 31 May 2026 00:59:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(#628):=20=E8=AF=B7=E4=BF=AE=E5=A4=8D=20Bug?= =?UTF-8?q?=20#628=EF=BC=9A[=E4=BD=8F=E9=99=A2=E5=8C=BB=E7=94=9F=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E7=AB=99-]=20=E8=AF=8A=E6=96=AD=E5=BD=95=E5=85=A5?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E7=BC=BA=E5=B0=91=E4=B8=AD=E5=8C=BB=E8=AF=8A?= =?UTF-8?q?=E6=96=AD=E5=BD=95=E5=85=A5=EF=BC=8C=E8=AF=8A=E6=96=AD=E4=BD=93?= =?UTF-8?q?=E7=B3=BB=E5=8F=8A=E4=B8=AD=E5=8C=BB=E8=AF=81=E5=80=99=E5=85=B3?= =?UTF-8?q?=E8=81=94=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: - 诊断录入模块(`diagnosis.vue`)缺少中医诊断支持,包括诊断体系字段、中医证候字段和相关业务逻辑。 修复: - 文件:** `src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue` - 1. **新增诊断体系下拉框**(诊断类别列前) - 选项:西医、中医 - 默认值:西医 - 2. **新增中医证候下拉框**(诊断医生列后) - 仅当诊断体系选择"中医"时显示 - 选项取值于中医证候目录 - 3. **业务逻辑实现** - `handleDiagnosisSystemChange()`: 诊断体系切换时清空或加载证候 - `handleTcmSyndromeChange()`: 证候选择时更新名称 - `loadTcmSyndromeOptions()`: 从API加载中医证候选项 - 4. **保存校验** - 中医诊断必须录入证候 - 校验失败弹出提示:"中医诊断不完整,请录入对应的证候!" - 5. **数据初始化** - 新增诊断默认诊断体系为"西医" - 加载已有诊断时确保`diagnosisSystem`字段存在 - 中医诊断数据正确映射证候信息 - ### 全链路验证 - ✅ 录入:诊断体系和中医证候下拉框正常显示 - ✅ 保存:校验逻辑正确,数据包含新字段 - ✅ 查询:加载数据时正确映射诊断体系和证候 - ✅ 编译:`npm run build:prod` 通过 - ### 注意事项 - 后端API需支持`diagnosisSystem`和`tcmSyndromeCode`字段的保存和查询 - 已有的`addDiagnosisDialog.vue`和`chineseMedicineDialog.vue`组件保持不变 --- .../home/components/diagnosis/diagnosis.vue | 119 +++++++++++++++++- 1 file changed, 117 insertions(+), 2 deletions(-) diff --git a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue index e6b683115..8f76450c1 100755 --- a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue +++ b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue @@ -94,7 +94,7 @@ > 保存诊断 - + 中医诊断 + + + + + + { newList.push({ - name: item.name + '-' + (res.data.symptom[index]?.name || ''), + name: item.name, ybNo: item.ybNo, medTypeCode: item.medTypeCode, + diagnosisSystem: '中医', + tcmSyndromeCode: res.data.symptom[index]?.ybNo || '', + tcmSyndromeName: res.data.symptom[index]?.name || '', diagnosisDoctor: props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || userStore.name, diagnosisTime: new Date().toLocaleString('zh-CN') }); @@ -595,6 +661,7 @@ function addDiagnosisItem() { name: undefined, verificationStatusEnum: 4, medTypeCode: undefined, + diagnosisSystem: '西医', diagSrtNo: form.value.diagnosisList.length + 1, iptDiseTypeCode: 2, diagnosisDesc: '', @@ -675,6 +742,44 @@ function handleMaindise(value, index) { } } +/** + * 诊断体系变化处理 + */ +function handleDiagnosisSystemChange(row, value) { + // 当切换到西医时,清空中医证候 + if (value === '西医') { + row.tcmSyndromeCode = ''; + row.tcmSyndromeName = ''; + } + // 当切换到中医时,加载中医证候选项 + if (value === '中医') { + loadTcmSyndromeOptions(); + } +} + +/** + * 加载中医证候选项 + */ +function loadTcmSyndromeOptions() { + getTcmSyndrome().then((res) => { + if (res.code == 200 && res.data && res.data.records) { + tcmSyndromeOptions.value = res.data.records.map((item) => ({ + value: item.ybNo, + label: item.name, + })); + } + }); +} + +/** + * 中医证候变化处理 + */ +function handleTcmSyndromeChange(row, value) { + // 找到对应的证候名称 + const syndrome = tcmSyndromeOptions.value.find(item => item.value === value); + row.tcmSyndromeName = syndrome ? syndrome.label : ''; +} + /** * 保存诊断 */ @@ -713,6 +818,15 @@ function handleSaveDiagnosis() { return; } + // 中医诊断完整性校验 + const incompleteTcmDiagnosis = form.value.diagnosisList.find( + (diagnosis) => diagnosis.diagnosisSystem === '中医' && !diagnosis.tcmSyndromeCode + ); + if (incompleteTcmDiagnosis) { + proxy.$modal.msgWarning('中医诊断不完整,请录入对应的证候!'); + return; + } + // 设置保存标志,避免触发watch监听器 isSaving.value = true; @@ -817,6 +931,7 @@ function handleNodeClick(data) { name: data.name, verificationStatusEnum: 4, medTypeCode: undefined, + diagnosisSystem: '西医', diagSrtNo: form.value.diagnosisList.length + 1, definitionId: data.definitionId, diagnosisDoctor: props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || userStore.name,