| | |
| | | <el-table-column prop="createDate" label="æ£éæ¶é´" width="160" /> |
| | | <el-table-column prop="originalBarcode" label="åç©æç " width="160" /> |
| | | <el-table-column prop="newBarcode" label="æ°ç©æç " width="160" /> |
| | | <el-table-column label="æä½" width="100" align="center"> |
| | | <template #default="scope"> |
| | | <el-button |
| | | type="danger" |
| | | size="small" |
| | | icon="el-icon-refresh-left" |
| | | @click="handleReversePicking(scope.row)" |
| | | :disabled="reverseLoading" |
| | | > |
| | | æ¤é |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div class="table-footer"> |
| | |
| | | loadingInstance: null, |
| | | // é³é¢å®ä¾ï¼ç¼åï¼é¿å
éå¤åå»ºï¼ |
| | | successAudio: null, |
| | | errorAudio: null |
| | | errorAudio: null, |
| | | reverseLoading: false |
| | | } |
| | | }, |
| | | computed: { |
| | |
| | | } |
| | | }, |
| | | |
| | | // ============== æ°å¢ï¼æ ¹æ®æçå·è·å订åå·ï¼æ ¸å¿åè½ï¼ ============== |
| | | async getOrderNoByPallet(palletCode) { |
| | | if (!palletCode) { |
| | | this.$message.warning('æçå·ä¸è½ä¸ºç©º'); |
| | |
| | | this.hideFullScreenLoading(); |
| | | } |
| | | }, |
| | | // ============== æ°å¢ç»æ ============== |
| | | |
| | | |
| | | // ææ¾æåé³é¢ |
| | | playSuccessAudio() { |
| | |
| | | initPage() { |
| | | // ä»è·¯ç±åæ°è·å订åå· |
| | | this.orderNo = this.$route.query.orderNo || '' |
| | | // ============== å¾®è°ï¼æ³¨é强å¶è¿åé»è¾ï¼å
¼å®¹æçå·æ¥è®¢åå· ============== |
| | | // if (!this.orderNo) { |
| | | // this.$message.error('订åå·ä¸è½ä¸ºç©º') |
| | | // this.$router.back() |
| | | // return |
| | | // } |
| | | // ============== å¾®è°ç»æ ============== |
| | | |
| | | |
| | | // å 载订åä¿¡æ¯ |
| | | this.loadOrderInfo() |
| | | |
| | |
| | | }); |
| | | }, |
| | | |
| | | async handleReversePicking(row) { |
| | | // 1. äºæ¬¡ç¡®è®¤ |
| | | try { |
| | | await this.$confirm( |
| | | 'ç¡®å®è¦æ¤éè¿æ¡æ£éè®°å½åï¼æ¤éååºåå°æ¢å¤ï¼åºåºåç¶æä¹ä¼åæ¥æ´æ°', |
| | | 'æ¤é确认', |
| | | { |
| | | type: 'warning', |
| | | confirmButtonText: '确认æ¤é', |
| | | cancelButtonText: 'åæ¶', |
| | | closeOnClickModal: false |
| | | } |
| | | ); |
| | | |
| | | // 2. æ§è¡æ¤é |
| | | this.reverseLoading = true; |
| | | this.showFullScreenLoading(); |
| | | |
| | | // 3. è°ç¨æ¤éæ¥å£ï¼éé
ä½ åç«¯çæ¤éæ¥å£å°åï¼ |
| | | const response = await this.http.post('/api/Outbound/ReversePickingWithBarcode', { |
| | | Barcode: row.originalBarcode || row.newBarcode, // ä¼å
ååæ¡ç ï¼æ ååæ°æ¡ç |
| | | OrderNo: this.orderNo, |
| | | PalletCode: row.palletCode || this.scanForm.palletCode, |
| | | Operator: this.getUserName(), |
| | | OrderType: this.orderInfo?.orderType || 0 // 订åç±»åï¼æ åä¼ 0 |
| | | }); |
| | | |
| | | // 4. å¤çç»æ |
| | | if (response.status) { |
| | | this.$message.success('æ¤éæ£éæå'); |
| | | this.playSuccessAudio(); // ææ¾æåé³é¢ |
| | | // å·æ°æ°æ®å表 |
| | | await this.loadPalletData(false); |
| | | } else { |
| | | this.$message.error(response.message || 'æ¤éæ£é失败'); |
| | | this.playErrorAudio(); |
| | | } |
| | | } catch (error) { |
| | | // åæ¶ç¡®è®¤ä¸æ¥é |
| | | if (error !== 'cancel') { |
| | | this.$message.error('æ¤éæ£é失败ï¼' + (error.message || 'ç½ç»å¼å¸¸')); |
| | | this.playErrorAudio(); |
| | | } |
| | | } finally { |
| | | this.reverseLoading = false; |
| | | this.hideFullScreenLoading(); |
| | | } |
| | | }, |
| | | |
| | | handleMaterialScan() { |
| | | if (!this.scanForm.palletCode) { |
| | | this.$message.warning('请å
æ«ææçç ') |