Skip to content

问题

新增菜单后,在「租户套餐」里勾选菜单权限时找不到这个菜单;清浏览器缓存、退出重进也不行。

答案

多数不是浏览器缓存:先按上级菜单挂载位置搜索;同一 SPA 会话内若先开过套餐再加菜单,旧版本套餐弹窗有二次内存缓存会挡住新菜单(已统一为只走 getSimpleMenusList 缓存)。「显示状态=隐藏」不影响套餐勾选。

详细说明

1. 先确认挂在哪一层

套餐菜单树按「上级菜单」挂载,不会因为组件路径写在某配置页下就出现在该配置页的按钮列表里。

示例:菜单「管理假期类型」上级选「假勤管理」,应出现在「假勤管理」下、与「假勤配置」平级;在「假勤配置」下的「考勤配置查询」等按钮旁是找不到的。

操作:套餐弹窗搜索框直接搜菜单名称(如「假期」)。

2. 「显示状态=隐藏」不是原因

配置影响
显示状态=隐藏不进 PC 侧栏展示
菜单状态=开启才会进 simple-list,可被套餐/角色勾选

套餐/角色赋权接口只过滤「菜单状态=关闭」,visible 过滤。隐藏菜单仍应出现在套餐树中,否则隐藏页无法授权。

3. 缓存层级(产品行为)

层级说明
API:getSimpleMenusList会话内请求缓存;菜单增删改会 clearSystemMenuClientCache
套餐/角色弹窗打开时走上述 API 建树,不再维护独立的模块级菜单树缓存
浏览器缓存 / Redis 菜单列表与「套餐树看不见新菜单」通常无关;清浏览器缓存无效属正常

正确流程:菜单管理新增 → 打开租户套餐 → 搜索并勾选 → 保存套餐(新菜单不会自动进已有套餐)。

若仍搜不到:硬刷新(Ctrl+F5)后再开套餐;确认当前账号为系统租户(非业务租户按自身套餐裁剪菜单)。

4. 保存套餐后

保存后后端会把变更同步到使用该套餐的租户管理员角色菜单;业务角色仍可能需单独调整。

涉及代码 / 配置

  • 前端赋权建树:apps/web-antd/src/utils/menu-tree.tsloadSimpleMenuTree
  • API 缓存:apps/web-antd/src/api/system/menu/index.tsgetSimpleMenusList / clearSystemMenuClientCache
  • 套餐弹窗:views/system/tenantPackage/modules/form.vue
  • 后端精简列表:GET /system/menu/simple-list(仅开启菜单 + 租户套餐范围)

修订记录

日期修改
2026-08-18初稿(含套餐二次缓存问题说明与修复后约定)
联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版