feat(pl): 运费结算审批分流与车辆挂车号等 PL 能力完善
拆分运费审批/出款页面,补充结算发票附件与菜单 SQL,并同步前后端模型与车辆相关展示。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
66d5a8714b
commit
98aec80d71
37 files changed
+1362
-195
No files matched your search
@@ -0,0 +1,3 @@
|
||||
-- 运费结算:发票附件字段
|
||||
ALTER TABLE `pl_freight_settlement`
|
||||
ADD COLUMN `invoice_attachment_urls` text DEFAULT NULL COMMENT '发票附件URLs,逗号分隔' AFTER `invoice_date`;
|
||||
@@ -0,0 +1,99 @@
|
||||
-- =============================================================================
|
||||
-- 运费结算 · 拆分为三菜单(结算 / 审批 / 财务发放)
|
||||
-- 执行库:shanxia2.0 门户库
|
||||
-- 说明:可重复执行;执行后重新登录刷新菜单
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 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_FREIGHT_APPROVAL', '运费结算审批', 'PL_MENU_ROOT', 'C',
|
||||
'freight-approval', 'pl/freight-approval/index', 'pl:freight-approval:list',
|
||||
1, '1', '1', 'shanxia2.0', 31, '待审批与已审批结算单',
|
||||
'system', '', NOW(), NULL, NOW(), 0
|
||||
),
|
||||
(
|
||||
'PL_FREIGHT_APPROVAL_Q', '查询', 'PL_FREIGHT_APPROVAL', 'F',
|
||||
'', '', 'pl:freight-approval:query',
|
||||
1, '1', '1', 'shanxia2.0', 1, NULL,
|
||||
'system', '', NOW(), NULL, NOW(), 0
|
||||
),
|
||||
(
|
||||
'PL_FREIGHT_DISBURSE_MENU', '运费财务发放', 'PL_MENU_ROOT', 'C',
|
||||
'freight-disburse', 'pl/freight-disburse/index', 'pl:freight-disburse:list',
|
||||
1, '1', '1', 'shanxia2.0', 32, '待发放与已发放结算单',
|
||||
'system', '', NOW(), NULL, NOW(), 0
|
||||
),
|
||||
(
|
||||
'PL_FREIGHT_DISBURSE_Q', '查询', 'PL_FREIGHT_DISBURSE_MENU', 'F',
|
||||
'', '', 'pl:freight-disburse:query',
|
||||
1, '1', '1', 'shanxia2.0', 1, NULL,
|
||||
'system', '', NOW(), NULL, NOW(), 0
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`menu_name` = VALUES(`menu_name`),
|
||||
`parent_id` = VALUES(`parent_id`),
|
||||
`menu_type` = VALUES(`menu_type`),
|
||||
`path` = VALUES(`path`),
|
||||
`component` = VALUES(`component`),
|
||||
`perms` = VALUES(`perms`),
|
||||
`visible` = VALUES(`visible`),
|
||||
`status` = VALUES(`status`),
|
||||
`order_num` = VALUES(`order_num`),
|
||||
`update_time` = NOW(),
|
||||
`del_flag` = 0;
|
||||
|
||||
-- 运费结算菜单排序保持在审批、发放之前
|
||||
UPDATE `sys_menu`
|
||||
SET `order_num` = 30, `update_time` = NOW()
|
||||
WHERE `id` = 'PL_FREIGHT' AND `del_flag` = 0;
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 2. 为已拥有「运费结算」菜单的角色自动授权新菜单
|
||||
-- -----------------------------------------------------------------------------
|
||||
|
||||
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
|
||||
REPLACE(UUID(), '-', ''),
|
||||
rm.`role_id`,
|
||||
m.`menu_id`,
|
||||
rm.`tenant_no`,
|
||||
m.`order_num`,
|
||||
'pl freight split menus auto grant',
|
||||
'system',
|
||||
'',
|
||||
NOW(),
|
||||
NULL,
|
||||
NOW(),
|
||||
0
|
||||
FROM `sys_role_menu` rm
|
||||
INNER JOIN (
|
||||
SELECT 'PL_FREIGHT_APPROVAL' AS menu_id, 31 AS order_num UNION ALL
|
||||
SELECT 'PL_FREIGHT_APPROVAL_Q', 1 UNION ALL
|
||||
SELECT 'PL_FREIGHT_DISBURSE_MENU', 32 UNION ALL
|
||||
SELECT 'PL_FREIGHT_DISBURSE_Q', 1
|
||||
) m ON 1 = 1
|
||||
WHERE rm.`menu_id` = 'PL_FREIGHT'
|
||||
AND 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` = m.`menu_id` AND x.`del_flag` = 0
|
||||
);
|
||||
|
||||
SELECT `id`, `menu_name`, `path`, `component`, `perms`, `order_num`
|
||||
FROM `sys_menu`
|
||||
WHERE `id` IN ('PL_FREIGHT', 'PL_FREIGHT_APPROVAL', 'PL_FREIGHT_DISBURSE_MENU')
|
||||
AND `del_flag` = 0
|
||||
ORDER BY `order_num`;
|
||||
@@ -0,0 +1,26 @@
|
||||
-- =============================================================================
|
||||
-- 运输管理 · 调整「山峡自有车辆」与「车辆管理」菜单排序
|
||||
-- 执行库:shanxia2.0 门户库(与 web-admin 同库)
|
||||
-- 说明:可重复执行;交换 order_num,使「山峡自有车辆」排在「车辆管理」之上
|
||||
-- 执行后:重新登录或刷新菜单缓存
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
UPDATE `sys_menu`
|
||||
SET `order_num` = 2, `update_time` = NOW()
|
||||
WHERE `id` = 'PL_SELF_VEHICLE'
|
||||
AND `del_flag` = 0
|
||||
AND (`order_num` IS NULL OR `order_num` <> 2);
|
||||
|
||||
UPDATE `sys_menu`
|
||||
SET `order_num` = 4, `update_time` = NOW()
|
||||
WHERE `id` = 'PL_VEHICLE'
|
||||
AND `del_flag` = 0
|
||||
AND (`order_num` IS NULL OR `order_num` <> 4);
|
||||
|
||||
SELECT `id`, `menu_name`, `parent_id`, `order_num`
|
||||
FROM `sys_menu`
|
||||
WHERE `id` IN ('PL_SELF_VEHICLE', 'PL_VEHICLE')
|
||||
AND `del_flag` = 0
|
||||
ORDER BY `order_num`;
|
||||
@@ -0,0 +1,32 @@
|
||||
-- =============================================================================
|
||||
-- 运输管理 · 车辆表增加挂车号
|
||||
-- 执行库:shanxia2.0 门户库(与 web-admin 同库)
|
||||
-- 说明:可重复执行;挂车号为车辆主数据属性,地磅/出入库仍使用 license_plate
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @col_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'pl_vehicle'
|
||||
AND COLUMN_NAME = 'trailer_no'
|
||||
);
|
||||
|
||||
SET @ddl := IF(
|
||||
@col_exists = 0,
|
||||
'ALTER TABLE `pl_vehicle` ADD COLUMN `trailer_no` varchar(20) DEFAULT NULL COMMENT ''挂车号'' AFTER `license_plate`',
|
||||
'SELECT ''trailer_no already exists'' AS message'
|
||||
);
|
||||
|
||||
PREPARE stmt FROM @ddl;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_COMMENT
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'pl_vehicle'
|
||||
AND COLUMN_NAME IN ('license_plate', 'trailer_no')
|
||||
ORDER BY ORDINAL_POSITION;
|
||||
@@ -417,6 +417,7 @@ CREATE TABLE `pl_freight_settlement` (
|
||||
`invoice_amount` decimal(15,2) DEFAULT NULL COMMENT '发票金额',
|
||||
`invoice_no` varchar(50) DEFAULT NULL COMMENT '发票号',
|
||||
`invoice_date` date DEFAULT NULL COMMENT '开票日期',
|
||||
`invoice_attachment_urls` text DEFAULT NULL COMMENT '发票附件URLs,逗号分隔',
|
||||
`settlement_status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '结算状态 pending-待提交 submitted-已提交 approved-审核通过 confirmed-已确认',
|
||||
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
|
||||
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
|
||||
|
||||
@@ -2425,6 +2425,7 @@ CREATE TABLE `pl_freight_settlement` (
|
||||
`invoice_amount` decimal(15,2) DEFAULT NULL COMMENT '发票金额',
|
||||
`invoice_no` varchar(50) DEFAULT NULL COMMENT '发票号',
|
||||
`invoice_date` date DEFAULT NULL COMMENT '开票日期',
|
||||
`invoice_attachment_urls` text DEFAULT NULL COMMENT '发票附件URLs,逗号分隔',
|
||||
`settlement_status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '结算状态 pending-待提交 submitted-已提交 approved-审核通过 confirmed-已确认',
|
||||
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
|
||||
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
|
||||
@@ -2993,6 +2994,7 @@ CREATE TABLE `pl_vehicle` (
|
||||
`carrier_id` varchar(64) DEFAULT NULL COMMENT '承运商ID(类型为承运商时必填)',
|
||||
`carrier_name` varchar(200) DEFAULT NULL COMMENT '承运商名称(冗余)',
|
||||
`license_plate` varchar(20) NOT NULL COMMENT '车牌号',
|
||||
`trailer_no` varchar(20) DEFAULT NULL COMMENT '挂车号',
|
||||
`default_driver_id` varchar(64) DEFAULT NULL COMMENT '默认司机ID',
|
||||
`default_driver_name` varchar(100) DEFAULT NULL COMMENT '默认司机姓名(冗余)',
|
||||
`load_capacity` decimal(10,2) DEFAULT NULL COMMENT '载重(吨)',
|
||||
@@ -8499,9 +8501,9 @@ 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_PLAN_ARCHIVE_E', '编辑', 'PL_PLAN_ARCHIVE', 'F', '', '', 'pl:plan-archive:edit', 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-25 12:00:00', NULL, '2026-06-25 12: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_PLAN_ARCHIVE_A', '归档', 'PL_PLAN_ARCHIVE', 'F', '', '', 'pl:plan-archive:archive', 1, '1', '1', 'shanxia2.0', 3, NULL, 'system', '', '2026-06-25 12:00:00', NULL, '2026-06-25 12: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_PLAN_CERT', '危化品证上传', 'PL_MENU_ROOT', 'C', 'plan-cert', 'pl/plan-cert/index', 'pl:plan-cert:list', 1, '1', '1', 'shanxia2.0', 12, '危化品购买证/运输证上传', 'system', '', '2026-06-20 18:18:10', NULL, '2026-06-20 18:18: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_SELF_VEHICLE', '山峡自有车辆', 'PL_MENU_ROOT', '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-20 08:07: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_SELF_VEHICLE', '山峡自有车辆', 'PL_MENU_ROOT', 'C', 'self-vehicle', 'pl/self-vehicle/index', 'pl:self-vehicle:list', 1, '1', '1', 'shanxia2.0', 2, '展示全部自有类型车辆', 'system', '', '2026-06-20 08:07:00', NULL, '2026-06-20 08:07: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_TRANSPORT', '运输管理', 'PL_MENU_ROOT', 'C', 'transport', 'pl/transport/index', 'pl:transport:list', 1, '0', '1', 'shanxia2.0', 20, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-20 21:42:04', 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_MENU_ROOT', '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-11 05:17:12', 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_MENU_ROOT', 'C', 'vehicle', 'pl/vehicle/index', 'pl:vehicle:list', 1, '1', '1', 'shanxia2.0', 4, NULL, 'system', '', '2026-06-11 05:17:12', NULL, '2026-06-11 05:17:12', 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 ('SYSB000000000000000000000000000001', '系统基础信息', '2', 'M', '/system-base', '/index/index', NULL, 1, '1', '1', 'shanxia2.0', 11, NULL, NULL, '', '2026-05-27 16:26:30', NULL, '2026-05-30 18:16:14', 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 ('SYSM000000000000000000000000000001', '系统管理', '2', 'M', '/system', '/index/index', NULL, 1, '1', '1', 'shanxia2.0', 13, NULL, NULL, '', '2026-05-27 16:26:30', NULL, '2026-05-30 17:06:32', 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 ('WKF00000000000000000000000000001', '工作流管理', '2', 'M', '/workflow', '/index/index', NULL, 1, '1', '1', 'shanxia2.0', 12, NULL, NULL, '', '2026-05-27 16:26:30', NULL, '2026-05-30 17:06:32', 0);
|
||||
|
||||
Reference in new issue
Block a user