Commit Graph

1288 Commits

Author SHA1 Message Date
关羽
ede95be8f3 Fix Bug #461: 执行科室配置-项目名称回显为ID码,前后端类型不一致导致匹配失败
根因:ActivityDefinition.id 未加 @JsonSerialize,后端序列化为 JS Number(大数精度丢失),
而 OrgLocQueryDto.activityDefinitionId 有 ToStringSerializer 序列化为 String。
前端 === 严格比较 Number !== String,导致 filteredOptions 匹配失败。

修复:
1. ActivityDefinition.id 添加 @JsonSerialize(using = ToStringSerializer.class)
2. 前端 getAllImplementDepartment 中 value 转为 String() 统一类型

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 18:25:20 +08:00
关羽
1e4fa2d22a Fix Bug #455: 门诊医生站-医嘱:开立诊疗医嘱时执行科室默认获取逻辑有误且显示为原始ID
根因:setValue 中调用 findOrgNameById 时 organization 树数据尚未加载完成(异步竞态),
导致 findOrgNameById 返回空字符串,el-tree-select 无法解析 orgId 对应的名称,显示原始ID。

修复:1. 将 getOrgList 改为返回缓存的 Promise,可被 await
      2. 在 setValue 的诊疗医嘱分支中 await getOrgList(),确保 org 树加载完成后再查找科室名称

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 18:16:19 +08:00
赵云
6c274ad2b9 Fix Bug #433: 门诊手术安排:编辑弹窗内"麻醉方法"回显为代码且"外请专家姓名"数据未加载
根因:handleEdit/handleView 中用 nextTick 设置 anesMethod 类型转换,
但 nextTick 只等待 Vue DOM 更新,不等待 useDict 异步加载字典数据。
当 anesthesiaList 尚未加载时,el-select 没有选项可匹配,直接显示原始值。

修复:用 watch 监听 anesthesiaList,字典加载完成后再设置表单字段类型转换。
同时 handleEdit 和 handleView 两处均修复。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 17:18:01 +08:00
赵云
24c90e9cd7 Fix Bug #426: 门诊医生站-检查开立:已选择列表应支持树形展开,显示套餐明细(项目/数量/单价)
根因: loadPackageDetails 函数中 res.code === 200 判断永远为 false(Axios 拦截
器已对 code===200 解包返回 res.data,解包后对象不含 code 字段),导致树形表格懒加
载套餐明细永远返回空数组。handleItemSelect 中 hasChildren 只判断了 packageId 但数据
库 check_part 表只有 package_name 无 package_id,导致套餐项无展开箭头。

修复:
1. loadPackageDetails 去掉 res.code 检查,直接用 parsePackageDetailsPayload 解析
   (与 loadPackageDetailsForItem 保持一致)
2. handleItemSelect hasChildren 增加 || item.packageName 条件

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 16:30:06 +08:00
赵云
52077c613c Fix Bug #403: 住院医生工作站:应用医嘱组套后,药品明细字段内容丢失未正确引入表格
根因:handleSaveGroup 构建 newRow 时,dose、doseQuantity、methodCode、rateCode、dispensePerDuration、unitCode 等关键字段直接从 item 读取,
但 item 中这些字段可能为 null(组套未配置时)。orderGroupDrawer 已通过 mergedDetail 做了 ?? 兜底合并,但 handleSaveGroup 未使用。

修复:将 newRow 构建和价格计算中的字段读取统一改为从 mergedDetail 优先取值(mergedDetail.xxx ?? item.xxx),
确保组套未配置的字段回退到医嘱库默认值。
2026-05-16 16:11:29 +08:00
关羽
ed644c4a91 Fix Bug #497: 【住院医生工作站-检查申请】检查申请列表缺失"申请单状态"列及全流程闭环状态流转逻辑
根因:
1. 列位置回归问题 — commit 718e7a90 已将"申请单状态"列移至"申请单号"之后,
   但后续 commit e65f1212 合并时意外恢复为"申请单号→申请者→申请单状态"的错误顺序。
2. SQL 状态计算冗余 — Mapper XML 使用复杂的 CASE + MIN(wsr.status_enum) 聚合表达式
   从 wor_service_request 计算状态,但 doc_request_form 表已有 status 字段直接存储状态值。
   CASE 表达式在 MIN=0 时返回 NULL(虽然当前枚举没有 0 值),且聚合逻辑在多条 ServiceRequest
   记录场景下可能不准确。

