feat(system): 添加菜单显示状态控制功能并完善租户ID设置

- 在MetaVo中添加visible字段用于控制菜单显示状态
- 修改SysMenuServiceImpl中的路由构建逻辑,传递visible信息到前端
- 更新SidebarItem.vue组件,根据visible属性控制菜单项显示
- 在多个医嘱管理相关服务类中显式设置租户ID以确保多租户隔离
- 调整字典管理相关路由配置,优化页面跳转路径
- 在菜单管理界面添加显示状态查询和表格列展示功能
This commit is contained in:
2026-01-23 16:12:56 +08:00
parent f6d9321f95
commit abd5bd9f2f
10 changed files with 59 additions and 64 deletions

View File

@@ -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;
}
}

View File

@@ -147,13 +147,15 @@ public class SysMenuServiceImpl implements ISysMenuService {
List<RouterVo> routers = new LinkedList<RouterVo>();
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<SysMenu> 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<RouterVo> childrenList = new ArrayList<RouterVo>();
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);
}

View File

@@ -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();

View File

@@ -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);
}

View File

@@ -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); // 医嘱开始执行时间

View File

@@ -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);