From 6cd48d844eab7bce18e5e0dc9bff57828dd2abd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Fri, 8 May 2026 10:40:06 +0800 Subject: [PATCH 01/11] =?UTF-8?q?Fix=20Bug=20#461:=20=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E6=89=A7=E8=A1=8C=E7=A7=91=E5=AE=A4?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=EF=BC=9A=E4=BF=9D=E5=AD=98=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=90=8E=EF=BC=8C=E9=A1=B9=E7=9B=AE=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E5=9B=9E=E6=98=BE=E4=B8=BAID=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 保存成功后刷新页面时,el-select 的 filteredOptions 仅包含前100个项目, 导致已保存项目若不在前100中则无法匹配到 label,只能回显 ID。 修复:保存成功后将该选中项确保加入 filteredOptions 再刷新列表。 Co-Authored-By: Claude Opus 4.7 --- .../views/basicmanage/implementDepartment/index.vue | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/openhis-ui-vue3/src/views/basicmanage/implementDepartment/index.vue b/openhis-ui-vue3/src/views/basicmanage/implementDepartment/index.vue index c81c6863..04eb2f81 100755 --- a/openhis-ui-vue3/src/views/basicmanage/implementDepartment/index.vue +++ b/openhis-ui-vue3/src/views/basicmanage/implementDepartment/index.vue @@ -393,12 +393,24 @@ function openSaveImplementDepartment(row) { editImplementDepartment(params).then((res) => { data.isAdding = false; // 允许新增下一行 proxy.$modal.msgSuccess('保存成功!'); + // 确保选中项在 filteredOptions 中,使 el-select 能正确显示名称 + const savedItem = allImplementDepartmentList.value.find(i => i.value === row.activityDefinitionId); + if (savedItem && !row.filteredOptions.some(o => o.value === row.activityDefinitionId)) { + row.filteredOptions.push(savedItem); + } + getList(); }); } else { delete params.id; addImplementDepartment(params).then((res) => { data.isAdding = false; // 允许新增下一行 proxy.$modal.msgSuccess('保存成功!'); + // 确保选中项在 filteredOptions 中,使 el-select 能正确显示名称 + const savedItem = allImplementDepartmentList.value.find(i => i.value === row.activityDefinitionId); + if (savedItem && !row.filteredOptions.some(o => o.value === row.activityDefinitionId)) { + row.filteredOptions.push(savedItem); + } + getList(); }); } } From f1a2520a87d7cc5418b4373523e8872b1297adf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BA=91?= <赵云@gentronhealth.com> Date: Fri, 8 May 2026 11:12:57 +0800 Subject: [PATCH 02/11] =?UTF-8?q?Fix=20Bug=20#466:=20=E4=BD=8F=E9=99=A2?= =?UTF-8?q?=E5=8C=BB=E7=94=9F=E5=B7=A5=E4=BD=9C=E7=AB=99-=E6=A3=80?= =?UTF-8?q?=E9=AA=8C=E7=94=B3=E8=AF=B7=EF=BC=9A=E7=94=B3=E8=AF=B7=E5=8D=95?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E7=BC=BA=E5=A4=B1=E6=A0=B8=E5=BF=83=E8=B4=A8?= =?UTF-8?q?=E6=8E=A7=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增申请类型、标本类型、执行时间三个核心字段及表单联动 Co-Authored-By: Claude Opus 4.7 --- .../inspection/inspectionApplication.vue | 52 ++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue b/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue index 53b568e6..b4be8325 100755 --- a/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue @@ -164,6 +164,20 @@ /> + + + + + + @@ -293,6 +307,34 @@ + + + + + + + + + + + + + + + + + + + + + + 普通 + 急诊 + + + + + @@ -925,7 +967,9 @@ const formData = reactive({ applyDocCode: '', applyDeptCode: '', specimenName: '血液', - encounterId: '' + encounterId: '', + executeTime: null, + applicationType: 0 }) // 表单引用 @@ -1476,6 +1520,8 @@ const resetForm = async () => { visitNo: '', specimenName: '血液', encounterId: props.patientInfo.encounterId || '', + executeTime: null, + applicationType: 0, }) selectedInspectionItems.value = [] @@ -1911,7 +1957,9 @@ const loadApplicationToForm = async (row) => { auditTime: detail.auditTime, visitNo: detail.visitNo, specimenName: detail.specimenName, - encounterId: detail.encounterId + encounterId: detail.encounterId, + executeTime: detail.executeTime || null, + applicationType: detail.applicationType ?? 0 }) // 加载检验项目数据 From e651a1abac4a853cf167b43de805908b016f0c44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BE=BD?= <关羽@gentronhealth.com> Date: Fri, 8 May 2026 11:14:05 +0800 Subject: [PATCH 03/11] =?UTF-8?q?Fix=20Bug=20#452:=20=E9=A2=86=E7=94=A8?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E6=A8=A1=E5=9D=97=E9=80=89=E6=8B=A9=E8=8D=AF?= =?UTF-8?q?=E5=93=81=E6=97=B6=E6=8F=90=E7=A4=BA=E4=BB=93=E5=BA=93=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E4=B8=BA0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 选择药品时sourceLocationId未从表头仓库选择中取值,导致getCount查询库存时orgLocationId为空, 返回0条记录。修复为从receiptHeaderForm.headerLocationId获取仓库ID。 Co-Authored-By: Claude Opus 4.7 --- .../requisitionManagement/requisitionManagement/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openhis-ui-vue3/src/views/medicationmanagement/requisitionManagement/requisitionManagement/index.vue b/openhis-ui-vue3/src/views/medicationmanagement/requisitionManagement/requisitionManagement/index.vue index ee5025a4..f46e0be7 100755 --- a/openhis-ui-vue3/src/views/medicationmanagement/requisitionManagement/requisitionManagement/index.vue +++ b/openhis-ui-vue3/src/views/medicationmanagement/requisitionManagement/requisitionManagement/index.vue @@ -990,7 +990,7 @@ function selectRow(rowValue, index) { form.purchaseinventoryList[index].ybNo = rowValue.ybNo; // #439 fix: 不清空sourceLocationId,保留handleAddRow设置的仓库ID if (!form.purchaseinventoryList[index].sourceLocationId) { - form.purchaseinventoryList[index].sourceLocationId = ''; + form.purchaseinventoryList[index].sourceLocationId = receiptHeaderForm.headerLocationId || ''; } getPharmacyCabinetList().then((res) => { purposeTypeListOptions.value = res.data; From 69f3a5fca17f8fe1725a25e976e8123b692f161c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BA=91?= <赵云@gentronhealth.com> Date: Fri, 8 May 2026 11:51:32 +0800 Subject: [PATCH 04/11] =?UTF-8?q?Fix=20Bug=20#454:=20=E9=97=A8=E8=AF=8A?= =?UTF-8?q?=E5=8C=BB=E7=94=9F=E7=AB=99-=E5=8C=BB=E5=98=B1=E9=A1=B5?= =?UTF-8?q?=E7=AD=BE=EF=BC=9A=E5=88=A0=E9=99=A4=E5=BE=85=E7=AD=BE=E5=8F=91?= =?UTF-8?q?=E6=A3=80=E9=AA=8C=E9=A1=B9=E7=9B=AE=E6=97=B6=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E6=89=A7=E8=A1=8C=E7=A7=91=E5=AE=A4=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- .../appservice/impl/DoctorStationAdviceAppServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java index ec72e987..0f0a8b21 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java @@ -912,7 +912,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp ChargeItem chargeItem; // 新增 + 修改 // 🔧 BugFix: 如果 requestId 不为空说明是已存在的医嘱,需要更新,即使 dbOpType 不匹配也应该包含进来 + // 🔧 BugFix #454: 排除删除操作,避免误入insertOrUpdateList List insertOrUpdateList = medicineList.stream() + .filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType())) .filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType()) || DbOpType.UPDATE.getCode().equals(e.getDbOpType()) || e.getRequestId() != null)) @@ -1358,7 +1360,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp ChargeItem chargeItem; // 新增 + 修改 // 🔧 BugFix: 如果 requestId 不为空说明是已存在的医嘱,需要更新,即使 dbOpType 不匹配也应该包含进来 + // 🔧 BugFix #454: 排除删除操作,避免误入insertOrUpdateList List insertOrUpdateList = deviceList.stream() + .filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType())) .filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType()) || DbOpType.UPDATE.getCode().equals(e.getDbOpType()) || e.getRequestId() != null)) @@ -1673,7 +1677,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp ChargeItem chargeItem; // 新增 + 修改 // 🔧 BugFix: 如果 requestId 不为空说明是已存在的医嘱,需要更新,即使 dbOpType 不匹配也应该包含进来 + // 🔧 BugFix #454: 排除删除操作,避免误入insertOrUpdateList触发执行科室校验 List insertOrUpdateList = activityList.stream() + .filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType())) .filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType()) || DbOpType.UPDATE.getCode().equals(e.getDbOpType()) || e.getRequestId() != null)) From 814f9561feeb4ab8a5392401b9b9f06ae26c0be6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BA=91?= <赵云@gentronhealth.com> Date: Fri, 8 May 2026 14:05:49 +0800 Subject: [PATCH 05/11] =?UTF-8?q?Fix=20Bug=20#467:=20=E4=BD=8F=E9=99=A2?= =?UTF-8?q?=E5=8C=BB=E7=94=9F=E5=B7=A5=E4=BD=9C=E7=AB=99=E6=A3=80=E9=AA=8C?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E5=88=97=E8=A1=A8=E6=98=BE=E7=A4=BA=E4=B8=8D?= =?UTF-8?q?=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复检验申请列表未合并同名申请单明细的问题:getInspectionList 中调用 mergeInspectionApplyRecords 合并数据 - 确保单据名称展示具体检验项目(多个项目用"+"拼接),而非统一显示"检验申请单" Co-Authored-By: Claude Opus 4.7 --- .../components/inspection/inspectionApplication.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue b/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue index b4be8325..6e17e4f1 100755 --- a/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue @@ -1373,13 +1373,13 @@ const getInspectionList = () => { // 如果返回的是分页对象 {records: [...], total: 100} if (Array.isArray(res.data.records)) { // 直接使用后端返回的数据(后端已按申请单返回,无需合并) - inspectionList.value = res.data.records + inspectionList.value = mergeInspectionApplyRecords(res.data.records) total.value = res.data.total || res.data.records.length } // 如果返回的是普通数组 else if (Array.isArray(res.data)) { - // 直接使用后端返回的数据 - inspectionList.value = res.data + // 合并同一个申请单的明细 + inspectionList.value = mergeInspectionApplyRecords(res.data) total.value = res.data.length } // 如果返回的是其他对象结构 From 1fc7116f19de8ad3f551334188030916101a8cd3 Mon Sep 17 00:00:00 2001 From: yangkexiang <1677036288@qq.com> Date: Fri, 8 May 2026 15:03:17 +0800 Subject: [PATCH 06/11] =?UTF-8?q?bug249:=E6=89=8B=E6=9C=AF=E7=AE=A1?= =?UTF-8?q?=E7=90=86-=E3=80=8B=E9=97=A8=E8=AF=8A=E6=89=8B=E6=9C=AF?= =?UTF-8?q?=E5=AE=89=E6=8E=92=EF=BC=9A=E3=80=90=E6=96=B0=E5=A2=9E=E6=89=8B?= =?UTF-8?q?=E6=9C=AF=E5=AE=89=E6=8E=92=E3=80=91-=E3=80=8B=E3=80=90?= =?UTF-8?q?=E6=9F=A5=E6=89=BE=E3=80=91=E5=9C=A8=E9=97=A8=E8=AF=8A=E5=8C=BB?= =?UTF-8?q?=E7=94=9F=E7=AB=99=E5=B7=B2=E3=80=90=E5=88=A0=E9=99=A4=E3=80=91?= =?UTF-8?q?=E4=BD=9C=E5=BA=9F=E7=9A=84=E6=89=8B=E6=9C=AF=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=8D=95=E5=9C=A8=E6=9F=A5=E8=AF=A2=E7=95=8C=E9=9D=A2=E8=BF=98?= =?UTF-8?q?=E8=83=BD=E6=9F=A5=E8=AF=A2=E5=87=BA=E6=9D=A5.=20bug426:?= =?UTF-8?q?=E9=97=A8=E8=AF=8A=E5=8C=BB=E7=94=9F=E7=AB=99-=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=BC=80=E7=AB=8B=EF=BC=9A=E5=B7=B2=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=BA=94=E6=94=AF=E6=8C=81=E6=A0=91=E5=BD=A2?= =?UTF-8?q?=E5=B1=95=E5=BC=80=EF=BC=8C=E6=98=BE=E7=A4=BA=E5=A5=97=E9=A4=90?= =?UTF-8?q?=E6=98=8E=E7=BB=86=EF=BC=88=E9=A1=B9=E7=9B=AE/=E6=95=B0?= =?UTF-8?q?=E9=87=8F/=E5=8D=95=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CheckMethodAppServiceImpl.java | 1 + .../check/controller/CheckTypeController.java | 30 +++++++++++++++++ .../openhis/web/check/dto/CheckMethodDto.java | 3 ++ .../appservice/ISurgeryAppService.java | 4 ++- .../impl/SurgeryAppServiceImpl.java | 32 ++++++++++++++++++- .../controller/SurgeryController.java | 7 ++-- 6 files changed, 73 insertions(+), 4 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/appservice/impl/CheckMethodAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/appservice/impl/CheckMethodAppServiceImpl.java index 51bd6d0e..cf60f32e 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/appservice/impl/CheckMethodAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/appservice/impl/CheckMethodAppServiceImpl.java @@ -106,6 +106,7 @@ public class CheckMethodAppServiceImpl implements ICheckMethodAppService { if (ObjectUtil.isNotEmpty(m.getPackageName())) { CheckPackage pkg = packageMap.get(m.getPackageName()); if (pkg != null) { + dto.setPackageId(pkg.getId()); dto.setPackagePrice(pkg.getPackagePrice()); dto.setServiceFee(pkg.getServiceFee()); } diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/controller/CheckTypeController.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/controller/CheckTypeController.java index 360a72ea..cd6c55ae 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/controller/CheckTypeController.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/controller/CheckTypeController.java @@ -220,6 +220,36 @@ public class CheckTypeController extends BaseController { return AjaxResult.success(result); } + /** + * 查询检查套餐明细,用于医生站已选择套餐展开显示 + */ + @GetMapping({ "/package/{packageId}/details", "/check-package/{packageId}/details" }) + public AjaxResult getPackageDetails(@PathVariable Long packageId) { + List details = checkPackageDetailService.list( + new LambdaQueryWrapper() + .eq(CheckPackageDetail::getPackageId, packageId) + .orderByAsc(CheckPackageDetail::getOrderNum) + .orderByAsc(CheckPackageDetail::getId)); + + List> result = details.stream().map(d -> { + Map item = new LinkedHashMap<>(); + item.put("id", d.getId()); + item.put("packageId", d.getPackageId()); + item.put("itemCode", d.getItemCode()); + item.put("itemName", d.getItemName()); + item.put("name", d.getItemName()); + item.put("quantity", d.getQuantity()); + item.put("unit", d.getUnit()); + item.put("unitPrice", d.getUnitPrice()); + item.put("price", d.getUnitPrice()); + item.put("amount", d.getAmount()); + item.put("orderNum", d.getOrderNum()); + return item; + }).collect(Collectors.toList()); + + return AjaxResult.success(result); + } + /** 套餐级别文字映射 */ private String parseLevelText(String level) { if ("1".equals(level)) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/dto/CheckMethodDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/dto/CheckMethodDto.java index 54582a31..4859dbaa 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/dto/CheckMethodDto.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/dto/CheckMethodDto.java @@ -31,6 +31,9 @@ public class CheckMethodDto { /* 套餐名称 */ private String packageName; + /* 套餐ID */ + private Long packageId; + /* 套餐价格 - Bug #384修复:通过packageName匹配CheckPackage获取 */ private BigDecimal packagePrice; diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/ISurgeryAppService.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/ISurgeryAppService.java index 457b8652..a5554917 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/ISurgeryAppService.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/ISurgeryAppService.java @@ -25,7 +25,9 @@ public interface ISurgeryAppService { * @param plannedTimeEnd 计划结束时间 * @return 手术列表 */ - IPage getSurgeryPage(SurgeryDto surgeryDto, Integer pageNo, Integer pageSize, String plannedTimeStart, String plannedTimeEnd); + IPage getSurgeryPage(SurgeryDto surgeryDto, Integer pageNo, Integer pageSize, + String plannedTimeStart, String plannedTimeEnd, + String createTimeStart, String createTimeEnd); /** * 根据ID查询手术详情 diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java index 04f00917..971ab367 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java @@ -108,7 +108,9 @@ public class SurgeryAppServiceImpl implements ISurgeryAppService { * @return 手术列表 */ @Override - public IPage getSurgeryPage(SurgeryDto surgeryDto, Integer pageNo, Integer pageSize, String plannedTimeStart, String plannedTimeEnd) { + public IPage getSurgeryPage(SurgeryDto surgeryDto, Integer pageNo, Integer pageSize, + String plannedTimeStart, String plannedTimeEnd, + String createTimeStart, String createTimeEnd) { QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(surgeryDto, null, new HashSet() {{ add("surgery_no"); @@ -148,6 +150,34 @@ public class SurgeryAppServiceImpl implements ISurgeryAppService { } } } + + // 申请时间范围(创建时间 create_time)查询:用于“手术申请查询”弹窗 + if (createTimeStart != null && !createTimeStart.isEmpty()) { + try { + LocalDateTime startDateTime = LocalDateTime.parse(createTimeStart, DateTimeFormatter.ISO_DATE_TIME); + queryWrapper.ge("create_time", startDateTime); + } catch (Exception e) { + try { + LocalDateTime startDateTime = LocalDateTime.parse(createTimeStart + "T00:00:00", DateTimeFormatter.ISO_DATE_TIME); + queryWrapper.ge("create_time", startDateTime); + } catch (Exception ex) { + log.error("解析创建开始时间失败: {}", createTimeStart, ex); + } + } + } + if (createTimeEnd != null && !createTimeEnd.isEmpty()) { + try { + LocalDateTime endDateTime = LocalDateTime.parse(createTimeEnd, DateTimeFormatter.ISO_DATE_TIME); + queryWrapper.le("create_time", endDateTime); + } catch (Exception e) { + try { + LocalDateTime endDateTime = LocalDateTime.parse(createTimeEnd + "T23:59:59", DateTimeFormatter.ISO_DATE_TIME); + queryWrapper.le("create_time", endDateTime); + } catch (Exception ex) { + log.error("解析创建结束时间失败: {}", createTimeEnd, ex); + } + } + } queryWrapper.orderByDesc("create_time"); return surgeryAppMapper.getSurgeryPage(new Page<>(pageNo, pageSize), queryWrapper); diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/controller/SurgeryController.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/controller/SurgeryController.java index e9f01bc9..b20ed8eb 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/controller/SurgeryController.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/controller/SurgeryController.java @@ -40,9 +40,12 @@ public class SurgeryController { @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(value = "plannedTimeStart", required = false) String plannedTimeStart, - @RequestParam(value = "plannedTimeEnd", required = false) String plannedTimeEnd) { + @RequestParam(value = "plannedTimeEnd", required = false) String plannedTimeEnd, + @RequestParam(value = "createTimeStart", required = false) String createTimeStart, + @RequestParam(value = "createTimeEnd", required = false) String createTimeEnd) { // 将时间范围参数传递给服务层 - IPage page = surgeryAppService.getSurgeryPage(surgeryDto, pageNo, pageSize, plannedTimeStart, plannedTimeEnd); + IPage page = surgeryAppService.getSurgeryPage(surgeryDto, pageNo, pageSize, + plannedTimeStart, plannedTimeEnd, createTimeStart, createTimeEnd); return R.ok(page); } From 88ce63152c5a6708f1bc7581ad829f13238c2585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BA=91?= Date: Fri, 8 May 2026 15:27:44 +0800 Subject: [PATCH 07/11] =?UTF-8?q?Fix=20Bug=20#441:=20=E6=89=8B=E6=9C=AF?= =?UTF-8?q?=E5=AE=A4=E6=8A=A4=E5=A3=AB=E8=A7=92=E8=89=B2=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E9=97=A8=E8=AF=8A=E6=89=8B=E6=9C=AF=E5=AE=89=E6=8E=92=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=97=B6=EF=BC=8C=E5=8D=AB=E7=94=9F=E6=9C=BA=E6=9E=84?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3=E6=97=A0=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E6=94=B9=E4=B8=BA=E9=9D=99=E9=BB=98=E9=99=8D?= =?UTF-8?q?=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原因:后端 getTenantPage API 对手术室护士角色无权限,前端 msgError 弹窗阻断用户体验。 修复:loadOrgList() 权限失败时静默降级(console.warn 替代 msgError),列表下拉框显示为空但不弹窗。 用户仍可查看已安排的手术数据,仅筛选条件中的卫生机构下拉框不可用。 Co-Authored-By: 赵云 --- ...e92189ae54ef8e767273ceaeb613314-audit.json | 20 +++++++++++++++++++ ...7d24dcd050254bba93c4693957f894e-audit.json | 20 +++++++++++++++++++ .../src/views/surgicalschedule/index.vue | 8 +++++--- 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100755 logs/.2c17bf7b4e92189ae54ef8e767273ceaeb613314-audit.json create mode 100755 logs/.9c2086cba7d24dcd050254bba93c4693957f894e-audit.json diff --git a/logs/.2c17bf7b4e92189ae54ef8e767273ceaeb613314-audit.json b/logs/.2c17bf7b4e92189ae54ef8e767273ceaeb613314-audit.json new file mode 100755 index 00000000..9d14d063 --- /dev/null +++ b/logs/.2c17bf7b4e92189ae54ef8e767273ceaeb613314-audit.json @@ -0,0 +1,20 @@ +{ + "keep": { + "days": true, + "amount": 14 + }, + "auditLog": "/root/.openclaw/workspace/his-repo/logs/.2c17bf7b4e92189ae54ef8e767273ceaeb613314-audit.json", + "files": [ + { + "date": 1778128585254, + "name": "/root/.openclaw/workspace/his-repo/logs/application-2026-05-07.log", + "hash": "2ec545aad5feb57a45e48b0a980690b3b9ef6b90e57204f6c3dfb1c7f2fd4d95" + }, + { + "date": 1778200962650, + "name": "/root/.openclaw/workspace/his-repo/logs/application-2026-05-08.log", + "hash": "cf50ef7b8aa656efb0a209a252219fea97a437ff9020b1b8770788f1ba51303e" + } + ], + "hashType": "sha256" +} \ No newline at end of file diff --git a/logs/.9c2086cba7d24dcd050254bba93c4693957f894e-audit.json b/logs/.9c2086cba7d24dcd050254bba93c4693957f894e-audit.json new file mode 100755 index 00000000..c346d314 --- /dev/null +++ b/logs/.9c2086cba7d24dcd050254bba93c4693957f894e-audit.json @@ -0,0 +1,20 @@ +{ + "keep": { + "days": true, + "amount": 14 + }, + "auditLog": "/root/.openclaw/workspace/his-repo/logs/.9c2086cba7d24dcd050254bba93c4693957f894e-audit.json", + "files": [ + { + "date": 1778128585256, + "name": "/root/.openclaw/workspace/his-repo/logs/error-2026-05-07.log", + "hash": "84a811bf9cf76799b49d36df79427471c8e0cfaa1bd359422d69091b06a64f87" + }, + { + "date": 1778200962653, + "name": "/root/.openclaw/workspace/his-repo/logs/error-2026-05-08.log", + "hash": "83b015957301572a67ea6fb41a65dfe5aa357831ca361155629630c6e9ef68bd" + } + ], + "hashType": "sha256" +} \ No newline at end of file diff --git a/openhis-ui-vue3/src/views/surgicalschedule/index.vue b/openhis-ui-vue3/src/views/surgicalschedule/index.vue index 2108a7a6..e7c9c6ed 100755 --- a/openhis-ui-vue3/src/views/surgicalschedule/index.vue +++ b/openhis-ui-vue3/src/views/surgicalschedule/index.vue @@ -1113,12 +1113,14 @@ function loadOrgList() { const records = res.data?.records || res.data || [] orgList.value = records.map(item => ({ id: item.id, name: item.tenantName || item.name })) } else { - proxy.$modal.msgError('获取卫生机构列表失败') + // 权限不足时静默降级,不弹窗阻断(Bug #441) + console.warn('卫生机构列表加载失败(可能无权限):', res.message || res.code) orgList.value = [] } }) - .catch(() => { - proxy.$modal.msgError('获取卫生机构列表失败') + .catch((err) => { + // 网络错误或权限拒绝:静默降级 + console.warn('卫生机构列表加载失败:', err?.message || err) orgList.value = [] }) } From 3acdf60080c87e2daaf35e0906c1da10245288bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BA=91?= <赵云@gentronhealth.com> Date: Fri, 8 May 2026 15:39:45 +0800 Subject: [PATCH 08/11] =?UTF-8?q?Fix=20Bug=20#463:=20[=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E8=AF=8A=E7=96=97=E7=9B=AE=E5=BD=95]=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E/=E7=BC=96=E8=BE=91=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E4=B8=AD=E2=80=9C=E8=AF=8A=E7=96=97=E5=AD=90=E9=A1=B9=E2=80=9D?= =?UTF-8?q?=E6=A3=80=E7=B4=A2=E5=8A=9F=E8=83=BD=E5=A4=B1=E6=95=88=EF=BC=8C?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=90=9C=E5=88=B0=E5=B7=B2=E7=BB=B4=E6=8A=A4?= =?UTF-8?q?=E7=9A=84=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- openhis-ui-vue3/src/api/operatingroom.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/openhis-ui-vue3/src/api/operatingroom.js b/openhis-ui-vue3/src/api/operatingroom.js index 9d979bd1..662ec982 100755 --- a/openhis-ui-vue3/src/api/operatingroom.js +++ b/openhis-ui-vue3/src/api/operatingroom.js @@ -13,6 +13,19 @@ export function listOperatingRoom(query) { }) } +/** + * 查询诊疗项目列表(用于诊疗子项检索) + * @param {Object} query - 查询参数 + * @returns {Promise} 请求结果 + */ +export function listMedicalItems(query) { + return request({ + url: '/clinical-manage/medical-item/list', + method: 'get', + params: query + }) +} + /** * 查询手术室详细 * @param {Long} id - 手术室ID From 1717806a3f3319708126fd1e9bd6e30d9c64e23c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BA=91?= <赵云@gentronhealth.com> Date: Fri, 8 May 2026 16:04:33 +0800 Subject: [PATCH 09/11] =?UTF-8?q?Fix=20Bug=20#433:=20=E9=97=A8=E8=AF=8A?= =?UTF-8?q?=E6=89=8B=E6=9C=AF=E5=AE=89=E6=8E=92=EF=BC=9A=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E5=86=85=E2=80=9C=E9=BA=BB=E9=86=89=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E2=80=9D=E5=9B=9E=E6=98=BE=E4=B8=BA=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=B8=94=E2=80=9C=E5=A4=96=E8=AF=B7=E4=B8=93=E5=AE=B6=E5=A7=93?= =?UTF-8?q?=E5=90=8D=E2=80=9D=E6=95=B0=E6=8D=AE=E6=9C=AA=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/surgicalschedule/index.vue | 306 ++++++++++++++++++ 1 file changed, 306 insertions(+) diff --git a/openhis-ui-vue3/src/views/surgicalschedule/index.vue b/openhis-ui-vue3/src/views/surgicalschedule/index.vue index e7c9c6ed..dfa2da73 100755 --- a/openhis-ui-vue3/src/views/surgicalschedule/index.vue +++ b/openhis-ui-vue3/src/views/surgicalschedule/index.vue @@ -58,6 +58,312 @@ + + + 新增 + + + + + 修改 + + + + + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +