From abd5bd9f2fe6319c6957f4b9670b0bc3629485f9 Mon Sep 17 00:00:00 2001 From: chenqi Date: Fri, 23 Jan 2026 16:12:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(system):=20=E6=B7=BB=E5=8A=A0=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=98=BE=E7=A4=BA=E7=8A=B6=E6=80=81=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=B9=B6=E5=AE=8C=E5=96=84=E7=A7=9F=E6=88=B7?= =?UTF-8?q?ID=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在MetaVo中添加visible字段用于控制菜单显示状态 - 修改SysMenuServiceImpl中的路由构建逻辑,传递visible信息到前端 - 更新SidebarItem.vue组件,根据visible属性控制菜单项显示 - 在多个医嘱管理相关服务类中显式设置租户ID以确保多租户隔离 - 调整字典管理相关路由配置,优化页面跳转路径 - 在菜单管理界面添加显示状态查询和表格列展示功能 --- .../com/core/system/domain/vo/MetaVo.java | 23 ++++++++ .../service/impl/SysMenuServiceImpl.java | 12 ++-- .../impl/OutpatientRefundAppServiceImpl.java | 1 + .../DoctorStationAdviceAppServiceImpl.java | 3 + .../impl/NurseBillingAppService.java | 2 + .../impl/AdviceManageAppServiceImpl.java | 4 ++ .../layout/components/Sidebar/SidebarItem.vue | 2 +- openhis-ui-vue3/src/router/index.js | 59 +------------------ .../src/views/system/dict/index.vue | 2 +- .../src/views/system/menu/index.vue | 15 +++++ 10 files changed, 59 insertions(+), 64 deletions(-) diff --git a/openhis-server-new/core-system/src/main/java/com/core/system/domain/vo/MetaVo.java b/openhis-server-new/core-system/src/main/java/com/core/system/domain/vo/MetaVo.java index a7a49e93..febc602a 100644 --- a/openhis-server-new/core-system/src/main/java/com/core/system/domain/vo/MetaVo.java +++ b/openhis-server-new/core-system/src/main/java/com/core/system/domain/vo/MetaVo.java @@ -28,6 +28,11 @@ public class MetaVo { */ private String link; + /** + * 菜单是否可见(用于前端侧边栏显示控制) + */ + private String visible; + public MetaVo() {} public MetaVo(String title, String icon) { @@ -56,6 +61,16 @@ public class MetaVo { } } + public MetaVo(String title, String icon, boolean noCache, String link, String visible) { + this.title = title; + this.icon = icon; + this.noCache = noCache; + if (StringUtils.ishttp(link)) { + this.link = link; + } + this.visible = visible; + } + public boolean isNoCache() { return noCache; } @@ -87,4 +102,12 @@ public class MetaVo { public void setLink(String link) { this.link = link; } + + public String getVisible() { + return visible; + } + + public void setVisible(String visible) { + this.visible = visible; + } } diff --git a/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysMenuServiceImpl.java b/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysMenuServiceImpl.java index d5e18186..336e2517 100644 --- a/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysMenuServiceImpl.java +++ b/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysMenuServiceImpl.java @@ -147,13 +147,15 @@ public class SysMenuServiceImpl implements ISysMenuService { List routers = new LinkedList(); for (SysMenu menu : menus) { RouterVo router = new RouterVo(); - router.setHidden("1".equals(menu.getVisible())); + // 不再根据 visible 字段设置 hidden,确保所有有权限的路由都可用 + // router.setHidden("1".equals(menu.getVisible())); + router.setHidden(false); router.setName(getRouteName(menu)); router.setPath(getRouterPath(menu)); router.setComponent(getComponent(menu)); router.setQuery(menu.getQuery()); router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), - menu.getPath())); + menu.getPath(), menu.getVisible())); List cMenus = menu.getChildren(); if (StringUtils.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { router.setAlwaysShow(true); @@ -167,12 +169,12 @@ public class SysMenuServiceImpl implements ISysMenuService { children.setComponent(menu.getComponent()); children.setName(getRouteName(menu.getRouteName(), menu.getPath())); children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), - StringUtils.equals("1", menu.getIsCache()), menu.getPath())); + StringUtils.equals("1", menu.getIsCache()), menu.getPath(), menu.getVisible())); children.setQuery(menu.getQuery()); childrenList.add(children); router.setChildren(childrenList); } else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) { - router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); + router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), false, null, menu.getVisible())); router.setPath("/"); List childrenList = new ArrayList(); RouterVo children = new RouterVo(); @@ -180,7 +182,7 @@ public class SysMenuServiceImpl implements ISysMenuService { children.setPath(routerPath); children.setComponent(UserConstants.INNER_LINK); children.setName(getRouteName(menu.getRouteName(), routerPath)); - children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath())); + children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), false, menu.getPath(), menu.getVisible())); childrenList.add(children); router.setChildren(childrenList); } diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java index 362e0c52..e04e185f 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java @@ -383,6 +383,7 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi newRefundRequest.setStatusEnum(RequestStatus.CANCELLED.getValue()); newRefundRequest.setRefundDeviceId(deviceRequest.getId()); // 关联原ID newRefundRequest.setPrescriptionNo("T" + deviceRequest.getPrescriptionNo()); + newRefundRequest.setTenantId(deviceRequest.getTenantId()); // 显式设置租户ID deviceRequestService.save(newRefundRequest); Long newRequestId = newRefundRequest.getId(); 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 43449e7f..20010c7c 100644 --- 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 @@ -554,6 +554,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp medicationRequest.setId(adviceSaveDto.getRequestId()); // 主键id medicationRequest.setStatusEnum(is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue()); // 请求状态 medicationRequest.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号 + medicationRequest.setTenantId(SecurityUtils.getLoginUser().getTenantId()); // 显式设置租户ID medicationRequest.setGroupId(adviceSaveDto.getGroupId()); // 组号 if (is_sign) { medicationRequest.setSignCode(signCode); @@ -683,6 +684,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp deviceRequest = new DeviceRequest(); deviceRequest.setId(adviceSaveDto.getRequestId()); // 主键id deviceRequest.setStatusEnum(is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue()); // 请求状态 + deviceRequest.setTenantId(SecurityUtils.getLoginUser().getTenantId()); // 显式设置租户ID // 保存时,处理数据(请求,发放,账单) if (is_save) { @@ -794,6 +796,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp serviceRequest = new ServiceRequest(); serviceRequest.setId(adviceSaveDto.getRequestId()); // 主键id serviceRequest.setStatusEnum(is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue());// 请求状态 + serviceRequest.setTenantId(SecurityUtils.getLoginUser().getTenantId()); // 显式设置租户ID if (is_sign) { serviceRequest.setSignCode(signCode); } diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inhospitalnursestation/appservice/impl/NurseBillingAppService.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inhospitalnursestation/appservice/impl/NurseBillingAppService.java index da3cec9a..8152b0d1 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inhospitalnursestation/appservice/impl/NurseBillingAppService.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inhospitalnursestation/appservice/impl/NurseBillingAppService.java @@ -462,6 +462,7 @@ public class NurseBillingAppService implements INurseBillingAppService { // 基础配置:主键(新增为null,修改为已有ID)、状态、业务编号 deviceRequest.setId(adviceDto.getRequestId()); + deviceRequest.setTenantId(loginUser.getTenantId()); // 显式设置租户ID // 业务编号:按日生成,前缀+4位序列号(确保每日唯一) deviceRequest .setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), DEVICE_RES_NO_SEQ_LENGTH)); @@ -533,6 +534,7 @@ public class NurseBillingAppService implements INurseBillingAppService { // 基础配置:主键、状态、业务编号、签发编码 serviceRequest.setId(activityDto.getRequestId()); // 主键ID(新增为null,修改为已有ID) serviceRequest.setStatusEnum(RequestStatus.ACTIVE.getValue()); // 状态:激活(划价即生效) + serviceRequest.setTenantId(SecurityUtils.getLoginUser().getTenantId()); // 显式设置租户ID serviceRequest.setAuthoredTime(authoredTime); // 医嘱签发时间 serviceRequest.setSignCode(signCode); // 全局签发编码(关联同一批次划价的医嘱) serviceRequest.setOccurrenceStartTime(startTime); // 医嘱开始执行时间 diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java index 65ac5cec..b34da1b3 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java @@ -276,6 +276,7 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService { .setStatusEnum(is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue()); // 请求状态 longMedicationRequest.setPrescriptionNo(regAdviceSaveDto.getPrescriptionNo()); // 处方号 longMedicationRequest.setGroupId(regAdviceSaveDto.getGroupId()); // 组号 + longMedicationRequest.setTenantId(SecurityUtils.getLoginUser().getTenantId()); // 显式设置租户ID if (is_sign) { longMedicationRequest.setReqAuthoredTime(authoredTime); // 医嘱签发时间 longMedicationRequest.setSignCode(signCode); @@ -340,6 +341,7 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService { .setStatusEnum(is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue()); // 请求状态 tempMedicationRequest.setPrescriptionNo(regAdviceSaveDto.getPrescriptionNo()); // 处方号 tempMedicationRequest.setGroupId(regAdviceSaveDto.getGroupId()); // 组号 + tempMedicationRequest.setTenantId(SecurityUtils.getLoginUser().getTenantId()); // 显式设置租户ID if (is_sign) { tempMedicationRequest.setReqAuthoredTime(authoredTime); // 医嘱签发时间 tempMedicationRequest.setSignCode(signCode); @@ -458,6 +460,7 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService { longServiceRequest.setId(regAdviceSaveDto.getRequestId()); // 主键id longServiceRequest .setStatusEnum(is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue());// 请求状态 + longServiceRequest.setTenantId(SecurityUtils.getLoginUser().getTenantId()); // 显式设置租户ID if (is_sign) { longServiceRequest.setAuthoredTime(authoredTime); // 医嘱签发时间 longServiceRequest.setSignCode(signCode); @@ -505,6 +508,7 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService { tempServiceRequest.setId(regAdviceSaveDto.getRequestId()); // 主键id tempServiceRequest .setStatusEnum(is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue());// 请求状态 + tempServiceRequest.setTenantId(SecurityUtils.getLoginUser().getTenantId()); // 显式设置租户ID if (is_sign) { tempServiceRequest.setAuthoredTime(authoredTime); // 医嘱签发时间 tempServiceRequest.setSignCode(signCode); diff --git a/openhis-ui-vue3/src/layout/components/Sidebar/SidebarItem.vue b/openhis-ui-vue3/src/layout/components/Sidebar/SidebarItem.vue index fb747600..b6a3f7e3 100644 --- a/openhis-ui-vue3/src/layout/components/Sidebar/SidebarItem.vue +++ b/openhis-ui-vue3/src/layout/components/Sidebar/SidebarItem.vue @@ -1,5 +1,5 @@