修复:
- 前端:恢复"申请单号→申请单状态→申请者→操作"的列顺序
- 后端:简化 SQL 为直接使用 drf.status 字段,删除 CASE 表达式及 WHERE 中的聚合过滤

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 15:11:59 +08:00
关羽
5f5d1c548a Fix Bug #472: 住院医生工作站-手术申请单:勾选手术项目无效,导致无法正常开立医嘱
根因:getSurgeryPage SQL 的 LEFT JOIN 在价格表存在多条记录时产生重复行,
导致 el-transfer 中出现相同 key 的条目,Vue diff 算法无法正确追踪选中状态

修复:
- SQL 添加 DISTINCT ON (t1.ID) 去重(与旧版 getAdviceBaseInfo 一致)
- 前端 applicationList 初始化为空数组 + 过滤空 adviceDefinitionId
- 同步修复 getExaminationPage 的相同问题

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 14:28:24 +08:00
关羽
02b9dc8725 Fix Bug #468: [住院医生工作站-检验申请] 修复单据状态列前后端状态码映射不一致
根因:Bug #468 初次修复时添加了【单据状态】列和筛选功能,但前端状态码映射
与后端 SQL CASE 表达式不一致:
- 后端 SQL 将 status_enum=5,6,7 映射为显示码 7(已作废),前端却用 5
- 后端 SQL 将 status_enum=8 映射为显示码 6(已出报告),前端却用 4
导致已作废/已出报告状态显示为"-"且筛选失效。

修复:前端 filter 选项值和 parseBillStatus 映射表与后端 SQL CASE 对齐。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 14:21:06 +08:00
关羽
7af922684a Fix Bug #470: 住院医生工作站-手术申请单加载手术项目添加Redis缓存+修复loading状态
根因:getSurgeryPage接口缺少Redis缓存层,每次弹窗打开都直接查数据库。
修复:1. 后端getSurgeryPage添加Redis缓存(24h过期),与getAdviceBaseInfo保持一致
      2. 前端getList()命中内存缓存时显式清除loading状态,防止加载动画卡住

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 14:18:55 +08:00
赵云
395ef2548e Fix Bug #469: [住院医生工作站-检验申请] 完善【操作】列临床业务逻辑:支持按状态动态切换修改、删除、撤回等功能
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-16 14:09:48 +08:00
关羽
7f9e01f6b2 Fix Bug #454: 门诊医生站-医嘱页签:删除"待签发"状态的检验项目时,错误触发"执行科室"校验导致删除失败
前端补充:删除医嘱前添加确认弹窗,对诊疗类项目提示"删除此医嘱将同时删除关联的检验申请单",
满足Bug期望中"触发级联删除前应有明确提示"的要求。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 13:28:33 +08:00
关羽
b7708dec7d Fix Bug #445: 门诊手术安排-临时医嘱生成界面:引用计费时过滤已生成医嘱项目
根因: handleQuoteBilling 从后端拉取计费数据后,只用 requestId 过滤已生成项目,
但已生成医嘱的计费项在后端可能没有 requestId(从 adm_charge_item 关联来的项目 requestId 为空),
导致已提交项目重新出现在"待生成"列表中。

修复: 在 handleQuoteBilling 中,用 chargeItemId/requestId/id 三重匹配,
与已有的 temporaryAdvices 做比对,排除已生成项目。

**后端开发重点**:优先搜索 Java/Spring 后端代码。
关键词:Controller, Service, Mapper, API, 接口, 数据查询
搜索目录:openhis-server-new/src/, his-repo/src/
2026-05-16 13:19:02 +08:00
关羽
cd88bfc7d4 Fix Bug #433: 门诊手术安排:编辑弹窗内"麻醉方法"回显为代码且"外请专家姓名"数据未加载
根因:1) 删除了错误的 anesthesiaTypeEnum 转换行(该字段不存在于 OpScheduleDto 中)
     2) 使用 nextTick 包裹字典字段类型转换,确保 Object.assign 响应式更新完成后
        el-select 已渲染选项再设置值,避免类型不匹配导致无法回显

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 12:17:15 +08:00
赵云
8850689f1f Fix Bug #426: 门诊医生站-检查开立:已选择列表应支持树形展开,显示套餐明细(项目/数量/单价)
根因: Element Plus el-table 懒加载模式下,tree-props.hasChildren 要求行数据
包含 hasChildren: true 才能显示展开箭头。所有创建套餐项的代码路径都设置了
isPackage: true 和 packageId,但未设置 hasChildren 属性。

