From 6a907db7df972927a127b375bd0c009fd7886b82 Mon Sep 17 00:00:00 2001 From: qiankanghui Date: Mon, 21 Sep 2026 13:21:53 +0800 Subject: [PATCH] =?UTF-8?q?feat(order):=20=E6=B7=BB=E5=8A=A0=E6=89=93?= =?UTF-8?q?=E6=A0=B7=E5=8D=95=E6=94=B6=E8=B4=A7=E5=8A=9F=E8=83=BD=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=AA=8C=E8=B4=A7=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在poOrder页面添加收货按钮,仅对打样单且已下达状态显示 - 新增收货确认弹窗,支持填写收货日期并提交到后端 - 添加receivePoDetail API接口用于处理打样单收货逻辑 - 实现收货后自动生成已排程验货申请的功能 - 在myInspectionList中增加状态校验,防止页面数据滞后导致的操作错误 - 为公共验货单添加开始验货时的提示信息 - 完善相关的工具函数和状态管理逻辑 --- src/api/order/poOrder.js | 3 + .../modules/inspection/myInspectionList.vue | 9 +- src/views/modules/order/poOrder.vue | 123 ++++++++++++++++++ .../modules/order/poOrderStatusOptions.js | 5 + 4 files changed, 139 insertions(+), 1 deletion(-) diff --git a/src/api/order/poOrder.js b/src/api/order/poOrder.js index ae2fcd7..ab2bd06 100644 --- a/src/api/order/poOrder.js +++ b/src/api/order/poOrder.js @@ -31,6 +31,9 @@ export const shipPoDetailPreview = (data) => createAPI(`/pODetail/shipPoDetailPr /** 提交发货(回写 qty/c_ship_qty,并按规则判定部分发货或已发货) */ export const shipPoDetail = (data) => createAPI(`/pODetail/shipPoDetail`, 'post', data) +/** 打样单收货(回写 c_po_actual_ready_date,同事务自动生成已排程验货申请) */ +export const receivePoDetail = (data) => createAPI(`/pODetail/receivePoDetail`, 'post', data) + // 根据PO订单查询验货申请明细 export const getInspectionByPODetail = (data) => createAPI(`/pODetail/getInspectionByPODetail`, 'post', data) diff --git a/src/views/modules/inspection/myInspectionList.vue b/src/views/modules/inspection/myInspectionList.vue index 471c44a..1c35f05 100644 --- a/src/views/modules/inspection/myInspectionList.vue +++ b/src/views/modules/inspection/myInspectionList.vue @@ -199,7 +199,14 @@ export default { // 开始验货 startInspection (row) { - this.$confirm(`确认开始验货?\n申请单号:${row.requestNo}\n供应商:${row.supplierName}`, '提示', { + // 校验单子状态是否为已排程(防止页面数据滞后) + if (row.statusDb !== 'Scheduled') { + this.$message.warning('只有已排程状态的验货申请可以开始验货,请刷新列表后重试') + this.getList() + return + } + const publicOrderTip = row.qcOperator === '*' ? '\n该单为公共单(QC人员:*),开始验货后QC人员将改为您本人' : '' + this.$confirm(`确认开始验货?\n申请单号:${row.requestNo}\n供应商:${row.supplierName}${publicOrderTip}`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' diff --git a/src/views/modules/order/poOrder.vue b/src/views/modules/order/poOrder.vue index 3ff23b9..c8f3337 100644 --- a/src/views/modules/order/poOrder.vue +++ b/src/views/modules/order/poOrder.vue @@ -77,6 +77,10 @@ v-if="canShipPoOrder(scope.row.status)" type="primary" @click.stop="handleShipPoOrder(scope.row)">shipped + 收货 + + + + + + + + + + + + + + { + this.receiveDialogSaving = false + if (data && data.code === 0) { + this.$message.success('收货成功,已生成验货申请') + this.receiveDialogVisible = false + this.getDataList() + } else { + this.$message.error((data && data.msg) || '收货失败') + } + }).catch(err => { + this.receiveDialogSaving = false + this.$message.error((err && err.message) || '收货失败') + }) + }, + handleOpenPoOrder (row) { const params = buildPoDetailActionParams(row, this.$store.state.user.site) if (!params.id && !(params.orderNo && params.site && params.itemNo != null)) { diff --git a/src/views/modules/order/poOrderStatusOptions.js b/src/views/modules/order/poOrderStatusOptions.js index 04e8281..3551658 100644 --- a/src/views/modules/order/poOrderStatusOptions.js +++ b/src/views/modules/order/poOrderStatusOptions.js @@ -57,6 +57,11 @@ export function canIssuePoOrder (status) { return status === '草稿' } +/** 是否可「收货」:仅打样单(Sample)且状态为已下达(与后端 receivePoDetail 校验一致) */ +export function canReceivePoOrder (row) { + return !!row && row.orderType === 'Sample' && row.status === '已下达' +} + /** * 打开时根据验货数量推算恢复状态(与后端 PoDetailStatusSupport 规则一致) * 说明: