-- ============================================================ -- 工具列表菜单 + 文本比对页面 -- -- 与「系统管理」同级的顶级菜单,下挂「文本比对」 -- 菜单由t_sys_permission 表驱动,前端 formatMenuList() 会把 component -- 拼成 import('@/view' + component + '.vue'),因此 component 必须带前导斜杠, -- 且要与 src/view/tools/text-diff.vue 对应 -- -- 幂等:可重复执行,已存在则跳过 -- 执行库:freedom_db -- ============================================================ -- ---------- 1. 清理历史遗留(如果之前插过) ---------- DELETE FROM `t_sys_role_permission` WHERE `permission_id` IN ( SELECT `id` FROM `t_sys_permission` WHERE `permission_code` IN ('tools', 'tools:text-diff') ); DELETE FROM `t_sys_permission` WHERE `permission_code` IN ('tools', 'tools:text-diff'); -- ---------- 2. 插入菜单 ---------- -- 顶级菜单「工具列表」:url 与 component 留空,前端会挂载 Main 布局作为容器 -- 文本比对:component = /tools/text-diff,对应 src/view/tools/text-diff.vue INSERT INTO `t_sys_permission` (`id`, `parent_id`, `permission_code`, `permission_name`, `permission_desc`, `level`, `icon`, `url`, `component`, `sort`, `create_by`, `create_date`, `del_flag`) VALUES (1005, 0, 'tools', '工具列表', '与系统管理同级的工具集合', 1, 'ios-apps', '', '', 20, 'admin', NOW(), 0), (1006, 1005, 'tools:text-diff', '文本比对', '左右文本并排比对,支持字符级高亮、忽略空白与结果导出', 2, 'md-git-compare', '/tools/text-diff', '/tools/text-diff', 1, 'admin', NOW(), 0); -- ---------- 3. 授权给超级管理员 ---------- -- 当前系统仅有「超级管理员」一个角色;若后续新增角色,按需补充同样的关联 INSERT INTO `t_sys_role_permission` (`id`, `role_id`, `permission_id`, `create_by`, `create_date`) VALUES (1005, 1, 1005, 'admin', NOW()), (1006, 1, 1006, 'admin', NOW()); -- ---------- 4. 校验 ---------- -- 预期返回 2 行:工具列表(id=1005, parent_id=0) 与 文本比对(id=1006, parent_id=1005) SELECT `id`, `parent_id`, `permission_code`, `permission_name`, `level`, `icon`, `url`, `component`, `sort` FROM `t_sys_permission` WHERE `permission_code` IN ('tools', 'tools:text-diff') ORDER BY `level`, `sort`; -- 预期返回 2 行:role_id=1 分别关联 permission_id 1005 / 1006 SELECT `id`, `role_id`, `permission_id` FROM `t_sys_role_permission` WHERE `permission_id` IN (1005, 1006) ORDER BY `permission_id`;