修复: 在 7 处代码路径中补充 hasChildren 属性设置。
2026-05-16 12:02:35 +08:00
关羽
4c7d362946 Fix Bug #403: 住院医生工作站:应用医嘱组套后,药品明细字段内容丢失未正确引入表格
组套应用时数据预处理缺失部分关键字段(doseUnitCode_dictText/positionName/
injectFlag/skinTestFlag),导致父组件构建行数据时无法获取完整信息。
在orderGroupDrawer的processed item中显式补充这些字段。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 11:57:54 +08:00
51ae3aad29 bug524 [门诊/医生个人报卡管理] 传染病报告卡保存后数据回显失败:病例分类、日期及分型字段为空 2026-05-15 18:16:12 +08:00
d984b89967 bug432 门诊手术安排:新增手术安排保存时报错 2026-05-15 18:14:44 +08:00
wangjian963
b9aabd53ce Fix Bug 505505 【业务逻辑缺陷】药品医嘱已由药房发药,护士仍能在“医嘱校对”模块执行“退回”操作
[门诊手术安排]“手术申请查询”弹窗底部,分页组件与界底部元素重叠,影响操作。
2026-05-15 17:34:29 +08:00
关羽
73ed5e1d33 Fix Bug #534: 【手术管理-门诊手术安排】点击"签发"按钮抛出异常,导致业务中断
修复两个问题:
1. prescriptionlist.vue 签发时 organizationId 可能为 undefined,添加回退值确保后端接收有效值
2. index.vue 计费弹窗缺少 generateSourceEnum 参数传递,导致 getListInfo 查询时无法正确过滤手术计费项目

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 17:00:11 +08:00
关羽
d3cd122656 Fix Bug #536: [门诊手术安排]"手术申请查询"弹窗底部,分页组件与界面底部元素重叠,影响操作。
根因:弹窗 body 无高度约束,窗口缩小时内容溢出导致分页与 footer 重叠。
修复:为弹窗添加 max-height: 75vh + overflow-y: auto 约束,分页与 footer 增加间距和分隔线。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 16:29:42 +08:00
关羽
91f29bf693 Fix Bug #533: 【门诊手术安排-计费】添加药品费用项目保存提示成功,但列表页未同步显示计费药品项目
根因:手术计费弹窗中 prescriptionlist 组件的 generateSourceEnum prop 被硬编码为 1,
但保存时 handleSaveSign 将 generateSourceEnum 设为 6(手术计费)。
保存后调用 getListInfo 刷新列表时,用 generateSourceEnum=1 查询,
后端返回 generateSourceEnum=6 的数据不匹配,导致列表为空。

修复:移除硬编码的 :generateSourceEnum="1" prop,
让组件通过 sourceBillNo 过滤即可正确显示保存的手术计费项目。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 15:58:39 +08:00
Ranyunqiao
e65f12125b 403 住院医生工作站:应用医嘱组套后,药品明细字段内容丢失未正确引入表格 521 [住院医生站-临床医嘱-检查申请] 手工选择执行科室后,保存仍提示“未找到项目执行的科室” 528 [住院医生工作站-检查申请] 修改申请单成功后,弹窗未自动关闭且列表数据未自动刷新 531 [住院医生站-临床医嘱-检查] 检查申请单打开数据没有正常加载 2026-05-15 14:20:30 +08:00
Ranyunqiao
12d0733c0c Merge remote-tracking branch 'origin/develop' into develop 2026-05-15 09:44:38 +08:00
Ranyunqiao
610fff704a bug 470 494 2026-05-15 09:44:26 +08:00
wangjian963
0aa7dd9b82 Revert "Merge remote-tracking branch 'origin/develop' into develop"
This reverts commit 5946c1ea4b, reversing
changes made to 8d905c9844.
2026-05-15 09:33:35 +08:00
关羽
3ee09b22c7 Fix Bug #511: [住院医生工作站-临床医嘱] 护士退回的医嘱在医生站双击无法进入编辑模式,导致无法修改重发
- 使用 Number() 做 statusEnum 类型转换并用 === 严格比较,避免前后端类型不一致导致双击无响应
- 使用 splice 替代直接赋值更新 prescriptionList,确保 Vue 响应式系统能正确触发渲染更新
- 使用 nextTick 包裹 expandOrder 设置,确保数据更新后再设置展开状态,保证 el-table 正确识别 row-key
- 增加 findIndex 返回 -1 时的错误处理,给用户可见提示而非静默失败
2026-05-15 01:28:18 +08:00
关羽
6b4f897b9c Fix Bug #509: [门诊医生站-手术申请] 提交申请后列表未实时刷新展示数据,且提示语需优化
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 01:09:52 +08:00
关羽
848a55cf23 Fix Bug #507: [住院护士站-住院记账-补费] 项目单位未获取、执行科室显示内码且缺乏默认/模糊搜索逻辑
根因分析:
1. 执行科室显示内码:loadDepartmentOptions 只读取树形结构的第一层(records[0].children),
   但后端返回的是多层嵌套的树形数据。修复为递归扁平化 flattenTree() 提取所有科室节点。
2. 单位字段为空:getUnitCodeOptions 中 unitCode_dictText/minUnitCode_dictText 为 null 时,
   option 的 codeText 为 null 导致 el-select 无法显示。修复为 fallback 到 code 值本身。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 01:08:23 +08:00
荀彧
718e7a90c5 Fix Bug #497: 【住院医生工作站-检查申请】检查申请列表调整"申请单状态"列位置至申请单号后
将列表中的"申请单状态"列从申请者列之后移至申请单号之后,使列顺序为:申请单号→申请单状态→申请者→操作,与检验申请列表保持一致。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 00:14:59 +08:00
荀彧
68c682ad49 Fix Bug #508: [住院护士站-住院记账-补费] 点击"划价组套"按钮无任何响应,无法选择组套项目
根因分析:FeeDialog组件模板有两个根元素(两个el-dialog),在Vue 3中虽支持多根组件,
但Element Plus的嵌套el-dialog配合append-to-body在多根场景下可能出现渲染/挂载问题。

修复方案:
1. 将两个el-dialog包裹在单一根<div>中,确保组件挂载行为与项目中其他正常工作的嵌套弹窗一致
2. 内层弹窗增加destroy-on-close,确保每次打开时DOM完全重建,避免残留状态导致的不显示问题

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 00:13:04 +08:00
荀彧
c7368db889 Fix Bug #500: 【门诊医生站】检查申请右侧"检查项目分类"切换时,界面出现明显抖动/闪烁
根因分析:
1. el-collapse-item__content 上的 transition: height/max-height 0.3s 与 Element Plus
   内部 accordion 动画冲突,造成"双重动画"效果,表现为切换分类时高度跳变
2. collapse-scroll 的 min-height: 120px 过小,切换内容较少的分类时容器收缩导致布局抖动
3. 分类内"加载中..."提示使用 v-if,出现/消失时引起 collapse content 高度突变

修复策略:
- 移除 el-collapse-item__content 和 el-collapse-item 的自定义 transition 属性,
  让 el-collapse 使用原生动画,消除双重动画
- 增大 collapse-scroll 的 min-height 从 120px 到 350px,确保切换时容器不收缩
- 将加载提示的 v-if 改为 v-show,避免 DOM 插入/移除引起高度跳变

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 00:02:32 +08:00
荀彧
e64370bb67 Fix Bug #486: [住院医生工作站-临床医嘱] 医嘱检索框不支持全局模糊搜索,未选"医嘱类型"时检索结果为空
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 23:18:55 +08:00
关羽
078439245b Fix Bug #488: 【临床医嘱】双击编辑待签发医嘱,医嘱类型回显为数字且点击确认报接口错误
问题1-医嘱类型回显为数字: 编辑待签发医嘱时,当行的adviceType值(如3/诊疗)
不在当前adviceTypeList选项列表中时,el-select会回显为纯数字。
修复:新增hasAdviceTypeOption和getAdviceTypeLabel函数,当类型无匹配选项时
显示el-tag标签而非空下拉框,避免数字回显。

问题2-点击确认报itemNo接口错误: getBindDevice接口调用无catch处理,
接口失败时promise rejection阻断主流程保存。
修复:为getBindDevice调用链添加.catch()静默降级,确保绑定设备接口失败
不影响医嘱主流程保存。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 23:12:33 +08:00
关羽
1124b1010d Fix Bug #480: [住院护士站-医嘱执行] 非耗材类医嘱执行报"耗材库存"错误且全选逻辑联动异常
根因分析:
1. 耗材库存报错:lotNumberMatch() 按 encounterId 查询 ALL 待发放 DeviceDispense,
   不区分是否为本次执行的医嘱。若该就诊存在其他未执行的耗材记录且库存为零,
   整个调用就会失败,导致非耗材类医嘱执行也被拦截。
