-- ============================================================ -- 补齐缺失的 :operation 操作权限 & 字段权限 -- 创建日期: 2026-07-17 -- 说明: 前端按钮使用 hasPermission('xxx:operation') 控制显示 -- 但 sys_element 中缺少对应的元素权限码,导致: -- 1. 审批按钮可见但 can_approve 拒绝(出库/借库审批) -- 2. 用户管理操作按钮不显示 -- 3. 权限分配按钮不显示 -- 4. 密码字段被隐藏 -- ============================================================ BEGIN; -- ===== 1. 出库审批操作权限 ===== INSERT INTO sys_element (menu_code, name, code, element_type) SELECT 'outbound_approval', '审批操作', 'outbound_approval:operation', 'column' WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'outbound_approval:operation'); INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'outbound_approval:operation', 'element' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'outbound_approval:operation'); INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPER_ADMIN', 'outbound_approval:operation', 'element' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPER_ADMIN' AND target_code = 'outbound_approval:operation'); -- ===== 2. 借库审批操作权限 ===== INSERT INTO sys_element (menu_code, name, code, element_type) SELECT 'op_borrow_approval', '审批操作', 'op_borrow_approval:operation', 'column' WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'op_borrow_approval:operation'); INSERT INTO sys_role_permission (role_code, target_code, type) SELECT role_code, 'op_borrow_approval:operation', 'element' FROM (SELECT DISTINCT role_code FROM sys_role_permission WHERE target_code = 'op_borrow_approval') t WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = t.role_code AND target_code = 'op_borrow_approval:operation'); -- ===== 3. 用户管理操作权限 ===== INSERT INTO sys_element (menu_code, name, code, element_type) SELECT 'system_user', '用户操作', 'system_user:operation', 'column' WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'system_user:operation'); INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'system_user:operation', 'element' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'system_user:operation'); -- ===== 4. 权限分配操作权限 ===== INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'system_permission:operation', 'element' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'system_permission:operation'); -- ===== 5. 密码管理字段权限 ===== INSERT INTO sys_element (menu_code, name, code, element_type) SELECT 'system_user', '密码管理', 'system_user:password', 'column' WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'system_user:password'); INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPER_ADMIN', 'system_user:password', 'element' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPER_ADMIN' AND target_code = 'system_user:password'); INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'system_user:password', 'element' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'system_user:password'); -- 验证 SELECT 'outbound_approval:operation' AS perm, count(*) FROM sys_role_permission WHERE target_code = 'outbound_approval:operation' UNION ALL SELECT 'op_borrow_approval:operation', count(*) FROM sys_role_permission WHERE target_code = 'op_borrow_approval:operation' UNION ALL SELECT 'system_user:operation', count(*) FROM sys_role_permission WHERE target_code = 'system_user:operation' UNION ALL SELECT 'system_permission:operation', count(*) FROM sys_role_permission WHERE target_code = 'system_permission:operation' UNION ALL SELECT 'system_user:password', count(*) FROM sys_role_permission WHERE target_code = 'system_user:password'; COMMIT;