关羽
9ff9ce4fd2
Fix Bug #475 : 【住院医生工作站】开立检查申请单报错后仍生成申请记录
...
根因:saveRequestForm方法的预校验循环和主循环分别独立查询activityOrganizationConfig获取positionId,
存在数据不一致风险——预校验通过但主循环中positionId查找失败时,RequestForm已被保存导致脏数据。
修复:将预校验循环中查到的positionId缓存到Map中,主循环直接使用缓存结果,
避免重复查询导致的数据不一致问题。确保所有校验通过后再执行任何数据库操作。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 11:20:13 +08:00
赵云
1983d1fa58
Fix Bug #445 : 【手术管理-门诊手术安排】临时医嘱生成界面逻辑错误:已生成医嘱的计费项目未从"待生成"列表中剔除
...
根因:提交成功后,父组件使用 requestId/chargeItemId 匹配已提交项目来过滤
待生成列表,但这些字段在新建医嘱时往往为空,导致匹配失败,已生成的项目
仍保留在"待生成"列表中。
修复:
1. handleTemporaryMedicalSubmit: 改用稳定的字段组合(药品名称+规格+数量)
匹配已提交项目,从 temporaryBillingMedicines 中移除
2. handleMedicalAdvice: 首次打开弹窗时过滤掉已有 requestId 的项目
3. handleQuoteBilling: 引用计费/刷新时同样过滤掉已有 requestId 的项目
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 11:06:20 +08:00
赵云
d4b50a1ef4
Fix Bug #435 : 门诊手术安排:编辑弹窗中"费用类别"字段数据未回显
...
根因:OpCreateScheduleDto 缺少 feeType 字段,导致新建手术安排时 BeanUtils.copyProperties 无法复制该字段,
保存到数据库后 fee_type 为空字符串/null,编辑时详情查询返回 null 导致前端不显示。
修复:在 OpCreateScheduleDto 新增 feeType 字段,使创建流程完整传递费用类别数据。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 11:06:20 +08:00
荀彧
5aa6c2985c
Fix Bug #428 : 门诊医生站-检查申请:未实现分类联动检查方法及套餐明细展示与勾选逻辑
...
- 分类对象初始化时增加 methods: [],确保 Vue 响应式追踪分类下检查方法的加载
- handleMethodSelect 创建新项目时复制 cat.methods 全部方法数组(原只放单个方法),允许用户在右侧面板切换其他方法
- handleMethodSelect 新增/更新项目时同步 packageName 字段,确保 toggleItemExpand 能通过名称查找并加载套餐明细
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 11:06:20 +08:00
关羽
ec1df8af81
Fix Bug #441 : 门诊手术安排:手术室护士角色进入页面提示"无权限"且"获取卫生机构列表失败"
...
根因:响应拦截器中 skipErrorMsg: true 仅抑制了弹窗提示,但仍返回 Promise.reject,
导致 .catch() 路径仍可能触发错误消息或异常行为。
修复:当 skipErrorMsg 为 true 且返回业务错误码(403/500/601等)时,改为 Promise.resolve(res.data),
让 .then() 分支通过 res.code !== 200 判断实现静默降级,不触发 .catch()。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 10:12:37 +08:00
关羽
bc49691e03
Fix Bug #455 : 门诊医生站-医嘱:开立诊疗医嘱时执行科室默认获取逻辑有误且显示为原始ID
...
根因:setValue() 中通过展开运算符(...JSON.parse(JSON.stringify(row)))将诊疗目录
的 positionId/orgId 带入处方列表,后续条件判断只处理非诊疗类型(advicetype != 3),
导致诊疗类的 catalog ID 未被覆盖,且该 ID 不在机构树中,el-tree-select 显示原始数字。
修复:
1. setValue() 中显式为诊疗类(adviceType=3)设置 orgId/positionId 为患者就诊科室,
并同步 positionName 为机构树中的名称
2. handleSaveGroup() 组套应用时同样对诊疗类使用患者就诊科室,不使用目录配置的ID
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 10:12:37 +08:00
关羽
713892d17a
Fix Bug #452 : 领用出库模块选择药品时提示"仓库数量为0,无法调用",与实际库存数据不符
...
根因:药品目录列表中返回的lotNumber是任意仓库中的批号,但getCount查询时用该lotNumber过滤用户选择的仓库库存。若该批号在目标仓库不存在(但其他批号存在),则返回0条记录导致误报"仓库数量为0"。
修复:在领用出库的handleLocationClick中移除getCount的lotNumber参数,改为查询该药品在所选仓库的所有批号库存。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 10:12:37 +08:00
荀彧
5a3ce5df7d
feat: 手术管理列表点击行高亮 (highlight-current-row)
2026-05-14 10:12:37 +08:00
赵云
a26e3573b9
Fix Bug #426 : 门诊医生站-检查开立:已选择列表应支持树形展开,显示套餐明细(项目/数量/单价)
...
- 已选择面板的套餐项增加"套餐"标签,便于用户识别
- 展开/收起图标改为 ArrowRight 旋转样式,符合标准交互习惯
- toggleItemExpand 函数增加 packageName 兜底判断,不强制依赖 isPackage 标记
- loadPackageDetailsForItem 添加 loading 状态和更健壮的 packageId 解析逻辑
- 新增 expanded-content 和 package-loading-hint CSS 样式
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 09:30:10 +08:00
关羽
0cb616f843
Fix Bug #446 : 【手术管理-门诊手术安排】临时医嘱生成后界面非法关闭且按钮名称/功能显示不一致
...
根因: handleMedicalAdvice 中盲目重置 temporarySigned.value = false,导致重新打开医嘱弹窗时按钮状态错误。
修复:
1. index.vue: 根据已有医嘱数据是否有 requestId 来决定 temporarySigned 状态,而非盲目重置
2. temporaryMedical.vue: 新增 allItemsSubmitted 计算属性,当所有计费药品已提交(requestId)时显示"已签发"按钮并禁用
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 09:30:10 +08:00
关羽
e5152e7ea9
Fix Bug #408 : 门诊医生站:检查标签页:选中检查申请记录后,"检查明细"标签页显示"暂无数据"
...
根因:handleRowClick 中 const resp = res.data || res 对 Axios 拦截器已解包的响应
进行二次解包,导致 resp 被赋为 ExamApply 实体对象(不含 items),后续 items 提取
逻辑始终返回空数组,明细列表无法加载。
修复:用 res.code !== undefined 判定 res 是否已是 AjaxResult 体,若是则直接使用,
否则再执行 res.data 解包。items 和数据提取统一从正确层级取值,避免二次解包。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 09:30:10 +08:00
赵云
7448adae3a
Fix Bug #402 : 住院医生站诊断录入:点击保存诊断后,列表出现重复记录且部分条目元数据缺失
...
根因分析:
1. 前端保存按钮无防重复点击保护,连续点击会发送多个请求
2. 保存成功后前端使用本地排序数据更新,未从服务器重新加载,导致前后端数据不一致
3. 后端 saveDoctorDiagnosis 保存后未回写 encounterDiagnosisId,后续保存无法正确更新已有记录
修复方案:
- 前端:在 handleSaveDiagnosis 入口增加 isSaving 守卫,防止重复提交
- 前端:保存成功后调用 getList() 从服务器重新加载数据,确保前后端一致
- 后端:saveOrUpdate 后回写 encounterDiagnosisId 到返回参数,前端可跟踪记录ID
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 09:10:50 +08:00
关羽
74e0d7f440
Fix Bug #443 : 手术计费:点击"签发"耗材时异常报错
...
根因分析:getRequestBaseInfo SQL查询的UNION 2(门诊术中计费耗材)缺少generate_source_enum过滤条件,导致手术计费弹窗显示所有来源的耗材(包括医生站开立的项目)。当用户尝试签发非手术计费创建的耗材时,后端handDevice处理失败。
修复内容:
1. 后端SQL:在UNION 2的WHERE子句中添加generate_source_enum过滤,确保手术计费弹窗仅显示手术计费来源的耗材
2. 前端JS:handleSave函数补充.then/.catch错误处理,避免显示笼统的"后端程序异常",改为展示具体错误信息
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 09:10:50 +08:00
关羽
c7477707da
Fix Bug #405 : 住院医生工作站:临床医嘱保存成功后,医嘱条目仍处于可编辑状态(未锁定展示)
...
根因:handleSaveBatch 保存成功后,原有修复通过 uniqueKey 查找 prescriptionList 中的行并设置 isEdit=false,
但由于 saveList 中的 item 本身就是 prescriptionList 中对象的同一引用,通过 find(uniqueKey) 查找存在匹配失败的风险。
修复:直接对 saveList 中的对象引用设置 isEdit=false(同引用无需查找),并兜底遍历所有 statusEnum==1 的行锁定。
同时清空 expandOrder 展开状态,确保医嘱行完全回到只读展示模式。
2026-05-14 09:10:49 +08:00
荀彧
9c18442274
Fix Bug #401 : 门诊完诊审计日志错误:div_log 表中 pool_id 与 slot_id 存值与设计规范不符
...
根因:completeEncounter 方法中先将队列状态更新为 COMPLETED,再用内存中
的 queueItem.getStatus() 判断是否已完诊,导致 queueAlreadyCompleted 始终为 true,
div_log 审计日志永远不会被写入。
修复:在更新队列状态之前记录原始完成状态(queueWasAlreadyCompleted),
用该值判断是否需要写入 div_log,确保完诊时正确生成审计日志。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 08:51:36 +08:00
关羽
6fa32c6116
Fix Bug #510 : [住院医生工作站] 进入页面报错
...
根因:order/index.vue 中 getList() 在模块顶层执行(非生命周期钩子),
组件导入时立即触发 API 调用,此时患者尚未选择导致 encounterId 为 undefined;
同时 getListInfo() 缺少患者选择守护检查,多处 API 以空参数调用后端引发循环报错。
修复:
1. 将 getList() 从模块顶层移至 onMounted() 生命周期钩子
2. 在 getListInfo() 开头添加 patientInfo.encounterId 守护检查
2026-05-14 08:51:36 +08:00
关羽
d3a04062dd
Fix Bug #507 : [住院护士站-住院记账-补费] 项目单位未获取、执行科室显示内码且缺乏默认/模糊搜索逻辑
...
后端SQL修复: DoctorStationAdviceAppMapper.xml 中诊疗项 min_unit_code 硬编码为空字符串,
改为使用 permitted_unit_code,使前端单位下拉框有可用选项
前端修复:
1. api.js getOrgList 添加 pageSize:100 参数,确保获取足够科室数据
2. FeeDialog.vue loadDepartmentOptions 增加回退逻辑:当树形结构无children时使用扁平records
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 08:51:36 +08:00
关羽
7caac9e9a1
Fix Bug #509 : [门诊医生站-手术申请] 提交申请后列表未实时刷新展示数据,且提示语需优化
...
1. getList() 增加 res.code === 200 校验,避免API返回错误数据时静默赋值导致列表不更新
2. 父组件 @saved 事件处理器增加 surgeryRef?.getList(),确保提交后父组件侧也触发列表刷新
3. 统一响应处理模式,与 inspectionApplication 等组件保持一致
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 06:17:33 +08:00
关羽
e43ca4254b
Fix Bug #499 : 【住院医生工作站-检查申请】检查申请列表缺失查询过滤功能,不符合临床高效检索要求
...
- 新增关键字搜索输入框(申请单号/检查项目名称模糊匹配)
- 设置日期范围默认为近7天
- 关键字搜索支持回车触发查询
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 06:08:58 +08:00
关羽
c954596625
Fix Bug #502 : 【住院护士站-汇总发药申请】顶部医嘱类型(长期/临时)过滤按钮点击无响应
...
根因:汇总视图(SummaryMedicineList)没有ref属性,handleGetPrescription()只调用了prescriptionRefs.value?.handleGetPrescription(),
当isDetails=='2'时PrescriptionList被v-if隐藏,prescriptionRefs.value为null,导致汇总列表不刷新。
修复:1. 给SummaryMedicineList添加ref="summaryMedicineRefs"
2. handleGetPrescription()根据isDetails值调用对应的子组件刷新方法
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 06:08:58 +08:00
关羽
3e5db107fb
Fix Bug #498 : 【住院医生工作站-检查申请】检查申请列表操作项过于单一,缺失修改/作废/打印/看报告等核心临床操作
...
根据申请单状态动态展示操作按钮:
- 待签发:详情、修改、删除
- 已签发:详情、撤回
- 已校对/待接收:详情、打印
- 已接收/已检查:详情、看报告
- 已出报告:详情、打印、看报告
- 已作废:详情
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 06:05:06 +08:00
荀彧
26cf16067b
Fix Bug #497 : 【住院医生工作站-检查申请】检查申请列表缺失"申请单状态"列及全流程闭环状态流转逻辑
...
根因:SQL 查询使用 CASE MIN(wsr.status_enum) 计算状态,但聚合函数 MIN() 出现在 WHERE 子句中,
PostgreSQL 语法错误导致状态筛选时查询失败。且计算状态仅映射 5 种值(缺少"待接收"=3、"已出报告"=6)。
修复:改为直接使用 doc_request_form.status 字段(数据库已存在该列),
SELECT 和 WHERE 均使用 drf.status,支持完整 0-7 状态流转。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 06:05:06 +08:00
荀彧
6648cd2e50
Fix Bug #508 : [住院护士站-住院记账-补费] 点击"划价组套"按钮无任何响应,无法选择组套项目
...
- 新增 el-empty 空状态提示:当组套列表为空时显示"暂无划价组套数据",避免用户看到空白表格误认为页面无响应
- 改进错误处理:API 失败时弹出 ElMessage.warning 提示用户,替代之前仅 console.warn 的静默处理
- 添加调试日志:openGroupSetDialog 入口添加 console.log 便于排查按钮点击是否触发
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 06:05:06 +08:00
赵云
f1a5b17a83
Fix Bug #492 : 【门诊手术安排】关闭"手术计费"主弹窗后,项目字典选择列表依然残留悬浮在界面上
...
根因: el-popover 通过 teleport 渲染在 document.body 上,closeChargeDialog() 调用
closeAllPopovers() 后立即设置 showChargeDialog=false,dialog 在 Vue 完成 popover DOM 清
理前就开始卸载,导致 teleported popover 残留。
修复:
1. closeChargeDialog 改为 async,closeAllPopovers 后 await nextTick() 确保 popover 可
见性变更的 DOM 更新完成后再关闭 dialog
2. el-dialog 添加 destroy-on-close 属性,确保关闭时完整销毁内容区及所有子组件的 teleport
2026-05-14 05:06:44 +08:00
荀彧
8e042cae93
Fix Bug #500 : 【门诊医生站】检查申请右侧"检查项目分类"切换时,界面出现明显抖动/闪烁
...
移除了 handleCollapseChange 中的 isAnimating 防抖锁。该锁会阻塞后续点击的 handleCollapseChange 回调执行,
导致快速切换分类时 currentActiveCategory 未被更新,过期 API 响应可能覆盖数据,以及 accordion 状态与业务逻辑不同步。
改为始终更新 currentActiveCategory 守卫,真正依靠 handleCategoryExpand 中的过期请求忽略机制来防止数据闪烁。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 05:06:08 +08:00
关羽
415a76af49
Fix Bug #493 : 【住院医生工作站-临床医嘱-检验申请】项目未维护执行科室时,医生手动选择发往科室后仍报错且数据被清空
...
原因:projectWithDepartment 函数在 watch 触发时(type=1)若项目未配置执行科室,
立即弹出"未找到项目执行的科室"错误,干扰用户操作;且提交时(type=2)的错误提示
分支没有区分"用户已手动选择"和"用户未选择"两种情况。
修复:将 findItem 未找到时的错误弹窗限制在 type=2(提交)且用户未手动选择科室时触发,
type=1(选择项目变化)时仅清空科室字段让用户自行选择,不再弹窗阻断。
2026-05-14 05:05:51 +08:00
赵云
6dc9788d8c
Fix Bug #487 : 【临床医嘱】诊疗类医嘱签发后,列表状态未实时刷新为"已签发"
...
根因分析:诊疗类(活动)医嘱签发时,后端handService()的批量状态更新
未区分签发/保存场景,导致statusEnum字段在签发时可能未被正确更新为
ACTIVE(2);前端依赖后端刷新,缺乏乐观更新机制。
修复方案:
- 前端:签发成功后立即将saveList中对应医嘱的statusEnum设为2(乐观更新),
再执行getListInfo从后端刷新
- 后端:handService()中分离签发/保存的批量更新逻辑,签发时显式设置
statusEnum=ACTIVE、authoredTime和signCode,并添加日志
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 04:44:10 +08:00
关羽
319224cdac
Fix Bug #486 : [住院医生工作站-临床医嘱] 医嘱检索框不支持全局模糊搜索,未选"医嘱类型"时检索结果为空
...
根因:adviceTypes 参数使用逗号分隔字符串 '1,2,3,6',经 tansParams 序列化后变成
adviceTypes=1%2C2%2C3%2C6(URL编码的逗号),Spring MVC 无法将其正确解析为 List<Integer>,
导致后端 SQL 返回空结果。改为数组 [1,2,3,6] 后,tansParams 正确序列化为
adviceTypes=1&adviceTypes=2&adviceTypes=3&adviceTypes=6,后端可正常解析。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 04:17:42 +08:00
关羽
66d42f415a
Fix Bug #477 : 住院检查申请详情弹窗中"发往科室"字段显示异常
...
根因:recursionFun 使用嵌套循环搜索科室树,但 API 返回扁平列表导致匹配失败。
修复:改用递归 findTreeItem 搜索(与 medicalExaminations.vue 一致),添加 API 错误处理,
并在 ID 匹配失败时回退显示原始值而非空白。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 03:22:12 +08:00
荀彧
fd0132ba80
Fix Bug #467 : [住院医生工作站-检验申请] 列表显示信息不规范:标题术语错误且单据名称未展示具体检验项目
...
1. 详情弹窗中"处方号"改为"申请单号",符合住院检验业务术语规范
2. 列表"申请单名称"列改为从 requestFormDetailList 动态构建:
- 单一项目:显示"项目名称+数量"
- 多个项目:显示"首项目名称+数量等X项"
解决此前统一显示"检验申请单"无法区分单据内容的问题
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 03:15:10 +08:00
关羽
6907c7dbc8
Fix Bug #481 : [住院护士站-医嘱执行] 药品库存充足但执行时提示库存不足
...
根因: AdviceUtils.checkExeMedInventory() 中硬编码 performLocation == locationId 的匹配条件,
当医嘱的 performLocation 指向的药房没有该药品库存时(库存实际在其他药房),匹配失败导致"库存不足"错误。
修复策略: 采用两步匹配法 -
1. 先按 performLocation 匹配指定药房的库存(添加 null 容错)
2. 若指定药房无匹配,则放宽条件跨所有药房聚合库存
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 03:14:30 +08:00
赵云
487b05c845
Fix Bug #465 : [住院医生工作站-检验申请] 检验项目选择列表被限制为500项,导致医生无法检索并开立其余800多项
...
根因分析:
1. 前端参数名错误:getList 发送 pageNum 但后端期望 pageNo,导致分页参数被忽略
2. 后端 MyBatis Plus 分页拦截器单页最多返回500条,前端用 pageSize:9999 无效
3. 总共有1300+条检验项目,但只返回了前500条
修复方案:
- 修正参数名为 pageNo 匹配后端接口
- 使用分页循环拉取全部数据(每页500条,循环直到数据全部拉取)
- 添加 try/catch 错误处理
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 03:12:41 +08:00
关羽
71f99da69a
Fix Bug #480 : [住院护士站-医嘱执行] 非耗材类医嘱执行报"耗材库存"错误且全选逻辑联动异常
...
修复 handleExecute 中 hasDevice 判断逻辑错误:原代码用 includes('device') 判断
adviceTable 是否包含耗材类医嘱,但 adviceTable 实际取值为 med_medication_request
(药品)或 wor_service_request(诊疗/耗材),均不含 "device" 字符串,导致 hasDevice
恒为 false。
改为检查 adviceTable === 'wor_service_request',确保仅当选中医嘱包含诊疗类(可能
绑定耗材)时才调用 lotNumberMatch,纯药品医嘱不再触发耗材库存校验。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 02:43:27 +08:00
荀彧
15a65063a3
Fix Bug #470 : 住院医生工作站-手术申请单加载手术项目耗时过长,影响医生开单效率
...
添加模块级缓存(surgeryRecordsCache + surgeryMappedCache),首次打开弹窗请求API后
缓存数据,后续打开直接复用,避免重复请求500条手术项目列表导致加载缓慢。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 02:18:29 +08:00
关羽
72fdafb032
Fix Bug #469 : [住院医生工作站-检验申请] 完善【操作】列临床业务逻辑:支持按状态动态切换修改、删除、撤回等功能
...
根因:后端返回字段名为 status,而操作列条件判断使用了 scope.row.billStatus,
billStatus 为 undefined 导致所有状态条件判断失败,仅显示固定的"详情"按钮。
修复:将操作列条件中的 billStatus 统一改为 status。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 02:14:51 +08:00
关羽
56b8d0e98d
Fix Bug #475 : 【住院医生工作站】开立检查申请单报错"请先配置当前时间段的执行科室"后,系统仍生成申请记录
...
- 将requestFormId判空改为requestFormId != null && requestFormId != 0L,防止前端空字符串反序列化为0L误入编辑场景
- 在循环中逐个校验activityList中的项目是否都配置了执行科室,将所有校验前置到任何数据库操作之前,避免部分通过后在save中途抛异常
- 统一使用isEdit标志变量替代重复的null检查
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 02:12:06 +08:00
赵云
f13734a19c
Fix Bug #466 : [住院医生工作站-检验申请] 申请单界面缺失核心质控字段(申请类型、标本类型、执行时间)及联动逻辑
...
修复展示页面字段名称不匹配问题:
- parsePriorityCode 读取 priorityCode 但表单保存为 applicationType,导致列表始终显示"普通"
- labelMap 缺少 executeTime/specimenName/applicationType,导致详情页不显示新增字段
- 详情弹窗中 applicationType 数字编码(0/1)未转换为可读文本(普通/急诊)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 02:09:37 +08:00
关羽
6081412072
Fix Bug #461 : [系统管理-执行科室配置] 保存项目配置后,项目名称回显为ID码,未显示正确名称
...
根因:getList() 中 filteredOptions 只取 allImplementDepartmentList 的前100项,
当保存的项目ID不在前100项中时,el-select 找不到匹配选项,直接回显ID值而非名称。
修复:在映射记录时,将后端返回的 activityDefinitionId_dictText(项目名称)补充到
filteredOptions 中,确保 el-select 能正确匹配并显示项目名称。
2026-05-14 02:04:24 +08:00
赵云
4a2f13cb19
Fix Bug #444 : 【手术管理-门诊手术安排】生成临时医嘱界面,"已引用计费药品"列表过滤非药品项目
...
根因分析:
- 后端 /doctor-station/advice/request-base-info 接口返回所有类型的医嘱请求数据
- adviceType 字段区分:1=药品, 2=耗材, 3=诊疗项目
- 前端 handleMedicalAdvice 和 handleQuoteBilling 两处过滤逻辑均未按 adviceType 过滤
- 导致手术诊疗项目(如"小腿烧伤扩创交腿皮瓣修复术")和检查项目(如"心脏彩色多普勒超声")出现在"已引用计费药品"列表中
修复方案:
- 在两处 filter 中增加 adviceType !== 1 的过滤条件,只保留药品类型数据
2026-05-14 01:11:44 +08:00
关羽
522bc238aa
Fix Bug #441 : 门诊手术安排:手术室护士角色进入页面提示"无权限"且"获取卫生机构列表失败"
...
根因:loadDeptList/loadDoctorList/loadNurseList/loadOperatingRoomList 调用的API
没有设置 skipErrorMsg: true,当手术室护士等角色无权限时,axios响应拦截器会
弹出错误提示。只有 getTenantPageSilent 设置了 skipErrorMsg,其他均未设置。
修复:为所有字典加载API创建静默包装函数(deptTreeSelectSilent/listUserSilent/
listOperatingRoomSilent),统一使用 skipErrorMsg: true 跳过拦截器错误弹窗,
在 catch 块中静默降级为空数组。
2026-05-14 01:07:03 +08:00
关羽
bea2f27b15
Fix Bug #446 : 【手术管理-门诊手术安排】临时医嘱生成后界面非法关闭且按钮名称/功能显示不一致
...
修复 isSignedProp 父组件状态变化未同步到子组件本地 isSigned ref 的问题。
ref(props.isSignedProp) 仅在组件初始化时读取一次,父组件后续更新 temporarySigned
时子组件的 isSigned 不会自动更新,导致按钮文本和签名状态显示不一致。
添加 watch 监听 isSignedProp 变化,确保父子组件签名状态同步。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 00:25:42 +08:00
荀彧
95da4c2a57
Fix Bug #448 : 门诊划价模块-项目分类过滤失效,选择"耗材"类型时仍能检索出药品
...
根因:getList() 直接发送 queryParams.value 到后端,其中包含 undefined 值的
属性(如 adviceType 未选择时)。后端接收 adviceType=null 后回退到查询所有类型
(List.of(1,2,3)),导致药品出现在耗材的搜索结果中。
修复:显式构建 requestParams 对象,仅包含已定义的过滤参数(adviceType、
categoryCode、searchKey),避免 undefined 值被发送到后端。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 00:21:06 +08:00
赵云
53e3e9c4c0
Fix Bug #403 : 住院医生工作站:应用医嘱组套后,药品明细字段内容丢失未正确引入表格
...
根因分析:
1. orderGroupDrawer.vue 中 handleUseOrderGroup 的 mergedDetail 对象缺少
categoryCode、minUnitCode、doseUnitCode、partPercent、partAttributeEnum、
unitConversionRatio、defaultLotNumber 等关键字段,导致 setValue 和价格计算逻辑失效
2. 使用 || 替代 ?? 作为数字字段(如 doseQuantity=0)的回退操作符,导致值为 0 时被错误覆盖
3. handleSaveGroup 中价格计算使用 item.unitCode 查找 unitInfo,但 item.unitCode 可能为
undefined,而 setValue 已正确填充了 prescriptionList 中的 unitCode
修复内容:
- mergedDetail 先展开 orderDetail(包含所有药品基础字段),再用组套用户覆盖值覆盖
- 所有数字字段回退从 || 改为 ??,确保 0 值不被覆盖
- 新增 doseQuantity 的 ?? 回退逻辑到 orderDetail.doseQuantity
- 新增 groupId、groupOrder、orgId、orgName、therapyEnum 到 mergedDetail
- handleSaveGroup 使用 baseRow 变量避免对象自引用问题
- 价格计算使用 newRow.unitCode(已由 setValue 填充)而非 item.unitCode
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 00:19:05 +08:00
关羽
55eba1a0b1
Fix Bug #443 : 手术计费:点击"签发"耗材时异常报错
...
**根因分析**:
前端 handleSave 签发时,仅从 contentJson 解析数据后发送,缺少 encounterId、patientId、locationId 等关键字段。这些字段在 API 响应顶层(不在 contentJson 中),导致后端签发时字段为空。
**修复方案**:
- 前端:在 handleSave 的 saveList 映射中补充 encounterId、patientId、locationId(对应 positionId)、adviceType 等顶层关键字段
- 后端:handDevice 中 locationId 为空时,优先查询已有 DeviceRequest 的 performLocation 作为回退,避免覆盖为默认科室
2026-05-14 00:11:29 +08:00
关羽
1525740ab5
Fix Bug #435 : 门诊手术安排编辑弹窗费用类别字段数据未回显
...
根因:op_schedule 表缺少 fee_type 字段,导致编辑时无法从数据库读取费用类别。
- 新增 fee_type 列到 op_schedule 表并回填历史数据
- OpSchedule 实体类新增 feeType 字段
- 详情查询SQL改为直接从 op_schedule.fee_type 读取,替代原脆弱的 fin_contract 关联链
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 00:06:34 +08:00
关羽
96102e8b64
Fix Bug #401 : div_log 表中 pool_id 与 slot_id 存值不符
...
根因分析:
1. 候选池API(getCurrentDayEncounter)未返回 poolId/slotId 字段,导致护士从候选池
添加患者到队列时 poolId/slotId 始终为 null
2. triage_queue_item 中 pool_id/slot_id 为 null 后,完诊时 div_log 也写入 null 值
3. 医生站完诊和护士站完诊各自独立写入 div_log,导致同一患者产生两条 COMPLETE 记录
修复方案:
1. CurrentDayEncounterTencentDto 新增 poolId/slotId 字段
2. TencentAppMapper.xml 通过 encounter.order_id → order_main.slot_id →
adm_schedule_slot.pool_id 链路获取正确的号源信息
3. DoctorStationMainAppServiceImpl 增加防重复逻辑:队列项已为 COMPLETED 状态时
不再重复写入 div_log(说明护士站已处理过)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 23:27:08 +08:00
关羽
49df72121f
Fix Bug #412 : 门诊医生站传染病报告卡保存失败,提示报错
...
后端 saveInfectiousDiseaseReport 中 getCardNo().trim() 存在空指针异常风险,
增加 cardNo 空值校验避免 NPE 导致保存失败。
前端 buildSubmitData 中 diseaseCode 在 selectedClassA/B/C 为空时会变成 null,
增加从 selectedDiseases 兜底取值逻辑确保 diseaseCode 始终有值。
2026-05-13 23:18:53 +08:00
荀彧
65d1716ca9
Fix Bug #413 : 医生个人报卡管理核心缺陷:医生个人报卡编辑/查看界面与门诊医生站登记报卡界面设计不统一
...
根因:infectiousDiseaseReportDialog.vue 中所有输入框使用了 class="underline-input" 但缺少对应的CSS定义,
导致输入框显示为 Element Plus 默认的完整边框样式,而非预期的下划线样式。
下拉框(underline-select)和地址选择器(address-selects)有对应的下划线CSS定义,但普通输入框没有,
造成编辑/查看界面与登记界面的排版视觉不一致。
修复:新增 .underline-input CSS 类定义,与 .underline-select 保持一致的下划线样式。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 22:16:37 +08:00
关羽
509a0a788f
Fix Bug #442 : 手术计费:点击"删除"待签发耗材时异常报错,导致操作失败
...
根因:删除按钮的 handleDelete 函数缺少 bizRequestFlag 过滤逻辑,
与签发/签退按钮的处理逻辑不一致。当用户勾选非本人创建的医嘱(bizRequestFlag != '1')
时,前端仍将其加入删除列表发送至后端,后端尝试删除不存在的 DeviceRequest 记录时报错。
修复:在 handleDelete 的 deleteList 构建中增加 bizRequestFlag 过滤,
排除非本人创建的医嘱,与 changeCheck/handleSave/handleSingOut 逻辑保持一致。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 22:14:23 +08:00
关羽
6c4a8e3c14
Fix Bug #507 : [住院护士站-住院记账-补费] 项目单位未获取、执行科室显示内码且缺乏默认/模糊搜索逻辑
...
**后端开发重点**:优先搜索 Java/Spring 后端代码。
关键词:Controller, Service, Mapper, API, 接口, 数据查询
搜索目录:openhis-server-new/src/, his-repo/src/
修复三个问题:
1. 单位字段显示为空:getUnitCodeOptions 中 unitCode/minUnitCode 未做 String() 转换,与 selectUnitCode(String类型)比较时类型不匹配导致 el-select 无法正确选中;unitCodeChange 中同样存在类型比较问题
2. 执行科室/位置默认值未生效:departmentOptions 在 onMounted 异步加载,用户快速点击项目时数据尚未加载完成导致默认 positionId 为空;增加 watch 监听科室/位置选项加载完成,自动补填默认值;弹窗打开时重新加载确保数据最新
3. 下拉模糊搜索不生效:优化 filterOptions/getFilteredOptions 过滤逻辑,增加拼音首字母(pyStr)搜索支持
2026-05-13 20:55:38 +08:00