diff --git a/backend/scripts/migration_20260725_pl_tripartite_menus.sql b/backend/scripts/migration_20260725_pl_tripartite_menus.sql new file mode 100644 index 000000000..e6615652d --- /dev/null +++ b/backend/scripts/migration_20260725_pl_tripartite_menus.sql @@ -0,0 +1,65 @@ +-- 基础信息库:全部车辆/驾押人员拆分为三方与山峡四菜单 + +-- 三方车辆(原全部车辆信息) +UPDATE sys_menu +SET menu_name = '三方车辆', order_num = 2, remark = '承运商/三方车辆', update_time = NOW() +WHERE id = 'PL_VEHICLE' AND del_flag = 0; + +-- 三方驾押人员(新建) +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 +) SELECT + 'PL_PERSONNEL_CARRIER', '三方驾押人员', 'PL_GROUP_BASE', 'C', + 'personnel-carrier', 'pl/personnel/index', 'pl:personnel-carrier:list', + 1, '1', '1', 'shanxia2.0', 3, '非山峡驾押人员', + 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM sys_menu WHERE id = 'PL_PERSONNEL_CARRIER' AND del_flag = 0 +); + +-- 山峡自有车辆 +UPDATE sys_menu +SET order_num = 4, update_time = NOW() +WHERE id = 'PL_SELF_VEHICLE' AND del_flag = 0; + +-- 山峡驾押人员(原驾押人员信息) +UPDATE sys_menu +SET menu_name = '山峡驾押人员', order_num = 5, update_time = NOW() +WHERE id = 'PL_DRIVER' AND del_flag = 0; + +-- 运输地址库顺延 +UPDATE sys_menu +SET order_num = 6, update_time = NOW() +WHERE id = 'PL_TRANSPORT_ADDRESS' AND del_flag = 0; + +-- 拥有 PL_DRIVER 或 PL_VEHICLE 权限的角色,补全三方驾押人员菜单 +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('PLPCM_', SUBSTRING(MD5(CONCAT(rm.role_id, '-PL_PERSONNEL_CARRIER')), 1, 24)), + rm.role_id, + 'PL_PERSONNEL_CARRIER', + COALESCE(rm.tenant_no, 'shanxia2.0'), + 0, + 'pl personnel carrier menu auto grant', + 'system', + '', + NOW(), + NULL, + NOW(), + 0 +FROM sys_role_menu rm +WHERE rm.del_flag = 0 + AND rm.menu_id IN ('PL_DRIVER', 'PL_VEHICLE') + AND NOT EXISTS ( + SELECT 1 + FROM sys_role_menu x + WHERE x.role_id = rm.role_id + AND x.menu_id = 'PL_PERSONNEL_CARRIER' + AND x.del_flag = 0 + ); diff --git a/backend/scripts/seed_sys_menu.sql b/backend/scripts/seed_sys_menu.sql index 2d280311e..f68b63ac9 100644 --- a/backend/scripts/seed_sys_menu.sql +++ b/backend/scripts/seed_sys_menu.sql @@ -112,14 +112,15 @@ INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `co 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_VEH_RECHARGE_APPLY', 'ETC加油申请', 'PL_GROUP_VEHICLE', 'C', 'vehicle-recharge-apply', 'pl/vehicle-recharge-apply/index', 'pl:vehicle-recharge-apply:list', 1, '1', '1', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-29 08:32:30', NULL, '2026-06-29 08:37:03', 0); 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_FREIGHT_APPROVAL', '运费结算审批', 'PL_GROUP_FREIGHT', 'C', 'freight-approval', 'pl/freight-approval/index', 'pl:freight-approval:list', 1, '1', '1', 'shanxia2.0', 2, '待审批与已审批结算单', 'system', '', '2026-06-28 16:41:25', NULL, '2026-06-28 16:41:25', 0); 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_PLAN_ARCHIVE', '运输计划归档', 'PL_GROUP_PLAN', 'C', 'plan-archive', 'pl/plan-archive/index', 'pl:plan-archive:list', 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-25 06:14:17', NULL, '2026-06-25 06:14:17', 0); -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_VEHICLE', '全部车辆信息', 'PL_GROUP_BASE', 'C', 'vehicle', 'pl/vehicle/index', 'pl:vehicle:list', 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:12', NULL, '2026-06-28 16:01:18', 0); +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_VEHICLE', '三方车辆', 'PL_GROUP_BASE', 'C', 'vehicle', 'pl/vehicle/index', 'pl:vehicle:list', 1, '1', '1', 'shanxia2.0', 2, '承运商/三方车辆', 'system', '', '2026-06-11 05:17:12', NULL, '2026-06-28 16:01:18', 0); +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_PERSONNEL_CARRIER', '三方驾押人员', 'PL_GROUP_BASE', 'C', 'personnel-carrier', 'pl/personnel/index', 'pl:personnel-carrier:list', 1, '1', '1', 'shanxia2.0', 3, '非山峡驾押人员', 'system', '', '2026-07-25 00:00:00', NULL, '2026-07-25 00:00:00', 0); 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_VEH_RECHARGE_RECORD', 'ETC加油发放登记', 'PL_GROUP_VEHICLE', 'C', 'vehicle-recharge-record', 'pl/vehicle-recharge-record/index', 'pl:vehicle-recharge-record:list', 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-29 08:32:30', NULL, '2026-06-29 08:37:03', 0); 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_FREIGHT_DISBURSE_MENU', '运费财务发放', 'PL_GROUP_FREIGHT', 'C', 'freight-disburse', 'pl/freight-disburse/index', 'pl:freight-disburse:list', 1, '1', '1', 'shanxia2.0', 3, '待发放与已发放结算单', 'system', '', '2026-06-28 16:41:25', NULL, '2026-06-28 16:41:25', 0); -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_SELF_VEHICLE', '山峡自有车辆', 'PL_GROUP_BASE', 'C', 'self-vehicle', 'pl/self-vehicle/index', 'pl:self-vehicle:list', 1, '1', '1', 'shanxia2.0', 3, '展示全部自有类型车辆', 'system', '', '2026-06-20 08:07:00', NULL, '2026-06-28 16:01:18', 0); +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_SELF_VEHICLE', '山峡自有车辆', 'PL_GROUP_BASE', 'C', 'self-vehicle', 'pl/self-vehicle/index', 'pl:self-vehicle:list', 1, '1', '1', 'shanxia2.0', 4, '展示全部自有类型车辆', 'system', '', '2026-06-20 08:07:00', NULL, '2026-06-28 16:01:18', 0); 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_VEH_MAINT_APPLY', '车辆维保申请', 'PL_GROUP_VEHICLE', 'C', 'vehicle-maintenance-apply', 'pl/vehicle-maintenance-apply/index', 'pl:vehicle-maintenance-apply:list', 1, '1', '1', 'shanxia2.0', 3, NULL, 'system', '', '2026-06-29 09:02:16', NULL, '2026-06-29 09:13:01', 0); -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_DRIVER', '驾押人员信息', 'PL_GROUP_BASE', 'C', 'personnel', 'pl/personnel/index', 'pl:driver:list', 1, '1', '1', 'shanxia2.0', 4, NULL, 'system', '', '2026-06-11 05:17:12', NULL, '2026-06-19 22:55:10', 0); +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_DRIVER', '山峡驾押人员', 'PL_GROUP_BASE', 'C', 'personnel', 'pl/personnel/index', 'pl:driver:list', 1, '1', '1', 'shanxia2.0', 5, NULL, 'system', '', '2026-06-11 05:17:12', NULL, '2026-06-19 22:55:10', 0); 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_VEH_MAINT_PROCESS', '车辆维保处理登记', 'PL_GROUP_VEHICLE', 'C', 'vehicle-maintenance-process', 'pl/vehicle-maintenance-process/index', 'pl:vehicle-maintenance-process:list', 1, '1', '1', 'shanxia2.0', 4, NULL, 'system', '', '2026-06-29 09:02:16', NULL, '2026-06-29 09:13:01', 0); -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_TRANSPORT_ADDRESS', '运输地址库', 'PL_GROUP_BASE', 'C', 'transport-address', 'pl/transport-address/index', 'pl:transport-address:list', 1, '1', '1', 'shanxia2.0', 5, '运输通用地址库', 'system', '', '2026-07-01 19:54:09', NULL, '2026-07-01 19:54:09', 0); +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_TRANSPORT_ADDRESS', '运输地址库', 'PL_GROUP_BASE', 'C', 'transport-address', 'pl/transport-address/index', 'pl:transport-address:list', 1, '1', '1', 'shanxia2.0', 6, '运输通用地址库', 'system', '', '2026-07-01 19:54:09', NULL, '2026-07-01 19:54:09', 0); 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_VEH_UREA_APPLY', '车辆尿素申请', 'PL_GROUP_VEHICLE', 'C', 'vehicle-urea-apply', 'pl/vehicle-urea-apply/index', 'pl:vehicle-urea-apply:list', 1, '0', '1', 'shanxia2.0', 5, '侧栏不展示', 'system', '', '2026-06-29 09:26:30', NULL, '2026-06-29 09:26:30', 0); 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_VEH_UREA_DISBURSE', '车辆尿素发放登记', 'PL_GROUP_VEHICLE', 'C', 'vehicle-urea-disburse', 'pl/vehicle-urea-disburse/index', 'pl:vehicle-urea-disburse:list', 1, '0', '1', 'shanxia2.0', 6, '侧栏不展示', 'system', '', '2026-06-29 09:26:30', NULL, '2026-06-29 09:26:30', 0); 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 ('SYS_OPERLOG_Q', '查询', 'SYS_OPERLOG', 'F', '', '', 'system:operlog:query', 1, '1', '1', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-29 10:23:01', NULL, '2026-06-29 10:23:01', 0); diff --git a/web-admin/src/router/modules/pl.ts b/web-admin/src/router/modules/pl.ts index 09c9bf8b0..1a9918bd1 100644 --- a/web-admin/src/router/modules/pl.ts +++ b/web-admin/src/router/modules/pl.ts @@ -192,7 +192,24 @@ export const plRoutes: AppRouteRecord[] = [ name: 'PlVehicle', path: 'vehicle', component: '/pl/vehicle/index', - meta: { title: '全部车辆信息', keepAlive: true, menuCode: 'pl:vehicle:list' } + meta: { + title: '三方车辆', + keepAlive: true, + menuCode: 'pl:vehicle:list', + vehicleTypeLock: 'carrier' + } + }, + { + id: 'PL_PERSONNEL_CARRIER', + name: 'PlPersonnelCarrier', + path: 'personnel-carrier', + component: '/pl/personnel/index', + meta: { + title: '三方驾押人员', + keepAlive: true, + menuCode: 'pl:personnel-carrier:list', + affiliationMode: 'carrier' + } }, { id: 'PL00000000000000000000000000003S', @@ -206,7 +223,12 @@ export const plRoutes: AppRouteRecord[] = [ name: 'PlPersonnel', path: 'personnel', component: '/pl/personnel/index', - meta: { title: '驾押人员信息', keepAlive: true, menuCode: 'pl:driver:list' } + meta: { + title: '山峡驾押人员', + keepAlive: true, + menuCode: 'pl:driver:list', + affiliationMode: 'self' + } }, { id: 'PL00000000000000000000000000004A', @@ -321,7 +343,7 @@ export const plRoutes: AppRouteRecord[] = [ name: 'PlVehicleRedirect', path: 'vehicle', redirect: '/pl/base-info/vehicle', - meta: { title: '全部车辆信息', isHide: true } + meta: { title: '三方车辆', isHide: true } }, { id: 'PL_REDIRECT_SELF_VEHICLE', @@ -335,7 +357,14 @@ export const plRoutes: AppRouteRecord[] = [ name: 'PlPersonnelRedirect', path: 'personnel', redirect: '/pl/base-info/personnel', - meta: { title: '驾押人员信息', isHide: true } + meta: { title: '山峡驾押人员', isHide: true } + }, + { + id: 'PL_REDIRECT_PERSONNEL_CARRIER', + name: 'PlPersonnelCarrierRedirect', + path: 'personnel-carrier', + redirect: '/pl/base-info/personnel-carrier', + meta: { title: '三方驾押人员', isHide: true } }, { id: 'PL_REDIRECT_TRANSPORT_ADDRESS',