-- 运输管理菜单二级分组(与 web-admin pl.ts 对齐) -- 1. 新增 6 个二级目录 -- 2. 调整三级菜单 parent_id / 名称 / 排序 -- 3. 为已有叶子权限的角色补全二级目录 role_menu -- ── 1. 二级分组目录 ── INSERT INTO sys_menu ( id, menu_name, parent_id, menu_type, path, component, perms, is_frame, visible, status, tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag ) VALUES ('PL_GROUP_PLAN', '运输计划', 'PL_MENU_ROOT', 'M', 'plan-module', NULL, NULL, 1, '1', '1', 'shanxia2.0', 1, NULL, 'system', '', NOW(), NULL, NOW(), 0), ('PL_GROUP_CERT', '购买证上传', 'PL_MENU_ROOT', 'M', 'cert-upload', NULL, NULL, 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', NOW(), NULL, NOW(), 0), ('PL_GROUP_FREIGHT', '运输费用', 'PL_MENU_ROOT', 'M', 'freight-fee', NULL, NULL, 1, '1', '1', 'shanxia2.0', 3, NULL, 'system', '', NOW(), NULL, NOW(), 0), ('PL_GROUP_VEHICLE', '车辆管理', 'PL_MENU_ROOT', 'M', 'vehicle-mgmt', NULL, NULL, 1, '1', '1', 'shanxia2.0', 4, NULL, 'system', '', NOW(), NULL, NOW(), 0), ('PL_GROUP_DOC', '证件提醒', 'PL_MENU_ROOT', 'M', 'document-reminder-module', NULL, NULL, 1, '1', '1', 'shanxia2.0', 5, NULL, 'system', '', NOW(), NULL, NOW(), 0), ('PL_GROUP_BASE', '基础信息库', 'PL_MENU_ROOT', 'M', 'base-info', NULL, NULL, 1, '1', '1', 'shanxia2.0', 6, NULL, 'system', '', NOW(), NULL, NOW(), 0) ON DUPLICATE KEY UPDATE menu_name = VALUES(menu_name), parent_id = VALUES(parent_id), path = VALUES(path), order_num = VALUES(order_num), update_time = NOW(); -- ── 2. 三级菜单挂到对应分组 ── UPDATE sys_menu SET parent_id = 'PL_GROUP_PLAN', order_num = 1, update_time = NOW() WHERE id = 'PL_PLAN' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_PLAN', order_num = 2, update_time = NOW() WHERE id = 'PL_PLAN_ARCHIVE' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_CERT', menu_name = '购买证上传', order_num = 1, update_time = NOW() WHERE id = 'PL_PLAN_CERT' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_FREIGHT', order_num = 1, update_time = NOW() WHERE id = 'PL_FREIGHT' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_FREIGHT', order_num = 2, update_time = NOW() WHERE id = 'PL_FREIGHT_APPROVAL' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_FREIGHT', order_num = 3, update_time = NOW() WHERE id = 'PL_FREIGHT_DISBURSE_MENU' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 1, update_time = NOW() WHERE id = 'PL_VEH_RECHARGE_APPLY' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 2, update_time = NOW() WHERE id = 'PL_VEH_RECHARGE_RECORD' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 3, update_time = NOW() WHERE id = 'PL_VEH_MAINT_APPLY' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 4, update_time = NOW() WHERE id = 'PL_VEH_MAINT_PROCESS' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 5, update_time = NOW() WHERE id = 'PL_VEH_UREA_APPLY' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 6, update_time = NOW() WHERE id = 'PL_VEH_UREA_DISBURSE' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_DOC', order_num = 1, update_time = NOW() WHERE id = 'PL_DOC_REMINDER' AND del_flag = 0; UPDATE sys_menu SET order_num = 6, update_time = NOW() WHERE id = 'PL_GROUP_BASE' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '承运商信息', order_num = 1, update_time = NOW() WHERE id = 'PL_CARRIER' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '全部车辆信息', order_num = 2, update_time = NOW() WHERE id = 'PL_VEHICLE' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', order_num = 3, update_time = NOW() WHERE id = 'PL_SELF_VEHICLE' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '驾押人员信息', order_num = 4, update_time = NOW() WHERE id = 'PL_DRIVER' AND del_flag = 0; UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '运输地址库', order_num = 5, update_time = NOW() WHERE id = 'PL_TRANSPORT_ADDRESS' AND del_flag = 0; -- ── 3. 角色已授权叶子菜单时,补全二级目录(及运输管理根) ── INSERT INTO sys_role_menu ( id, role_id, menu_id, tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag ) SELECT DISTINCT CONCAT('PLGRM_', SUBSTRING(MD5(CONCAT(rm.role_id, '-', grp.id)), 1, 24)), rm.role_id, grp.id, COALESCE(rm.tenant_no, 'shanxia2.0'), 0, 'pl menu group auto grant', 'system', '', NOW(), NULL, NOW(), 0 FROM sys_role_menu rm INNER JOIN sys_menu leaf ON leaf.id = rm.menu_id AND leaf.del_flag = 0 INNER JOIN sys_menu grp ON grp.id = leaf.parent_id AND grp.id LIKE 'PL_GROUP_%' AND grp.del_flag = 0 WHERE rm.del_flag = 0 AND NOT EXISTS ( SELECT 1 FROM sys_role_menu x WHERE x.role_id = rm.role_id AND x.menu_id = grp.id AND x.del_flag = 0 ); INSERT INTO sys_role_menu ( id, role_id, menu_id, tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag ) SELECT DISTINCT CONCAT('PLGRR_', SUBSTRING(MD5(CONCAT(rm.role_id, '-PL_MENU_ROOT')), 1, 24)), rm.role_id, 'PL_MENU_ROOT', COALESCE(rm.tenant_no, 'shanxia2.0'), 0, 'pl menu root auto grant', 'system', '', NOW(), NULL, NOW(), 0 FROM sys_role_menu rm INNER JOIN sys_menu m ON m.id = rm.menu_id AND m.del_flag = 0 WHERE rm.del_flag = 0 AND ( m.id = 'PL_MENU_ROOT' OR m.parent_id = 'PL_MENU_ROOT' OR m.parent_id IN ( 'PL_GROUP_PLAN', 'PL_GROUP_CERT', 'PL_GROUP_FREIGHT', 'PL_GROUP_VEHICLE', 'PL_GROUP_DOC', 'PL_GROUP_BASE' ) OR EXISTS ( SELECT 1 FROM sys_menu p WHERE p.id = m.parent_id AND p.parent_id IN ( 'PL_GROUP_PLAN', 'PL_GROUP_CERT', 'PL_GROUP_FREIGHT', 'PL_GROUP_VEHICLE', 'PL_GROUP_DOC', 'PL_GROUP_BASE' ) AND p.del_flag = 0 ) ) AND NOT EXISTS ( SELECT 1 FROM sys_role_menu x WHERE x.role_id = rm.role_id AND x.menu_id = 'PL_MENU_ROOT' AND x.del_flag = 0 );