Files
hzdyjs/出国登记审批菜单权限配置.sql
T
2025-10-14 16:41:19 +08:00

395 lines
9.2 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================
-- 出国登记审批菜单权限配置 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;