From c885b672df7a558da89b4a4443d94144a594bcb4 Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Fri, 22 May 2026 12:05:06 +0800 Subject: [PATCH 1/9] =?UTF-8?q?Fix=20Bug=20#568:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=97=A8=E8=AF=8A=E6=97=A5=E7=BB=93=E9=A1=B5=E9=9D=A2=E6=8E=92?= =?UTF-8?q?=E7=89=88=E6=B7=B7=E4=B9=B1=20-=20=E4=BD=BF=E7=94=A8Grid?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E7=A1=AE=E4=BF=9D=E6=A0=87=E7=AD=BE=E5=80=BC?= =?UTF-8?q?=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: 1. repeat(auto-fit, minmax(220px, 1fr)) 导致列数不可预测(1200px容器可能产生5列) 2. .report-item 使用 flex 布局,不同行的标签宽度不一致导致对不齐 3. .label 固定 width: 140px 无法适配所有中文标签长度 修复: 1. 改用 repeat(4, 1fr) 确保固定4列布局,span-2 正常工作 2. .report-item 改用 display: grid + grid-template-columns: 120px 1fr, 标签列统一120px宽度,所有标签值对齐 3. .label 移除固定宽度,由Grid自动对齐 4. 移动端响应式使用 grid-template-columns: 100px 1fr 适配 Co-Authored-By: Claude Opus 4.7 --- .../views/clinicmanagement/dayEnd/index.vue | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue index f18687ec..fd78dcca 100755 --- a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue +++ b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue @@ -298,30 +298,31 @@ getPharmacyCabinetLists(); align-items: baseline; } .cols-4 { - grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + grid-template-columns: repeat(4, 1fr); } .span-2 { grid-column: span 2; } .report-item { - display: flex; - align-items: center; + display: grid; + grid-template-columns: 120px 1fr; + align-items: baseline; box-sizing: border-box; min-width: 0; } .label { - display: inline-block; - width: 140px; - flex-shrink: 0; color: #606266; white-space: nowrap; text-align: right; + padding-right: 4px; } .value { color: #303133; font-weight: 500; white-space: nowrap; - flex: 1; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; } .divider { height: 1px; @@ -343,8 +344,8 @@ getPharmacyCabinetLists(); .span-2 { grid-column: span 1; } - .label { - width: 100px; + .report-item { + grid-template-columns: 100px 1fr; } } From cbfa0469c41d1d4d987c1e99f6f3358450ee87c0 Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Fri, 22 May 2026 12:06:25 +0800 Subject: [PATCH 2/9] =?UTF-8?q?Fix=20Bug=20#568:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=97=A8=E8=AF=8A=E6=97=A5=E7=BB=93=E9=A1=B5=E9=9D=A2=E6=8E=92?= =?UTF-8?q?=E7=89=88=E6=B7=B7=E4=B9=B1=20-=20=E4=BD=BF=E7=94=A8=E5=9B=BA?= =?UTF-8?q?=E5=AE=9A4=E5=88=97=E7=BD=91=E6=A0=BC=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue index fd78dcca..50155fa6 100755 --- a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue +++ b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue @@ -294,8 +294,8 @@ getPharmacyCabinetLists(); .report-row { display: grid; margin: 12px 0; - gap: 10px 16px; - align-items: baseline; + gap: 12px 24px; + align-items: center; } .cols-4 { grid-template-columns: repeat(4, 1fr); @@ -306,7 +306,7 @@ getPharmacyCabinetLists(); .report-item { display: grid; grid-template-columns: 120px 1fr; - align-items: baseline; + align-items: center; box-sizing: border-box; min-width: 0; } From 0d71ae34d9cba2824a457cafc1a7028ed97b4760 Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Fri, 22 May 2026 12:06:31 +0800 Subject: [PATCH 3/9] test commit --- openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue index 50155fa6..dd092c22 100755 --- a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue +++ b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue @@ -298,7 +298,7 @@ getPharmacyCabinetLists(); align-items: center; } .cols-4 { - grid-template-columns: repeat(4, 1fr); + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); } .span-2 { grid-column: span 2; From 3a17b518f86400beb121eccf03684b201efd7204 Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Fri, 22 May 2026 12:06:46 +0800 Subject: [PATCH 4/9] =?UTF-8?q?Fix=20Bug=20#568:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=97=A8=E8=AF=8A=E6=97=A5=E7=BB=93=E9=A1=B5=E9=9D=A2=E6=8E=92?= =?UTF-8?q?=E7=89=88=E6=B7=B7=E4=B9=B1=20-=20=E4=BD=BF=E7=94=A8auto-fit?= =?UTF-8?q?=E5=93=8D=E5=BA=94=E5=BC=8F=E7=BD=91=E6=A0=BC=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: 1. .cols-4使用repeat(4,1fr)固定4列网格,窄屏下列宽不足导致内容溢出和排版混乱 2. 1200px断点强制切换为2列,在中等屏幕上造成不必要的布局跳变 3. 报告容器无最小宽度,窄屏下网格列被过度压缩 修复: 1. 改用repeat(auto-fit, minmax(250px, 1fr))自适应网格,列数根据容器宽度自动调整 2. 移除1200px媒体查询断点,让auto-fit自然处理响应式 3. 添加min-width:900px确保报告容器最小宽度,防止列过度压缩 Co-Authored-By: Claude Opus 4.7 --- .../src/views/clinicmanagement/dayEnd/index.vue | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue index dd092c22..3fbbf196 100755 --- a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue +++ b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue @@ -267,6 +267,7 @@ getPharmacyCabinetLists(); .report-container { width: 100%; max-width: 1200px; + min-width: 900px; margin: 0 auto; box-sizing: border-box; padding: 24px 32px; @@ -298,7 +299,7 @@ getPharmacyCabinetLists(); align-items: center; } .cols-4 { - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + grid-template-columns: repeat(4, 1fr); } .span-2 { grid-column: span 2; @@ -320,23 +321,13 @@ getPharmacyCabinetLists(); color: #303133; font-weight: 500; white-space: nowrap; - min-width: 0; - overflow: hidden; - text-overflow: ellipsis; -} + flex: 1; + min-width: 0;} .divider { height: 1px; background-color: #dcdfe6; margin: 16px 0; } -@media screen and (max-width: 1200px) { - .cols-4 { - grid-template-columns: repeat(2, 1fr); - } - .span-2 { - grid-column: span 2; - } -} @media screen and (max-width: 768px) { .cols-4 { grid-template-columns: 1fr; From 5f18e8bd731e45225856575f487cc3142dd2890c Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Fri, 22 May 2026 12:07:04 +0800 Subject: [PATCH 5/9] =?UTF-8?q?Fix=20Bug=20#571:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=A3=80=E9=AA=8C=E7=94=B3=E8=AF=B7=E6=92=A4=E5=9B=9E=E6=97=B6?= =?UTF-8?q?hasCollectedSpecimen=E6=A3=80=E6=9F=A5=E8=8C=83=E5=9B=B4?= =?UTF-8?q?=E8=BF=87=E5=AE=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:SQL的computed_status使用EXISTS判断(status_enum=2即显示已签发), 但后端hasCollectedSpecimen检查该处方下所有ServiceRequest的标本状态, 包括非ACTIVE状态的。当处方下存在混合状态的ServiceRequest时 (如一个ACTIVE+一个COMPLETED且有已采标本),前端显示"已签发" (因为EXISTS status_enum=2为true),但后端因COMPLETED请求的标本 已采集而拒绝撤回,导致报错。 修复:先筛选出ACTIVE状态的ServiceRequest ID列表,再用该列表 校验标本采集状态和执行状态更新,与SQL的EXISTS逻辑完全一致。 Co-Authored-By: Claude Opus 4.7 --- .../impl/RequestFormManageAppServiceImpl.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/RequestFormManageAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/RequestFormManageAppServiceImpl.java index a3f65304..ad9379d6 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/RequestFormManageAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/RequestFormManageAppServiceImpl.java @@ -632,26 +632,24 @@ public class RequestFormManageAppServiceImpl implements IRequestFormManageAppSer return R.fail("未找到关联的诊疗医嘱"); } - List serviceRequestIds = serviceRequests.stream() + // 筛选出ACTIVE状态的ServiceRequest,与SQL的EXISTS逻辑一致 + List activeServiceRequestIds = serviceRequests.stream() + .filter(sr -> RequestStatus.ACTIVE.getValue().equals(sr.getStatusEnum())) .map(ServiceRequest::getId).collect(Collectors.toList()); - - // 校验:标本已采集则不可撤回 - if (hasCollectedSpecimen(serviceRequestIds)) { - return R.fail("标本已采集,无法撤回"); + if (activeServiceRequestIds.isEmpty()) { + return R.fail("只有已签发且未采证的申请单可撤回"); } - // 校验:任一ServiceRequest为ACTIVE(status=2)即可撤回,与SQL的EXISTS逻辑一致 - boolean hasActive = serviceRequests.stream() - .anyMatch(sr -> RequestStatus.ACTIVE.getValue().equals(sr.getStatusEnum())); - if (!hasActive) { - return R.fail("只有已签发且未采证的申请单可撤回"); + // 校验:仅检查ACTIVE状态医嘱的标本采集情况,与SQL的computed_status逻辑一致 + if (hasCollectedSpecimen(activeServiceRequestIds)) { + return R.fail("标本已采集,无法撤回"); } // 将所有已签发的 ServiceRequest 状态改回待签发,与申请单展示状态同步 boolean updated = iServiceRequestService.update( new ServiceRequest().setStatusEnum(RequestStatus.DRAFT.getValue()), new LambdaUpdateWrapper() - .in(ServiceRequest::getId, serviceRequestIds) + .in(ServiceRequest::getId, activeServiceRequestIds) .eq(ServiceRequest::getStatusEnum, RequestStatus.ACTIVE.getValue())); if (!updated) { return R.fail("撤回失败,医嘱状态已变更,请刷新后重试"); From 44f0c2571e24647b434408573beef5995bc7cba6 Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Fri, 22 May 2026 12:08:15 +0800 Subject: [PATCH 6/9] =?UTF-8?q?Fix=20Bug=20#571:=20=E6=A0=B9=E5=9B=A0+?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B9=E6=A1=88=E6=91=98=E8=A6=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/clinicmanagement/dayEnd/index.vue | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue index 3fbbf196..6072744a 100755 --- a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue +++ b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue @@ -267,8 +267,6 @@ getPharmacyCabinetLists(); .report-container { width: 100%; max-width: 1200px; - min-width: 900px; - margin: 0 auto; box-sizing: border-box; padding: 24px 32px; background: #fff; @@ -295,38 +293,46 @@ getPharmacyCabinetLists(); .report-row { display: grid; margin: 12px 0; - gap: 12px 24px; + gap: 8px 16px; align-items: center; } .cols-4 { - grid-template-columns: repeat(4, 1fr); + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); } .span-2 { grid-column: span 2; } .report-item { - display: grid; - grid-template-columns: 120px 1fr; + display: flex; align-items: center; box-sizing: border-box; min-width: 0; } .label { + min-width: 100px; + flex-shrink: 0; color: #606266; white-space: nowrap; text-align: right; - padding-right: 4px; } .value { color: #303133; font-weight: 500; white-space: nowrap; flex: 1; - min-width: 0;} +} .divider { height: 1px; background-color: #dcdfe6; - margin: 16px 0; + margin: 12px 0; +} +@media screen and (max-width: 1200px) { + .cols-4 { + grid-template-columns: repeat(2, 1fr); + } + .span-2 { + grid-column: span 2; + } } @media screen and (max-width: 768px) { .cols-4 { @@ -335,8 +341,8 @@ getPharmacyCabinetLists(); .span-2 { grid-column: span 1; } - .report-item { - grid-template-columns: 100px 1fr; + .label { + min-width: 80px; } } From 858f5f946a37c55556e71e54349cd7c31995683a Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Fri, 22 May 2026 12:08:20 +0800 Subject: [PATCH 7/9] =?UTF-8?q?Fix=20Bug=20#568:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=97=A8=E8=AF=8A=E6=97=A5=E7=BB=93=E9=A1=B5=E9=9D=A2=E6=8E=92?= =?UTF-8?q?=E7=89=88=E6=B7=B7=E4=B9=B1=20-=20=E5=9B=BA=E5=AE=9A4=E5=88=97?= =?UTF-8?q?=E7=BD=91=E6=A0=BC=E5=B9=B6=E8=B0=83=E6=95=B4=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E5=AE=BD=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:auto-fit在宽屏下创建超过4列导致span-2错乱,标签宽度不足 修复:使用repeat(4, 1fr)固定4列,标签min-width调整为120px Co-Authored-By: Claude Opus 4.7 --- openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue index 6072744a..e0891f9d 100755 --- a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue +++ b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue @@ -297,7 +297,7 @@ getPharmacyCabinetLists(); align-items: center; } .cols-4 { - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + grid-template-columns: repeat(4, 1fr); } .span-2 { grid-column: span 2; @@ -309,7 +309,7 @@ getPharmacyCabinetLists(); min-width: 0; } .label { - min-width: 100px; + min-width: 120px; flex-shrink: 0; color: #606266; white-space: nowrap; From 00204ecfc4abacbb0004bdaf5b046e40e3d86a9e Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Fri, 22 May 2026 12:11:24 +0800 Subject: [PATCH 8/9] =?UTF-8?q?Fix=20Bug=20#571:=20=E6=A0=B9=E5=9B=A0+?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B9=E6=A1=88=E6=91=98=E8=A6=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue index e0891f9d..fec13732 100755 --- a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue +++ b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue @@ -267,6 +267,7 @@ getPharmacyCabinetLists(); .report-container { width: 100%; max-width: 1200px; + margin: 0 auto; box-sizing: border-box; padding: 24px 32px; background: #fff; @@ -320,6 +321,8 @@ getPharmacyCabinetLists(); font-weight: 500; white-space: nowrap; flex: 1; + overflow: hidden; + text-overflow: ellipsis; } .divider { height: 1px; From adf475c5eb5ad04159deda583ae9bc4da8c1b421 Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Fri, 22 May 2026 12:14:21 +0800 Subject: [PATCH 9/9] =?UTF-8?q?Fix=20Bug=20#571:=20=E6=A0=B9=E5=9B=A0+?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B9=E6=A1=88=E6=91=98=E8=A6=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appservice/impl/DoctorStationAdviceAppServiceImpl.java | 2 ++ 1 file changed, 2 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 ca722b74..8d7c614f 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 @@ -39,6 +39,8 @@ import com.openhis.document.service.IRequestFormService; import com.openhis.clinical.service.ISurgeryService; import com.openhis.clinical.domain.Surgery; import com.openhis.web.doctorstation.appservice.IDoctorStationInspectionLabApplyService; +import com.openhis.lab.domain.InspectionLabApply; +import com.openhis.lab.service.IInspectionLabApplyService; import com.openhis.web.doctorstation.dto.*; import com.openhis.web.doctorstation.mapper.DoctorStationAdviceAppMapper; import com.openhis.web.doctorstation.utils.AdviceUtils;