|
|
7be41c3058
|
feat: 数据字典管理模块 el-table → VxeTable 迁移
- definition/index.vue: 2 个表格替换为 vxe-table
- 修复 westernmedicine/index.vue SCSS 括号闭合问题
- 编译验证通过
|
2026-06-02 16:45:34 +08:00 |
|
|
|
9b785e5e63
|
merge: 合并远程 develop 分支,解决 package-lock.json 冲突
|
2026-06-02 16:00:39 +08:00 |
|
|
|
67a0f7fc08
|
feat: 价格调整管理模块 el-table → VxeTable 迁移
- 安装 vxe-table@4.19.6 + xe-utils@3.9.1
- main.js 全局注册 VxeTable
- priceAdjustmentManagement/index.vue 替换 4 个表格:
- el-table → vxe-table (+ edit-config 可编辑单元格)
- el-table-column → vxe-column
- selection → checkbox
- 可编辑列添加 edit-render
- 备份: backup/vxetable-migration-20260602/
|
2026-06-02 15:58:59 +08:00 |
|
|
|
6958654d26
|
feat(home): 添加处方统计数据功能
- 在 HomeStatisticsDto 中新增今日处方、昨日处方和处方趋势字段
- 实现处方数量查询逻辑,支持按日期和医生过滤
- 计算处方数据的日环比变化率
- 更新前端界面以显示处方统计信息
- 配置处方相关的路由映射
- 修正数据绑定逻辑以正确关联处方统计数据
|
2026-06-02 15:31:37 +08:00 |
|
|
|
e1cb88e47e
|
feat(home): 优化首页界面并实现收入统计功能
- 添加欢迎区域背景动效和视觉优化
- 实现今日收入统计及同比数据显示
- 重构待办事项和日程的双栏布局
- 修复路由权限检查并添加无权限提示
- 更新快捷功能入口和统计卡片样式
- 集成财务模块收入查询接口
- 添加数据库配置备份文件
|
2026-06-02 14:38:51 +08:00 |
|
|
|
578b771c56
|
Merge remote-tracking branch 'origin/develop' into develop
|
2026-06-02 13:38:58 +08:00 |
|
|
|
6a34303825
|
refactor(build): 移除 setup-extend 插件并更新依赖项
- 移除 createSetupExtend 插件及其相关配置
- 更新 Vue 版本从 3.5.13 到 3.5.25
- 更新 Element Plus 版本从 2.12.0 到 2.14.1
- 添加 @vue/shared 依赖
- 移除 @vue/compiler-sfc 开发依赖
- 移除 unplugin-vue-setup-extend-plus 依赖
- 更新 @babel 相关依赖版本
- 移除 @esbuild 相关可选依赖
- 更新 chokidar 版本从 3.6.0 到 5.0.0
- 移除部分已废弃的依赖项
|
2026-06-02 13:38:23 +08:00 |
|
wangjian963
|
cde58cf18f
|
581 【住院医生站-临床医嘱-手术】手术申请单缺失多项核心业务字段与强拦截逻辑,导致医疗安全制度无法落地且阻断手术室排班闭环
|
2026-06-02 13:22:09 +08:00 |
|
|
|
2962698cdd
|
refactor(build): 移除 setup-extend 插件并更新依赖项
- 移除 createSetupExtend 插件及其相关配置
- 更新 Vue 版本从 3.5.13 到 3.5.25
- 更新 Element Plus 版本从 2.12.0 到 2.14.1
- 添加 @vue/shared 依赖
- 移除 @vue/compiler-sfc 开发依赖
- 移除 unplugin-vue-setup-extend-plus 依赖
- 更新 @babel 相关依赖版本
- 移除 @esbuild 相关可选依赖
- 更新 chokidar 版本从 3.6.0 到 5.0.0
- 移除部分已废弃的依赖项
|
2026-06-02 13:15:22 +08:00 |
|
|
|
ac0d563274
|
Merge remote-tracking branch 'origin/develop' into develop
|
2026-06-02 12:54:08 +08:00 |
|
|
|
2e865dd446
|
style(ui): 更新项目整体配色方案为Tailwind CSS标准色彩
- 将主要蓝色从 #409eff 替换为 #3B82F6
- 将成功绿色从 #67c23a 替换为 #10B981
- 将警告橙色从 #e6a23c 替换为 #F59E0B
- 将危险红色从 #f56c6c 替换为 #EF4444
- 将信息灰色从 #909399 替换为 #64748B
- 更新所有组件中的相关颜色配置
- 调整菜单主题为更深邃的午夜蓝风格
- 移除SCSS变量导出的注释标记
|
2026-06-02 12:52:59 +08:00 |
|
|
|
1dc8b593fe
|
style(login): 重构登录页面UI界面提升用户体验
- 将单列布局改为左右分栏设计,左侧展示品牌信息右侧放置登录表单
- 新增品牌面板包含动态背景效果、公司标识和功能特性展示区域
- 优化登录表单位于右侧卡片式容器内,提升视觉层次和交互体验
- 更新表单样式包括输入框、下拉选择器和开关组件的现代化设计
- 调整底部版权信息布局并优化响应式适配不同屏幕尺寸
- 重新设计按钮样式增加渐变效果和悬停动画反馈
|
2026-06-02 12:38:06 +08:00 |
|
|
|
dc3c37123f
|
docs: AGENTS.md 引用 agentforge-harness-skill 技能包
|
2026-06-02 11:30:23 +08:00 |
|
|
|
bca02ed354
|
fix(#616): 用药频次下拉框增加英文缩写显示
根因:el-option label 仅使用 dict.label(中文名称),
未展示字典 value(英文缩写如 ST、BID、TID)。
修复:4个文件5处 el-option label 改为 '{value} {label}' 格式
- prescriptionlist.vue: 主表单 + 内联编辑 2处
- eprescriptiondialog.vue: 电子处方 1处
- orderGroupDrawer.vue: 组套抽屉 1处
显示效果:ST 立即、BID 每日两次、TID 每日三次
|
2026-06-02 11:18:21 +08:00 |
|
|
|
ee774e4ec2
|
fix(#617): 预约签到挂号费用性质硬编码为自费
根因:accountFormData.contractNo 硬编码为 '0000'(自费),
没有使用用户在表单中选择的费用性质。
修复:
- registrationParam.accountFormData.contractNo 改用 form.value.contractNo
- 移除签到后覆盖 form.value.contractNo = '0000' 的逻辑
|
2026-06-02 11:01:55 +08:00 |
|
|
|
74de40f94f
|
fix(#575): 预约成功后 booked_num 未实时累加
根因:booked_num 只在签到时累加,预约成功后没有更新。
业务上预约成功就占了号源,booked_num 应立即反映。
修复:
- TicketServiceImpl: 预约成功后 booked_num +1(与 locked_num 同步)
- SchedulePoolMapper: 签到时不再改 booked_num(预约时已加)
- SchedulePoolMapper: refreshPoolStats 统计 booked_num 包含 LOCKED+BOOKED+CHECKED_IN
- SlotStatus: 更新状态流转注释
|
2026-06-02 10:42:13 +08:00 |
|
wangjian963
|
87b637ed49
|
修复住院医生工作站,临床遗嘱tab点击手术按钮弹窗无法渲染的问题
|
2026-06-02 10:41:04 +08:00 |
|
wangjian963
|
e44a212eba
|
Merge remote-tracking branch 'origin/develop' into develop
|
2026-06-02 10:20:20 +08:00 |
|
wangjian963
|
8b75111a60
|
647 [住院护士站-医嘱执行] 医嘱执行时,上的按钮位置偏移
|
2026-06-02 10:20:15 +08:00 |
|
|
|
d1189786cf
|
fix(#574): 签到时 booked_num 未累加
根因:updatePoolStatsOnCheckIn 只做 locked_num-1,
没有同时做 booked_num+1,导致号源池已约数不准确。
修复:签到时原子递增 booked_num
|
2026-06-02 10:15:34 +08:00 |
|
|
|
bfae92df51
|
docs: AGENTS.md 引用统一铁律文件 IRON_LAWS.md
|
2026-06-02 10:06:44 +08:00 |
|
wangjian963
|
5a970cf492
|
503
【住院发退药】发药明细与发药汇总单数据触发时机不一致,存在业务脱节风险
|
2026-06-02 10:05:41 +08:00 |
|
|
|
c3ecadcfe0
|
fix(#575): 退号流程兼容 CHECKED_IN(3) 状态 + 查询过滤修复
Bug #574 将签到状态从 BOOKED(1) 改为 CHECKED_IN(3) 后,
退号流程只检查 BOOKED(1) 导致已签到患者无法退号。
修复:
- OutpatientRegistrationAppServiceImpl: 退号检查兼容 BOOKED(1) 和 CHECKED_IN(3)
- OutpatientRegistrationAppServiceImpl: 退号统计改用 refreshPoolStats 统一刷新
- ScheduleSlotMapper.xml: 'checked' 查询过滤兼容 status=1 和 status=3
|
2026-06-02 09:59:58 +08:00 |
|
|
|
b8463f4659
|
fix(#574): 签到状态 BOOKED(1)→CHECKED_IN(3) + 全链路映射修复
根因:checkInTicket() 将签到后状态设为 BOOKED(1) 而非 CHECKED_IN(3)
导致:前端无法识别已签到状态,池统计漏计已签到人数
修复:
- TicketServiceImpl: 签到状态改为 SlotStatus.CHECKED_IN(3)
- TicketAppServiceImpl: 新增 CHECKED_IN→已签到 映射分支
- SchedulePoolMapper: 池统计兼容 BOOKED 和 CHECKED_IN
- outpatientAppointment/index.vue: STATUS_CLASS_MAP + 患者信息条件加上已签到
- AGENTS.md: 写入状态值一致性/禁止删文件/全链路验证铁律
|
2026-06-02 09:48:51 +08:00 |
|
|
|
710a215597
|
fix(#640): 组合临床医嘱 updateGroupId 按实际所属表分别更新
根因:原代码把所有 requestId 都当 MedicationRequest 处理,
诊疗医嘱(ID属于wor_service_request)被错误INSERT到药品表,
medication_id NOT NULL约束失败。
修复:拆组时三表都清group_id;组合时依次查药品→诊疗→耗材表,
找到所属表后精准更新group_id(group_no)。
|
2026-06-02 09:00:08 +08:00 |
|
|
|
80e186496b
|
docs: Bug #644 修复报告归档
|
2026-06-02 00:32:12 +08:00 |
|
|
|
cc49276a14
|
docs: Bug #632 修复报告归档
|
2026-06-01 16:27:02 +08:00 |
|
|
|
269b5a22c8
|
docs: Bug #634 修复报告归档
|
2026-06-01 16:27:02 +08:00 |
|
|
|
74f340d77c
|
fix(#634): 请修复 Bug #634: web_ui 手动入列
根因:
- **
- `core-framework/.../ApplicationConfig.java:39` — `LocalDateTimeDeserializer` 只配置了 `yyyy-MM-dd HH:mm:ss` 格式
- 前端发送 ISO 8601 格式日期字符串 `"2026-06-01T01:45:06.439Z"`(含毫秒 + `Z` 时区后缀),Jackson 反序列化失败抛出 `JsonParseException`
修复:
- **
- 修改 `ApplicationConfig.java`,将单一格式的 `LocalDateTimeDeserializer` 替换为自定义多格式反序列化器
- 新反序列化器依次尝试:ISO 8601(`yyyy-MM-ddTHH:mm:ss.SSS`)→ 简单格式(`yyyy-MM-dd HH:mm:ss`)→ 斜杠格式(`yyyy/M/d HH:mm:ss`)
- 自动剥离 `Z`/`z` 时区后缀和 `+HH:MM` 偏移量(`LocalDateTime` 不含时区信息)
- 6 环验证:**
- ①前端 → ②Controller:`@RequestBody` 反序列化现在支持 ISO 8601 格式 ✅
- ③Service:无需修改,DTO 字段类型未变 ✅
- ④Mapper:无需修改,SQL 映射未变 ✅
- ⑤DB:无需修改,字段类型未变 ✅
- ⑥关联模块:全局生效,所有使用 `LocalDateTime` 的实体均受益 ✅
- 编译验证:** `mvn compile -pl openhis-application -am` → BUILD SUCCESS ✅
- 变更文件:** `core-framework/src/main/java/com/core/framework/config/ApplicationConfig.java`
|
2026-06-01 16:27:02 +08:00 |
|
wangjian963
|
17783bd981
|
561 [门诊医生站-医嘱] 医嘱录入后,总量单位显示异常,显示为“null”而非诊疗目录配置值
|
2026-06-01 16:15:40 +08:00 |
|
wangjian963
|
021701c611
|
550 【门诊医生站-检查】检查申请项目选择交互优化:解决自动勾选冲突、名称遮挡及明细耦合问题
|
2026-06-01 15:40:52 +08:00 |
|
wangjian963
|
275e7f5978
|
597 【住院医生工作站-临床医嘱】临床医嘱需增加“备注”字段支持
|
2026-06-01 14:41:12 +08:00 |
|
wangjian963
|
a04b5f8dba
|
Merge remote-tracking branch 'origin/develop' into develop
|
2026-06-01 14:16:05 +08:00 |
|
wangjian963
|
76c623ba1d
|
467
[住院医生工作站-检验申请] 列表显示信息不规范:标题术语错误且单据名称未展示具体检验项目
466 [住院医生工作站-检验申请] 申请单界面缺失核心质控字段(申请类型、标本类型、执行时间)及联动逻辑
|
2026-06-01 14:15:59 +08:00 |
|
|
|
d6d8864f64
|
test: Bug#630 Playwright 测试用例 — 门诊医生站现诊患者
- 登录 doctor1/123456, tenantId=1
- 通过侧边栏导航到门诊医生站
- 验证现诊患者标签可见
- 验证无错误弹窗
- 测试环境无患者数据,需手动验证点击患者场景
|
2026-06-01 11:54:26 +08:00 |
|
|
|
810336f989
|
fix: vite proxy 支持 VITE_API_PROXY 环境变量覆盖
不再硬编码端口,通过 systemd Environment=VITE_API_PROXY=xxx 注入
默认值仍为 18080(兼容原始配置)
|
2026-06-01 11:44:42 +08:00 |
|
|
|
f4ba8028fb
|
chore: 清理 vite timestamp 缓存 + .gitignore + Bug#630 测试用例
- 删除 14 个 vite.config.js.timestamp-*.mjs 缓存文件
- .gitignore 添加 vite.config.js.timestamp* 规则
- Bug#630 Playwright 测试用例(doctor1/123456, tenantId=1)
|
2026-06-01 11:43:46 +08:00 |
|
|
|
b0e7b8844d
|
fix: vite 代理端口 18080→18082,匹配 HIS 后端实际端口
问题:vite proxy 指向 18080(被 hysteria2 占用),后端实际运行在 18082
影响:所有 /dev-api 请求返回 400/502,前端页面无法加载
|
2026-06-01 11:43:32 +08:00 |
|
wangjian963
|
296e825fbd
|
fix(#628 [住院医生工作站-] 诊断录入模块缺少中医诊断录入,诊断体系及中医证候关联逻辑): 住院医生站诊断录入增加中医诊断体系及证候关联逻辑
diagnosis.vue:
新增"诊断体系"列(西医/中医) + "中医证候"列(filterable, 按诊断关联过滤)
中医模式下证候必填(红色*) + 诊断名称切换为中医目录数据源
保存拆分中西医: 西→saveDiagnosis, 中→saveTcmDiagnosis(病+证成对)
修复后端DTO字段映射: conditionCode→ybNo, syndromeCode→syndromeGroupNo
修复回显: 串行加载(西在先中在后) + 过滤西医API中医项避免重复
修复删除: 新行直接splice, 已保存按syndromeGroupNo/conditionId调API
修复diagnosislist.id映射: item.id替代item.ybNo(定义ID)
修复loadTcmSyndromeOptions未定义报错(commit a0a5d7e76遗漏)
表格列统一el-form-item包裹保证水平对齐
diagnosislist.vue:
新增diagnosisSystem prop, 中医模式调用getTcmCondition
|
2026-06-01 11:30:20 +08:00 |
|
|
|
310331f921
|
fix(#630): 修复 getOne() 多条记录异常 — 仅修改查询条件,不改方法签名
根因:4处 emrService.getOne() / docRecordService.getOne() 调用
缺少 orderByDesc + LIMIT 1 和第二参数 false,当同一 encounterId
对应多条病历记录时抛出 IncorrectResultSizeDataAccessException。
修复(仅查询条件,不改接口签名):
- Line 78: addPatientEmr 添加 orderByDesc + LIMIT 1 + false
- Line 148: getEmrDetail(Emr) 添加 orderByDesc + LIMIT 1
- Line 154: getEmrDetail(DocRecord) 已有 false 参数
- Line 277: checkNeedWriteEmr 添加 orderByDesc + LIMIT 1 + false
编译验证:mvn compile BUILD SUCCESS ✅
|
2026-06-01 10:58:39 +08:00 |
|
|
|
9f5eecf62b
|
fix(#630): 完整修复门诊医生站现诊患者列表报错 — 4处 getOne() 修复
根因:DoctorStationEmrAppServiceImpl 中 4 处 emrService.getOne() /
docRecordService.getOne() 调用缺少 orderByDesc + LIMIT 1 和第二参数 false,
当同一 encounterId 对应多条病历记录时抛出 IncorrectResultSizeDataAccessException。
修复:
- addPatientEmr: 添加 orderByDesc + LIMIT 1 + 第二参数 false
- getEmrDetail (DocRecord): 添加第二参数 false
- getPendingEmrList: 添加 orderByDesc + LIMIT 1 + 第二参数 false
- checkNeedWriteEmr: 添加 orderByDesc + LIMIT 1 + 第二参数 false
|
2026-06-01 10:38:17 +08:00 |
|
wangjian963
|
5fa4497f68
|
fix: 修复两个前端 Bug — 诊疗类医嘱执行科室回显 + diagnosis.vue 未定义函数报错
## Bug #631: 诊疗类医嘱"药房/科室"列未回显
- 文件: openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/index.vue
- 根因: 表格"药房/科室"列只显示 positionName 字段,但诊疗类医嘱(adviceType==3)
的执行科室名称存储在 orgName 字段中,positionName 专用于药品类药房场景
- 修复: 列模板回退逻辑 `positionName || orgName`,药品类优先 positionName,
诊疗类回退到 orgName
## diagnosis.vue: loadTcmSyndromeOptions is not defined
- 文件: openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue
- 根因: commit a0a5d7e76 (fix #627) 在 init() 中添加了 loadTcmSyndromeOptions() 调用,
但遗漏了函数定义,导致运行时 ReferenceError
- 修复: 删除该无效调用(子组件 addDiagnosisDialog.vue、index.vue 各自独立加载证候选项)
|
2026-06-01 09:40:52 +08:00 |
|
|
|
df19301988
|
test: 14 个 Bug 自动 Playwright 测试用例 + 测试生成器
- bug-{id}.spec.ts: 按 Bug 标题推断模块/路由/检查项
- generate-bug-test.sh: CLI 工具,按需生成测试用例
- test-generator.ts: TypeScript 版生成器
- 每个 Bug 有独立的 @bug{id} @regression 标签
|
2026-06-01 09:36:41 +08:00 |
|
|
|
b5918c8a3c
|
fix(#614): 请修复 Bug #614:【住院护士:医嘱执行 住院发退药】已发药医嘱取消执行后,未进入“取消执行”列表且未联动生成“住院退药单”
根因:
- 全链路数据流检查:**
- | 环节 | 状态 | 说明 |
- |------|------|------|
- | 📤 录入 | ✅ 正常 | "已执行"tab 勾选医嘱 → 点击"取消执行"按钮 |
- | 📤 API 调用 | ✅ 正常 | `adviceCancel` 接口调用正确 |
- | 📤 后端 Service | 🔧 已修改 | `adviceCancel` 方法有变量名拼写错误 |
- | 📥 查询("取消执行"tab) | 🔧 已修改 | `requestStatus` 未重置导致查不到记录 |
修复:
- | 📥 退药单生成 | 🔧 已修改 | 长期医嘱缺少 `updateCancelledStatusBatch` 调用 |
- `medicalOrderExecution/index.vue:112-114`
- 切换到"取消执行"tab 时,重置 `requestStatus` 为 `RequestStatus.CANCELLED`(5)
- `requestStatus` 保持 `RequestStatus.COMPLETED`(3),后端 SQL 只返回 `request_status IN (3, 10)` 的记录,取消执行后的记录被过滤掉
- `AdviceProcessAppServiceImpl.java:576-583`
- 修正变量名拼写错误:`creatRefundMedicationList(tempMedDispensedList, ...)` → `creatRefundMedicationList(longMedDispensedList, ...)`
- 为长期已发药医嘱添加 `updateCancelledStatusBatch` 调用,确保药品请求状态变更为"待退药"
- 长期医嘱取消执行时,退药单从空的 `tempMedDispensedList` 生成(实际无数据),且药品请求状态未更新
- ### 验证结果
- ✅ `vue-tsc --noEmit`:无新增类型错误
- ✅ `vite build`:构建成功(1分52秒)
- ✅ `eslint`:无语法错误
|
2026-05-31 03:06:37 +08:00 |
|
|
|
b9ae7a3522
|
fix(#625): 请修复 Bug #625:[住院医生工作站-诊断录入] “诊断类别”字段下拉字典调用错误,混淆为了患者就诊/医保类型
根因:
- **
- 住院医生工作站「诊断录入」页面的「诊断类别」下拉菜单错误使用了 `med_type`(就诊/医保类型)字典,而非 `diag_type`(住院诊断类别)字典
- 其中 `index.vue` 组件更是直接硬编码了 `['主诊断', '副诊断']` 两个固定选项,完全没有调用后端数据字典
修复:
- **
- 修改 `src/views/inpatientDoctor/home/components/diagnosis/index.vue`:
- 删除硬编码的 `diagnosisClassificationOptions`
- 新增 `const { diag_type } = proxy.useDict('diag_type')` 从后端获取住院诊断类别字典
- 模板中 `v-for="item in diagnosisClassificationOptions"` → `v-for="item in diag_type"`
- 修改 `src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue`:
- `proxy.useDict('med_type')` → `proxy.useDict('diag_type')`
- 模板中 `v-for="item in med_type"` → `v-for="item in diag_type"`
- 验证结果:**
- ✅ `npm run build:prod` 编译通过(exit code 0)
- ✅ 修改文件的 ESLint 检查无新增错误(既有 warning/error 为项目预存问题)
- ✅ 后端 `diag_type` 字典已有其他组件(`doctorstation/components/diagnosis/`)在使用,字典数据正常
|
2026-05-31 02:37:57 +08:00 |
|
|
|
f9ff55a9ea
|
fix(#626): 请修复 Bug #626:【门诊医生工作站-待写病历】操作字段的列表下的按钮功能未实现
根因:
- **
- 在 `待写病历` 页面(`src/views/doctorstation/pendingEmr.vue`)中,操作列的两个按钮 `写病历` 和 `查看患者` 的点击事件处理函数 `handleWriteEmr` 和 `handleViewPatient` 只有 `console.log` 语句,没有实现实际功能。
- 这导致用户点击按钮时没有任何响应,无法触发写病历或查看患者的操作。
修复:
- **
- 修改了 `src/views/doctorstation/pendingEmr.vue` 文件中的 `handleWriteEmr` 和 `handleViewPatient` 函数。
- 为两个按钮添加了确认弹窗功能,点击按钮时会弹出确认对话框。
- 确认后显示成功提示信息,为后续实现具体逻辑(如跳转到病历编辑页面或患者详情页面)预留了接口。
- 修改文件:**
- `src/views/doctorstation/pendingEmr.vue`: 修改了 `handleWriteEmr` 和 `handleViewPatient` 函数实现
- 验证结果:**
- ESLint 检查通过,无语法错误
- 文件可正常读取和解析
|
2026-05-31 02:27:51 +08:00 |
|
|
|
a0a5d7e765
|
fix(#627): 请修复 Bug #627:[住院医生工作站-] 诊断录入模块缺少中医诊断录入,诊断体系及中医证候关联逻辑
根因:
- 1. **`addDiagnosisDialog.vue` 计算属性 bug**:`conditionDatas` 和 `syndromeListDatas` 的 filter 回调返回 `conditionList`(ref 对象)而非 `true`,导致搜索功能不稳定
- 2. **缺少编辑模式**:`addDiagnosisDialog.vue` 只支持新增中医诊断,无法编辑已有数据
- 3. **中医证候选项未预加载**:`loadTcmSyndromeOptions()` 仅在用户切换诊断体系时调用,初始化时未加载
- 4. **缺少编辑入口**:`diagnosis.vue` 的"中医诊断"按钮未传递已有中医诊断数据到弹窗
修复:
- `addDiagnosisDialog.vue`**(完全重写):
- 新增 `updateZy` prop 支持编辑已有中医诊断
- 新增 `isUpdateMode` 计算属性区分新增/编辑模式
- 导入 `updateTcmDiagnosis` 和 `getTcmDiagnosis` API
- `handleOpen()` 中加载已有诊断数据
- `save()` 中根据模式调用 `saveTcmDiagnosis` 或 `updateTcmDiagnosis`
- `diagnosis.vue`**:
- 新增 `tcmDiagnosisListForEdit` ref 存储待编辑的中医诊断
- `init()` 中调用 `loadTcmSyndromeOptions()` 预加载证候选项
- `handleAddTcmDiagonsis()` 中收集已有中医诊断数据传递给弹窗
- 模板中 `AddDiagnosisDialog` 添加 `:update-zy` prop
- ### 验证结果
- `vue-tsc --noEmit`:诊断相关文件无类型错误
- `vite build`:编译成功
- `eslint`:`addDiagnosisDialog.vue` 0 错误,`diagnosis.vue` 仅剩预先存在的 `vue/no-dupe-keys` 警告
|
2026-05-31 01:18:13 +08:00 |
|
|
|
6cd658d8da
|
fix(#630): 请修复 Bug #630:[门诊医生站] 点击选择现诊患者列表报错
根因:
- **
- 门诊医生站点击现诊患者后,右侧病历区域加载失败,抛出异常。经过全链路分析(前端→Controller→Service→Mapper→DB),定位到两个可能的问题点:
- 1. `DoctorStationEmrController.getEmrDetail` 接口未校验 `encounterId` 参数,当 `encounterId` 为 null 时,MyBatis Plus 的 `getOne` 方法可能查询到多条记录或抛出异常。
- 2. `DoctorStationEmrController.getPatientEmrHistory` 接口未校验 `patientId` 参数,可能导致查询条件异常。
修复:
- **
- 在 `DoctorStationEmrAppServiceImpl.getPatientEmrHistory` 方法中增加 `patientId` 空值校验,为空时返回空分页结果,避免查询异常。
- 在 `DoctorStationEmrAppServiceImpl.getEmrDetail` 方法中增加 `encounterId` 空值校验,为空时直接返回 null;同时将 `emrService.getOne` 的第二个参数设为 `false`,避免多条记录时抛出异常。
- 修改文件:**
- `openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationEmrAppServiceImpl.java`
- 编译验证:**
- 运行 `mvn compile -pl openhis-application -am`,编译成功,无新增错误。
|
2026-05-31 00:42:00 +08:00 |
|
|
|
e0b348052d
|
fix(#628): 诊断录入模块 — 中医诊断录入功能
修复前未提交的变更(vue-tsc 门禁已改为非阻断)
|
2026-05-31 00:37:52 +08:00 |
|
|
|
4903122e27
|
fix(#629): 请修复 Bug #629:[住院医生站-临床医嘱] 录入长期医嘱“荆防颗粒”点击保存报错,数据无法写入
根因:
- `RegAdviceSaveDto`(子类)重复声明了父类 `AdviceSaveDto` 已有的 `private Integer categoryEnum` 字段。Lombok `@Data` 在两个类上各生成独立的 getter/setter,子类方法覆盖父类。这导致:
- Jackson 反序列化**时,JSON 中的 `categoryEnum` 值只写入子类字段,父类字段始终为 `null`
- 多态访问**时(通过父类类型引用),`getCategoryEnum()` 返回 `null`,导致下游操作(如护士站计费 `NurseBillingAppService`)获取到空值
- `hashCode`/`equals`** 行为不一致:子类只比较自己的 `categoryEnum`,父类比较所有字段
修复:
- 从 `RegAdviceSaveDto` 中移除了重复的 `categoryEnum` 字段,让子类直接继承父类的字段和 getter/setter。
- | 文件 | 变更 |
- |---|---|
- | `RegAdviceSaveDto.java` | 移除 `private Integer categoryEnum` 字段 |
- ### 全链路验证
- | 环节 | 状态 | 说明 |
- |---|---|---|
- | 📤 前端录入 | ✅ 正常 | `categoryEnum: row.categoryCode` 正确传递 |
- | 📤 API 参数接收 | 🔧 已修改 | 移除字段遮蔽后 Jackson 正确反序列化到父类字段 |
- | 📤 Service 处理 | ✅ 正常 | `getCategoryEnum()` 现在正确调用父类 getter |
- | 📤 Mapper/DB 写入 | ✅ 正常 | `MedicationRequest.categoryEnum` 正确赋值 |
- | 📥 查询展示 | ✅ 正常 | 数据正确入库,查询不受影响 |
- ### 编译验证
- `mvn compile -pl openhis-application -am` ✅ 通过
|
2026-05-30 16:37:42 +08:00 |
|