diff --git a/src/api/haianAutoWarehouse/callOut.js b/src/api/haianAutoWarehouse/callOut.js index dc949fc..77faef1 100644 --- a/src/api/haianAutoWarehouse/callOut.js +++ b/src/api/haianAutoWarehouse/callOut.js @@ -6,8 +6,8 @@ export const getPalletList = data => createAPI(`/haiAnWcsIntegration/palletListF // 海安-旧页面兼容占位:当前页面未实际使用IFS查料接口 - rqrq export const getShopOrderFromIFSWithOrderNo = data => createAPI(`/haiAnWcsIntegration/palletListForPartNo`, 'post', data) -// 海安-立库特殊操作/Call料:固定目标区域“出库口”的下达接口 - rqrq +// 海安-立库特殊操作/Call料:固定下达到整托出库口 - rqrq export const callOutToOutboundPort = data => createAPI(`/haiAnWcsIntegration/callOutToOutboundPort`, 'post', data) -// 海安-立库特殊操作/合托Call板:扫描托盘后直接下达(目的地固定入库口)- rqrq +// 海安-立库特殊操作/合托Call板:扫描托盘后直接下达(目的地固定整托出库口,与 Call料同一出口)- rqrq export const scanAndCallPalletForHetuo = data => createAPI(`/haiAnWcsIntegration/scanAndCallPalletForHetuo`, 'post', data) diff --git a/src/views/modules/haianAutoWarehouse/haianCallOut.vue b/src/views/modules/haianAutoWarehouse/haianCallOut.vue index b8034d5..9d47a4d 100644 --- a/src/views/modules/haianAutoWarehouse/haianCallOut.vue +++ b/src/views/modules/haianAutoWarehouse/haianCallOut.vue @@ -43,9 +43,9 @@ /> - +
- +
- +
- +
@@ -121,7 +121,7 @@ export default { now.getMinutes().toString().padStart(2, '0') + ':' + now.getSeconds().toString().padStart(2, '0') }, - // 扫描下达:调用海安专用接口,后端统一按入库口目标执行 - rqrq + // 扫描下达:调用海安专用接口,后端统一按下达到整托出库口 - rqrq handleScanAndCall() { const palletId = this.formData.palletId ? this.formData.palletId.trim() : '' if (!this.formData.site) { diff --git a/src/views/modules/haianAutoWarehouse/haianEmptyPalletAssembly.vue b/src/views/modules/haianAutoWarehouse/haianEmptyPalletAssembly.vue index 2edbde7..d302316 100644 --- a/src/views/modules/haianAutoWarehouse/haianEmptyPalletAssembly.vue +++ b/src/views/modules/haianAutoWarehouse/haianEmptyPalletAssembly.vue @@ -148,7 +148,7 @@ export default { currentPalletType: '', palletTypeOptions: [], count: 1, - // 通知入库口选择 - rqrq + // 通知入库口选择:待确认站点实际编码,当前仍用旧入库口1/2 - rqrq inboundPortDialogVisible: false, selectedInboundPort: '', inboundPortOptions: [ diff --git a/src/views/modules/haianAutoWarehouse/haianPalletAssembly.vue b/src/views/modules/haianAutoWarehouse/haianPalletAssembly.vue index f418842..ffb0eeb 100644 --- a/src/views/modules/haianAutoWarehouse/haianPalletAssembly.vue +++ b/src/views/modules/haianAutoWarehouse/haianPalletAssembly.vue @@ -305,7 +305,7 @@
- + {{ cancelReserveLoading ? '取消中...' : '一键取消预留' }} - -
+ +
栈板在立库异常位上,不允许取消预留
@@ -211,6 +211,8 @@ export default { // 栈板库位 - rqrq locationCode: '', + // 是否异常位:由后端 ERROR_STATIONS 判定,禁止前端写死 1101 - rqrq + errorStationFlag: false, // 预留清单相关 - rqrq reserveModalVisible: false, @@ -356,21 +358,24 @@ export default { this.reservedLabels = data.data.reservedLabels || []; this.reserveCount = data.data.reserveCount || 0; this.locationCode = data.data.locationCode || ''; + this.errorStationFlag = data.data.errorStationFlag === true; } else { this.reservedLabels = []; this.reserveCount = 0; + this.errorStationFlag = false; } }).catch(error => { console.error('获取预留标签列表失败:', error); this.reservedLabels = []; this.reserveCount = 0; + this.errorStationFlag = false; }); }, // 一键取消预留 - rqrq handleBatchCancelReserve() { - if (this.locationCode === '1101') { - this.$alert('栈板在库位1101上,不允许取消预留', '错误', { confirmButtonText: '确定' }); + if (this.errorStationFlag) { + this.$alert('栈板在立库异常位上,不允许取消预留', '错误', { confirmButtonText: '确定' }); return; } diff --git a/src/views/modules/haianAutoWarehouse/haianPalletSorting.vue b/src/views/modules/haianAutoWarehouse/haianPalletSorting.vue index 67999b3..932081e 100644 --- a/src/views/modules/haianAutoWarehouse/haianPalletSorting.vue +++ b/src/views/modules/haianAutoWarehouse/haianPalletSorting.vue @@ -18,7 +18,7 @@ v-model="palletCode" placeholder="请扫描栈板编码" class="form-input" - style="flex: 0.75;" + :style="{ flex: sortedSourceFlag ? '1' : '0.75' }" clearable inputmode="none" autocomplete="off" @@ -27,7 +27,7 @@ @keyup.enter.native="handlePalletScan" ref="palletInput" /> -
@@ -101,6 +101,10 @@ 刷新 + +
+ 当前为被分拣站点,扫进=放回标签,提交=通知回库 +
@@ -108,8 +112,8 @@
- 扫进 - 扫回 + {{ sortedSourceFlag ? '放回' : '扫进' }} + {{ sortedSourceFlag ? '解绑' : '扫回' }}
@@ -277,6 +281,7 @@ import { getPalletDetails, savePalletDetail, restorePalletDetail, + deletePalletDetail, getLabelInfo, getPalletInfo, getPalletTypeList, @@ -299,6 +304,8 @@ export default { currentPalletType: '', currentAutoSort: 'N', currentPalletStation: '', + // 被分拣源盘标记:由后端按 location_code 对照 R1-R4 返回,前端不自行猜点位 - rqrq + sortedSourceFlag: false, forceFullPalletOut: false, palletTypeDisabled: false, autoSortDisabled: false, @@ -397,6 +404,7 @@ export default { this.currentPalletType = '' this.currentAutoSort = 'N' this.currentPalletStation = '' + this.sortedSourceFlag = false this.forceFullPalletOut = false this.palletTypeDisabled = false this.autoSortDisabled = false @@ -451,6 +459,7 @@ export default { this.palletCode = data.palletId this.positionOptions = data.positions || [] this.palletScanned = true + this.sortedSourceFlag = data.sortedSourceFlag === true this.scanCode = '' this.scanPosition = '' this.scanLayer = 1 @@ -715,7 +724,7 @@ export default { throw new Error((data && data.msg) || '获取分拣清单失败') }) }, - // 分拣扫码:扫进需命中分拣清单并缓存原位置,扫回需按缓存恢复 - rqrq + // 分拣扫码:工作盘扫进卡分拣清单;被分拣源盘扫进=放回本盘、扫回=解绑 - rqrq handleLabelScan() { if (!this.ensureSite()) { return @@ -743,14 +752,18 @@ export default { return } this.scanRequestLoading = true - this.loadSortingListIfNeeded() - .then((list) => { + const scanInPromise = this.sortedSourceFlag + ? Promise.resolve() + : this.loadSortingListIfNeeded().then((list) => { if (list.length === 0) { throw new Error('当前不存在分拣任务') } if (!list.includes(this.scanCode)) { throw new Error('该标签不在分拣清单中') } + }) + scanInPromise + .then(() => { return getLabelInfo({ site: this.site, serialNo: this.scanCode @@ -765,7 +778,7 @@ export default { sortFlag: 1 }).then(({ data: saveData }) => { if (saveData && saveData.code === 0) { - if (original) { + if (!this.sortedSourceFlag && original) { this.originalDetailCache[this.scanCode] = { palletId: original.palletId || '', position: original.position || '', @@ -777,25 +790,50 @@ export default { wcsFlag: original.wcsFlag === null || original.wcsFlag === undefined ? 0 : original.wcsFlag } } - this.$message.success('分拣扫进成功') + this.$message.success(this.sortedSourceFlag ? '放回标签成功' : '分拣扫进成功') this.needRefreshOnClose = true this.scanCode = '' this.loadLayerOptions() this.moveFocusToScanInput() return } - throw new Error((saveData && saveData.msg) || '分拣扫进失败') + throw new Error((saveData && saveData.msg) || (this.sortedSourceFlag ? '放回标签失败' : '分拣扫进失败')) }) }) }) .catch((error) => { - this.$alert(error.message || '分拣扫进失败', '错误', { confirmButtonText: '确定' }) + this.$alert(error.message || (this.sortedSourceFlag ? '放回标签失败' : '分拣扫进失败'), '错误', { confirmButtonText: '确定' }) this.scanCode = '' this.moveFocusToScanInput() }) .finally(() => { this.scanRequestLoading = false }) + } else if (this.sortedSourceFlag) { + // 被分拣源盘扫回=从本盘解绑,不再 restore 到原托盘,避免写回错误栈板 - rqrq + this.scanRequestLoading = true + deletePalletDetail({ + site: this.site, + palletId: this.palletCode, + serialNo: this.scanCode + }).then(({ data }) => { + if (data && data.code === 0) { + this.$message.success('解绑标签成功') + this.needRefreshOnClose = true + this.scanCode = '' + this.moveFocusToScanInput() + } else { + this.scanCode = '' + this.$alert((data && data.msg) || '解绑标签失败', '错误', { confirmButtonText: '确定' }) + this.moveFocusToScanInput() + } + }).catch((error) => { + this.scanCode = '' + this.$alert(error.message || '解绑标签失败', '错误', { confirmButtonText: '确定' }) + this.moveFocusToScanInput() + }).finally(() => { + this.scanRequestLoading = false + }) } else { const original = this.originalDetailCache[this.scanCode] if (!original) { @@ -855,7 +893,8 @@ export default { }).then(({ data }) => { if (data && data.code === 0) { this.sortingList = [] - this.$message.success('分拣提交成功') + const resultRow = data.row || {} + this.$message.success(resultRow.message || (this.sortedSourceFlag ? '已通知托盘回库' : '分拣提交成功')) } else { this.$alert((data && data.msg) || '分拣提交失败', '错误', { confirmButtonText: '确定' }) }