2. 全选联动异常:toggleRowSelection() 程序化选中会触发 @select 事件,
   handleRowSelect 中调用 selectAllCheckboxesInRow 导致级联全选。

修复方案:
- 后端:lotNumberMatch 新增 requestIdList 可选参数,当传入时通过 DeviceRequest.basedOnId
  过滤仅校验与本次执行医嘱关联的耗材记录,避免其他未执行医嘱干扰
- 前端:handleExecute 传入 selectedRequestIds(仅诊疗类医嘱的 requestId)
- 前端:新增 skipSelectCascade 标志,程序化 toggleRowSelection 时阻止 handleRowSelect
  触发 selectAllCheckboxesInRow,消除级联反馈环

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 22:22:01 +08:00
关羽
f41b86a143 Fix Bug #476: 住院医生工作-检查申请单界面缺失核心临床字段(紧急程度、过敏史、检查目的等)
补充打印功能中缺失的核心临床字段:紧急程度、期望检查时间、过敏史、检查目的、病史摘要,
并对urgencyLevel等编码字段应用transformField进行值转换显示。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 22:11:25 +08:00
关羽
d3310ade51 Fix Bug #467: [住院医生工作站-检验申请] 列表显示信息不规范:标题术语错误且单据名称未展示具体检验项目
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 22:10:56 +08:00
赵云
6940c3861d Fix Bug #458: 门诊医生站:诊疗类医嘱保存成功后,列表"医嘱类型"列显示为空值
增强 mapAdviceTypeLabel 函数的兜底映射:在原有表名匹配兜底的基础上,
新增不依赖表名的最终兜底映射(1=西药, 2=中成药, 3=诊疗, 4=耗材, 5=会诊, 6=手术),
确保即使字典缺失或表名不匹配也能正确显示类型标签。

同时修复 getListInfo 中 adviceType_dictText 的空字符串判断逻辑,
使用显式 trim() 检查替代 || 运算符,避免后端返回空字符串时未被重新计算。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 21:13:26 +08:00
赵云
6e975bf9c4 Fix Bug #451: 门诊医生站-提交新增手术申请后列表刷新失败
根因:子组件 submitForm 成功后同时调用 getList() 和 emit('saved'),
父组件 @saved 也调用 getList(),导致两个并发请求产生竞态条件;
若后端事务尚未完全提交,getList() 查询可能失败并弹出 msgError。

修复:
1. 子组件移除直接 getList() 调用,统一由父组件 @saved 刷新
2. 父组件添加 500ms 延迟确保后端事务已提交
3. getList() 错误处理改为 console.warn 优雅降级,避免阻断弹窗

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 20:20:27 +08:00
荀彧
fe138589a5 Fix Bug #445: 门诊手术安排-已生成医嘱的计费项目未从待生成列表剔除
根因:submit后本地过滤逻辑中submittedKeys的字段名不匹配
- originalMedicine中的名称字段是adviceName而非medicineName,导致
  名称+规格+数量的匹配键无法正确匹配已提交项
- 修复:增加chargeItemId作为首选匹配标识(后端唯一ID最可靠),
  名称匹配增加adviceName字段兜底

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 20:13:49 +08:00
荀彧
270475adb9 Fix Bug #444: 门诊手术医嘱界面"已引用计费药品"列表未正常显示药品名称
根因分析:
1. 前端 handleMedicalAdvice 调用 getPrescriptionList 时只传 encounterId,
   未传 generateSourceEnum=6 和 sourceBillNo(手术单号),
   后端默认查询 generateSourceEnum=1(医生开立),漏掉了手术计费创建的药品记录
2. 后端 getRequestBaseInfo 在 sourceBillNo 存在时会过滤掉药品(adviceType=1),
   进一步阻断了手术计费药品的返回

