关羽
dc33ab6bad
Fix Bug #412 : 门诊医生站传染病报告卡保存失败,提示报错
...
后端 saveInfectiousDiseaseReport 中 getCardNo().trim() 存在空指针异常风险,
增加 cardNo 空值校验避免 NPE 导致保存失败。
前端 buildSubmitData 中 diseaseCode 在 selectedClassA/B/C 为空时会变成 null,
增加从 selectedDiseases 兜底取值逻辑确保 diseaseCode 始终有值。
2026-05-14 00:06:16 +08:00
关羽
86d559d1f2
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-14 00:06:16 +08:00
荀彧
87aa83feb4
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:27 +08:00
关羽
0d32d47923
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 22:10:08 +08:00
荀彧
d6d860f42e
Fix Bug #509 : [门诊医生站-手术申请] 提交申请后列表未实时刷新展示数据,且提示语需优化
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 22:10:08 +08:00
关羽
acb6fe53fb
Fix Bug #502 : 【住院护士站-汇总发药申请】顶部医嘱类型(长期/临时)过滤按钮点击无响应
...
补充修复:汇总视图(SummaryMedicineList)未接收 therapyEnum 参数,
导致切换到"汇总"tab 后长期/临时过滤按钮失效。
修复内容:
1. SummaryMedicineList 新增 therapyEnum prop
2. getMedicineSummary 调用时传递 therapyEnum 参数
3. index.vue 将 therapyEnum 传入 SummaryMedicineList 组件
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 22:10:08 +08:00
荀彧
27442c9c83
Fix Bug #508 : [住院护士站-住院记账-补费] 点击"划价组套"按钮无任何响应,无法选择组套项目
...
修复搜索功能失效:loadGroupSets 未传递 groupSetSearchText 搜索关键字,
导致搜索框和搜索按钮点击后无任何过滤效果。新增客户端过滤逻辑,
在API返回数据后根据搜索关键字对组套名称进行过滤,同时保持searchKey
参数传递以便后端后续扩展支持。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 20:31:15 +08:00
荀彧
0c2ffa125e
Fix Bug #500 : 【门诊医生站】检查申请右侧"检查项目分类"切换时,界面出现明显抖动/闪烁
...
修复策略A(直接修复代码逻辑),采用4个手术式修改消除抖动根因:
1. 方法列表区域 v-if → v-show:避免异步加载后 DOM 突然插入导致高度跳变
2. CSS transition: all → height/max-height:明确过渡属性,防止子元素意外动画
3. .collapse-scroll 添加 min-height: 120px:固定最小高度,避免 flex 容器高度突变
4. handleCategoryExpand 添加 currentActiveCategory 守卫:快速切换分类时忽略过期请求响应,防止旧数据覆盖导致闪烁
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 20:11:53 +08:00
关羽
084bb0ea78
Fix Bug #499 : 【住院医生工作站-检查申请】检查申请列表缺失查询过滤功能,不符合临床高效检索要求
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 20:11:53 +08:00
荀彧
e7daf195a7
Fix Bug #494 : 住院医生工作站-检查申请:"申请单名称"字段显示为通用名称,未展示具体检查项目名称
...
根因:提交检查申请单时,applicationListAllFilter 的 map 映射未包含 adviceName 字段,
导致 name 构造为 undefined、undefined,保存到数据库为空字符串。
修复:改为从 applicationListAll(原始数据)中按 adviceDefinitionId 查找项目名称。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 19:21:34 +08:00
关羽
3810db36d1
Fix Bug #492 : 【门诊手术安排】关闭"手术计费"主弹窗后,项目字典选择列表依然残留悬浮在界面上
...
根因:el-popover 使用 append-to-body 将浮层渲染到 body 下,而 prescriptionlist 组件
使用 v-if="showChargeDialog" 控制渲染。当 closeChargeDialog() 通过 nextTick 将
showChargeDialog 置为 false 时,Vue 立即销毁组件,但 append-to-body 的 popover DOM
元素因关闭过渡动画尚未完成而残留在 body 下。
修复:
1. 移除 prescriptionlist 上的 v-if="showChargeDialog",让组件保持挂载状态
(外层 el-dialog 的 v-model 已控制可见性,v-if 冗余)
2. closeChargeDialog() 同步关闭弹窗并清空数据,不再使用 nextTick 延迟
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 19:21:34 +08:00
关羽
52459d31c5
Fix Bug #488 : 【临床医嘱】双击编辑待签发医嘱,医嘱类型回显为数字且点击确认报接口错误
...
1. getRowSelectValue: 校验行数据是否在选项列表中,不存在时返回undefined避免el-select回显原始数字
2. filterPrescriptionList: 复合值'1-2'过滤时提取adviceType部分比较,避免类型过滤失效
3. handleSaveSign: 严格校验itemNo非空且为有效字符串,trim检查并显式String()转换,避免后端报缺参错误
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 19:21:34 +08:00
关羽
8ebed60c8e
Fix Bug #486 : [住院医生工作站-临床医嘱] 医嘱检索框不支持全局模糊搜索,未选"医嘱类型"时检索结果为空
...
根因:医嘱录入框(el-input)缺少@input事件绑定,导致用户输入关键字时不会触发handleChange搜索,
只有点击/回车时才会刷新搜索结果。对比门诊医生站prescriptionlist.vue(第624行)有@input="handleChange",
住院医生站order/index.vue遗漏了此事件绑定。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 19:21:34 +08:00
关羽
1d415242a5
Fix Bug #477 : 住院医生工作站-住院检查申请详情弹窗中"发往科室"字段显示为短横线(-),未正常获取数据
...
根因分析(与testApplication.vue对比发现):
1. getLocationInfo不是async函数,handleViewDetail中使用new Promise手动包装getDepartmentList
作为降级方案,如果API调用失败则Promise永远不resolve(缺少catch),导致后续逻辑挂起
2. recursionFun缺少空值保护和break语句,可能在找到匹配后继续无效遍历
修复:
- getLocationInfo改为async/await模式(与testApplication.vue保持一致)
- handleViewDetail使用await getLocationInfo()替代不可靠的Promise包装
- recursionFun增加空值提前返回和break优化
2026-05-13 19:21:34 +08:00
荀彧
1aa6f089ef
Fix Bug #478 : 【住院医生工作站-检验申请】点击"详情"查看检验单时,"发往科室"字段回显异常(显示为"-")
...
根因:testApplication.vue 中 getLocationInfo() 调用了 getDepartmentList(),
但该函数未从 '@/api/public.js' 导入。第192行错误地导入了未使用的 getOrgList,
导致运行时 ReferenceError,orgOptions 始终为空,recursionFun() 返回空字符串,
最终 targetDepartment 显示为 "-"。
修复:将未使用的 getOrgList 导入替换为正确的 getDepartmentList 导入。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 19:21:34 +08:00
关羽
fba9f31d14
Fix Bug #472 : 住院医生工作站-手术申请单:勾选手术项目无效,导致无法正常开立医嘱
...
根因分析:surgery.vue 的 el-transfer 组件存在两处与其他正常组件(bloodTransfusion.vue、laboratoryTests.vue)不一致的地方:
1. v-loading 被放置在了 transfer-wrapper 内部的额外 div 上,导致 Element Plus 的加载遮罩层可能与穿梭框交互层产生遮挡冲突
2. applicationList 和 applicationListAll 初始化为 ref([]),而其他组件使用 ref(),导致 Vue 响应式更新时穿梭框内部状态追踪存在差异
修复:
- 将 v-loading 直接放到 transfer-wrapper div 上,去除多余的嵌套 div,与 bloodTransfusion/laboratoryTests 保持一致
- 将 applicationListAll 和 applicationList 的初始化从 ref([]) 改为 ref()
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 19:21:34 +08:00
荀彧
c004c145f4
Fix Bug #476 : 检查申请单详情界面缺失紧急程度、过敏史、检查目的等核心字段
...
在 examineApplication.vue 的 labelMap 中补充 urgencyLevel、allergyHistory、
examinationPurpose、expectedExaminationTime、medicalHistorySummary、allergyConfirmed
共6个缺失字段的中文标签映射,并新增 transformField 函数将 urgencyLevel 的
emergency/routine 转换为"急诊"/"普通"显示。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 18:17:52 +08:00
43d4d18a09
bug515 [住院医生站-临床医嘱] 点击“签发”检验医嘱后系统陷入死循环,Loading无法消失 后端advice_type映射错误
2026-05-13 18:13:41 +08:00
a483f5a7f2
bug512 [住院护士站-汇总发药申请] “全选”开关功能失效,点击后下方医嘱明细未能联动勾选
2026-05-13 18:13:41 +08:00
关羽
ed9ef78966
Fix Bug #466 : [住院医生工作站-检验申请] 申请单界面缺失核心质控字段(申请类型、标本类型、执行时间)及联动逻辑
...
在检验申请单弹窗表单中新增三个核心质控字段:
- 申请类型:单选按钮,区分普通/急诊,默认普通
- 标本类型:下拉选择框,支持血液/尿液/痰液等10种标本,默认血液
- 执行时间:日期时间选择器,支持预约未来时间执行
新字段通过 descJson 序列化传递,展示页已支持解析显示。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 18:02:55 +08:00
关羽
01f60513ae
Fix Bug #463 : [目录管理-诊疗目录] 新增/编辑弹窗中"诊疗子项"检索功能失效,无法搜到已维护的项目
...
根因分析:medicineList.vue 的搜索功能仅做本地过滤,数据受限于初始加载的1000条(pageSize: 1000),
输入搜索关键词时不会向后端发起新的请求,导致不在前1000条内的项目无法被搜到。
修复策略:
1. medicineList.vue:当用户输入搜索关键词时,新增 searchList() 走服务端搜索(调用 API 的 searchKey 参数),
使用 pageSize: 5000 提高搜索覆盖率;搜索词清空时恢复使用预加载数据
2. 放宽 childrenJson 过滤条件,从严格的 == null 改为兼容空字符串(== null || === '')
3. 修复 diagnosisTreatmentDialog.vue 中 medicineList 的重复 import
2026-05-13 18:02:55 +08:00
关羽
7e902973b8
Fix Bug #464 : [目录管理-诊疗目录] 新增项目时"零售价"未与"诊疗子项"合计总价自动同步
...
- calculateTotalPrice: 使用 nextTick 确保 Vue 响应式时序正确,零售价与总价同步
- calculateTotalPrice: 修复判断条件,使用 adviceDefinitionId 而非 retailPrice/childrenRequestNum(可能为0)
- calculateTotalPrice: 使用 Number() 替代 parseFloat/parseInt 统一类型转换
- selectRow: 使用 nextTick 确保 DOM 更新后再计算总价,避免时序问题
- edit/reset: treatmentItems 初始化补充缺失的 name 字段
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 17:21:27 +08:00
关羽
fb987ba901
Fix Bug #455 : 门诊医生站-医嘱:开立诊疗医嘱时执行科室默认获取逻辑有误且显示为原始ID
...
根因分析:
- setValue函数对所有类型统一设置orgId=row.positionId
- 诊疗项目(adviceType=3)的positionId来自adm_organization_location配置表
- 当配置ID不在当前机构树中时,findOrgNameById返回空,el-tree-select显示原始ID
- 后续if(!orgId)判断因已有值而不触发回退到患者就诊科室
修复方案:
- 诊疗类型(adviceType=3)跳过positionId赋值,使用患者就诊科室作为默认执行科室
- 同时修复syncGroupFields中会覆盖orgId的问题
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 17:13:00 +08:00
赵云
8c03559c87
Fix Bug #428 : 门诊医生站-检查申请:未实现分类联动检查方法及套餐明细展示与勾选逻辑
...
修复三个根因问题:
1. handleCollapseChange 从 filteredCategoryList(计算属性映射副本)查找分类,
改为从 categoryList(原始响应式数组)查找,确保 handleCategoryExpand 对
cat.methods 的赋值能正确触发 Vue 响应式更新,分类展开后检查方法列表正常渲染
2. handleMethodSelect 跨分类检查中 cat.typeCode 与 newItem.checkType(cat.typeName)
类型不匹配,改为统一使用 cat.typeName 比较
3. handleItemSelect 同样存在 typeCode vs typeName 不匹配问题,一并修复
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 16:12:23 +08:00
关羽
51dcc8eabf
Fix Bug #442 : 手术计费:点击"删除"待签发耗材时异常报错,导致操作失败
...
根因:手术计费场景中"待签发"耗材的 requestId 来自 adm_charge_item.service_id,
当 service_id 为 null 或对应的 wor_device_request 记录不存在时,
后端 removeById(null) 或 removeById(不存在ID) 会抛出异常导致删除失败。
修复策略:
- 前端(prescriptionlist.vue): handleDelete 中增加 requestId 有效性校验,
过滤掉 requestId 为 null/undefined/空的项,避免发送无效删除请求
- 后端(DoctorStationAdviceAppServiceImpl.java): handMedication/handDevice/handService
三个删除路径增加 requestId null check,跳过无效记录而非抛出异常
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 15:16:29 +08:00
赵云
3f41f897c5
Fix Bug #441 : 门诊手术安排:手术室护士角色进入页面提示"无权限"且"获取卫生机构列表失败"
...
根因:HTTP 响应拦截器(request.js)会对所有非 200 响应自动弹出错误通知。
手术室护士角色调用 /system/tenant/page 接口返回 403 时,拦截器先于组件的
.catch() 处理程序弹出"当前操作没有权限"通知,阻断页面体验。
修复:新增 getTenantPageSilent 包装函数,通过 skipErrorMsg: true 配置跳过
拦截器的自动错误提示,让 .catch() 中的 console.warn 静默降级处理。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 15:08:55 +08:00
关羽
c082a272c1
Fix Bug #426 : 门诊医生站-检查开立:已选择列表应支持树形展开,显示套餐明细(项目/数量/单价)
...
根因:CheckPart 实体只有 packageName 字段,没有 packageId 字段。
前端 loadCategoryList 中 packageId 永远为 null,导致 loadPackageDetailsForItem
的 guard 条件 (!item.packageId) 永远提前返回,套餐明细无法加载。
修复策略:
1. handleItemSelect 中添加 packageName 到 selectedItems 数据对象
2. loadPackageDetailsForItem 改为优先使用 packageId,若无则通过 packageName
调用 listCheckPackage API 查找 packageId(复用 loadMethodPackageDetails 已有的模式)
2026-05-13 15:05:42 +08:00
关羽
c1f6e4e1ea
Fix Bug #412 : 门诊医生站:传染病报告卡保存失败,提示报错
...
根因:getNextCardNo API 返回失败或异常时,infectiousDiseaseReportDialog.vue
将 cardNo 保持为空字符串。后端 DTO 对 cardNo 有 @NotBlank 校验,
空字符串导致保存请求被拒绝。
修复:
1. getNextCardNo API 失败时生成 TEMP_+timestamp 临时卡号
2. validateFormManually 放行 TEMP_ 开头的临时卡号
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 15:05:42 +08:00
荀彧
76c38cce39
Fix Bug #408 : 门诊医生站:检查标签页:选中检查申请记录后,"检查明细"标签页显示"暂无数据"
...
根因:handleRowClick 中从 API 响应提取 items 时,const resp = res.data || res 将 resp
设为 ExamApply 对象(res.data 有值),导致 resp.items 为 undefined(ExamApply 对象没有 items
字段),items 实际位于 AjaxResult 顶层(res.items)。
修复:防御性提取 items,优先取 res.items(AjaxResult 顶层),兼容 resp.items 和
resp.data.items 的嵌套情况,确保明细数据能正确加载到 selectedItems 中。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 14:33:56 +08:00
赵云
7f7d28e10b
Fix Bug #403 : 住院医生工作站:应用医嘱组套后,药品明细字段内容丢失未正确引入表格
...
修复 handleSaveGroup 中 mergedDetail 和 newRow 构建时的空值处理问题:
1. mergedDetail 中 dose/doseQuantity/dispensePerDuration 使用严格 null 检查,
避免组套中值为 null 时错误回退到 orderDetailInfos
2. newRow 中关键字段增加 mergedDetail 回退(?? 操作符),
确保当 item 中字段为 null/undefined 时能从 setValue 填充的完整数据中获取
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 14:14:03 +08:00
关羽
deb145e84f
Fix Bug #405 : 住院医生工作站:临床医嘱保存成功后,医嘱条目仍处于可编辑状态(未锁定展示)
...
- handleSaveSign: 新增行点击确定后调用savePrescription持久化到后端,而非仅设置isEdit=false后调用handleAddPrescription
- handleSaveBatch: 修复nextId.value == 1 为赋值操作(=)
- handleSaveBatch: catch块增加错误提示,保存失败时用户可感知
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 14:00:18 +08:00
赵云
1f985004d9
Fix Bug #408 : 门诊医生站检查明细标签页显示暂无数据 - 修复handleRowClick中resp.items被d.data覆盖后丢失的问题
...
根因:后端 getInfo 返回 { data: ExamApply, items: ExamApplyItem[] },
前端先将 resp 赋值给 d,随后又执行 d = resp.data,导致 d 变成 ExamApply 对象,
后续 d.items 永远为 undefined,明细列表无法加载。
修复:提前保存 resp.items 到 rawItems 变量,后续使用 rawItems 而非 d.items。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 13:23:53 +08:00
Ranyunqiao
a1ed8eafb3
bug 362 428 436
2026-05-13 13:23:53 +08:00
关羽
1759036d5c
Fix Bug #496 : 【住院医生工作站-检查申请】检查申请列表字段命名不规范及单号生成规则不符合医疗行业标准
...
1. 前端 examineApplication.vue:列表表头和详情弹窗中"处方号"改为"申请单号"
2. 后端 RequestFormManageAppServiceImpl:检查申请单单号生成规则由 PAR+流水号 改为 JCZ+yyMMdd+5位顺序号(如:JCZ26051300001),其他类型申请单保持原有PAR规则不变
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 13:23:53 +08:00
fe44e6efac
bug471 手术管理-门诊手术安排:手术申请查询结果中混入住院检验申请单数据(脏数据)
2026-05-13 13:23:52 +08:00
赵云
cb939fdf87
Fix Bug #412 : 门诊医生站:传染病报告卡保存失败,提示报错
...
根因分析:
- 前端在 buildSubmitData() 中使用 formData.diagnosisId || null 将空字符串转为 null
- 后端 InfectiousDiseaseReportDto.diagId 有 @NotNull 校验,导致 null 值被拒绝
- diagnosisId 来源于 show() 中 diagnosisData?.conditionId || diagnosisData?.definitionId
使用 || 运算符会将 0 等假值跳过,可能导致 ID 丢失
修复内容:
1. show() 函数:使用显式 null/空字符串检查替代 || 运算符,确保 conditionId/definitionId 正确映射
2. handleSubmit():提交前增加 diagnosisId 非空校验,提前拦截并给出友好提示
3. buildSubmitData():diagId 使用 Number() 显式转换,确保发送正确的 Long 值
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 13:23:52 +08:00
赵云
2123d222eb
Fix Bug #428 : 门诊医生站-检查申请:未实现分类联动检查方法及套餐明细展示与勾选逻辑
...
根本原因:
1. 分类联动加载检查方法时,未提取后端返回的 packageId 字段
2. 勾选检查方法后,未从方法中获取套餐信息(isPackage/packageId)
3. 选中带套餐的检查方法后,未调用 loadPackageDetailsForItem 预加载套餐明细
修复内容(4处手术式修改):
- handleCategoryExpand:方法映射增加 packageId 字段
- handleRowClick:回充已有申请单时,从匹配的方法中获取套餐信息
- handleMethodSelect:从方法获取套餐信息并预加载套餐明细
- handleItemSelect:方法映射增加 packageId 字段
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 01:11:25 +08:00
关羽
1b6f52907d
Fix Bug #492 : 【门诊手术安排】关闭"手术计费"主弹窗后,项目字典选择列表依然残留悬浮在界面上
...
根因:el-popover 使用 :visible 受控模式,closeAllPopovers() 将 showPopover 设为 false
后,Vue 尚未完成 DOM 更新时 showChargeDialog 已被设为 false,导致弹窗组件被销毁
而 popover 的 visible 状态变更未传播到 DOM,弹窗消失但 popover 残留。
修复:在 closeChargeDialog 中使用 nextTick 等待 Vue 完成 popover 关闭的 DOM 更新后,
再设置 showChargeDialog = false 关闭主弹窗。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 01:03:05 +08:00
赵云
13d3d7a98d
Fix Bug #493 : 【住院医生工作站-临床医嘱-检验申请】项目未维护执行科室时,医生手动选择发往科室后仍报错且数据被清空
...
根因:projectWithDepartment 函数定义时遗漏了 type 参数,导致函数体内引用 type 变量时报 ReferenceError(未定义),type === 2 的判断永远无法正确执行。用户在提交时手动选择的发往科室被清空且无法提交。
修复:在函数签名中添加 type 参数,与 working 版本 medicalExaminations.vue 保持一致。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 01:03:05 +08:00
诸葛亮
b127fd93e4
Fix Bug #494 : 住院医生工作站-检查申请:"申请单名称"字段显示为通用名称,未展示具体检查项目名称
...
根因:medicalExaminations.vue 保存检查申请单时,name 字段硬编码为 "检查申请单",
导致列表页所有记录的申请单名称均显示为固定字符串,无法区分具体检查项目。
修复:将 name 从硬编码改为从已选项目集合中提取 adviceName 并用顿号连接,
如选择 CT、超声两项则显示为 "CT、超声"。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:15:09 +08:00
赵云
5f3370ef7f
Fix Bug #488 : 【临床医嘱】双击编辑待签发医嘱,医嘱类型回显为数字且点击确认报接口错误
...
修复 clickRowDb 函数中编辑条件过于严格的问题:原条件 `row.statusEnum == 1 && !row.requestId`
只允许"待保存"(无requestId)的医嘱进入编辑,导致"待签发"(有requestId)的医嘱无法编辑。
改为 `row.statusEnum == 1`,允许所有待签发状态的医嘱编辑。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:11:36 +08:00
张飞
4092abfce9
Fix Bug #477 : 住院医生工作站-住院检查申请详情弹窗中"发往科室"字段显示为短横线(-),未正常获取数据
...
根因分析:
1. 前端组件使用了错误的API获取科室列表:表单使用getDepartmentList(/app-common/department-list)
保存的targetDepartment ID,但详情弹窗使用getOrgList(/base-data-manage/organization/organization)
查询,两个接口返回的数据结构和ID不同,导致recursionFun无法匹配到科室名称
2. recursionFun中obj.children可能为null/undefined,直接遍历会抛TypeError
3. getLocationInfo是异步调用,handleViewDetail可能在科室数据加载完成前被调用
修复:
- 统一使用getDepartmentList(@/api/public.js)获取科室数据,与表单组件保持一致
- recursionFun增加children空值保护
- handleViewDetail改为async,打开详情前确保科室数据已加载
2026-05-13 00:05:17 +08:00
刘备
0600bbecbc
Fix Bug #468 : [住院医生工作站-检验申请] 列表页缺失【单据状态】列,无法闭环管理检验医嘱执行进度
...
前后端完整链路修复:
- 后端 Mapper: LEFT JOIN wor_service_request 表,通过 CASE MIN(status_enum) 映射单据状态
- 后端 Mapper: 新增状态筛选和关键字搜索(申请单号/检验项目模糊匹配)
- 后端 Service/Controller: 新增 status 和 keyword 参数传递
- 前端 Vue: 列表页添加【单据状态】列,绑定 status 字段
- 前端 Vue: 移除中间状态选项(已采集/已收样),与后端 CASE 映射保持一致
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:02:47 +08:00
荀彧
ac57ac21e9
Fix Bug #464 : [目录管理-诊疗目录] 新增项目时"零售价"未与"诊疗子项"合计总价自动同步
...
根本原因: calculateTotalPrice() 中同步零售价的条件只检查了第一个子项 (treatmentItems.value[0]),当第一个子项被清空但其他子项有效时,零售价不会同步。submitForm() 中存在相同问题。
修复内容:
1. calculateTotalPrice(): 使用 Array.some() 检查是否有任何有效子项,而非只检查第一个
2. 当无有效子项时,将 retailPrice 重置为 undefined 避免残留旧值
3. submitForm(): childrenJson 序列化和零售价同步同样改用 some() 检查
4. addItem(): 补充缺失的 name 字段,与初始值结构保持一致
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:35:49 +08:00
刘备
c7404e9d3f
Fix Bug #458 : 门诊医生站:诊疗类医嘱保存成功后,列表"医嘱类型"列显示为空值
...
根因:mapAdviceTypeLabel 函数依赖 drord_doctor_type 字典数据进行类型映射,
当字典中缺少 value=3(诊疗)的条目时,find() 返回 undefined,函数返回空字符串,
导致保存后刷新列表时"医嘱类型"列显示为空白。
修复:在 mapAdviceTypeLabel 中为诊疗/手术类医嘱(wor_activity_definition 表)
添加兜底映射逻辑:type 3→诊疗, 6→手术, 4→手术, 1→检验, 2→检查, 5→其他,
确保即使字典缺失对应条目也能正确显示类型标签。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:29:57 +08:00
赵云
69b28c59f6
Fix Bug #448 : 门诊划价模块-项目分类过滤失效,选择"耗材"类型时仍能检索出药品
...
根因: adviceBaseList.vue 中 adviceQueryParams 的 watch 在 popoverVisible=false 时
直接 return,未将参数同步到 queryParams。当 handleFocus 同时修改 adviceQueryParams
和 showPopover 时,Vue 的 watch 触发顺序不确定:
- 若 adviceQueryParams watch 先触发(popoverVisible 仍为 false),则 queryParams 保持旧值
- 随后 popoverVisible watch 触发时虽然会同步参数,但存在时序竞态导致查询参数不正确
修复: 将参数同步逻辑移至 early return 之前,确保 queryParams 始终与 adviceQueryParams
保持一致,API 请求仍在 popoverVisible=true 时才触发。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:20:44 +08:00
陈琳
7c471205a3
Fix Bug #428 : 门诊医生站-检查申请:未实现分类联动检查方法及套餐明细展示与勾选逻辑
...
根因分析:
1. handleCategoryExpand 加载了 cat.methods 但模板从未渲染,用户展开分类后看不到检查方法
2. 缺少 isMethodSelected/handleMethodSelect 函数,无法通过勾选检查方法来联动添加到已选择列表
3. 套餐明细展示缺少 CSS 样式(package-details-list/detail-row/detail-name/detail-info)
修复内容:
- 模板: 在分类折叠区域添加 cat.methods 的渲染(检查方法列表 + 勾选框 + 价格)
- 逻辑: 新增 isMethodSelected 和 handleMethodSelect 函数,支持直接勾选检查方法添加到已选择列表
- 样式: 添加套餐明细列表样式 + 检查方法区域样式
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:02:12 +08:00
刘备
dc8661c3d0
Fix Bug #413 : 医生个人报卡编辑/查看界面字段映射与后端DTO不一致导致数据不显示
...
后端 InfectiousCardDto 字段名与前端 showReport 映射不匹配:
- caseClass 应从 diseaseType 映射 (后端 diseaseType=病例分类)
- diseaseType 应从 diseaseSubtype 映射 (后端 diseaseSubtype=疾病分型)
- correctName 应从 revisedDiseaseName 映射
- withdrawReason 应从 returnReason 映射
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 22:44:31 +08:00
赵云
c634551fdb
Fix Bug #509 : [门诊医生站-手术申请] 提交申请后列表未实时刷新展示数据,且提示语需优化
...
1. 优化提示语:将"新增成功"/"修改成功"改为"手术申请提交成功!"/"手术申请修改成功!"
2. 优化执行顺序:先emit('saved')通知父组件刷新医嘱列表,再调用getList()刷新手术申请列表,确保数据刷新时序正确
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-12 22:15:26 +08:00
赵云
c556d51eaf
Fix Bug #470 : 住院医生工作站-手术申请单加载手术项目耗时过长,影响医生开单效率
...
策略A-前端优化:为手术项目穿梭框添加 v-loading 加载状态指示器,
解决API查询期间用户看到空白/卡住界面的问题。
同时暴露 getList 方法供父组件调用(之前未暴露但已被父组件调用)。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 22:05:40 +08:00