# 到货通知单关联采购订单功能 ## 概述 将到货通知单的采购订单号从手动输入改为关联 ERP 采购订单,实现数据联动和校验。 ## 涉及页面 | 页面 | 路径 | 说明 | |------|------|------| | 到货通知单列表页 | `wls/arrivalnotice/index.vue` | 到货通知单管理 | | 到货通知单详情/编辑页 | `wls/arrivalnotice/form.vue` | 新增/编辑到货通知单 | ## API | 方法 | 路径 | 说明 | |------|------|------| | GET | `/rpc-api/erp/purchase-order/get` | 根据 ID 获取采购订单 | | GET | `/rpc-api/erp/purchase-order/list-by-supplier` | 根据供应商获取采购订单列表(已审核) | | POST | `/mes/wm-arrival-notice/create` | 创建到货通知单 | | PUT | `/mes/wm-arrival-notice/update` | 更新到货通知单 | **请求参数变更(create/update):** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | purchaseOrderId | Long | 否 | 采购订单编号(新增) | | purchaseOrderCode | String | 否 | 采购订单号(冗余,后端自动填充) | | vendorId | Long | 是 | 供应商编号(原有) | | ... | ... | ... | 其他原有字段不变 | **响应变更:** | 参数 | 类型 | 说明 | |------|------|------| | purchaseOrderId | Long | 采购订单编号(新增) | | purchaseOrderCode | String | 采购订单号(原有) | ## 前端修改点 ### 1. 表单字段修改 ```html {{ order.no }} {{ order.orderTime }} ``` ### 2. data 数据 ```js data() { return { // 新增:采购订单列表 purchaseOrderList: [], formData: { purchaseOrderId: undefined, // 新增 purchaseOrderCode: '', // 保留(显示用) // ... 其他字段 }, } } ``` ### 3. 方法 ```js // 供应商变更时,加载对应的采购订单列表 handleVendorChange(vendorId) { if (!vendorId) { this.purchaseOrderList = []; this.formData.purchaseOrderId = undefined; this.formData.purchaseOrderCode = ''; return; } getPurchaseOrderListBySupplier(vendorId).then(res => { this.purchaseOrderList = res.data || []; }); } // 采购订单变更时,自动填充采购订单号 handlePurchaseOrderChange(orderId) { if (!orderId) { this.formData.purchaseOrderCode = ''; return; } const order = this.purchaseOrderList.find(o => o.id === orderId); if (order) { this.formData.purchaseOrderCode = order.no; } } ``` ### 4. API 方法 ```js import request from '@/utils/request'; // 根据供应商获取采购订单列表(已审核状态) export function getPurchaseOrderListBySupplier(supplierId) { return request({ url: `/rpc-api/erp/purchase-order/list-by-supplier?supplierId=${supplierId}`, method: 'get' }); } ``` ## 注意事项 - 采购订单下拉框只在选择供应商后才加载 - 只加载已审核状态的采购订单 - 后端会自动根据 `purchaseOrderId` 填充 `purchaseOrderCode`,前端无需手动传递 - 原有的 `purchaseOrderCode` 字段保留用于显示,但不建议手动输入 ## 数据库变更 需要执行 SQL 脚本:`sql/mysql/mes_wm_arrival_notice_purchase_order.sql` ```sql ALTER TABLE mes_wm_arrival_notice ADD COLUMN purchase_order_id BIGINT COMMENT '采购订单编号' AFTER name; ``` ## 注意:mes_wm_item_receipt 表问题 `mes_wm_item_receipt` 表在数据库中是 **物料退库单**(关联生产工单),但代码中注释写的是"采购入库单"。 这是一个代码与数据库不一致的问题,需要后续单独修复。本次修改不影响该表。