修复方案:
- 前端:handleMedicalAdvice 传参 (visitId, 6, operCode) 匹配手术计费记录
- 后端:移除手术计费场景的药品过滤,前端各组件已按 adviceType 自行过滤

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 20:10:17 +08:00
关羽
7d0c93b9a1 Fix Bug #452: 领用出库模块选择药品时提示"仓库数量为0,无法调用",与实际库存数据不符
严格批号查询返回记录但 orgQuantity=0 时,原代码直接调用 applyFromDto 并弹出警告,
未回退到非严格查询(不含 lotNumber)获取同仓库其他有库存的批号。
修复:在 applyFromDto 之前检查 orgQuantity > 0,数量为0时回退到非严格查询。
2026-05-14 19:24:03 +08:00
荀彧
87f5135ddc Fix Bug #426: 门诊医生站-检查开立:已选择列表应支持树形展开,显示套餐明细(项目/数量/单价)
修复 loadMethodPackageDetails 函数中套餐明细 API 地址错误(/system/package/ → /system/check-type/package/),导致套餐明细加载失败返回 404

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 19:06:33 +08:00
赵云
5f7b75667a Fix Bug #402: 住院医生站诊断录入:点击保存诊断后,列表出现重复记录且部分条目元数据缺失
根因:后端 saveDoctorDiagnosis 先删除所有 tcm_flag=0 的记录,再用旧 encounterDiagnosisId
调用 saveOrUpdate,由于记录已删除,UPDATE 失败后 fallback 到 INSERT 导致重复记录。

修复:
1. 后端:不再设置 encounterDiagnosisId,确保 saveOrUpdate 始终执行 INSERT
2. 前端:getList() 后对诊断列表按 ybNo/name 去重,防止重复显示
3. 前端:保存前补全 diagnosisDoctor 和 diagnosisTime 元数据
4. 前端:修复 getTcmDiagnosis 的空值安全访问(res.data?.illness?.length)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 18:13:37 +08:00
荀彧
53e5ee331b Fix Bug #428: 门诊医生站-检查申请:未实现分类联动检查方法及套餐明细展示与勾选逻辑
1. handleMethodSelect 中新增/更新已选项时,设置 expanded=true 使套餐明细自动展开
2. toggleItemExpand 中改用 packageDetailsDisplay/carrier.packageDetails 判断是否已加载明细
   (原代码检查非响应式的 item.packageDetails,导致重复加载或加载判断失效)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 18:09:16 +08:00
关羽
571f254d0e Fix Bug #408: 门诊医生站:检查标签页:选中检查申请记录后,“检查明细”标签页显示“暂无数据”
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 17:19:52 +08:00
31c2acb4ef bug516 2026-05-14 16:47:21 +08:00
关羽
254de01d2e Fix Bug #523: [住院医生站-临床医嘱] 待保存医嘱总金额显示缺失且编辑态单位选择框变为数字控件
- 总金额列显示横杠: 在 setValue 中为药品类医嘱初始化 totalPrice(有 quantity 时按单价计算,否则为 '0'),确保待保存医嘱的总金额列能正常回显
- 单位选择框变数字控件: setValue 中将 unitCode/doseUnitCode/minUnitCode 统一转为 String 类型,避免 el-select 因值类型不匹配而渲染异常

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 16:31:02 +08:00
关羽
b435de9e7b Fix Bug #519: [门诊医生站-诊断-报卡] 已完成传染病报卡的诊断在再次点保存时重复弹出报卡界面
根因:handleInfectiousDiseaseReport() 仅根据诊断名称匹配传染病,未校验该诊断是否已有已提交的报卡记录。

修复方案:
1. 后端 DiagnosisQueryDto 新增 hasInfectiousReport 字段
2. getEncounterDiagnosis SQL 通过 EXISTS 子查询关联 infectious_card 表,
   判断是否存在 status >= 1(已提交/已审核/已上报)的报卡记录
3. 前端 handleInfectiousDiseaseReport() 过滤掉 hasInfectiousReport === 1 的诊断,不再弹出报卡

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 16:16:46 +08:00
赵云
bc13fd6968 Fix Bug #522: [住院护士站-三测单] 体征录入点击保存后缺乏执行反馈且窗口异常自动关闭
- 添加保存成功提示(proxy.msgSuccess)
- 移除保存成功后自动关闭弹窗的逻辑(closeDialog),保持弹窗开启方便护士核对历史记录和继续录入

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 16:16:31 +08:00
赵云
d9ad63397b Fix Bug #518: [门诊医生工作站-诊断-传染病报卡] 报卡页面缺失"性别、出生日期、实足年龄"核心字段
根因:infectiousDiseaseReportDialog.vue 读取患者性别时使用了错误的字段名
patientInfo.sex || patientInfo.genderName,但门诊医生站API返回的字段是
genderEnum(数字:1=男,2=女)和genderEnum_enumText(文本:男/女)。
新增 normalizeSexFromPatientInfo 函数,兼容HIS系统所有可能的性别字段命名。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 16:15:14 +08:00