From deb12fd2b06ccc821104aa475a8fb784c39dfb2c Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期一, 02 二月 2026 19:01:00 +0800
Subject: [PATCH] 添加音频播放和优化调拨明细查询方法
---
项目代码/WIDESEA_WMSClient/src/views/outbound/outPicking.vue | 351 +++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 239 insertions(+), 112 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue"
index 1d56456..6a629dc 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue"
@@ -1,6 +1,7 @@
<template>
<div class="picking-container" v-loading="globalLoading" element-loading-text="澶勭悊涓�..."
- element-loading-background="rgba(255, 255, 255, 0.8)">
+ element-loading-background="rgba(255, 255, 255, 0.8)" element-loading-spinner="el-icon-loading"
+ element-loading-custom-class="custom-loading">
<!-- 椤堕儴璁㈠崟淇℃伅 -->
<el-card class="order-info-card" shadow="never">
<div class="order-header">
@@ -9,8 +10,11 @@
<span class="order-label">璁㈠崟鍙凤細</span>
<span class="order-value">{{ orderNo }}</span>
</div>
- <div class="order-status" v-if="orderInfo">
- <el-tag :type="getStatusType(orderInfo.status)" size="medium">
+ <div class="order-status">
+ <!-- 娴嬭瘯鎸夐挳 -->
+
+ <el-tag v-if="orderInfo" :type="getStatusType(orderInfo.orderStatus)" size="medium"
+ style="margin-left: 10px;">
{{ orderInfo.statusName || '杩涜涓�' }}
</el-tag>
</div>
@@ -390,6 +394,8 @@
import printView from "@/extension/outbound/extend/printView.vue"
import { stationManager, STATION_STORAGE_KEY } from "@/../src/uitils/stationManager";
+import { ElLoading } from 'element-plus'
+
export default {
components: { printView },
name: 'OutPicking',
@@ -425,7 +431,8 @@
matMixed: true,
wholeOutDialogVisible: false,
wholeOutInfo: null,
- globalLoading: false
+ globalLoading: false,
+ loadingInstance: null
}
},
computed: {
@@ -445,12 +452,31 @@
this.$router.back()
return
}
+
+ // 鍔犺浇璁㈠崟淇℃伅
+ this.loadOrderInfo()
+
// 鑷姩鑱氱劍鍒版墭鐩樼爜杈撳叆妗�
this.$nextTick(() => {
if (this.$refs.palletInput) {
this.$refs.palletInput.focus()
}
})
+ },
+ async loadOrderInfo() {
+ try {
+ this.showFullScreenLoading()
+ const response = await this.http.get(`/api/Outbound/GetOrderInfo?orderNo=${this.orderNo}`)
+ if (response.status) {
+ this.orderInfo = response.data
+ } else {
+ }
+ }
+ catch (error) {
+
+ } finally {
+ this.hideFullScreenLoading()
+ }
},
async loadPalletData() {
@@ -460,55 +486,94 @@
}
try {
- this.globalLoading = true
+ this.showFullScreenLoading()
await Promise.all([
this.loadUnpickedData(),
this.loadPickedData()
]);
} catch (error) {
- console.error('鍔犺浇鎵樼洏鏁版嵁澶辫触:', error)
this.unpickedData = []
} finally {
- this.globalLoading = false
+ this.hideFullScreenLoading()
}
},
loadUnpickedData() {
- return new Promise((resolve, reject) => {
- this.http.post(`/api/Outbound/QueryPickingTasks?orderNo=${this.orderNo}&palletCode=${this.scanForm.palletCode}`, {}).then(response => {
- if (response.status) {
- if (response.data.outStockLockInfos.length > 0) {
- this.unpickedData = response.data.outStockLockInfos;
- this.matMixed = response.data.isMatMixed;
- this.calculateUnpickedStats()
- // 妫�鏌ユ槸鍚﹂渶瑕佹暣鍑虹‘璁�
- this.$nextTick(() => {
- if (this.hasWholeOut()) {
- this.showWholeOutConfirm()
- }
- })
- // 鑷姩鑱氱劍鍒扮墿鏂欐潯鐮佽緭鍏ユ
- this.$nextTick(() => {
- if (this.$refs.materialInput) {
- this.$refs.materialInput.focus()
- }
- })
- } else {
- this.$message.warning('璇ユ墭鐩樻棤鏈嫞閫変换鍔�')
- this.unpickedData = []
+ return new Promise((resolve, reject) => {
+ // 鍏堟竻绌轰箣鍓嶇殑鎻愮ず锛岄伩鍏嶉噸澶嶆彁绀�
+ this.$message.closeAll();
+
+ this.http.post(`/api/Outbound/QueryPickingTasks?orderNo=${this.orderNo}&palletCode=${this.scanForm.palletCode}`, {}).then(response => {
+ if (response.status) {
+ // 鎯呭喌1锛氭湁鏈嫞閫夋暟鎹�
+ if (response.data.outStockLockInfos && response.data.outStockLockInfos.length > 0) {
+ this.unpickedData = response.data.outStockLockInfos;
+ this.matMixed = response.data.isMatMixed;
+ this.orderOver = response.data.orderOver;
+ this.calculateUnpickedStats()
+
+ // 妫�鏌ユ暣鍑虹‘璁�
+ this.$nextTick(() => {
+ if (this.hasWholeOut()) {
+ this.showWholeOutConfirm()
}
- resolve()
- } else {
- this.$message.error(response.message || '鑾峰彇鎵樼洏鏁版嵁澶辫触')
- this.unpickedData = []
- reject(response.message || '鑾峰彇鎵樼洏鏁版嵁澶辫触')
- }
- }).catch(error => {
- console.error('鍔犺浇鏈嫞閫夋暟鎹け璐�:', error)
- reject(error)
- })
- })
- },
+ })
+
+ // 鑱氱劍鐗╂枡鏉$爜杈撳叆妗�
+ this.$nextTick(() => {
+ if (this.$refs.materialInput) {
+ this.$refs.materialInput.focus()
+ }
+ })
+ }
+ // 鎯呭喌2锛氭棤鏈嫞閫夋暟鎹�
+ else {
+ this.unpickedData = [];
+ this.calculateUnpickedStats(); // 閲嶇疆缁熻鏁版嵁
+
+ // 鍙嬪ソ鎻愮ず + 浜や簰浼樺寲
+ this.$message.success({
+ message: `鎵樼洏銆�${this.scanForm.palletCode}銆戝凡鎷i�夊畬鎴愶紝鏆傛棤鎷i�夎褰昤,
+ duration: 3000, // 鎻愮ず鏄剧ず3绉�
+ showClose: true // 鍏佽鎵嬪姩鍏抽棴
+ });
+
+ // 娓呯┖鐗╂枡鏉$爜骞惰仛鐒﹀洖鎵樼洏鐮佽緭鍏ユ
+ this.scanForm.materialBarcode = '';
+ this.$nextTick(() => {
+ if (this.$refs.palletInput) {
+ this.$refs.palletInput.focus();
+ }
+ });
+ }
+ resolve();
+ }
+ // 鎯呭喌3锛氭帴鍙h繑鍥炲け璐�
+ else {
+ this.unpickedData = [];
+ this.calculateUnpickedStats();
+
+ this.$message.error({
+ message: response.message || `鑾峰彇鎵樼洏銆�${this.scanForm.palletCode}銆戞嫞閫夋暟鎹け璐,
+ duration: 5000,
+ showClose: true
+ });
+ reject(response.message || '鑾峰彇鎵樼洏鏁版嵁澶辫触');
+ }
+ }).catch(error => {
+ // 鎯呭喌4锛氱綉缁�/璇锋眰寮傚父
+ this.unpickedData = [];
+ this.calculateUnpickedStats();
+
+ this.$message.error({
+ message: `鑾峰彇鎵樼洏銆�${this.scanForm.palletCode}銆戞嫞閫夋暟鎹紓甯革細${error.message || '缃戠粶閿欒锛岃閲嶈瘯'}`,
+ duration: 5000,
+ showClose: true
+ });
+ reject(error);
+ })
+ })
+},
loadPickedData() {
return new Promise((resolve, reject) => {
@@ -519,15 +584,16 @@
this.calculatePickedStats()
} else {
this.pickedData = []
+
}
resolve()
+
} else {
this.$message.error(response.message || '鑾峰彇鎵樼洏鏁版嵁澶辫触')
this.pickedData = []
reject(response.message || '鑾峰彇鎵樼洏鏁版嵁澶辫触')
}
}).catch(error => {
- console.error('鍔犺浇宸叉嫞閫夋暟鎹け璐�:', error)
reject(error)
})
})
@@ -564,10 +630,11 @@
this.pickedTotal = this.pickedCount
},
- handlePalletScan() {
+ handlePalletScan(flag = true) {
if (this.scanForm.palletCode) {
// this.$message.success(`鎵樼洏鐮�: ${this.scanForm.palletCode}`)
- this.loadPalletData()
+ this.loadPalletData(flag)
+ } else {
}
},
@@ -587,41 +654,39 @@
this.handleConfirmPick()
},
- handleConfirmPick() {
+ async handleConfirmPick() {
if (!this.scanForm.palletCode || !this.scanForm.materialBarcode) {
this.$message.warning('璇峰厛鎵弿鎵樼洏鐮佸拰鐗╂枡鏉$爜')
return
}
this.confirmLoading = true
- this.globalLoading = true
+ this.showFullScreenLoading()
try {
- this.http.post('/api/Outbound/CompleteOutboundWithBarcode', {
+ const response = await this.http.post('/api/Outbound/CompleteOutboundWithBarcode', {
orderNo: this.orderNo,
palletCode: this.scanForm.palletCode,
barcode: this.scanForm.materialBarcode,
operator: this.getUserName()
- }).then(response => {
- if (response.status) {
- if (response.data.scannedDetail.isUnpacked && response.data.scannedDetail.materialCodes.length > 0) {
- this.$refs.printView.open(response.data.scannedDetail.materialCodes);
- }
- this.$message.success('鎷i�夌‘璁ゆ垚鍔�')
- this.resetMaterialBarcode()
- // this.loadUnpickedData()
- // this.loadPickedData()
- this.loadPalletData()
- } else {
- this.$message.error(response.message || '鎷i�夌‘璁ゅけ璐�')
- }
})
+ if (response.status) {
+ if (response.data.scannedDetail.isUnpacked && response.data.scannedDetail.materialCodes.length > 0) {
+ this.$refs.printView.open(response.data.scannedDetail.materialCodes);
+ }
+ this.$message.success('鎷i�夌‘璁ゆ垚鍔�')
+ this.resetMaterialBarcode()
+ // this.loadUnpickedData()
+ // this.loadPickedData()
+ await this.loadPalletData(false)
+ } else {
+ this.$message.error(response.message || '鎷i�夌‘璁ゅけ璐�')
+ }
} catch (error) {
- console.error('鎷i�夌‘璁ゅけ璐�:', error)
this.$message.error('鎷i�夌‘璁ゅけ璐�')
} finally {
this.confirmLoading = false
- this.globalLoading = false
+ this.hideFullScreenLoading()
}
},
@@ -647,9 +712,9 @@
this.confirmDialogVisible = true
},
- executeConfirm() {
+ async executeConfirm() {
this.executeLoading = true
- this.globalLoading = true
+ this.showFullScreenLoading()
try {
let apiUrl = ''
@@ -658,31 +723,28 @@
palletCode: this.scanForm.palletCode,
station: stationManager.getStation()
}
- console.log(params);
if (this.currentAction === 'emptyBox') {
apiUrl = '/api/Outbound/EmptyBox'
} else if (this.currentAction === 'returnToWarehouse') {
apiUrl = '/api/Outbound/ReturnToWarehouse'
}
- this.http.post(apiUrl, params).then(response => {
+ const response = await this.http.post(apiUrl, params)
- if (response.status) {
- this.$message.success('鎿嶄綔鎴愬姛')
- this.confirmDialogVisible = false
- this.resetForm()
- // this.loadUnpickedData()
- // this.loadPickedData()
- } else {
- this.$message.error(response.message || '鎿嶄綔澶辫触')
- }
- })
+ if (response.status) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmDialogVisible = false
+ this.resetForm()
+ // this.loadUnpickedData()
+ // this.loadPickedData()
+ } else {
+ this.$message.error(response.message || '鎿嶄綔澶辫触')
+ }
} catch (error) {
- console.error('鎿嶄綔澶辫触:', error)
this.$message.error('鎿嶄綔澶辫触')
} finally {
this.executeLoading = false
- this.globalLoading = false
+ this.hideFullScreenLoading()
}
},
@@ -696,7 +758,6 @@
showWholeOutConfirm() {
// 鑾峰彇闇�瑕佹暣鍑虹殑鐗╂枡淇℃伅
const wholeOutItem = this.unpickedData.find(item => item.assignQuantity === item.originalQuantity);
- console.log('wholeOutItem:', wholeOutItem);
if (wholeOutItem) {
this.wholeOutInfo = {
palletCode: this.scanForm.palletCode,
@@ -720,37 +781,35 @@
}
},
- executeWholeOut() {
+ async executeWholeOut() {
if (!this.wholeOutInfo) {
this.$message.error('鏁村嚭淇℃伅鏃犳晥');
return;
}
this.executeLoading = true;
- this.globalLoading = true;
+ this.showFullScreenLoading();
try {
// 璋冪敤鏁村嚭鎺ュ彛锛岃繖閲屼娇鐢ㄧ墿鏂欑紪鐮佷綔涓烘潯鐮�
- this.http.post('/api/Outbound/CompleteOutboundWithPallet', {
+ const response = await this.http.post('/api/Outbound/CompleteOutboundWithPallet', {
orderNo: this.orderNo,
palletCode: this.scanForm.palletCode,
operator: this.getUserName()
- }).then(response => {
- if (response.status) {
- this.$message.success('鏁村嚭鎿嶄綔鎴愬姛');
- this.wholeOutDialogVisible = false;
- this.wholeOutInfo = null;
- this.loadPalletData();
- } else {
- this.$message.error(response.message || '鏁村嚭鎿嶄綔澶辫触');
- }
});
+ if (response.status) {
+ this.$message.success('鏁村嚭鎿嶄綔鎴愬姛');
+ this.wholeOutDialogVisible = false;
+ this.wholeOutInfo = null;
+ await this.loadPalletData();
+ } else {
+ this.$message.error(response.message || '鏁村嚭鎿嶄綔澶辫触');
+ }
} catch (error) {
- console.error('鏁村嚭鎿嶄綔澶辫触:', error);
this.$message.error('鏁村嚭鎿嶄綔澶辫触');
} finally {
this.executeLoading = false;
- this.globalLoading = false;
+ this.hideFullScreenLoading();
}
},
@@ -778,7 +837,6 @@
})
} catch (error) {
if (error !== 'cancel') {
- console.error('鎾ら攢澶辫触:', error)
this.$message.error('鎾ら攢澶辫触')
}
}
@@ -835,7 +893,6 @@
return user.userName || user.username || '鏈櫥褰曠敤鎴�'
}
} catch (error) {
- console.error('鑾峰彇鐢ㄦ埛淇℃伅澶辫触:', error)
}
return '鏈櫥褰曠敤鎴�'
@@ -866,8 +923,7 @@
// 妫�鏌ユ槸鍚﹀寘鍚暣鍑�
hasWholeOut() {
- console.log('妫�鏌ユ暣鍑虹姸鎬�:', this.unpickedData.some(item => item.assignQuantity === item.originalQuantity));
- return this.unpickedData.some(item => item.assignQuantity === item.originalQuantity) && !this.matMixed;
+ return this.unpickedData.some(item => item.assignQuantity === item.originalQuantity) && !this.matMixed && !this.orderOver
},
// 璁$畻鍓╀綑搴撳瓨
@@ -910,12 +966,46 @@
getStatusType(status) {
const statusMap = {
0: 'info', // 寰呭鐞�
- 10: 'warning', // 杩涜涓�
+ 1: 'warning', // 杩涜涓�
20: 'primary', // 鎷i�変腑
30: 'success', // 宸插畬鎴�
40: 'danger' // 寮傚父
}
return statusMap[status] || 'info'
+ },
+
+ // 鏄剧ず鍏ㄥ睆閬僵灞�
+ showFullScreenLoading() {
+ if (this.loadingInstance) {
+ this.loadingInstance.close()
+ }
+ this.loadingInstance = ElLoading.service({
+ lock: true,
+ text: '澶勭悊涓�...',
+ background: 'rgba(0, 0, 0, 0.7)',
+ customClass: 'custom-full-loading'
+ })
+ },
+
+ // 闅愯棌鍏ㄥ睆閬僵灞�
+ hideFullScreenLoading() {
+ if (this.loadingInstance) {
+ this.loadingInstance.close()
+ this.loadingInstance = null
+ } else {
+ }
+ },
+
+ // 娴嬭瘯閬僵灞傛樉绀�
+ testLoading() {
+ // 娴嬭瘯涓ょ鏂瑰紡
+ this.globalLoading = true
+ // 鍚屾椂涔熸祴璇曞叏灞弆oading
+ this.showFullScreenLoading()
+ setTimeout(() => {
+ this.globalLoading = false
+ this.hideFullScreenLoading()
+ }, 3000)
}
}
}
@@ -1378,29 +1468,66 @@
}
/* Element Plus Loading 閬僵灞傛牱寮忎慨澶� */
-::v-deep .el-loading-mask {
- background-color: rgba(255, 255, 255, 0.8) !important;
+::v-deep .custom-loading {
+ background-color: rgba(0, 0, 0, 0.7) !important;
z-index: 9999 !important;
- position: fixed !important;
- top: 0 !important;
- left: 0 !important;
- right: 0 !important;
- bottom: 0 !important;
- display: flex !important;
- justify-content: center !important;
- align-items: center !important;
+}
+
+::v-deep .custom-loading .el-loading-mask {
+ background-color: rgba(0, 0, 0, 0.7) !important;
+}
+
+::v-deep .custom-loading .el-loading-spinner {
+ z-index: 10000 !important;
+}
+
+::v-deep .custom-loading .el-loading-text {
+ color: #ffffff !important;
+ font-weight: bold !important;
+ font-size: 16px !important;
+}
+
+/* 鍏ㄥ眬 Loading 鏍峰紡 */
+::v-deep .el-loading-mask {
+ background-color: rgba(0, 0, 0, 0.7) !important;
+ z-index: 9999 !important;
}
::v-deep .el-loading-spinner {
z-index: 10000 !important;
- margin-top: -21px !important;
}
::v-deep .el-loading-text {
- color: #409EFF !important;
+ color: #ffffff !important;
font-weight: bold !important;
- font-size: 16px !important;
- margin-top: 15px !important;
+}
+
+/* 鍏ㄥ睆Loading鑷畾涔夋牱寮� */
+::v-deep .custom-full-loading {
+ z-index: 999999 !important;
+}
+
+::v-deep .custom-full-loading .el-loading-mask {
+ z-index: 999999 !important;
+}
+
+::v-deep .custom-full-loading .el-loading-spinner {
+ z-index: 1000000 !important;
+}
+
+::v-deep .custom-full-loading .el-loading-text {
+ color: #ffffff !important;
+ font-weight: bold !important;
+ font-size: 18px !important;
+}
+
+/* 纭繚瀵硅瘽妗嗕笉浼氶伄鐩杔oading */
+::v-deep .el-dialog {
+ z-index: 2000 !important;
+}
+
+::v-deep .el-dialog__wrapper {
+ z-index: 2000 !important;
}
/* 纭繚瀹瑰櫒鐩稿瀹氫綅 */
--
Gitblit v1.9.3