-- 工艺知识库菜单整理:保留原页面、权限及按钮,仅新增目录并调整父级。 -- 在目标库执行前请先备份 system_menu 和 system_role_menu。 -- 通过组件路径定位已有菜单,不依赖跨项目的固定菜单 ID。 SET @process_parent := (SELECT id FROM system_menu WHERE path = '/process-design' AND parent_id = 0 AND deleted = b'0' LIMIT 1); INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, status, visible, keep_alive, always_show, creator, updater) SELECT '工艺知识库', '', 1, 1, @process_parent, 'knowledge', 'lucide:library-big', 0, b'1', b'1', b'1', '1', '1' WHERE @process_parent IS NOT NULL AND NOT EXISTS (SELECT 1 FROM system_menu WHERE parent_id = @process_parent AND path = 'knowledge' AND deleted = b'0'); SET @knowledge_menu := (SELECT id FROM system_menu WHERE parent_id = @process_parent AND path = 'knowledge' AND type = 1 AND deleted = b'0' LIMIT 1); -- 只向已有相关页面权限的角色开放目录,不扩大业务页面权限。 INSERT INTO system_role_menu (role_id, menu_id, creator, updater, tenant_id) SELECT DISTINCT rm.role_id, @knowledge_menu, '1', '1', rm.tenant_id FROM system_role_menu rm JOIN system_menu m ON m.id = rm.menu_id WHERE @knowledge_menu IS NOT NULL AND rm.deleted = b'0' AND m.deleted = b'0' AND m.component IN ('mes/process-design/parameter/index', 'mes/process-design/template/index', 'mes/process-design/process/index') AND NOT EXISTS (SELECT 1 FROM system_role_menu existing WHERE existing.role_id = rm.role_id AND existing.tenant_id = rm.tenant_id AND existing.menu_id = @knowledge_menu AND existing.deleted = b'0'); UPDATE system_menu SET parent_id = @knowledge_menu, updater = '1', update_time = NOW() WHERE @knowledge_menu IS NOT NULL AND parent_id = @process_parent AND deleted = b'0' AND component IN ('mes/process-design/parameter/index', 'mes/process-design/template/index', 'mes/process-design/process/index');