JNPF后台经常收到类似吐槽:"删菜单提示先删子菜单?""导入菜单总报重复?" 其实 "应用菜单" 管理的核心是 "层级规则" 和 "数据唯一性校验",今天结合文档,把 Web/App 菜单的新建、删除、编辑、导入操作拆透,帮你避开 90% 的操作坑。
应用菜单的核心定位与入口
"应用菜单" 是统一管理单个应用下 Web 端和 App 端菜单的入口,比如给 "人事 OA" 应用配置 "员工信息表单""考勤门户" 等菜单,用户只有配置权限后才能在应用前台看到。
操作入口很明确:进入目标应用后台(应用中心点击应用图标),左侧菜单找到 "应用设置 - 应用菜单",页面默认分 "Web 菜单" 和 "App 菜单" 两个标签,切换即可管理对应端菜单,还能通过关键词、状态(启用 / 禁用)筛选菜单,找目标菜单不用翻页。

核心操作:4 大功能分步拆解
应用菜单的操作围绕 "新建 - 编辑 - 删除 - 导入导出" 展开,每个步骤都有容易踩的坑,按场景拆解如下:
1. 新建菜单:类型数据来源 + 路由唯一性是关键
新建是基础操作,但 "类型选择" 和 "路由地址" 最容易出问题,步骤和注意事项如下:
-
操作步骤 :选端:确定建 Web 菜单还是 App 菜单,点击 "+ 新建";填信息:上级菜单:下拉选父节点(如把 "员工表单" 归到 "人事管理" 目录下);类型:除了 "字典" 读取全局数据,"表单""流程""门户" 等都只读取当前应用 的数据(比如建 "流程" 类型菜单,只能选当前应用下的流程);路由地址:手动填或自动生成(表单菜单默认 "model / 编码"),必须当前应用内唯一;点 "确定",菜单会显示在列表中,默认启用。
-
避坑提醒:父节点禁用不影响建子菜单:比如 "人事管理" 目录设为禁用,仍能在下面建 "员工表单" 子菜单,但子菜单在权限授权时会隐藏;路由地址重复会报错:同一应用内不能有相同路由,比如已有 "model/emp001",再填会提示 "路由地址已存在"。


2. 删除菜单:必须先删子菜单,不能 "越级删"
删除的核心规则是 "先子后父",很多人卡在这里:
-
删子菜单:直接勾选子菜单(如 "员工表单"),点击 "删除" 即可,无限制;
-
删主目录:若目录下有子菜单(如 "人事管理" 下有 "员工表单"),点击删除会提示 "删除失败,请先删除子菜单",必须先删完所有子菜单,才能删主目录。
-
实用技巧:如果要批量删目录下的子菜单,可先展开目录,批量勾选子菜单删除,再删目录,比逐条删快很多。


3. 编辑菜单:所有信息可改,改后及时配权限
编辑操作很灵活,但要注意权限同步:
-
可修改项:包括上级菜单、名称、编码、类型、路由地址等所有配置,比如把 "员工表单" 的上级从 "人事管理" 改成 "员工管理";
-
操作逻辑:改完点 "确定" 实时生效,但要记得在 "权限管理" 中同步更新权限(比如改了菜单名称,权限描述最好也同步改,避免混淆)。

4. 导入 / 导出模板:格式 + 重复处理规则要分清
批量迁移菜单时会用到导入导出,重点关注 "文件格式" 和 "重复识别":
- 导出模板:展开菜单 "更多",选 "导出模板",保存为.bm 格式文件,包含菜单所有字段,可用于后续修改或导入到其他应用;

- 导入操作:点击 "↑导入",选上级菜单(导入的菜单会归到这个父节点下);设重复规则:跳过:导入数据已存在(编码 / 名称重复)则提示 "ID、编码、名称重复",不导入;追加:已存在则自动生成副本(名称加 "副本 + 5 位随机码",编码加随机码),比如 "员工表单" 变成 "员工表单。副本 DZ5BP";上传.bm 文件:只能传.bm 格式,传其他格式会提示 "请选择.bm 类型的文件"。



关键注意事项:权限 + 数据隔离 2 个核心规则
这两个规则决定了菜单能否正常使用,必须牢记:
-
所有菜单都需配权限才能访问:哪怕是开发者新建的菜单,自己也看不到 ------ 必须在 "权限管理" 中给角色勾选该菜单权限,用户登录后才能在应用前台看到;
-
应用内数据隔离:菜单关联的表单、流程等数据,都跟着应用走,比如把 A 应用的表单菜单导入 B 应用,关联的表单会自动变成 B 应用的数据,不用重新关联。
实操示例:3 步批量导入菜单
以把 A 应用的 "人事表单" 菜单导入 B 应用为例,结合前面的规则,完整步骤如下:
-
导出 A 应用模板:在 A 应用的 "应用菜单" 中,找到 "人事表单" 所在目录,"更多"→"导出模板",保存为.bm 文件;
-
导入 B 应用:进入 B 应用 "应用菜单",点击 "↑导入",选上级菜单 "人事管理",重复规则设 "追加",上传.bm 文件;
-
处理权限:导入后,在 B 应用的 "权限管理" 中,给目标角色勾选导入的菜单权限,用户即可访问。

应用菜单管理看似复杂,其实掌握 "类型数据来源""删除层级规则""路由唯一性" 这三个关键点,就能少走很多弯路。比如建菜单时确认类型数据来自当前应用,删目录前先清子菜单,导入时选对重复规则,操作效率会明显提升。如果遇到操作问题,欢迎在评论区留言,我会帮你分析解决~