根因: hisprd schema 中 sys_dict_data 表缺少 specimen_code 字典的7条数据记录 (hisdev/histest1 已有数据,仅生产环境缺失) 修复: 在 hisprd.sys_dict_data 插入7条标本数据(血液/尿液/粪便/呼吸道/无菌体液/生殖道/其他) 注意: hisprd 表无 py_str 字段(旧表结构),DDL 已适配 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
45 lines
2.5 KiB
Markdown
45 lines
2.5 KiB
Markdown
# Bug #462 分析报告
|
||
|
||
## Bug 描述
|
||
[目录管理-诊疗目录] 编辑弹窗中"所需标本"下拉框数据加载失败,显示为"无数据"
|
||
|
||
## 根因分析
|
||
|
||
### 数据流追踪
|
||
1. 前端组件 `diagnosisTreatmentDialog.vue` 第168-178行渲染"所需标本"下拉框
|
||
2. 下拉框选项来自 `specimen_code` 变量(第172行 `v-for="category in specimen_code"`)
|
||
3. `specimen_code` 通过 `proxy.useDict('specimen_code', ...)` 加载(第378-386行)
|
||
4. `useDict` 调用 API `/system/dict/data/type/specimen_code`(`src/utils/dict.js` 第16行)
|
||
5. 后端 `SysDictDataController.dictType()` 处理请求(第65-73行,**无权限校验**)
|
||
6. 最终查询 `sys_dict_data` 表,条件:`status = '0' AND dict_type = 'specimen_code'`
|
||
|
||
### 根因
|
||
**hisprd(生产)schema** 中 `sys_dict_data` 表 **缺少 `specimen_code` 字典类型的7条数据记录**。
|
||
|
||
经核实:
|
||
- `hisdev` schema:`sys_dict_type` + `sys_dict_data`(7条)均已存在 ✅
|
||
- `histest1` schema:`sys_dict_type` + `sys_dict_data`(7条)均已存在 ✅
|
||
- `hisprd` schema:`sys_dict_type` 存在(dict_id=250),但 `sys_dict_data` 为 **0条** ❌
|
||
|
||
前端 `useDict('specimen_code')` 调用 API 后返回空数组 `[]`,下拉框 `v-for` 遍历空数组,没有任何 `<el-option>` 渲染,Element Plus 显示默认空状态文案"无数据"。
|
||
|
||
**与 Bug #433 对比**:Bug #433 是"麻醉方法回显为代码"和"外请专家姓名数据未加载",根因也是字典数据缺失。本次 Bug #462 属于同类问题——字典类型已创建但生产环境的数据记录未同步插入。
|
||
|
||
## 影响范围
|
||
- **前端文件**:`openhis-ui-vue3/src/views/catalog/diagnosistreatment/components/diagnosisTreatmentDialog.vue`(仅一处引用)
|
||
- **后端文件**:无代码变更,纯数据问题
|
||
- **数据库表**:`hisprd.sys_dict_data`(插入7条标本数据)
|
||
- **影响接口**:`GET /system/dict/data/type/specimen_code`
|
||
|
||
## 修复方案
|
||
在 `hisprd.sys_dict_data` 表插入7条标本记录:
|
||
- 血液(1)、尿液(2)、粪便(3)、呼吸道(4)、无菌体液(5)、生殖道(6)、其他(99)
|
||
|
||
**注意**:hisprd 的 sys_dict_data 表无 `py_str` 字段(旧表结构),DDL 中不包含该字段。
|
||
|
||
## 验证计划
|
||
1. 确认 hisprd 中 `sys_dict_data` 存在7条 `specimen_code` 数据(status='0')✅ 已验证
|
||
2. 重启后端服务(刷新字典缓存)
|
||
3. 前端进入诊疗目录编辑弹窗,点击"所需标本"下拉框,应显示7条标本选项
|
||
4. 选择任意标本后保存,再次编辑应正确回显已选标本
|