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
| -- 空板出库菜单:前端 component 必须为 emptyOutbound(见 rsf-admin ResourceContent.js)
| -- 执行前请确认「出库管理」目录在 sys_menu 中的 name(常见为 menu.outStockPoces):
| -- SELECT id, name, component, parent_id FROM sys_menu WHERE name LIKE '%outStock%' OR name LIKE '%出库%';
| -- 若 name 不一致,请改下面子查询或改为固定 parent_id。
|
| -- 主菜单(类型=菜单)
| INSERT INTO `sys_menu` (`name`, `parent_id`, `parent_name`, `path`, `path_name`, `route`, `component`, `brief`, `code`, `type`, `authority`, `icon`, `sort`, `meta`, `tenant_id`, `status`, `deleted`, `create_time`, `update_time`, `memo`)
| SELECT
| 'menu.emptyOutbound',
| p.id,
| 'menu.outStockPoces',
| CONCAT(IFNULL(p.path, ''), CASE WHEN IFNULL(p.path, '') = '' THEN '' ELSE ',' END, CAST(p.id AS CHAR)),
| NULL,
| '/work/emptyOutbound',
| 'emptyOutbound',
| NULL,
| NULL,
| 0,
| 'manager:emptyOutbound:list',
| 'Layers',
| 30,
| NULL,
| 1,
| 1,
| 0,
| NOW(),
| NOW(),
| NULL
| FROM `sys_menu` p
| WHERE p.name = 'menu.outStockPoces' AND IFNULL(p.deleted, 0) = 0 AND IFNULL(p.type, 0) = 0
| AND NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `component` = 'emptyOutbound' AND IFNULL(`type`, 0) = 0 LIMIT 1)
| LIMIT 1;
|
| -- 列表/接口权限(类型=按钮,与 WcsController @PreAuthorize manager:emptyOutbound:list 一致)
| INSERT INTO `sys_menu` (`name`, `parent_id`, `path`, `path_name`, `route`, `component`, `brief`, `code`, `type`, `authority`, `icon`, `sort`, `meta`, `tenant_id`, `status`, `deleted`, `create_time`, `update_time`, `memo`)
| SELECT
| 'Query 空板出库',
| m.id,
| CONCAT(IFNULL(m.path, ''), ',', m.id),
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| 1,
| 'manager:emptyOutbound:list',
| NULL,
| 0,
| NULL,
| 1,
| 1,
| 0,
| NOW(),
| NOW(),
| NULL
| FROM `sys_menu` m
| WHERE m.component = 'emptyOutbound' AND IFNULL(m.type, 0) = 0 AND IFNULL(m.deleted, 0) = 0
| AND NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `authority` = 'manager:emptyOutbound:list' AND IFNULL(`type`, 0) = 1 LIMIT 1)
| LIMIT 1;
|
| -- 说明:JwtAuthenticationFilter 只加载 authority 非空的菜单为权限;主菜单必须填鉴权,否则即使用户有菜单也会 403。
| -- 执行后在【系统管理 -> 角色管理】中为角色勾选「空板出库」(及可选「Query 空板出库」)并保存。
|
| -- 若此前已插入主菜单且 authority 为空导致 /wcs/empty/outbound 返回 403,执行下面 UPDATE:
| UPDATE `sys_menu` SET `authority` = 'manager:emptyOutbound:list'
| WHERE `component` = 'emptyOutbound' AND IFNULL(`type`, 0) = 0 AND (IFNULL(`authority`, '') = '');
|
| -- 可选:给管理员角色绑定主菜单(role_id 按实际修改,常见为 1)
| INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
| SELECT 1, m.`id` FROM `sys_menu` m
| WHERE m.`component` = 'emptyOutbound' AND IFNULL(m.`type`, 0) = 0
| AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` srm WHERE srm.`role_id` = 1 AND srm.`menu_id` = m.`id`);
|
|