From 6dbcd7df8e116cb83dbbd34d0acd6508f9b99991 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期四, 05 二月 2026 16:58:44 +0800
Subject: [PATCH] 优化组盘页面区域的选择和拣选页面,添加拉线名称的查询
---
项目代码/WIDESEA_WMSClient/src/views/outbound/outPicking.vue | 204 +++++++++++++++++++++++++++++---------------------
1 files changed, 118 insertions(+), 86 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 578021c..14cef75 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"
@@ -11,8 +11,6 @@
<span class="order-value">{{ orderNo }}</span>
</div>
<div class="order-status">
- <!-- 娴嬭瘯鎸夐挳 -->
-
<el-tag v-if="orderInfo" :type="getStatusType(orderInfo.orderStatus)" size="medium"
style="margin-left: 10px;">
{{ orderInfo.statusName || '杩涜涓�' }}
@@ -157,14 +155,6 @@
</el-table-column>
<el-table-column prop="unit" label="鍗曚綅" width="60" />
<el-table-column prop="locationCode" label="搴撲綅" />
- <!-- <el-table-column label="鎿嶄綔" width="80" align="center">
- <template #default="scope">
- <el-button type="text" size="small" @click="quickPick(scope.row)"
- :disabled="!scanForm.palletCode">
- 鎷i��
- </el-button>
- </template>
- </el-table-column> -->
</el-table>
<div class="table-footer">
@@ -222,13 +212,6 @@
<el-table-column prop="createDate" label="鎷i�夋椂闂�" width="160" />
<el-table-column prop="originalBarcode" label="鍘熺墿鏂欑爜" width="160" />
<el-table-column prop="newBarcode" label="鏂扮墿鏂欑爜" width="160" />
- <!-- <el-table-column label="鎿嶄綔" width="80" align="center">
- <template #default="scope">
- <el-button type="text" size="small" @click="undoPick(scope.row)">
- 鎾ら攢
- </el-button>
- </template>
- </el-table-column> -->
</el-table>
<div class="table-footer">
@@ -244,53 +227,6 @@
</el-card>
</el-col>
</el-row>
-
- <!-- 鎵樼洏鐗╂枡搴撳瓨淇℃伅 -->
- <!-- <div class="pallet-inventory" v-if="scanForm.palletCode && unpickedData.length > 0">
- <el-divider content-position="left">
- <span style="color: #67C23A; font-size: 14px;">
- <i class="el-icon-goods"></i> 鎵樼洏鐗╂枡搴撳瓨淇℃伅
- </span>
- </el-divider>
- <div class="inventory-container">
- <el-table :data="unpickedData" size="small" :show-header="true" :border="true" stripe
- highlight-current-row max-height="200" class="inventory-table">
- <el-table-column type="index" label="搴忓彿" width="50" align="center" />
- <el-table-column prop="materielCode" label="鐗╂枡缂栫爜" width="100" show-overflow-tooltip />
- <el-table-column prop="materielName" label="鐗╂枡鍚嶇О" width="120" show-overflow-tooltip />
- <el-table-column prop="batchNo" label="鎵规鍙�" width="90" />
- <el-table-column label="褰撳墠搴撳瓨" width="80" align="right">
- <template #default="scope">
- <el-text type="primary" tag="b">{{ scope.row.currentStock || 0 }}</el-text>
- </template>
- </el-table-column>
- <el-table-column label="鍒嗘嫞鏁伴噺" width="80" align="right">
- <template #default="scope">
- <el-text type="warning">{{ scope.row.assignQuantity }}</el-text>
- </template>
- </el-table-column>
- <el-table-column label="宸插垎鎷�" width="70" align="right">
- <template #default="scope">
- <el-text type="success">{{ scope.row.sortedQuantity || 0 }}</el-text>
- </template>
- </el-table-column>
- <el-table-column label="鍓╀綑搴撳瓨" width="80" align="right">
- <template #default="scope">
- <el-text type="info">{{ calculateRemainingStock(scope.row) }}</el-text>
- </template>
- </el-table-column>
- <el-table-column prop="unit" label="鍗曚綅" width="100" align="center" />
- <el-table-column prop="locationCode" label="搴撲綅" width="150" />
- <el-table-column label="鐘舵��" width="80" align="center">
- <template #default="scope">
- <el-tag :type="getStockStatusType(scope.row)" size="mini">
- {{ getStockStatusText(scope.row) }}
- </el-tag>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </div> -->
</div>
<print-view ref="printView" @parentcall="parentcall"></print-view>
@@ -391,10 +327,13 @@
</template>
<script>
-
import printView from "@/extension/outbound/extend/printView.vue"
import { stationManager, STATION_STORAGE_KEY } from "@/../src/uitils/stationManager";
import { ElLoading } from 'element-plus'
+
+// 瀵煎叆闊抽鏂囦欢锛堥�傞厤src/assets鐩綍锛寃ebpack鑷姩澶勭悊锛�
+const successAudioSrc = require('@/assets/audio/success.mp3');
+const errorAudioSrc = require('@/assets/audio/error.mp3');
export default {
components: { printView },
@@ -432,7 +371,10 @@
wholeOutDialogVisible: false,
wholeOutInfo: null,
globalLoading: false,
- loadingInstance: null
+ loadingInstance: null,
+ // 闊抽瀹炰緥锛堢紦瀛橈紝閬垮厤閲嶅鍒涘缓锛�
+ successAudio: null,
+ errorAudio: null
}
},
computed: {
@@ -442,16 +384,100 @@
},
mounted() {
this.initPage()
+ // 鍒濆鍖栭煶棰戝疄渚嬶紙鎳掑姞杞斤紝浠呭垱寤轰竴娆★級
+ this.initAudioInstance()
+ },
+ beforeDestroy() {
+ // 閿�姣侀煶棰戝疄渚嬶紝閲婃斁璧勬簮
+ this.successAudio = null
+ this.errorAudio = null
},
methods: {
+ // 鍒濆鍖栭煶棰戝疄渚嬶紙鏍稿績锛氶�傞厤src/assets璺緞锛岀紦瀛樺疄渚嬶級
+ initAudioInstance() {
+ // 鎴愬姛闊抽瀹炰緥
+ if (!this.successAudio) {
+ this.successAudio = new Audio(successAudioSrc)
+ this.successAudio.onerror = (err) => {
+ console.error('銆愭垚鍔熼煶棰戙�戝姞杞藉け璐�', err)
+ }
+ }
+ if (!this.errorAudio) {
+ this.errorAudio = new Audio(errorAudioSrc)
+ this.errorAudio.onerror = (err) => {
+ console.error('銆愰敊璇煶棰戙�戝姞杞藉け璐�', err)
+ }
+ }
+ },
+
+ // ============== 鏂板锛氭牴鎹墭鐩樺彿鑾峰彇璁㈠崟鍙凤紙鏍稿績鍔熻兘锛� ==============
+ async getOrderNoByPallet(palletCode) {
+ if (!palletCode) {
+ this.$message.warning('鎵樼洏鍙蜂笉鑳戒负绌�');
+ return null;
+ }
+
+ try {
+ this.showFullScreenLoading();
+ // 璋冪敤鑾峰彇璁㈠崟鍙风殑鎺ュ彛
+ const response = await this.http.get(`/api/OutboundOrder/GetOrderNoByPalletCode?palletCode=${palletCode}`);
+
+ if (response.status && response.data) {
+ const validOrderNo = response.data;
+ this.playSuccessAudio();
+ this.$message.success(`鎴愬姛鑾峰彇璁㈠崟鍙凤細${validOrderNo}`);
+ return validOrderNo;
+ } else {
+ this.playErrorAudio();
+ const errorMsg = response.message || '璇ユ墭鐩樺彿鏈叧鑱斾换浣曡鍗�';
+ this.$message.error(errorMsg);
+ return null;
+ }
+ } catch (error) {
+ this.playErrorAudio();
+ const errorMsg = `鑾峰彇璁㈠崟鍙峰紓甯革細${error.message || '缃戠粶閿欒'}`;
+ this.$message.error(errorMsg);
+ console.error("銆愭墭鐩樺彿鏌ヨ鍗曞彿鎺ュ彛寮傚父銆�", error);
+ return null;
+ } finally {
+ this.hideFullScreenLoading();
+ }
+ },
+ // ============== 鏂板缁撴潫 ==============
+
+ // 鎾斁鎴愬姛闊抽
+ playSuccessAudio() {
+ try {
+ // 閲嶇疆鎾斁杩涘害锛堥伩鍏嶉噸澶嶆挱鏀炬椂闊抽鏈粨鏉燂級
+ this.successAudio.currentTime = 0
+ // 鎾斁锛堝吋瀹规祻瑙堝櫒鑷姩鎾斁绛栫暐闄愬埗锛�
+ this.successAudio.play().catch((err) => {
+ console.warn('鎴愬姛闊抽鎾斁澶辫触锛堟祻瑙堝櫒鑷姩鎾斁绛栫暐闄愬埗锛�', err)
+ })
+ } catch (err) {
+ console.error('鎾斁鎴愬姛闊抽寮傚父', err)
+ }
+ },
+ playErrorAudio() {
+ try {
+ this.errorAudio.currentTime = 0
+ this.errorAudio.play().catch((err) => {
+ console.warn('閿欒闊抽鎾斁澶辫触锛堟祻瑙堝櫒鑷姩鎾斁绛栫暐闄愬埗锛�', err)
+ })
+ } catch (err) {
+ console.error('鎾斁閿欒闊抽寮傚父', err)
+ }
+ },
initPage() {
// 浠庤矾鐢卞弬鏁拌幏鍙栬鍗曞彿
this.orderNo = this.$route.query.orderNo || ''
- if (!this.orderNo) {
- this.$message.error('璁㈠崟鍙蜂笉鑳戒负绌�')
- this.$router.back()
- return
- }
+ // ============== 寰皟锛氭敞閲婂己鍒惰繑鍥為�昏緫锛屽吋瀹规墭鐩樺彿鏌ヨ鍗曞彿 ==============
+ // if (!this.orderNo) {
+ // this.$message.error('璁㈠崟鍙蜂笉鑳戒负绌�')
+ // this.$router.back()
+ // return
+ // }
+ // ============== 寰皟缁撴潫 ==============
// 鍔犺浇璁㈠崟淇℃伅
this.loadOrderInfo()
@@ -532,8 +558,8 @@
this.calculateUnpickedStats(); // 閲嶇疆缁熻鏁版嵁
// 鍙嬪ソ鎻愮ず + 浜や簰浼樺寲
- this.$message.warning({
- message: `鎵樼洏銆�${this.scanForm.palletCode}銆戞殏鏃犳嫞閫夎褰昤,
+ this.$message.success({
+ message: `鎵樼洏銆�${this.scanForm.palletCode}銆戝凡鎷i�夊畬鎴愶紝鏆傛棤鎷i�夎褰昤,
duration: 3000, // 鎻愮ず鏄剧ず3绉�
showClose: true // 鍏佽鎵嬪姩鍏抽棴
});
@@ -630,13 +656,24 @@
this.pickedTotal = this.pickedCount
},
+ // ============== 寰皟锛氭柊澧炶幏鍙栬鍗曞彿閫昏緫锛屽叾浣欎笉鍙� ==============
handlePalletScan(flag = true) {
- if (this.scanForm.palletCode) {
- // this.$message.success(`鎵樼洏鐮�: ${this.scanForm.palletCode}`)
- this.loadPalletData(flag)
- } else {
+ const palletCode = this.scanForm.palletCode.trim();
+ if (!palletCode) {
+ return;
}
+ // 鍏堟牴鎹墭鐩樺彿鑾峰彇璁㈠崟鍙�
+ this.getOrderNoByPallet(palletCode).then((orderNo) => {
+ if (orderNo) {
+ // 璧嬪�艰鍗曞彿锛屼緵鍚庣画閫昏緫浣跨敤
+ this.orderNo = orderNo;
+ // 鍒锋柊璁㈠崟淇℃伅
+ this.loadOrderInfo();
+ }
+ this.loadPalletData(flag);
+ });
},
+ // ============== 寰皟缁撴潫 ==============
handleMaterialScan() {
if (!this.scanForm.palletCode) {
@@ -675,15 +712,17 @@
this.$refs.printView.open(response.data.scannedDetail.materialCodes);
}
this.$message.success('鎷i�夌‘璁ゆ垚鍔�')
+ // 鎺ュ彛鎴愬姛锛氭挱鏀炬垚鍔熼煶棰�
+ this.playSuccessAudio()
this.resetMaterialBarcode()
- // this.loadUnpickedData()
- // this.loadPickedData()
await this.loadPalletData(false)
} else {
this.$message.error(response.message || '鎷i�夌‘璁ゅけ璐�')
+ this.playErrorAudio()
}
} catch (error) {
this.$message.error('鎷i�夌‘璁ゅけ璐�')
+ this.playErrorAudio()
} finally {
this.confirmLoading = false
this.hideFullScreenLoading()
@@ -735,8 +774,6 @@
this.$message.success('鎿嶄綔鎴愬姛')
this.confirmDialogVisible = false
this.resetForm()
- // this.loadUnpickedData()
- // this.loadPickedData()
} else {
this.$message.error(response.message || '鎿嶄綔澶辫触')
}
@@ -841,11 +878,6 @@
}
}
},
-
- // handleUnpickedRowClick(row) {
- // // 鐐瑰嚮鏈嫞閫夎鏃惰嚜鍔ㄥ~鍏呯墿鏂欐潯鐮�
- // this.scanForm.materialBarcode = row.materielCode
- // },
refreshUnpickedTable() {
if (this.scanForm.palletCode) {
--
Gitblit v1.9.3