395 lines
9.2 KiB
SQL
395 lines
9.2 KiB
SQL
-- =============================================
|
||
-- 出国登记审批菜单权限配置 SQL
|
||
-- 二段式配置:菜单 + 按钮权限
|
||
-- 创建时间:2025-10-08
|
||
-- =============================================
|
||
|
||
-- ========================================
|
||
-- 第一部分:菜单配置
|
||
-- ========================================
|
||
|
||
-- 1. 插入出国登记审批菜单(一级菜单下的子菜单)
|
||
-- 注意:需要先确认父菜单ID,这里假设出国管理的父菜单ID为 XXX
|
||
-- 请根据实际情况修改 parent_id
|
||
|
||
INSERT INTO sys_menu (
|
||
menu_id,
|
||
menu_name,
|
||
parent_id,
|
||
order_num,
|
||
path,
|
||
component,
|
||
query_param,
|
||
is_frame,
|
||
is_cache,
|
||
menu_type,
|
||
visible,
|
||
status,
|
||
perms,
|
||
icon,
|
||
create_dept,
|
||
create_by,
|
||
create_time,
|
||
update_by,
|
||
update_time,
|
||
remark
|
||
) VALUES (
|
||
-- 菜单ID(雪花ID,请使用实际生成的ID或让系统自动生成)
|
||
-- 这里使用占位ID,实际使用时需要替换或使用 NULL 让数据库自动生成
|
||
2001, -- 请替换为实际的雪花ID
|
||
'出国登记审批', -- 菜单名称
|
||
2000, -- 父菜单ID(请根据实际的"出国管理"或"人事管理"菜单ID修改)
|
||
3, -- 显示排序
|
||
'approval', -- 路由地址
|
||
'rs/overseas-registration/approval', -- 组件路径
|
||
'', -- 路由参数
|
||
1, -- 是否为外链(0-是,1-否)
|
||
0, -- 是否缓存(0-缓存,1-不缓存)
|
||
'C', -- 菜单类型(M-目录,C-菜单,F-按钮)
|
||
'0', -- 菜单状态(0-显示,1-隐藏)
|
||
'0', -- 菜单状态(0-正常,1-停用)
|
||
'rs:registration:list', -- 权限标识(二段式)
|
||
'check', -- 菜单图标
|
||
103, -- 创建部门ID
|
||
1, -- 创建者ID
|
||
NOW(), -- 创建时间
|
||
NULL, -- 更新者ID
|
||
NULL, -- 更新时间
|
||
'出国登记审批菜单' -- 备注
|
||
);
|
||
|
||
-- ========================================
|
||
-- 第二部分:按钮权限配置
|
||
-- ========================================
|
||
|
||
-- 2.1 查询按钮
|
||
INSERT INTO sys_menu (
|
||
menu_id,
|
||
menu_name,
|
||
parent_id,
|
||
order_num,
|
||
path,
|
||
component,
|
||
query_param,
|
||
is_frame,
|
||
is_cache,
|
||
menu_type,
|
||
visible,
|
||
status,
|
||
perms,
|
||
icon,
|
||
create_dept,
|
||
create_by,
|
||
create_time,
|
||
update_by,
|
||
update_time,
|
||
remark
|
||
) VALUES (
|
||
2001001, -- 按钮ID
|
||
'出国登记审批查询',
|
||
2001, -- 父菜单ID(出国登记审批菜单)
|
||
1,
|
||
'',
|
||
'',
|
||
'',
|
||
1,
|
||
0,
|
||
'F', -- 按钮类型
|
||
'0',
|
||
'0',
|
||
'rs:registration:query', -- 查询权限(二段式)
|
||
'#',
|
||
103,
|
||
1,
|
||
NOW(),
|
||
NULL,
|
||
NULL,
|
||
'出国登记审批查询按钮'
|
||
);
|
||
|
||
-- 2.2 审批通过按钮
|
||
INSERT INTO sys_menu (
|
||
menu_id,
|
||
menu_name,
|
||
parent_id,
|
||
order_num,
|
||
path,
|
||
component,
|
||
query_param,
|
||
is_frame,
|
||
is_cache,
|
||
menu_type,
|
||
visible,
|
||
status,
|
||
perms,
|
||
icon,
|
||
create_dept,
|
||
create_by,
|
||
create_time,
|
||
update_by,
|
||
update_time,
|
||
remark
|
||
) VALUES (
|
||
2001002, -- 按钮ID
|
||
'审批通过',
|
||
2001, -- 父菜单ID(出国登记审批菜单)
|
||
2,
|
||
'',
|
||
'',
|
||
'',
|
||
1,
|
||
0,
|
||
'F', -- 按钮类型
|
||
'0',
|
||
'0',
|
||
'rs:registration:approve', -- 审批通过权限
|
||
'#',
|
||
103,
|
||
1,
|
||
NOW(),
|
||
NULL,
|
||
NULL,
|
||
'出国登记审批通过按钮'
|
||
);
|
||
|
||
-- 2.3 审批拒绝按钮
|
||
INSERT INTO sys_menu (
|
||
menu_id,
|
||
menu_name,
|
||
parent_id,
|
||
order_num,
|
||
path,
|
||
component,
|
||
query_param,
|
||
is_frame,
|
||
is_cache,
|
||
menu_type,
|
||
visible,
|
||
status,
|
||
perms,
|
||
icon,
|
||
create_dept,
|
||
create_by,
|
||
create_time,
|
||
update_by,
|
||
update_time,
|
||
remark
|
||
) VALUES (
|
||
2001003, -- 按钮ID
|
||
'审批拒绝',
|
||
2001, -- 父菜单ID(出国登记审批菜单)
|
||
3,
|
||
'',
|
||
'',
|
||
'',
|
||
1,
|
||
0,
|
||
'F', -- 按钮类型
|
||
'0',
|
||
'0',
|
||
'rs:registration:reject', -- 审批拒绝权限
|
||
'#',
|
||
103,
|
||
1,
|
||
NOW(),
|
||
NULL,
|
||
NULL,
|
||
'出国登记审批拒绝按钮'
|
||
);
|
||
|
||
-- 2.4 导出按钮
|
||
INSERT INTO sys_menu (
|
||
menu_id,
|
||
menu_name,
|
||
parent_id,
|
||
order_num,
|
||
path,
|
||
component,
|
||
query_param,
|
||
is_frame,
|
||
is_cache,
|
||
menu_type,
|
||
visible,
|
||
status,
|
||
perms,
|
||
icon,
|
||
create_dept,
|
||
create_by,
|
||
create_time,
|
||
update_by,
|
||
update_time,
|
||
remark
|
||
) VALUES (
|
||
2001004, -- 按钮ID
|
||
'导出',
|
||
2001, -- 父菜单ID(出国登记审批菜单)
|
||
4,
|
||
'',
|
||
'',
|
||
'',
|
||
1,
|
||
0,
|
||
'F', -- 按钮类型
|
||
'0',
|
||
'0',
|
||
'rs:registration:export', -- 导出权限
|
||
'#',
|
||
103,
|
||
1,
|
||
NOW(),
|
||
NULL,
|
||
NULL,
|
||
'出国登记审批导出按钮'
|
||
);
|
||
|
||
-- ========================================
|
||
-- 第三部分:权限说明和查询验证
|
||
-- ========================================
|
||
|
||
-- 3.1 查询刚插入的菜单和按钮
|
||
SELECT
|
||
menu_id,
|
||
menu_name,
|
||
parent_id,
|
||
order_num,
|
||
menu_type,
|
||
perms,
|
||
path,
|
||
component,
|
||
visible,
|
||
status
|
||
FROM sys_menu
|
||
WHERE menu_id IN (2001, 2001001, 2001002, 2001003, 2001004, 2001005, 2001006)
|
||
ORDER BY menu_id;
|
||
|
||
-- 3.2 查询菜单树结构
|
||
SELECT
|
||
CONCAT(REPEAT(' ',
|
||
CASE
|
||
WHEN parent_id = 0 THEN 0
|
||
WHEN parent_id < 2001 THEN 1
|
||
ELSE 2
|
||
END
|
||
), menu_name) AS menu_tree,
|
||
menu_id,
|
||
menu_type,
|
||
perms,
|
||
status
|
||
FROM sys_menu
|
||
WHERE menu_id >= 2000 AND menu_id <= 2001006
|
||
ORDER BY parent_id, order_num;
|
||
|
||
-- ========================================
|
||
-- 使用说明
|
||
-- ========================================
|
||
|
||
/*
|
||
【重要提醒】执行前必读:
|
||
|
||
1. ⚠️ 修改父菜单ID
|
||
- 第 28 行:parent_id = 2000 需要改为实际的"出国管理"或"人事管理"菜单ID
|
||
- 查询父菜单ID的SQL:
|
||
SELECT menu_id, menu_name FROM sys_menu WHERE menu_name LIKE '%出国%' OR menu_name LIKE '%人事%';
|
||
|
||
2. ⚠️ 修改菜单ID(使用雪花ID)
|
||
- 所有菜单ID(2001、2001001等)需要替换为实际的雪花ID
|
||
- 或者将 menu_id 字段改为 NULL,让数据库自动生成
|
||
- 生成雪花ID工具:https://www.bejson.com/othertools/id/
|
||
|
||
3. ⚠️ 修改创建部门和创建人
|
||
- create_dept:改为实际的部门ID(默认103)
|
||
- create_by:改为实际的用户ID(默认1为admin)
|
||
|
||
4. ✅ 菜单类型说明
|
||
- M:目录(一级菜单)
|
||
- C:菜单(二级菜单,可点击进入页面)
|
||
- F:按钮(功能权限)
|
||
|
||
5. ✅ 权限标识说明(二段式)
|
||
菜单权限:rs:registration:list
|
||
按钮权限:
|
||
- rs:registration:query (查询)
|
||
- rs:registration:approve (审批通过/审批拒绝)
|
||
- rs:registration:export (导出)
|
||
|
||
注意:审批通过和拒绝复用同一个权限标识
|
||
|
||
6. ✅ 执行顺序
|
||
Step 1: 先查询父菜单ID并修改 parent_id
|
||
Step 2: 生成雪花ID并替换所有 menu_id
|
||
Step 3: 执行插入语句
|
||
Step 4: 执行验证查询(第三部分)
|
||
Step 5: 在系统中给相应角色分配权限
|
||
|
||
7. ✅ 角色权限分配
|
||
执行完SQL后,需要在系统【角色管理】中:
|
||
- 找到需要审批权限的角色(如:人事管理员)
|
||
- 编辑角色,勾选"出国登记审批"菜单及其按钮权限
|
||
- 保存后,该角色的用户即可访问审批页面
|
||
|
||
8. ⚠️ 如果菜单ID冲突
|
||
可以使用以下方式自动生成:
|
||
|
||
方式一:删除 menu_id 字段,让数据库自增
|
||
INSERT INTO sys_menu (menu_name, parent_id, ...) VALUES (...);
|
||
|
||
方式二:使用雪花ID生成函数(如果数据库支持)
|
||
|
||
方式三:查询当前最大ID后手动递增
|
||
SELECT MAX(menu_id) FROM sys_menu;
|
||
|
||
9. ✅ 验证是否配置成功
|
||
- 登录系统
|
||
- 进入【系统管理】-【菜单管理】
|
||
- 找到"出国登记审批"菜单
|
||
- 查看是否有4个按钮权限
|
||
- 用有权限的账号访问页面测试
|
||
|
||
10. 📝 权限与前端组件对应关系(二段式)
|
||
- v-hasPermi="['rs:registration:query']" → 查询/查看详情按钮
|
||
- v-hasPermi="['rs:registration:approve']" → 审批通过/审批拒绝按钮
|
||
- v-hasPermi="['rs:registration:export']" → 导出按钮
|
||
|
||
注意:审批通过和拒绝统一使用 approve 权限
|
||
*/
|
||
|
||
-- ========================================
|
||
-- 附加工具SQL
|
||
-- ========================================
|
||
|
||
-- 查询当前系统中"出国"相关的所有菜单
|
||
SELECT
|
||
menu_id,
|
||
menu_name,
|
||
parent_id,
|
||
menu_type,
|
||
perms,
|
||
path,
|
||
component,
|
||
order_num,
|
||
status
|
||
FROM sys_menu
|
||
WHERE menu_name LIKE '%出国%'
|
||
OR perms LIKE '%overseas%'
|
||
OR perms LIKE '%registration%'
|
||
ORDER BY parent_id, order_num;
|
||
|
||
-- 查询最大菜单ID(用于确定新ID范围)
|
||
SELECT MAX(menu_id) AS max_menu_id FROM sys_menu;
|
||
|
||
-- 如果需要删除刚才插入的菜单(回滚用)
|
||
-- DELETE FROM sys_menu WHERE menu_id IN (2001, 2001001, 2001002, 2001003, 2001004, 2001005, 2001006);
|
||
|
||
-- 查询角色权限分配情况(检查是否已分配给角色)
|
||
-- SELECT
|
||
-- r.role_id,
|
||
-- r.role_name,
|
||
-- m.menu_name,
|
||
-- m.perms
|
||
-- FROM sys_role r
|
||
-- INNER JOIN sys_role_menu rm ON r.role_id = rm.role_id
|
||
-- INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
|
||
-- WHERE m.menu_id IN (2001, 2001001, 2001002, 2001003, 2001004, 2001005, 2001006)
|
||
-- ORDER BY r.role_id, m.menu_id;
|
||
|