根因: - Bug #628** 的根本原因是诊断录入模块在前端层面缺少中医诊断的完整支持: - 1. **查询环节**:`index.vue` 的 `loadDiagnosisData` 通过 `filter(item => item.typeName !== '中医诊断')` 主动过滤掉中医诊断,导致页面只显示西医诊断 - 2. **录入环节**:`handleDiagnosisNameClick` 在诊断体系为"中医"时直接 `return`,阻断了中医诊断名称的选择入口 - 3. **保存环节**:`handleSaveDiagnosis` 将所有诊断(含中医)统一调用 `save-doctor-diagnosis` 接口,但该接口不支持中医诊断的 `syndromeGroupNo` 处理 - 4. **关联环节**:`diagnosislist` 组件缺少 `diagnosisSystem` prop 传递,导致诊断名称列表无法按体系过滤 修复: - `inpatientDoctor/home/components/diagnosis/index.vue`**(核心修复) - | 修改点 | 环节 | 变更内容 | - |---|---|---| - | 导入补全 | — | 新增 `saveTcmDiagnosis`、`getTcmDiagnosis`、`useUserStore` 导入 | - | `loadDiagnosisData` | 查询 | 移除中医过滤,改为 `Promise.all` 并行加载西医(`getEncounterDiagnosis`)和中医(`getTcmDiagnosis`),合并后按 `diagSrtNo` 排序 | - | `handleDiagnosisNameClick` | 录入 | 移除中医体系的 `return` 阻断,允许所有体系打开诊断名称选择弹窗 | - | `diagnosislist` prop | 录入 | 传递 `:diagnosis-system="scope.row.diagnosisSystem"`,使诊断名称列表按体系过滤(西医 typeCode=1 / 中医 typeCode=2) | - | `handleSaveDiagnosis` | 保存 | 拆分西医和中医诊断:西医走 `saveDiagnosis`(`save-doctor-diagnosis`),中医走 `saveTcmDiagnosis`(`save-tcm-diagnosis`),各自使用正确的后端接口 | - `inpatientDoctor/home/components/diagnosis/diagnosis.vue`**(体验修复) - | 修改点 | 环节 | 变更内容 | - |---|---|---| - | `handleBlur` | 录入 | 添加 200ms 延迟关闭 popover,避免点击诊断列表项时 blur 事件过早触发导致 popover 关闭 | - | `handleSelsectDiagnosis` | 录入 | 选择诊断后显式关闭 popover | - ### 全链路验证状态 - | 环 | 状态 | 说明 | - |---|---|---| - | ② 保存 | ✅ 已修改 | 西医→`save-doctor-diagnosis`,中医→`save-tcm-diagnosis`,中医证候必填校验已有 | - | ③ 查询 | ✅ 已修改 | `loadDiagnosisData` 并行加载西医+中医诊断,合并展示 | - | ④ 修改 | ✅ 正常 | 编辑回显通过查询接口加载,修改后走保存流程 | - | ⑤ 删除 | ✅ 正常 | `handleDelete` 支持删除选中项,中医/西医均可删除 | - | ⑥ 关联 | ⚠️ 注意 | `saveTcmDiagnosis` 的 `syndromeGroupNo` 使用时间戳生成,需确保后端 `save-tcm-diagnosis` 接口支持此格式(与 `chineseMedicineDialog.vue` 一致) | - ### 验证结果 - ✅ `vite build` 编译通过(1m 40s) - ✅ `eslint index.vue` 零错误 - ✅ `diagnosis.vue` 的 lint 错误(`patientInfo` 重复键)为预先存在问题,与本次修改无关
The file is empty.