菜单管理
1. 功能定位
菜单管理用于维护系统访问入口、功能权限定义、表定义、字段定义,并为角色授权和数据权限配置提供基础数据。
2. 页面布局
菜单管理采用「左侧菜单树 + 右侧配置区」。
text
左侧:菜单树
右侧:配置区
右侧页签:基础信息 / 功能权限 / 表定义左侧菜单树:
- 支持目录和菜单展示。
- 支持搜索定位。
- 支持展开/收起。
- 停用菜单使用灰色状态展示。
3. 菜单类型
菜单新增分为:
- 目录
- 菜单
菜单来源包括:
- 系统内部应用:系统通过编码新增的路由。
- 自动化菜单:低代码工具创建的页面。
- 外部页面:外部 iframe 嵌入页面。
三类菜单来源权限控制逻辑一致。
目录和菜单均支持启用、停用。
4. 菜单字段
| 字段 | 是否必填 | 控件 | 说明 |
|---|---|---|---|
| 菜单名称 | 是 | 输入框 | 展示名称 |
| 菜单编码 | 是 | 输入框 | 唯一标识 |
| 类型 | 是 | 单选 | 目录 / 菜单 |
| 菜单来源 | 菜单时必填 | 下拉选择 | 内部应用 / 自动化菜单 / 外部页面 |
| 路由地址 | 视来源而定 | 输入框 | 内部应用路由 |
| 页面编码 | 视来源而定 | 输入框 | 自动化页面编码 |
| 外部地址 | 视来源而定 | 输入框 | iframe 地址 |
| 上级菜单 | 否 | 树选择 | 菜单层级 |
| 图标 | 否 | 图标选择 | 展示图标 |
| 排序号 | 否 | 数字输入 | 展示排序 |
| 状态 | 是 | 单选/标签 | 启用 / 停用 |
| 描述 | 否 | 多行文本 | 说明 |
5. 新增菜单
入口:点击「新增菜单」。
交互:
- 先选择类型:目录 / 菜单。
- 选择目录时,仅填写目录基础字段。
- 选择菜单时,需要继续选择菜单来源。
- 根据菜单来源展示对应字段。
校验:
- 菜单名称不能为空。
- 菜单编码不能为空。
- 菜单编码必须唯一。
- 类型为菜单时,菜单来源必填。
- 内部应用需要填写路由地址。
- 自动化菜单需要填写页面编码。
- 外部页面需要填写外部地址。
6. 菜单启用停用
规则:
- 目录和菜单均支持启用、停用。
- 停用菜单不可访问。
- 建议目录停用后,下级菜单不可访问。
- 停用不删除角色授权关系。
- 重新启用后,原授权继续生效。
7. 菜单删除
菜单允许删除。
删除前展示影响范围:
- 角色菜单授权数量
- 功能权限数量
- 功能授权数量
- 表定义数量
- 列权限配置数量
确认后:
- 删除菜单。
- 删除角色中的菜单授权。
- 删除相关功能授权。
- 删除相关列权限配置。
- 删除后不再出现在角色授权配置中。
提示文案:
text
删除菜单后,相关角色授权、功能授权和列权限配置将一并删除。8. 功能权限
菜单可配置功能权限。
功能权限用于角色授权,控制按钮或操作能力。
8.1 页面结构
功能权限表格列:
- 功能名称
- 权限标识
- 分组
- 排序号
- 状态
- 说明
- 操作
操作:
- 新增功能
- 编辑功能
- 启用
- 停用
- 删除
8.2 功能权限字段
| 字段 | 是否必填 | 控件 | 说明 |
|---|---|---|---|
| 功能名称 | 是 | 输入框 | 如新增、编辑、删除、导出 |
| 权限标识 | 是 | 输入框 | 功能唯一标识 |
| 分组 | 否 | 输入框/下拉 | 用于授权页面分组展示 |
| 排序号 | 否 | 数字输入 | 展示排序 |
| 说明 | 否 | 多行文本 | 功能说明 |
| 状态 | 是 | 单选/标签 | 启用 / 停用 |
8.3 功能权限规则
- 功能权限属于具体菜单。
- 权限标识建议唯一且稳定。
- 停用功能权限后,该功能不可被使用。
- 删除功能权限时,角色中对应授权一并删除。
- 删除前需提示影响范围。
9. 表定义
菜单可配置多个表定义。
表定义服务于:
- 列权限
- 表单填写
- 条件查询
9.1 页面结构
text
左侧:表列表
右侧:字段列表表操作:
- 新增表
- 编辑表
- 删除表
字段操作:
- 新增字段
- 编辑字段
- 删除字段
- 调整排序
9.2 表字段
| 字段 | 是否必填 | 控件 | 说明 |
|---|---|---|---|
| 表名称 | 是 | 输入框 | 展示名称 |
| 表标识 | 是 | 输入框 | 业务表唯一标识 |
| 表说明 | 否 | 多行文本 | 说明 |
| 排序号 | 否 | 数字输入 | 展示排序 |
9.3 字段定义
| 字段 | 是否必填 | 控件 | 说明 |
|---|---|---|---|
| 字段名称 | 是 | 输入框 | 展示名称 |
| 字段标识 | 是 | 输入框 | 字段唯一标识 |
| 字段类型 | 是 | 下拉选择 | 文本、数字、日期、枚举等 |
| 是否参与列权限 | 是 | 开关 | 是 / 否 |
| 是否参与表单填写 | 是 | 开关 | 是 / 否 |
| 是否参与条件查询 | 是 | 开关 | 是 / 否 |
| 排序号 | 否 | 数字输入 | 展示排序 |
| 说明 | 否 | 多行文本 | 字段说明 |
10. 字段标识修改
字段标识允许修改。
如果字段已被以下配置引用:
- 列权限
- 表单配置
- 查询条件
则修改时弹窗提示影响范围。
提示文案:
text
该字段已被权限、表单或查询条件引用。确认修改后,系统将同步更新引用关系。确认后:
- 系统同步更新引用关系。
- 原配置不丢失。
取消后:
- 不修改字段标识。
11. 外部页面
外部页面通过 iframe 嵌入。
本期暂不需要:
- 白名单配置
- 页面参数配置
12. 当前代码实现(截至 2026-09-01)
菜单树表:
- 页面采用默认展开的树形表格,支持标题/标识/访问路径关键字、目录/菜单类型、显示状态和启停状态筛选,并支持列显隐。
- 默认列包括标题、标识、类型、访问路径、组件标识、图标、排序、状态、显示和操作;缓存、固定标签、默认打开、外链、打开方式和链接可通过列配置显示。
- 菜单有下级时仍按其自身
menuType展示,不根据是否存在子节点改判为目录。 - 操作包含新增子级、编辑、功能配置、表定义和删除;功能与表定义只对菜单节点开放。
统一 Dialog:
MenuManageDialog作为统一容器,通过component :is切换菜单表单、删除影响、功能列表/表单、表列表/表单和字段表单。- 新增和编辑支持挂载位置、目录/菜单类型、排序、菜单来源、标题、标识、组件标识、路径、打开方式、图标、自动化页面、外部链接、说明及菜单选项。
- 自动化页面的组件编码生成逻辑尚未接入,保持当前占位选择逻辑。
功能配置:
- 功能按当前菜单维护名称、标识、分组、说明、排序和状态。
- 功能列表先在前端形成草稿,点击列表底部保存后统一提交。
- 停用功能需要确认;删除已保存功能时先读取角色授权影响并提示,随后随统一保存清理授权。
表和字段配置:
- 一个菜单可维护多个表;表包含名称、标识、说明和排序,字段按表分组展示。
- 字段包含名称、标识、类型、状态、列权限、表单填报、查询条件、排序和说明;类型支持字符串、数字、人员、部门、下拉、日期、布尔和级联。
- 表或字段标识修改时,同一编辑会同步当前草稿中的字段归属;持久化引用影响由接口返回并在确认时提示。
- 删除表需要二次确认并展示字段、列权限、表单和查询引用影响;删除单个字段不需要二次确认,直接从当前草稿移除,保存时统一提交并清理引用。
- 功能标识和字段/表标识在各自作用域内校验唯一,允许大小写字母、数字、冒号和下划线。
状态与删除:
- 停用菜单需要确认;目录停用会使下级不可访问,但不会修改下级自身启停值。
- 删除前展示子菜单、角色菜单授权、功能、功能授权、表和列权限影响;提交后由接口统一清理关联引用。
- 已定义菜单、功能、表字段及其影响范围接口,并提供对应 Mock 实现。
Grow Admin