-- ========================================== -- 统计权限修复脚本 -- 功能:确保只有维护管理员和超级管理员才能查看统计卡片 -- 时间:2025-06-30 18:58:00 -- 说明:修复统计权限分配,移除维修人员的统计权限 -- ========================================== -- 第一步:确保统计权限项存在 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_by, create_time, update_by, update_time, remark ) SELECT 2120, '统计数据', 2110, 10, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:statistics', '#', 1, now(), 1, now(), '获取报修统计数据' WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2120); -- 第二步:移除维修人员的统计权限(如果存在) DELETE FROM sys_role_menu WHERE role_id = 5 AND menu_id = 2120; -- 第三步:确保超级管理员有统计权限 INSERT IGNORE INTO sys_role_menu (role_id, menu_id) VALUES (1, 2120); -- admin角色 -- 第四步:确保物业维修管理员有统计权限 INSERT IGNORE INTO sys_role_menu (role_id, menu_id) VALUES (6, 2120); -- property_maintenance_admin角色 -- 第五步:验证权限分配结果 SELECT '=== 统计权限分配验证 ===' as section; -- 检查统计权限项是否存在 SELECT menu_id, menu_name, perms, menu_type, status FROM sys_menu WHERE menu_id = 2120; -- 检查哪些角色有统计权限 SELECT '当前拥有统计权限的角色' as info_type, rm.role_id, r.role_name, r.role_key, r.status as role_status FROM sys_role_menu rm JOIN sys_role r ON rm.role_id = r.role_id WHERE rm.menu_id = 2120 ORDER BY rm.role_id; -- 检查维修人员是否还有统计权限(应该为空) SELECT '维修人员统计权限检查' as info_type, CASE WHEN COUNT(*) = 0 THEN '✓ 正确:维修人员没有统计权限' ELSE '✗ 错误:维修人员仍有统计权限' END as result FROM sys_role_menu WHERE role_id = 5 AND menu_id = 2120; -- 检查物业维修管理员是否有统计权限 SELECT '物业维修管理员统计权限检查' as info_type, CASE WHEN COUNT(*) > 0 THEN '✓ 正确:物业维修管理员有统计权限' ELSE '✗ 错误:物业维修管理员缺少统计权限' END as result FROM sys_role_menu WHERE role_id = 6 AND menu_id = 2120; -- 第六步:权限分配总结 SELECT '=== 权限分配总结 ===' as section; SELECT '统计权限分配已修复' as status, '只有超级管理员和物业维修管理员可以查看统计卡片' as permission_rule, '维修人员和其他角色无法查看统计功能' as restriction; -- 第七步:测试指导 SELECT '=== 测试指导 ===' as section; SELECT '使用以下账号测试权限是否正确' as test_guide, 'admin/admin123 - 应该能看到统计卡片' as test_case_1, 'property_admin_test/admin123 - 应该能看到统计卡片' as test_case_2, 'maintenance_test/admin123 - 不应该看到统计卡片' as test_case_3, '前端会根据用户角色自动隐藏/显示统计区域' as frontend_behavior; -- 第八步:完成提示 SELECT '统计权限修复完成' as completion_status, '需要重启前端和后端服务以确保权限生效' as next_step, '运行 test/statistics-permission-test.js 验证权限配置' as verification;