销售发货流程 - 前端联调方案
涉及页面
- ERP 销售订单页面
- MES 发货通知单页面
- MES 销售出库单页面
业务流程与数据带入
- 销售订单 -> 发货通知单:销售订单ID、销售订单号、客户ID、物料明细自动带入
- 发货通知单 -> 销售出库单:发货通知单ID、销售订单ID、客户ID、物料明细自动带入
- 销售出库 -> 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 销售订单页面 - 添加"生成发货通知单"按钮
<el-button type="primary" @click="handleGenerateNotice" v-hasPermi="['mes:wm-sales-notice:create']">
生成发货通知单
</el-button>
// 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. 发货通知单页面 - 显示销售订单信息
<el-descriptions :column="3" border>
<el-descriptions-item label="销售订单号">
{{ form.saleOrderCode }}
</el-descriptions-item>
<el-descriptions-item label="客户">
{{ form.clientName }}
</el-descriptions-item>
</el-descriptions>
3. 发货通知单行表格 - 新增列
| 列名 |
字段 |
说明 |
| 销售订单明细ID |
saleOrderItemId |
隐藏字段,用于追溯 |
4. 销售出库单页面 - 显示销售订单信息
<el-descriptions :column="3" border>
<el-descriptions-item label="发货通知单号">
{{ form.noticeCode }}
</el-descriptions-item>
<el-descriptions-item label="销售订单号">
{{ form.saleOrderCode }}
</el-descriptions-item>
<el-descriptions-item label="客户">
{{ form.clientName }}
</el-descriptions-item>
</el-descriptions>
数据字段映射
发货通知单主表
| 目标字段 |
数据来源 |
填充时机 |
| 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 |
全部出库 |
所有明细已出库 |
注意事项
- 从销售订单生成发货通知单时,会自动带入所有销售订单明细
- 发货通知单提交后状态变为"待出库",此时可从发货通知单生成销售出库单
- 销售出库完成后,系统自动更新:
- 发货通知单状态 -> 已完成
- 销售订单出库数量和出库状态
- 销售订单的出库状态根据明细出库数量自动计算,无需手动维护