feat: 新增甲方客户管理模块及配套功能

1. 新增甲方客户CRUD接口、前端页面与权限控制
2. 新增发货单管理模块,包含订单状态流转
3. 修复系统菜单名称乱码问题
4. 新增项目启动脚本与数据库初始化脚本
5. 新增相关实体类、Mapper、Service实现
6. 补充项目设计文档与忽略配置
This commit is contained in:
2026-06-09 21:44:31 +08:00
parent ef9584cdb9
commit bbddcb494d
26 changed files with 2084 additions and 0 deletions

114
sql/fix_menu_all.sql Normal file
View File

@@ -0,0 +1,114 @@
-- ============================================================
-- 菜单全面修复脚本
-- 1. 修复所有乱码菜单名称(根据 perms 字段还原)
-- 2. 新增菜单移至主目录parent_id=0因 智慧报价(2000) 已停用
-- 3. 插入缺失的菜单条目
-- ============================================8===============
SET NAMES utf8mb4;
-- ════════════════════════════════════════════════════════════
-- 第一部分:修复所有乱码菜单名称
-- ════════════════════════════════════════════════════════════
-- bid 模块主菜单parent_id=0 且无 perms 的父节点)
UPDATE sys_menu SET menu_name = '智慧报价' WHERE menu_id = 2000;
-- bid 模块子菜单
UPDATE sys_menu SET menu_name = '物料管理' WHERE perms = 'bid:material:list';
UPDATE sys_menu SET menu_name = '新增' WHERE perms = 'bid:material:add' AND menu_type = 'F';
UPDATE sys_menu SET menu_name = '编辑' WHERE perms = 'bid:material:edit' AND menu_type = 'F';
UPDATE sys_menu SET menu_name = '删除' WHERE perms = 'bid:material:remove' AND menu_type = 'F';
UPDATE sys_menu SET menu_name = '查询' WHERE perms = 'bid:material:query' AND menu_type = 'F';
UPDATE sys_menu SET menu_name = '供应商管理' WHERE perms = 'bid:supplier:list';
UPDATE sys_menu SET menu_name = '供应商报价' WHERE perms = 'bid:quotation:list';
UPDATE sys_menu SET menu_name = '报价请求' WHERE perms = 'bid:rfq:list';
UPDATE sys_menu SET menu_name = '智慧比价' WHERE perms = 'bid:comparison:list';
UPDATE sys_menu SET menu_name = '采购单' WHERE perms = 'bid:purchaseorder:list';
UPDATE sys_menu SET menu_name = '供应商评价' WHERE perms = 'bid:evaluation:list';
UPDATE sys_menu SET menu_name = '订单异议' WHERE perms = 'bid:objection:list';
UPDATE sys_menu SET menu_name = '交易记录' WHERE perms = 'bid:transaction:list';
UPDATE sys_menu SET menu_name = '租户管理' WHERE perms = 'bid:tenant:list';
-- 甲方报价单
UPDATE sys_menu SET menu_name = '甲方报价' WHERE perms = 'bid:clientquote:list';
UPDATE sys_menu SET menu_name = '新增报价' WHERE perms = 'bid:clientquote:add' AND menu_type = 'F';
UPDATE sys_menu SET menu_name = '编辑报价' WHERE perms = 'bid:clientquote:edit' AND menu_type = 'F';
UPDATE sys_menu SET menu_name = '删除报价' WHERE perms = 'bid:clientquote:remove' AND menu_type = 'F';
-- 统计分析
UPDATE sys_menu SET menu_name = '统计分析' WHERE perms = 'bid:report:list';
UPDATE sys_menu SET menu_name = '采购总览看板' WHERE perms = 'bid:report:dashboard';
UPDATE sys_menu SET menu_name = '采购成本分析' WHERE perms = 'bid:report:cost';
UPDATE sys_menu SET menu_name = '供应商绩效' WHERE perms = 'bid:report:supplier';
-- ════════════════════════════════════════════════════════════
-- 第二部分:修复我们的新菜单名称
-- ════════════════════════════════════════════════════════════
UPDATE sys_menu SET menu_name = '订单履约' WHERE perms = 'bid:order:list';
UPDATE sys_menu SET menu_name = '待发订单' WHERE perms = 'bid:order:pending';
UPDATE sys_menu SET menu_name = '历史订单' WHERE perms = 'bid:order:history';
UPDATE sys_menu SET menu_name = '结单时间管理' WHERE perms = 'bid:order:closeDate';
UPDATE sys_menu SET menu_name = '甲方客户' WHERE perms = 'bid:client:list';
UPDATE sys_menu SET menu_name = '编辑客户' WHERE perms = 'bid:client:edit' AND menu_type = 'F';
UPDATE sys_menu SET menu_name = '删除客户' WHERE perms = 'bid:client:remove' AND menu_type = 'F';
UPDATE sys_menu SET menu_name = '结单录入' WHERE perms = 'bid:order:closeDate:edit' AND menu_type = 'F';
UPDATE sys_menu SET menu_name = '操作记录' WHERE perms = 'bid:operationlog:list';
-- ════════════════════════════════════════════════════════════
-- 第三部分将新菜单移至主目录parent_id=0
-- 因为 智慧报价(2000) 已停用,其下的子菜单不可见
-- ════════════════════════════════════════════════════════════
-- 订单履约(2023) → 根目录排序20
UPDATE sys_menu SET parent_id = 0, order_num = 20 WHERE menu_id = 2023;
-- 甲方客户(2028) → 根目录排序21
UPDATE sys_menu SET parent_id = 0, order_num = 21 WHERE menu_id = 2028;
-- 操作记录(2029) → 根目录排序22
UPDATE sys_menu SET parent_id = 0, order_num = 22 WHERE menu_id = 2029;
-- ════════════════════════════════════════════════════════════
-- 第四部分:插入缺失的菜单条目
-- ════════════════════════════════════════════════════════════
-- 在途订单 (2025)
INSERT IGNORE INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
VALUES(2025, '在途订单', 2023, 2, 'transit', 'bid/order/transit', 1, 0, 'C', '0', '0', 'bid:order:transit', 'truck', 'admin', NOW());
-- 新增客户按钮 (2030)
INSERT IGNORE INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
VALUES(2030, '新增客户', 2028, 1, '#', NULL, 1, 0, 'F', '0', '0', 'bid:client:add', '#', 'admin', NOW());
-- 查询客户按钮 (2033)
INSERT IGNORE INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
VALUES(2033, '查询客户', 2028, 4, '#', NULL, 1, 0, 'F', '0', '0', 'bid:client:query', '#', 'admin', NOW());
-- 订单查询按钮 (2034)
INSERT IGNORE INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
VALUES(2034, '订单查询', 2024, 1, '#', NULL, 1, 0, 'F', '0', '0', 'bid:order:query', '#', 'admin', NOW());
-- 订单状态变更按钮 (2035)
INSERT IGNORE INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
VALUES(2035, '订单状态变更', 2024, 2, '#', NULL, 1, 0, 'F', '0', '0', 'bid:order:status', '#', 'admin', NOW());
-- 操作记录查询按钮 (2037)
INSERT IGNORE INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
VALUES(2037, '操作记录查询', 2029, 1, '#', NULL, 1, 0, 'F', '0', '0', 'bid:operationlog:query', '#', 'admin', NOW());
-- ════════════════════════════════════════════════════════════
-- 第五部分:角色-菜单关联(确保 admin 有权限)
-- ════════════════════════════════════════════════════════════
INSERT IGNORE INTO sys_role_menu (role_id, menu_id)
SELECT 1, menu_id FROM sys_menu WHERE menu_id IN (2025, 2030, 2033, 2034, 2035, 2037);
-- ════════════════════════════════════════════════════════════
-- 验证
-- ════════════════════════════════════════════════════════════
SELECT menu_id, menu_name, parent_id, perms, order_num,
CASE WHEN status='0' THEN '正常' ELSE '停用' END AS status
FROM sys_menu WHERE menu_id BETWEEN 2000 AND 2037
ORDER BY menu_id;