# 销售发货流程 - 前端联调方案 ## 涉及页面 - ERP 销售订单页面 - MES 发货通知单页面 - MES 销售出库单页面 ## 业务流程与数据带入 1. **销售订单 -> 发货通知单**:销售订单ID、销售订单号、客户ID、物料明细自动带入 2. **发货通知单 -> 销售出库单**:发货通知单ID、销售订单ID、客户ID、物料明细自动带入 3. **销售出库 -> BPM审批 -> 出库成功**:同步更新销售订单出库数量和状态 ## API | 方法 | 路径 | 说明 | |------|------|------| | POST | /mes/wm/sales-notice/generate-from-sale-order | 从销售订单生成发货通知单 | | GET | /mes/wm/sales-notice/page | 发货通知单分页查询 | | GET | /mes/wm/sales-notice/get | 获取发货通知单详情 | | POST | /mes/wm/sales-notice/create | 创建发货通知单 | | PUT | /mes/wm/sales-notice/submit | 提交发货通知单 | ### 从销售订单生成发货通知单 **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | saleOrderId | Long | 是 | 销售订单ID | **响应:** `{ "code": 200, "data": 123 }` (返回发货通知单ID) ## 前端修改点 ### 1. ERP 销售订单页面 - 添加"生成发货通知单"按钮 ```html 生成发货通知单 ``` ```js // data data() { return { // ... } } // methods methods: { /** 生成发货通知单 */ async handleGenerateNotice() { if (!this.selectedRow) { this.$modal.msgWarning('请选择一条销售订单'); return; } try { const res = await generateFromSaleOrder(this.selectedRow.id); this.$modal.msgSuccess('生成发货通知单成功'); // 跳转到发货通知单页面 this.$router.push({ path: '/mes/wm/sales-notice/edit', query: { id: res.data } }); } catch (e) { console.error(e); } } } ``` ### 2. 发货通知单页面 - 显示销售订单信息 ```html {{ form.saleOrderCode }} {{ form.clientName }} ``` ### 3. 发货通知单行表格 - 新增列 | 列名 | 字段 | 说明 | |------|------|------| | 销售订单明细ID | saleOrderItemId | 隐藏字段,用于追溯 | ### 4. 销售出库单页面 - 显示销售订单信息 ```html {{ form.noticeCode }} {{ form.saleOrderCode }} {{ form.clientName }} ``` ## 数据字段映射 ### 发货通知单主表 | 目标字段 | 数据来源 | 填充时机 | |----------|----------|----------| | saleOrderId | 销售订单.id | 从销售订单生成时 | | saleOrderCode | 销售订单.no | 从销售订单生成时 | | clientId | 销售订单.customerId | 从销售订单生成时 | ### 发货通知单行 | 目标字段 | 数据来源 | 填充时机 | |----------|----------|----------| | saleOrderItemId | 销售订单明细.id | 从销售订单生成时 | | itemId | 销售订单明细.productId | 从销售订单生成时 | | quantity | 销售订单明细.count | 从销售订单生成时 | ### 销售出库单主表 | 目标字段 | 数据来源 | 填充时机 | |----------|----------|----------| | noticeId | 发货通知单.id | 从发货通知单生成时 | | saleOrderId | 发货通知单.saleOrderId | 从发货通知单生成时 | | saleOrderCode | 发货通知单.saleOrderCode | 从发货通知单生成时 | ### 销售出库单行 | 目标字段 | 数据来源 | 填充时机 | |----------|----------|----------| | noticeLineId | 发货通知单行.id | 从发货通知单生成时 | | saleOrderItemId | 发货通知单行.saleOrderItemId | 从发货通知单生成时 | ## 状态流转 ### 发货通知单状态 | 状态值 | 状态名 | 说明 | |--------|--------|------| | 0 | 草稿 | 新建状态 | | 3 | 待出库 | 提交后 | | 4 | 已完成 | 出库完成后自动更新 | ### 销售订单出库状态 | 状态值 | 状态名 | 说明 | |--------|--------|------| | 0 | 未出库 | 默认值 | | 1 | 部分出库 | 部分明细已出库 | | 2 | 全部出库 | 所有明细已出库 | ## 注意事项 1. 从销售订单生成发货通知单时,会自动带入所有销售订单明细 2. 发货通知单提交后状态变为"待出库",此时可从发货通知单生成销售出库单 3. 销售出库完成后,系统自动更新: - 发货通知单状态 -> 已完成 - 销售订单出库数量和出库状态 4. 销售订单的出库状态根据明细出库数量自动计算,无需手动维护