1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
| -- 精简项目菜单:仅停用/隐藏,不删除菜单和权限数据。
| -- 保留:系统管理、客户服务、营销业务、采购台账、项目管理、请假/审批。
| 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;
|
| -- 如需恢复,可从菜单清理前的全库备份恢复;本脚本没有删除任何记录。
|
|