-- ============================================================ -- 应用安装包资源库 - 后台菜单与权限初始化脚本(可选) -- ------------------------------------------------------------ -- 说明: -- 1. 前端路由已在 constantRoutes 中注册,应用列表页面可直接通过 -- /#/app/package 访问,无需执行本脚本也能使用上传/列表功能。 -- 2. 本脚本仅用于在【后台管理 -> 系统管理 -> 菜单管理】侧边栏中 -- 展示“应用列表”入口,并将权限授予所有角色。 -- 3. 请在执行前确认第 1 步查询出的父目录(通常为“设备”目录)的 ID, -- 若父目录 route_path 不为 'devices',请修改下面的 @parent_id 取值条件。 -- 4. 本脚本仅 INSERT,可重复执行(已包含存在性判断)。 -- ============================================================ -- 0. 变量:自动定位“设备”目录作为父级(如实际父目录不同请修改条件) SET @parent_id = (SELECT id FROM sys_menu WHERE type = 'C' AND route_path = 'devices' LIMIT 1); -- 若未找到设备目录,则挂到根目录(id=0) SET @parent_id = IFNULL(@parent_id, 0); -- 1. 插入“应用列表”菜单(作为设备目录下的子菜单) INSERT INTO sys_menu (parent_id, name, type, route_name, route_path, component, perm, visible, sort, icon, redirect, tree_path, keep_alive, always_show, create_time, update_time) SELECT @parent_id, '应用列表', 'M', 'AppPackage', 'app/package', 'app/package/index', 'app:package:list', 1, 100, 'box', NULL, CONCAT(IF(@parent_id = 0, '', CONCAT(@parent_id, ',')), 'APP_PACKAGE_PLACEHOLDER'), 1, 0, NOW(), NOW() WHERE NOT EXISTS ( SELECT 1 FROM sys_menu WHERE route_name = 'AppPackage' AND route_path = 'app/package' ); -- 更新 tree_path(去掉占位并写入真实自增 id) SET @menu_id = (SELECT id FROM sys_menu WHERE route_name = 'AppPackage' AND route_path = 'app/package' LIMIT 1); UPDATE sys_menu SET tree_path = IF(@parent_id = 0, CONCAT(@menu_id, ','), CONCAT(@parent_id, ',', @menu_id, ',')) WHERE id = @menu_id; -- 2. 将“应用列表”菜单权限授予所有角色 INSERT INTO sys_role_menu (role_id, menu_id) SELECT r.id, @menu_id FROM sys_role r WHERE NOT EXISTS ( SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = r.id AND rm.menu_id = @menu_id );