feat: 完成采购看板与异议管理模块功能升级

1.  新增报表下钻跳转支持,为供应商、RFQ、采购单、物料等页面添加路由参数解析
2.  优化异议管理模块:新增发货单关联、详情弹窗、审批流程优化
3.  完善采购看板功能:支持累计数据展示、图表导出、数据补全与趋势优化
4.  新增供应商评分历史趋势统计与品类分布聚合逻辑
5.  修复异议API路径与通知跳转路径问题,新增模拟测试数据
This commit is contained in:
2026-06-21 12:40:59 +08:00
parent 8bdb8d7c23
commit 896999dfeb
26 changed files with 1129 additions and 108 deletions

View File

@@ -0,0 +1,41 @@
-- 订单异议模拟数据20条
-- 覆盖5家供应商3种状态(resolved/pending/open),多样化异议原因
SET NAMES utf8mb4;
INSERT INTO biz_order_objection (tenant_id, po_id, supplier_id, reason, attachment, status, resolution, create_by, create_time, resolve_time, update_by, update_time) VALUES
-- 供应商14条
(1, 1, 1, '电源模块批次MW-2025-1128中发现3台开机自检报警检测为输出纹波超标不符合采购规格书要求要求供应商提供原厂检测报告并换货。', NULL, 'resolved', '供应商已提供原厂检测报告确认为该批次出厂检验遗漏问题。已更换3台合格品并附出厂测试记录我司复验通过。', '采购部 王工', '2025-08-10 14:00:00', '2025-08-18 11:00:00', 'admin', '2025-08-18 11:00:00'),
(1, 1, 1, '导轨表面有轻微划痕,影响外观但不影响功能,要求折扣处理。', NULL, 'resolved', '经协商供应商同意8折结算该批次已由财务调整账单。', '采购部 李工', '2025-10-05 09:30:00', '2025-10-10 15:00:00', 'admin', '2025-10-10 15:00:00'),
(1, 1, 1, '本批次PLC控制器固件版本与约定不符缺少MODBUS-TCP协议支持需升级固件。', NULL, 'pending', NULL, '采购部 张工', '2026-01-15 10:00:00', NULL, NULL, NULL),
(1, 1, 1, '包装箱破损导致2台传感器外壳变形要求补发。', NULL, 'resolved', '供应商确认物流责任已补发2台传感器到货验收合格。', '采购部 李工', '2026-03-20 13:30:00', '2026-03-25 10:00:00', 'admin', '2026-03-25 10:00:00'),
-- 供应商25条问题较多
(1, 2, 2, '滚珠丝杠NSK品牌10套中有3套程误差超出图纸要求规定0.05mm/300mm实测最大误差达0.09mm,要求退换货或索赔。', NULL, 'resolved', '经双方确认供应商同意退换该2套滚珠丝杠并承担往返运费。补货已于2025-09-28送达复检合格。本次异议结案。', '采购部 李工', '2025-09-22 09:00:00', '2025-09-30 16:00:00', 'admin', '2025-09-30 16:00:00'),
(1, 2, 2, '交期延迟7天导致生产线停工待料要求赔偿损失。', NULL, 'resolved', '供应商承认排产失误同意下次订单优惠5%作为补偿。', '采购部 王工', '2025-11-12 14:00:00', '2025-11-20 10:30:00', 'admin', '2025-11-20 10:30:00'),
(1, 2, 2, '伺服电机铭牌信息缺失,缺少序列号和生产日期,无法追溯。', NULL, 'pending', NULL, '采购部 张工', '2026-01-08 11:00:00', NULL, NULL, NULL),
(1, 2, 2, '本批次联轴器硬度不达标HRC实测值18要求HRC22-25使用寿命存疑。', NULL, 'open', NULL, '采购部 李工', '2026-02-25 15:00:00', NULL, NULL, NULL),
(1, 2, 2, '到货数量短缺订单20件实到18件缺少2件未提前告知。', NULL, 'resolved', '供应商确认漏发已补发2件并于3月5日到货。', '采购部 王工', '2026-03-01 09:15:00', '2026-03-05 14:00:00', 'admin', '2026-03-05 14:00:00'),
-- 供应商33条
(1, 3, 3, '变频器参数设置手册为英文版,要求提供中文版。', NULL, 'resolved', '供应商已邮寄中文版手册,并提供电子版下载链接。', '采购部 张工', '2025-09-15 10:00:00', '2025-09-18 14:00:00', 'admin', '2025-09-18 14:00:00'),
(1, 3, 3, '触摸屏亮度不均匀,边缘有暗影,疑似背光模组不良。', NULL, 'resolved', '供应商技术人员现场检测确认为背光模组批次问题已更换4台触摸屏。', '采购部 李工', '2025-12-10 13:00:00', '2025-12-18 11:00:00', 'admin', '2025-12-18 11:00:00'),
(1, 3, 3, '继电器触点氧化严重存储3个月后出现接触不良怀疑防锈处理不达标。', NULL, 'pending', NULL, '采购部 王工', '2026-04-02 10:30:00', NULL, NULL, NULL),
-- 供应商45条问题最多
(1, 1, 4, '气缸密封圈材质不符约定氟橡胶FKM实际为丁腈橡胶NBR耐温性不达标。', NULL, 'resolved', '供应商承认材质替换错误已退换全部50件密封圈复检合格。', '采购部 李工', '2025-08-20 14:30:00', '2025-09-05 10:00:00', 'admin', '2025-09-05 10:00:00'),
(1, 1, 4, '电磁阀线圈阻抗偏差大标称24VDC 1.2A实测1.5A,存在过热风险。', NULL, 'open', NULL, '采购部 张工', '2025-10-18 11:00:00', NULL, NULL, NULL),
(1, 1, 4, '到货产品无出厂检验报告,无合格证,拒绝入库。', NULL, 'resolved', '供应商补寄出厂检验报告和合格证,经审核后入库。', '采购部 王工', '2025-11-25 09:00:00', '2025-12-01 15:00:00', 'admin', '2025-12-01 15:00:00'),
(1, 1, 4, '气动接头螺纹滑丝无法正常安装不良率高达15%。', NULL, 'pending', NULL, '采购部 李工', '2026-02-10 14:00:00', NULL, NULL, NULL),
(1, 1, 4, '本批次气管有异味,疑似材质回料掺杂,要求第三方检测。', NULL, 'open', NULL, '采购部 张工', '2026-04-15 10:15:00', NULL, NULL, NULL),
-- 供应商53条
(1, 2, 5, '电缆外径偏大,超出接线端子孔径,无法压接。', NULL, 'resolved', '供应商确认模具偏差,已免费提供配套大孔径端子。', '采购部 李工', '2025-10-08 13:00:00', '2025-10-15 11:00:00', 'admin', '2025-10-15 11:00:00'),
(1, 2, 5, '接线端子防尘盖卡扣断裂安装5个有2个断裂质量不稳定。', NULL, 'resolved', '供应商改进注塑工艺补发10个改良版防尘盖复装后无断裂。', '采购部 王工', '2026-01-20 10:00:00', '2026-01-28 14:30:00', 'admin', '2026-01-28 14:30:00'),
(1, 2, 5, '开关电源输出电压波动大空载5.2V带载后降至4.6V不在5V±2%范围内。', NULL, 'pending', NULL, '采购部 张工', '2026-03-10 15:30:00', NULL, NULL, NULL);
-- 验证
SELECT '=== 异议数据统计 ===' AS info;
SELECT COUNT(*) AS total FROM biz_order_objection;
SELECT supplier_id, COUNT(*) AS cnt, SUM(CASE WHEN status='resolved' THEN 1 ELSE 0 END) AS resolved, SUM(CASE WHEN status='pending' THEN 1 ELSE 0 END) AS pending, SUM(CASE WHEN status='open' THEN 1 ELSE 0 END) AS open_status FROM biz_order_objection GROUP BY supplier_id ORDER BY supplier_id;