-- 精简项目菜单:仅停用/隐藏,不删除菜单和权限数据。 -- 保留:系统管理、客户服务、营销业务、采购台账、项目管理、请假/审批。 SET NAMES utf8mb4; START TRANSACTION; -- 停用当前项目不使用的一级业务目录。 UPDATE sys_menu SET visible = '1', status = '1', update_time = NOW(), update_by = 'admin' WHERE menu_id IN ( 2000, -- 基础数据 2291, -- 工艺设计 2029, -- 仓储 2033, -- 人力资源(人员、部门改用系统管理) 2058, -- 生产管控 2071, -- 财务管理 2101, -- 档案管理 2040, -- 质量管理 2042, -- 设备管理 2064, -- 能耗管理 2036, -- 管理驾驶舱 2190, -- 劳保管理 2067, -- 售后服务 2250 -- 安全生产 ); -- 营销管理只保留客户档案(私海)、销售台账及其按钮权限。 UPDATE sys_menu SET visible = '1', status = '1', update_time = NOW(), update_by = 'admin' WHERE parent_id = 2010 AND menu_id NOT IN (2001, 2011) AND menu_type <> 'F'; -- 采购管理保留供应商档案、采购台账。 UPDATE sys_menu SET visible = '1', status = '1', update_time = NOW(), update_by = 'admin' WHERE parent_id = 2015 AND menu_id NOT IN (2012, 2016) AND menu_type <> 'F'; -- 协同办公保留审批管理、协同审批、考勤管理。 UPDATE sys_menu SET visible = '1', status = '1', update_time = NOW(), update_by = 'admin' WHERE parent_id = 2053 AND menu_id NOT IN (2327, 2326, 2306) AND menu_type <> 'F'; -- 考勤管理只保留请假申请;出差等审批统一从协同审批进入。 UPDATE sys_menu SET visible = '1', status = '1', update_time = NOW(), update_by = 'admin' WHERE parent_id = 2306 AND menu_id <> 2320 AND menu_type <> 'F'; -- 明确启用需要保留的一级菜单和核心业务菜单。 UPDATE sys_menu SET visible = '0', status = '0', update_time = NOW(), update_by = 'admin' WHERE menu_id IN ( 1, -- 系统管理 2053, -- 协同办公 2010, -- 营销管理 2015, -- 采购管理 2276, -- 项目管理 2357, -- 客户服务 100,101,102,103,104,105,108,2287, 2327,2326,2306,2320, 2001,2011, 2012,2016, 2277,2283,2285, 2358,2359 ); -- 将所有已停用/隐藏菜单的下级路由和按钮权限同步停用。 -- 菜单树当前层级有限,逐层同步 8 次足以覆盖全部后代节点。 UPDATE sys_menu child JOIN sys_menu parent ON child.parent_id = parent.menu_id SET child.visible = '1', child.status = '1', child.update_time = NOW(), child.update_by = 'admin' WHERE parent.status = '1' OR parent.visible = '1'; UPDATE sys_menu child JOIN sys_menu parent ON child.parent_id = parent.menu_id SET child.visible = '1', child.status = '1', child.update_time = NOW(), child.update_by = 'admin' WHERE parent.status = '1' OR parent.visible = '1'; UPDATE sys_menu child JOIN sys_menu parent ON child.parent_id = parent.menu_id SET child.visible = '1', child.status = '1', child.update_time = NOW(), child.update_by = 'admin' WHERE parent.status = '1' OR parent.visible = '1'; UPDATE sys_menu child JOIN sys_menu parent ON child.parent_id = parent.menu_id SET child.visible = '1', child.status = '1', child.update_time = NOW(), child.update_by = 'admin' WHERE parent.status = '1' OR parent.visible = '1'; UPDATE sys_menu child JOIN sys_menu parent ON child.parent_id = parent.menu_id SET child.visible = '1', child.status = '1', child.update_time = NOW(), child.update_by = 'admin' WHERE parent.status = '1' OR parent.visible = '1'; UPDATE sys_menu child JOIN sys_menu parent ON child.parent_id = parent.menu_id SET child.visible = '1', child.status = '1', child.update_time = NOW(), child.update_by = 'admin' WHERE parent.status = '1' OR parent.visible = '1'; UPDATE sys_menu child JOIN sys_menu parent ON child.parent_id = parent.menu_id SET child.visible = '1', child.status = '1', child.update_time = NOW(), child.update_by = 'admin' WHERE parent.status = '1' OR parent.visible = '1'; UPDATE sys_menu child JOIN sys_menu parent ON child.parent_id = parent.menu_id SET child.visible = '1', child.status = '1', child.update_time = NOW(), child.update_by = 'admin' WHERE parent.status = '1' OR parent.visible = '1'; COMMIT; -- 检查最终显示的菜单路由。 SELECT menu_id, menu_name, parent_id, path, component, menu_type FROM sys_menu WHERE visible = '0' AND status = '0' AND menu_type IN ('M','C') ORDER BY parent_id, order_num, menu_id; -- 如需恢复,可从菜单清理前的全库备份恢复;本脚本没有删除任何记录。