Fix Bug #462: [目录管理-诊疗目录] 编辑弹窗中"所需标本"下拉框数据加载失败,显示为"无数据"

根因: 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>
This commit is contained in:
赵云
2026-05-16 18:16:33 +08:00
parent 1308d0299e
commit a09af3a384
2 changed files with 21 additions and 24 deletions

View File

@@ -14,31 +14,31 @@
6. 最终查询 `sys_dict_data` 表,条件:`status = '0' AND dict_type = 'specimen_code'`
### 根因
`sys_dict_type` **缺少 `specimen_code` 字典类型**,导致 `sys_dict_data` 表中也无对应的标本数据记录。
**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 属于同类问题——新增字典类型时只在前端引用了 `useDict('specimen_code')`,但后端数据库中未创建对应的字典类型和数据
**与 Bug #433 对比**Bug #433 是"麻醉方法回显为代码"和"外请专家姓名数据未加载",根因也是字典数据缺失。本次 Bug #462 属于同类问题——字典类型已创建但生产环境的数据记录未同步插入
## 影响范围
- **前端文件**`openhis-ui-vue3/src/views/catalog/diagnosistreatment/components/diagnosisTreatmentDialog.vue`(仅一处引用)
- **后端文件**:无代码变更,纯数据问题
- **数据库表**`sys_dict_type`(插入字典类型)、`sys_dict_data`插入7条标本数据
- **数据库表**`hisprd.sys_dict_data`插入7条标本数据
- **影响接口**`GET /system/dict/data/type/specimen_code`
## 修复方案
执行 DDL 脚本 `sql/bug_462_add_specimen_code_dict.sql`
`hisprd.sys_dict_data` 表插入7条标本记录
- 血液(1)、尿液(2)、粪便(3)、呼吸道(4)、无菌体液(5)、生殖道(6)、其他(99)
1.`sys_dict_type` 表插入 `specimen_code` 字典类型dict_name='所需标本'
2.`sys_dict_data` 表插入7条标本记录
- 血液(1)、尿液(2)、粪便(3)、呼吸道(4)、无菌体液(5)、生殖道(6)、其他(99)
**注意**:数据库中已存在该字典数据(由测试验证),需检查 DDL 是否已执行。
若数据已存在但前端仍显示"无数据",则需重启后端服务刷新字典缓存(`SysDictTypeServiceImpl.loadingDictCache()`)。
**注意**hisprd 的 sys_dict_data 表无 `py_str` 字段旧表结构DDL 中不包含该字段。
## 验证计划
1. 确认数据库`sys_dict_type` 存在 `specimen_code` 记录
2. 确认数据库中 `sys_dict_data` 存在7条 `specimen_code` 数据status='0'
3. 重启后端服务(刷新字典缓存)
4. 前端进入诊疗目录编辑弹窗,点击"所需标本"下拉框应显示7条标本选项
5. 选择任意标本后保存,再次编辑应正确回显已选标本
1. 确认 hisprd `sys_dict_data` 存在7条 `specimen_code` 数据status='0')✅ 已验证
2. 重启后端服务(刷新字典缓存
3. 前端进入诊疗目录编辑弹窗,点击"所需标本"下拉框应显示7条标本选项
4. 选择任意标本后保存,再次编辑应正确回显已选标本

View File

@@ -1,13 +1,10 @@
-- Bug #462: 诊疗目录编辑弹窗中"所需标本"下拉框数据加载失败
-- 根因: sys_dict_type 表中缺少 specimen_code 字典类型sys_dict_data 中缺少对应数据
-- 修复: 插入字典类型及7条标本数据
-- 根因: hisprd schema 中 sys_dict_type 存在 specimen_code 类型,sys_dict_data 中缺少对应的7条数据记录
-- 修复: 在 hisprd schema 中插入7条标本数据
-- 验证: hisdev/histest1 已有数据,仅 hisprd 缺失
-- 注意: hisprd 的 sys_dict_data 表无 py_str 字段(旧表结构)
-- 插入字典类型
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
VALUES ('标本类型', 'specimen_code', '0', 'admin', NOW(), '诊疗项目所需标本类型字典');
-- 插入标本数据
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, status, create_by, create_time, remark)
INSERT INTO hisprd.sys_dict_data (dict_sort, dict_label, dict_value, dict_type, status, create_by, create_time, remark)
VALUES
(1, '血液', '1', 'specimen_code', '0', 'admin', NOW(), '血液标本'),
(2, '尿液', '2', 'specimen_code', '0', 'admin', NOW(), '尿液标本'),
@@ -15,4 +12,4 @@ VALUES
(4, '呼吸道', '4', 'specimen_code', '0', 'admin', NOW(), '呼吸道标本'),
(5, '无菌体液', '5', 'specimen_code', '0', 'admin', NOW(), '无菌体液标本'),
(6, '生殖道', '6', 'specimen_code', '0', 'admin', NOW(), '生殖道标本'),
(7, '其他', '7', 'specimen_code', '0', 'admin', NOW(), '其他标本');
(7, '其他', '99', 'specimen_code', '0', 'admin', NOW(), '其他标本');