# 采购订单确认收货 - 前端联调方案
## 涉及页面
- 采购订单列表页
- 采购订单详情页
## 业务流程
```
采购申请审批通过 → 生成采购订单(已审核) → 确认收货 → 生成到货通知单(待入库/待质检) → 执行入库
```
**确认收货后的自动处理:**
- 如果采购订单明细设置了 `qcCheckFlag=true`(需要质检),到货通知单自动进入"待质检"状态,并创建 IQC 检验单
- 如果采购订单明细设置了 `qcCheckFlag=false`(无需质检),到货通知单直接进入"待入库"状态
## 新增 API
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /erp/purchase-order/confirm-receipt | 确认收货 |
**请求参数:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| id | Long | 是 | 采购订单编号 |
**响应:**
```json
{
"code": 0,
"data": 123, // 生成的到货通知单编号
"msg": "操作成功"
}
```
**业务规则:**
- 只有已审核状态的采购订单才能确认收货
- 已全部入库的采购订单不能确认收货
- 确认收货后返回生成的到货通知单编号,前端可跳转到货通知单详情
## 字段变更
### 采购申请明细新增字段
| 字段 | 类型 | 说明 |
|------|------|------|
| qcCheckFlag | Boolean | 是否需要来料检验,默认 false |
### 采购订单明细新增字段
| 字段 | 类型 | 说明 |
|------|------|------|
| qcCheckFlag | Boolean | 是否需要来料检验,从采购申请带入 |
### 采购申请新增字段
| 字段 | 类型 | 说明 |
|------|------|------|
| depositPrice | BigDecimal | 定金金额,默认 0 |
### 采购订单新增字段
| 字段 | 类型 | 说明 |
|------|------|------|
| depositPrice | BigDecimal | 定金金额,从采购申请带入 |
## 按钮展示规则
### 采购订单列表/详情页
| 按钮 | 显示条件 |
|------|----------|
| 确认收货 | 订单状态=已审核(20) 且 入库状态≠全部入库(2) |
## 前端修改点
### 1. 采购订单列表页 - 添加确认收货按钮
```html
确认收货
```
### 2. 方法实现
```js
// 确认收货
async handleConfirmReceipt(row) {
try {
await this.$modal.confirm(`确认对采购订单【${row.no}】进行收货操作?`);
const res = await confirmReceipt(row.id);
this.$modal.msgSuccess('确认收货成功,已生成到货通知单');
// 可选:跳转到货通知单详情
// this.$router.push({ path: '/mes/wm/arrival-notice/detail', query: { id: res.data } });
this.getList();
} catch (e) {
// 取消或失败
}
}
```
### 3. API 接口
```js
// api/erp/purchase/order.js
export function confirmReceipt(id) {
return request({
url: '/erp/purchase-order/confirm-receipt',
method: 'post',
params: { id }
})
}
```
### 4. 采购申请表单 - 添加质检标识字段
在采购申请明细表格中添加"是否质检"列:
```html
```
### 5. 采购申请表单 - 添加定金字段
```html
```
## 权限配置
| 权限标识 | 说明 |
|----------|------|
| erp:purchase-order:confirm-receipt | 确认收货权限 |
## 注意事项
1. 确认收货操作会自动生成到货通知单,无需手动创建
2. 质检标识从采购申请 → 采购订单 → 到货通知单全程传递
3. 定金金额从采购申请自动带入采购订单
4. 一个采购订单可以多次确认收货(部分收货场景)