Files
hzdyjs/rs-menu-route-config-fixed.sql
T
2025-08-18 12:03:44 +08:00

252 lines
14 KiB
SQL

-- ================================================
-- 人事管理模块菜单路由配置修复脚本 (MySQL版本)
-- 创建时间: 2025-01-28
-- 说明: 解决前端无法显示人事管理模块的路由和权限配置问题
-- 修复内容:
-- 1. 正确配置component路径映射前端组件
-- 2. 修复角色权限配置,确保管理员能正常访问
-- 3. 使用正确的路由结构和权限标识
-- ================================================
-- 清理旧的人事管理菜单配置
DELETE FROM sys_role_menu WHERE menu_id BETWEEN 2000 AND 2100;
DELETE FROM sys_menu WHERE menu_id BETWEEN 2000 AND 2100;
-- ================== 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, tenant_id
) VALUES (
2000, '人事管理', 0, 50, 'rs', NULL, '',
1, 0, 'M', '0', '0', '', 'peoples',
103, 1, now(), NULL, NULL, '人事管理根目录', '000000'
);
-- ================== 2. 招聘管理模块 ==================
-- 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, tenant_id
) VALUES (
2001, '招聘管理', 2000, 1, 'recruitment', 'rs/index', '',
1, 0, 'C', '0', '0', 'rs:recruitment:list', 'job',
103, 1, now(), NULL, NULL, '招聘管理页面', '000000'
);
-- 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, tenant_id
) VALUES
(2011, '职位查询', 2001, 1, '', '', '', 1, 0, 'F', '0', '0', 'rs:job:query', '#', 103, 1, now(), NULL, NULL, '职位查询权限', '000000'),
(2012, '职位新增', 2001, 2, '', '', '', 1, 0, 'F', '0', '0', 'rs:job:add', '#', 103, 1, now(), NULL, NULL, '职位新增权限', '000000'),
(2013, '职位修改', 2001, 3, '', '', '', 1, 0, 'F', '0', '0', 'rs:job:edit', '#', 103, 1, now(), NULL, NULL, '职位修改权限', '000000'),
(2014, '职位删除', 2001, 4, '', '', '', 1, 0, 'F', '0', '0', 'rs:job:remove', '#', 103, 1, now(), NULL, NULL, '职位删除权限', '000000'),
(2015, '职位导出', 2001, 5, '', '', '', 1, 0, 'F', '0', '0', 'rs:job:export', '#', 103, 1, now(), NULL, NULL, '职位导出权限', '000000'),
(2016, '申请查询', 2001, 6, '', '', '', 1, 0, 'F', '0', '0', 'rs:application:query', '#', 103, 1, now(), NULL, NULL, '申请查询权限', '000000'),
(2017, '申请新增', 2001, 7, '', '', '', 1, 0, 'F', '0', '0', 'rs:application:add', '#', 103, 1, now(), NULL, NULL, '申请新增权限', '000000'),
(2018, '申请修改', 2001, 8, '', '', '', 1, 0, 'F', '0', '0', 'rs:application:edit', '#', 103, 1, now(), NULL, NULL, '申请修改权限', '000000'),
(2019, '申请删除', 2001, 9, '', '', '', 1, 0, 'F', '0', '0', 'rs:application:remove', '#', 103, 1, now(), NULL, NULL, '申请删除权限', '000000');
-- ================== 3. 培训管理模块 ==================
-- 3.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, tenant_id
) VALUES (
2002, '培训管理', 2000, 2, 'training', 'rs/training/index', '',
1, 0, 'C', '0', '0', 'rs:training:list', 'education',
103, 1, now(), NULL, NULL, '培训管理页面', '000000'
);
-- 3.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, tenant_id
) VALUES
(2021, '培训课程查询', 2002, 1, '', '', '', 1, 0, 'F', '0', '0', 'rs:training:course:query', '#', 103, 1, now(), NULL, NULL, '培训课程查询权限', '000000'),
(2022, '培训课程新增', 2002, 2, '', '', '', 1, 0, 'F', '0', '0', 'rs:training:course:add', '#', 103, 1, now(), NULL, NULL, '培训课程新增权限', '000000'),
(2023, '培训课程修改', 2002, 3, '', '', '', 1, 0, 'F', '0', '0', 'rs:training:course:edit', '#', 103, 1, now(), NULL, NULL, '培训课程修改权限', '000000'),
(2024, '培训课程删除', 2002, 4, '', '', '', 1, 0, 'F', '0', '0', 'rs:training:course:remove', '#', 103, 1, now(), NULL, NULL, '培训课程删除权限', '000000'),
(2025, '培训申请查询', 2002, 5, '', '', '', 1, 0, 'F', '0', '0', 'rs:training:application:query', '#', 103, 1, now(), NULL, NULL, '培训申请查询权限', '000000'),
(2026, '培训申请新增', 2002, 6, '', '', '', 1, 0, 'F', '0', '0', 'rs:training:application:add', '#', 103, 1, now(), NULL, NULL, '培训申请新增权限', '000000'),
(2027, '培训申请提交', 2002, 7, '', '', '', 1, 0, 'F', '0', '0', 'rs:training:application:submit', '#', 103, 1, now(), NULL, NULL, '培训申请提交权限', '000000'),
(2028, '培训记录查询', 2002, 8, '', '', '', 1, 0, 'F', '0', '0', 'rs:training:record:query', '#', 103, 1, now(), NULL, NULL, '培训记录查询权限', '000000');
-- ================== 4. 培训审批模块 ==================
-- 4.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, tenant_id
) VALUES (
2003, '培训审批', 2000, 3, 'trainingApproval', 'rs/trainingApproval/index', '',
1, 0, 'C', '0', '0', 'rs:training:approval:list', 'check',
103, 1, now(), NULL, NULL, '培训审批页面', '000000'
);
-- 4.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, tenant_id
) VALUES
(2031, '培训审批查询', 2003, 1, '', '', '', 1, 0, 'F', '0', '0', 'rs:training:approval:query', '#', 103, 1, now(), NULL, NULL, '培训审批查询权限', '000000'),
(2032, '培训审批操作', 2003, 2, '', '', '', 1, 0, 'F', '0', '0', 'rs:training:approval:approve', '#', 103, 1, now(), NULL, NULL, '培训审批操作权限', '000000'),
(2033, '培训审批拒绝', 2003, 3, '', '', '', 1, 0, 'F', '0', '0', 'rs:training:approval:reject', '#', 103, 1, now(), NULL, NULL, '培训审批拒绝权限', '000000');
-- ================== 5. 出国申请模块 ==================
-- 5.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, tenant_id
) VALUES (
2004, '出国申请', 2000, 4, 'overseas', 'rs/overseas/index', '',
1, 0, 'C', '0', '0', 'rs:overseas:list', 'guide',
103, 1, now(), NULL, NULL, '出国申请页面', '000000'
);
-- 5.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, tenant_id
) VALUES
(2041, '出国申请查询', 2004, 1, '', '', '', 1, 0, 'F', '0', '0', 'rs:overseas:application:query', '#', 103, 1, now(), NULL, NULL, '出国申请查询权限', '000000'),
(2042, '出国申请新增', 2004, 2, '', '', '', 1, 0, 'F', '0', '0', 'rs:overseas:application:add', '#', 103, 1, now(), NULL, NULL, '出国申请新增权限', '000000'),
(2043, '出国申请修改', 2004, 3, '', '', '', 1, 0, 'F', '0', '0', 'rs:overseas:application:edit', '#', 103, 1, now(), NULL, NULL, '出国申请修改权限', '000000'),
(2044, '出国申请提交', 2004, 4, '', '', '', 1, 0, 'F', '0', '0', 'rs:overseas:application:submit', '#', 103, 1, now(), NULL, NULL, '出国申请提交权限', '000000'),
(2045, '出国记录查询', 2004, 5, '', '', '', 1, 0, 'F', '0', '0', 'rs:overseas:record:query', '#', 103, 1, now(), NULL, NULL, '出国记录查询权限', '000000');
-- ================== 6. 出国审批模块 ==================
-- 6.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, tenant_id
) VALUES (
2005, '出国审批', 2000, 5, 'overseasApproval', 'rs/overseasApproval/index', '',
1, 0, 'C', '0', '0', 'rs:overseas:approval:list', 'international',
103, 1, now(), NULL, NULL, '出国审批页面', '000000'
);
-- 6.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, tenant_id
) VALUES
(2051, '出国审批查询', 2005, 1, '', '', '', 1, 0, 'F', '0', '0', 'rs:overseas:approval:query', '#', 103, 1, now(), NULL, NULL, '出国审批查询权限', '000000'),
(2052, '出国审批操作', 2005, 2, '', '', '', 1, 0, 'F', '0', '0', 'rs:overseas:approval:approve', '#', 103, 1, now(), NULL, NULL, '出国审批操作权限', '000000'),
(2053, '出国审批拒绝', 2005, 3, '', '', '', 1, 0, 'F', '0', '0', 'rs:overseas:approval:reject', '#', 103, 1, now(), NULL, NULL, '出国审批拒绝权限', '000000');
-- ================== 7. 角色权限配置 ==================
-- 获取管理员角色ID(支持多种角色key)
SET @adminRoleId = (
SELECT role_id FROM sys_role
WHERE role_key IN ('admin', 'superadmin')
OR role_name LIKE '%管理员%'
OR role_name LIKE '%超级%'
ORDER BY role_id ASC
LIMIT 1
);
-- 如果没有找到管理员角色,使用ID为1的角色(通常是超级管理员)
SET @adminRoleId = IFNULL(@adminRoleId, 1);
-- 删除旧的角色权限配置,防止重复
DELETE FROM sys_role_menu WHERE role_id = @adminRoleId AND menu_id BETWEEN 2000 AND 2100;
-- 为管理员角色分配所有人事管理权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT @adminRoleId, menu_id FROM sys_menu WHERE menu_id BETWEEN 2000 AND 2100;
-- ================== 8. 验证和诊断查询 ==================
-- 8.1 检查菜单配置
SELECT '=== 菜单配置验证 ===' AS 检查项目;
SELECT
m.menu_id AS 菜单ID,
m.menu_name AS 菜单名称,
m.parent_id AS 父级ID,
m.path AS 路由地址,
m.component AS 组件路径,
m.menu_type AS 菜单类型,
m.perms AS 权限标识,
m.visible AS 显示状态,
m.status AS 菜单状态
FROM sys_menu m
WHERE m.menu_id BETWEEN 2000 AND 2100
ORDER BY m.menu_id;
-- 8.2 检查角色配置
SELECT '=== 角色配置验证 ===' AS 检查项目;
SELECT
r.role_id AS 角色ID,
r.role_name AS 角色名称,
r.role_key AS 角色标识,
r.status AS 角色状态
FROM sys_role r
WHERE r.role_id = @adminRoleId;
-- 8.3 检查权限分配
SELECT '=== 权限分配验证 ===' AS 检查项目;
SELECT
rm.role_id AS 角色ID,
r.role_name AS 角色名称,
m.menu_name AS 菜单名称,
m.perms AS 权限标识,
m.menu_type AS 菜单类型
FROM sys_role_menu rm
JOIN sys_role r ON rm.role_id = r.role_id
JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE rm.role_id = @adminRoleId
AND rm.menu_id BETWEEN 2000 AND 2100
ORDER BY rm.menu_id;
-- 8.4 统计信息
SELECT '=== 配置统计 ===' AS 检查项目;
SELECT
COUNT(*) AS 总菜单数,
SUM(CASE WHEN menu_type = 'M' THEN 1 ELSE 0 END) AS 目录数,
SUM(CASE WHEN menu_type = 'C' THEN 1 ELSE 0 END) AS 页面数,
SUM(CASE WHEN menu_type = 'F' THEN 1 ELSE 0 END) AS 按钮数
FROM sys_menu
WHERE menu_id BETWEEN 2000 AND 2100;
-- 8.5 前端组件映射检查
SELECT '=== 前端组件映射检查 ===' AS 检查项目;
SELECT
m.menu_name AS 菜单名称,
m.path AS 路由地址,
m.component AS 组件路径,
CASE
WHEN m.component = 'rs/index' THEN '✅ 对应 web/src/views/rs/index.vue'
WHEN m.component = 'rs/training/index' THEN '✅ 对应 web/src/views/rs/training/index.vue'
WHEN m.component = 'rs/trainingApproval/index' THEN '✅ 对应 web/src/views/rs/trainingApproval/index.vue'
WHEN m.component = 'rs/overseas/index' THEN '✅ 对应 web/src/views/rs/overseas/index.vue'
WHEN m.component = 'rs/overseasApproval/index' THEN '✅ 对应 web/src/views/rs/overseasApproval/index.vue'
ELSE '⚠️ 需要检查组件文件'
END AS 组件映射状态
FROM sys_menu m
WHERE m.menu_id BETWEEN 2000 AND 2100
AND m.menu_type = 'C'
ORDER BY m.menu_id;
-- ================== 执行完成提示 ==================
SELECT
'人事管理模块菜单路由配置完成!' AS 配置状态,
CONCAT('管理员角色ID: ', @adminRoleId) AS 角色信息,
CONCAT('菜单总数: ', (SELECT COUNT(*) FROM sys_menu WHERE menu_id BETWEEN 2000 AND 2100)) AS 统计信息;
-- ================== 后续操作提示 ==================
SELECT '=== 后续操作提示 ===' AS 提示;
SELECT '1. 重启后端服务以刷新菜单缓存' AS 步骤1;
SELECT '2. 清除前端浏览器缓存' AS 步骤2;
SELECT '3. 重新登录系统验证菜单显示' AS 步骤3;
SELECT '4. 检查各功能页面是否能正常访问' AS 步骤4;