From f692f869d5fe2e2aee9d3487dbba83e1821b7f6c Mon Sep 17 00:00:00 2001
From: pan <antony1029@163.com>
Date: 星期四, 04 十二月 2025 18:02:19 +0800
Subject: [PATCH] 提交

---
 项目代码/WIDESEA_WMSClient/src/views/outbound/BatchPickingConfirm.vue |  682 +++++++++++++++++++++++++-------------------------------
 1 files changed, 309 insertions(+), 373 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/BatchPickingConfirm.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/BatchPickingConfirm.vue"
index c98438a..1b7dafd 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/BatchPickingConfirm.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/BatchPickingConfirm.vue"
@@ -92,7 +92,7 @@
     </div>
 
     <!-- 鎷嗗寘寮圭獥 -->
-    <div  v-show="showCustomSplitDialog" class="custom-dialog-overlay">
+    <div v-if="showCustomSplitDialog" class="custom-dialog-overlay" style="z-index: 2000;">
       <div class="custom-dialog-wrapper">
         <div class="custom-dialog">
           <div class="custom-dialog-header">
@@ -154,7 +154,7 @@
     </div>
 
     <!-- 鎾ら攢鎷嗗寘寮圭獥 -->
-    <div  v-show="showRevertSplitDialog" class="custom-dialog-overlay">
+    <div v-if="showRevertSplitDialog" class="custom-dialog-overlay"  style="z-index: 2001;">
       <div class="custom-dialog-wrapper">
         <div class="custom-dialog">
           <div class="custom-dialog-header">
@@ -214,7 +214,7 @@
     </div>
 
     <!-- 鎷嗗寘閾句俊鎭脊绐� -->
-<div v-show="showSplitChainDialog" class="custom-dialog-overlay">
+<div v-if="showSplitChainDialog" class="custom-dialog-overlay"  style="z-index: 2002;">
   <div class="custom-dialog-wrapper">
     <div class="custom-dialog" style="width: 750px;">
       <div class="custom-dialog-header">
@@ -338,7 +338,7 @@
 </div>
 
     <!-- 鎵归噺鍥炲簱寮圭獥 -->
-    <div v-if="showBatchReturnDialog" class="custom-dialog-overlay">
+    <div v-if="showBatchReturnDialog" class="custom-dialog-overlay"  style="z-index: 2003;">
       <div class="custom-dialog-wrapper">
         <div class="custom-dialog">
           <div class="custom-dialog-header">
@@ -370,7 +370,7 @@
     </div>
 
     <!-- 鍙栬蛋绌虹寮圭獥 -->
-    <div v-if="showEmptyPalletDialog" class="custom-dialog-overlay">
+    <div v-if="showEmptyPalletDialog" class="custom-dialog-overlay"  style="z-index: 2004;">
       <div class="custom-dialog-wrapper">
         <div class="custom-dialog">
           <div class="custom-dialog-header">
@@ -405,11 +405,12 @@
   </div>
 </template>
 
+ 
+ 
 <script>
 import http from '@/api/http.js'
-import { ref, defineComponent } from "vue";
+import { defineComponent } from "vue";
 import { ElMessage } from 'element-plus' 
-import { useRoute } from 'vue-router'
 import printView from "@/extension/outbound/extend/printView.vue"
 
 export default defineComponent({
@@ -417,6 +418,7 @@
   components: {printView},
   data() {
     return {
+      // 淇濇寔鎵�鏈夊師濮嬫暟鎹粨鏋勪笉鍙�...
       scanData: {
         orderNo: '',
         palletCode: '',
@@ -432,21 +434,24 @@
       },
       palletStatus: '鏈煡',
       
-      // 寮圭獥鐘舵��
+      // 寮圭獥鐘舵�� - 鍏抽敭淇锛氬彧鍏佽涓�涓脊绐楁墦寮�
+      activeDialog: null, // 'split', 'revert', 'batchReturn', 'emptyPallet', 'splitChain'
       showCustomSplitDialog: false,
       showRevertSplitDialog: false,
       showBatchReturnDialog: false,
       showEmptyPalletDialog: false,
-      showSplitChainDialog: false, // 鏂板锛氭媶鍖呴摼淇℃伅寮圭獥
+      showSplitChainDialog: false,
       
+        // 娣诲姞闃查噸澶嶇偣鍑绘爣蹇�
+      isOpeningDialog: false,
       // 鍔犺浇鐘舵��
       splitLoading: false,
       revertSplitLoading: false,
       batchReturnLoading: false,
       emptypalletOutLoading: false,
-      splitChainLoading: false, // 鏂板锛氭媶鍖呴摼鍔犺浇鐘舵��
+      splitChainLoading: false,
       
-      // 琛ㄥ崟鏁版嵁
+      // 琛ㄥ崟鏁版嵁...
       splitForm: {
         orderNo: '',
         palletCode: '',
@@ -472,14 +477,13 @@
         palletCode: ''
       },
       
-      // 鏂板锛氭媶鍖呴摼鐩稿叧鏁版嵁
       splitChainInfo: {
         originalBarcode: '',
         totalSplitTimes: 0,
         splitChain: []
       },
       
-      // 楠岃瘉瑙勫垯
+      // 楠岃瘉瑙勫垯...
       splitFormRules: {
         originalBarcode: [
           { required: true, message: '璇疯緭鍏ュ師鏉$爜', trigger: 'blur' }
@@ -501,88 +505,21 @@
           { required: true, message: '璇疯緭鍏ユ墭鐩樼爜', trigger: 'blur' }
         ]
       },
-       // 寮圭獥鐘舵�� - 鏀逛负浣跨敤瀵硅薄绠$悊锛岄伩鍏嶅悓鏃舵墦寮�澶氫釜寮圭獥
-      dialogs: {
-        customSplit: false,
-        revertSplit: false,
-        splitChain: false,
-        batchReturn: false,
-        emptyPallet: false
-      },
       
-      // 鍔犺浇鐘舵��
-      loading: {
-        split: false,
-        revertSplit: false,
-        batchReturn: false,
-        emptyPallet: false,
-        splitChain: false
-      },
-      
-      // 褰撳墠娲诲姩鐨勫脊绐楃被鍨�
-      activeDialog: null,
       isProcessing: false
     }
   },
+  watch: {
+    // 鍏抽敭淇锛氱‘淇濆悓涓�鏃堕棿鍙湁涓�涓脊绐楁墦寮�
+    activeDialog(newVal, oldVal) {
+      this.showCustomSplitDialog = newVal === 'split'
+      this.showRevertSplitDialog = newVal === 'revert'
+      this.showBatchReturnDialog = newVal === 'batchReturn'
+      this.showEmptyPalletDialog = newVal === 'emptyPallet'
+      this.showSplitChainDialog = newVal === 'splitChain'
+    }
+  },
   computed: {
-     // 璁$畻灞炴�ф槧灏勫埌dialogs瀵硅薄
-    showCustomSplitDialog: {
-      get() { return this.dialogs.customSplit; },
-      set(val) { 
-        this.dialogs.customSplit = val;
-        this.activeDialog = val ? 'customSplit' : null;
-      }
-    },
-    showRevertSplitDialog: {
-      get() { return this.dialogs.revertSplit; },
-      set(val) { 
-        this.dialogs.revertSplit = val;
-        this.activeDialog = val ? 'revertSplit' : null;
-      }
-    },
-    showSplitChainDialog: {
-      get() { return this.dialogs.splitChain; },
-      set(val) { 
-        this.dialogs.splitChain = val;
-        this.activeDialog = val ? 'splitChain' : null;
-      }
-    },
-    showBatchReturnDialog: {
-      get() { return this.dialogs.batchReturn; },
-      set(val) { 
-        this.dialogs.batchReturn = val;
-        this.activeDialog = val ? 'batchReturn' : null;
-      }
-    },
-    showEmptyPalletDialog: {
-      get() { return this.dialogs.emptyPallet; },
-      set(val) { 
-        this.dialogs.emptyPallet = val;
-        this.activeDialog = val ? 'emptyPallet' : null;
-      },
-    },
-     // 鍔犺浇鐘舵�佹槧灏�
-    splitLoading: {
-      get() { return this.loading.split; },
-      set(val) { this.loading.split = val; }
-    },
-    revertSplitLoading: {
-      get() { return this.loading.revertSplit; },
-      set(val) { this.loading.revertSplit = val; }
-    },
-    batchReturnLoading: {
-      get() { return this.loading.batchReturn; },
-      set(val) { this.loading.batchReturn = val; }
-    },
-    emptypalletOutLoading: {
-      get() { return this.loading.emptyPallet; },
-      set(val) { this.loading.emptyPallet = val; }
-    },
-    splitChainLoading: {
-      get() { return this.loading.splitChain; },
-      set(val) { this.loading.splitChain = val; }
-    },
-    // 鏄惁鍙互鍙栨秷鏁翠釜鎷嗗寘閾�
     canCancelWholeChain() {
       return this.splitChainInfo.splitChain && 
              this.splitChainInfo.splitChain.some(item => !item.isReverted);
@@ -595,9 +532,13 @@
       this.batchReturnForm.orderNo = this.$route.query.orderNo;
       this.emptypalletOutForm.orderNo = this.$route.query.orderNo;
     }
-    this.$nextTick(() => {
-      this.$refs.palletInput.focus();
+    // 浣跨敤 requestAnimationFrame 纭繚椤甸潰瀹屽叏鍔犺浇
+    requestAnimationFrame(() => {
+      if (this.$refs.palletInput) {
+        this.$refs.palletInput.focus();
+      }
     });
+ 
   },
   methods: {
     goBack(){
@@ -644,29 +585,77 @@
       }
     },
 
-    // 鎷嗗寘鐩稿叧鏂规硶
-    openSplitDialog() {
+   openSplitDialog() {
+      console.log('寮�濮嬫墦寮�鎷嗗寘寮圭獥');
+      
+      if (this.isOpeningDialog) {
+        console.log('姝e湪鎵撳紑寮圭獥锛岃烦杩�');
+        return;
+      }
+      
       if (!this.scanData.palletCode) {
         this.$message.warning('璇峰厛鎵弿鎵樼洏鐮�');
         return;
       }
-         // 鍏抽棴鍏朵粬鎵�鏈夊脊绐�
-      this.closeAllDialogs();
-        // 寤惰繜鎵撳紑鏂板脊绐楋紝纭繚鍏朵粬寮圭獥瀹屽叏鍏抽棴
-      this.$nextTick(() => {
-        this.showCustomSplitDialog = true;
-        this.resetSplitForm();
-        this.splitForm.orderNo = this.scanData.orderNo;
-        this.splitForm.palletCode = this.scanData.palletCode;
+      
+      this.isOpeningDialog = true;
+      
+      try {
+        // 鏂规硶1: 浣跨敤 setTimeout 纭繚寮傛鎵ц
+        setTimeout(() => {
+          console.log('鎵ц寮圭獥鎵撳紑閫昏緫');
+          
+          // 鍏堝叧闂墍鏈夊脊绐�
+          this.closeAllDialogsImmediately();
+          
+          // 浣跨敤 requestAnimationFrame 纭繚鍦ㄤ笅涓�甯ф墦寮�
+          requestAnimationFrame(() => {
+            console.log('璁剧疆寮圭獥鐘舵�佷负 true');
+            
+            // 閲嶇疆琛ㄥ崟
+            this.resetSplitForm();
+            this.splitForm.orderNo = this.scanData.orderNo;
+            this.splitForm.palletCode = this.scanData.palletCode;
+            
+            // 鍏抽敭锛氱洿鎺ヨ缃脊绐楃姸鎬�
+            this.showCustomSplitDialog = true;
+            
+            console.log('寮圭獥鐘舵�佸凡璁剧疆锛岀瓑寰匘OM鏇存柊');
+            
+            // 浣跨敤 nextTick 纭繚DOM鏇存柊瀹屾垚
+            this.$nextTick(() => {
+              console.log('DOM鏇存柊瀹屾垚锛屽脊绐楀簲璇ユ樉绀轰簡');
+              this.isOpeningDialog = false;
+              
+              // 灏濊瘯鑱氱劍鍒拌緭鍏ユ
+              setTimeout(() => {
+                const input = this.$refs.splitFormRef?.$el?.querySelector('input');
+                if (input) {
+                  input.focus();
+                  console.log('杈撳叆妗嗗凡鑱氱劍');
+                }
+              }, 100);
+            });
+          });
+        }, 0);
         
-        // 纭繚杈撳叆妗嗚幏寰楃劍鐐�
-        this.$nextTick(() => {
-          const inputs = document.querySelectorAll('.custom-dialog input');
-          if (inputs.length > 0) {
-            inputs[0].focus();
-          }
-        });
-      });
+      } catch (error) {
+        console.error('鎵撳紑鎷嗗寘寮圭獥鍑洪敊:', error);
+        this.isOpeningDialog = false;
+      }
+    },
+      closeAllDialogsImmediately() {
+      console.log('绔嬪嵆鍏抽棴鎵�鏈夊脊绐�');
+      
+      // 鐩存帴璁剧疆涓� false锛屼笉绛夊緟浠讳綍寮傛鎿嶄綔
+      this.showCustomSplitDialog = false;
+      this.showRevertSplitDialog = false;
+      this.showBatchReturnDialog = false;
+      this.showEmptyPalletDialog = false;
+      this.showSplitChainDialog = false;
+      
+      // 寮哄埗DOM鏇存柊
+      this.$forceUpdate();
     },
 
     async onSplitBarcodeScan() {
@@ -697,103 +686,104 @@
 
     async handleSplitPackage() {
       if (this.$refs.splitFormRef) {
-        const valid = await this.$refs.splitFormRef.validate();
-        if (!valid) return;
-        
-        this.splitLoading = true;
-        try {
-          const res = await http.post('/api/OutboundBatchPicking/split-package', {
-            orderNo: this.splitForm.orderNo,
-            palletCode: this.splitForm.palletCode,
-            originalBarcode: this.splitForm.originalBarcode,
-            splitQuantity: this.splitForm.splitQuantity
-          });
-          if (res.status) {
-            this.$message.success('鎷嗗寘鎴愬姛');
-            this.showCustomSplitDialog = false;
-            await this.loadPalletData();
-          } else {
-            this.$message.error(res.message || '鎷嗗寘澶辫触');
+        this.$refs.splitFormRef.validate(async (valid) => {
+          if (valid) {
+            this.splitLoading = true;
+            try {
+              const res = await http.post('/api/OutboundBatchPicking/split-package', {
+                orderNo: this.splitForm.orderNo,
+                palletCode: this.splitForm.palletCode,
+                originalBarcode: this.splitForm.originalBarcode,
+                splitQuantity: this.splitForm.splitQuantity
+              });
+              if (res.status) {
+                this.$message.success('鎷嗗寘鎴愬姛');
+                this.closeAllDialogs();
+                await this.loadPalletData();
+              } else {
+                this.$message.error(res.message || '鎷嗗寘澶辫触');
+              }
+            } catch (error) {
+              this.$message.error('鎷嗗寘澶辫触');
+            } finally {
+              this.splitLoading = false;
+            }
           }
-        } catch (error) {
-          this.$message.error('鎷嗗寘澶辫触: ' + (error.message || '缃戠粶閿欒'));
-        } finally {
-          this.splitLoading = false;
-        }
+        });
       }
     },
-// 鍦ㄦ媶鍖呭脊绐椾腑鏌ョ湅鎷嗗寘閾�
-async viewSplitChainFromSplit(barcode) {
-  if (!barcode) {
-    this.$message.warning('璇峰厛杈撳叆鏉$爜');
-    return;
-  }
-  
-  // 鍏堝叧闂媶鍖呭脊绐�
-  this.closeCustomSplitDialog();
-  
-  await this.$nextTick();
-  
-  // 鐒跺悗鎵撳紑鎷嗗寘閾句俊鎭脊绐�
-  await this.viewSplitChain(barcode);
-},
+
+    async viewSplitChainFromSplit(barcode) {
+      if (!barcode) {
+        this.$message.warning('璇峰厛杈撳叆鏉$爜');
+        return;
+      }
+      
+      this.closeAllDialogs();
+      
+      setTimeout(() => {
+        this.viewSplitChain(barcode);
+      }, 50);
+    },
+
     // 鎾ら攢鎷嗗寘
     async onRevertSplitBarcodeScan() {
-        if (!this.revertSplitForm.newBarcode) return;
+      if (!this.revertSplitForm.newBarcode) return;
       this.revertSplitForm.newBarcode = this.revertSplitForm.newBarcode.replace(/\n/g, '').trim();
     },
 
     async handleRevertSplit() {
-       if (this.$refs.revertSplitFormRef) {
-        const valid = await this.$refs.revertSplitFormRef.validate();
-        if (!valid) return;
-        
-        this.revertSplitLoading = true;
-        try {
-          const res = await http.post('/api/OutboundBatchPicking/cancel-split', {
-            orderNo: this.scanData.orderNo,
-            palletCode: this.scanData.palletCode,
-            newBarcode: this.revertSplitForm.newBarcode
-          });
-          if (res.status) {
-            this.$message.success('鎾ら攢鎷嗗寘鎴愬姛');
-            this.showRevertSplitDialog = false;
-            await this.loadPalletData();
-          } else {
-            this.$message.error(res.message || '鎾ら攢鎷嗗寘澶辫触');
+      if (this.$refs.revertSplitFormRef) {
+        this.$refs.revertSplitFormRef.validate(async (valid) => {
+          if (valid) {
+            this.revertSplitLoading = true;
+            try {
+              const res = await http.post('/api/OutboundBatchPicking/cancel-split', {
+                orderNo: this.scanData.orderNo,
+                palletCode: this.scanData.palletCode,
+                newBarcode: this.revertSplitForm.newBarcode
+              });
+              if (res.status) {
+                this.$message.success('鎾ら攢鎷嗗寘鎴愬姛');
+                this.closeAllDialogs();
+                await this.loadPalletData();
+              } else {
+                this.$message.error(res.message || '鎾ら攢鎷嗗寘澶辫触');
+              }
+            } catch (error) {
+              this.$message.error('鎾ら攢鎷嗗寘澶辫触');
+            } finally {
+              this.revertSplitLoading = false;
+            }
           }
-        } catch (error) {
-          this.$message.error('鎾ら攢鎷嗗寘澶辫触: ' + (error.message || '缃戠粶閿欒'));
-        } finally {
-          this.revertSplitLoading = false;
-        }
+        });
       }
     },
-// 鏌ユ壘瀹屾暣鎷嗗寘閾撅紙浠庢牴鏉$爜寮�濮嬶級
-async findRootChain(currentBarcode) {
-  this.splitChainLoading = true;
-  try {
-    const res = await http.post('/api/OutboundBatchPicking/find-root-split-chain', {
-      orderNo: this.scanData.orderNo,
-      barcode: currentBarcode
-    });
-    
-    if (res.status) {
-      this.splitChainInfo = res.data;
-      this.$message.success('宸插姞杞藉畬鏁存媶鍖呴摼');
-    } else {
-      this.$message.error(res.message || '鏌ユ壘瀹屾暣鎷嗗寘閾惧け璐�');
-    }
-  } catch (error) {
-    this.$message.error('鏌ユ壘瀹屾暣鎷嗗寘閾惧け璐�');
-  } finally {
-    this.splitChainLoading = false;
-  }
-},
-    // 鎷嗗寘閾剧浉鍏虫柟娉�
-   // 鏌ョ湅鎷嗗寘閾句俊鎭�
-async viewSplitChain(barcode) {
-   if (!barcode) {
+
+    async findRootChain(currentBarcode) {
+      this.splitChainLoading = true;
+      try {
+        const res = await http.post('/api/OutboundBatchPicking/find-root-split-chain', {
+          orderNo: this.scanData.orderNo,
+          barcode: currentBarcode
+        });
+        
+        if (res.status) {
+          this.splitChainInfo = res.data;
+          this.$message.success('宸插姞杞藉畬鏁存媶鍖呴摼');
+        } else {
+          this.$message.error(res.message || '鏌ユ壘瀹屾暣鎷嗗寘閾惧け璐�');
+        }
+      } catch (error) {
+        this.$message.error('鏌ユ壘瀹屾暣鎷嗗寘閾惧け璐�');
+      } finally {
+        this.splitChainLoading = false;
+      }
+    },
+
+    // 鏌ョ湅鎷嗗寘閾句俊鎭�
+    async viewSplitChain(barcode) {
+      if (!barcode) {
         this.$message.warning('璇峰厛杈撳叆鏉$爜');
         return;
       }
@@ -807,86 +797,34 @@
         
         if (res.status) {
           this.splitChainInfo = res.data;
-          
-          // 鍏抽棴鍏朵粬寮圭獥鍚庡啀鎵撳紑鎷嗗寘閾惧脊绐�
-          this.closeAllDialogs();
-          
-          await this.$nextTick(() => {
-            this.showSplitChainDialog = true;
-            
-            // 鏄剧ず鎻愮ず淇℃伅
-            let chainType = "褰撳墠鏉$爜鐨勬媶鍖呴摼";
-            if (this.splitChainInfo.chainType === 'root') {
-              chainType = "瀹屾暣鎷嗗寘閾撅紙浠庡師濮嬫潯鐮佸紑濮嬶級";
-            } else if (this.splitChainInfo.chainType === 'branch') {
-              chainType = "鍒嗘敮鎷嗗寘閾�";
-            }
-            
-            this.$message.info(`宸插姞杞�${chainType}锛屽叡${this.splitChainInfo.totalSplitTimes}娆℃媶鍖卄);
-          });
+          this.activeDialog = 'splitChain';
         } else {
           this.$message.error(res.message || '鑾峰彇鎷嗗寘閾句俊鎭け璐�');
         }
       } catch (error) {
-        this.$message.error('鑾峰彇鎷嗗寘閾句俊鎭け璐�: ' + (error.message || '缃戠粶閿欒'));
+        this.$message.error('鑾峰彇鎷嗗寘閾句俊鎭け璐�');
       } finally {
         this.splitChainLoading = false;
       }
-},
+    },
 
     // 鍏抽棴鎷嗗寘閾句俊鎭脊绐�
-    closeSplitChainDialog() {
+     closeSplitChainDialog() {
       this.showSplitChainDialog = false;
-      
     },
-    // 鍦ㄦ挙閿�鎷嗗寘寮圭獥涓煡鐪嬫媶鍖呴摼
-async viewSplitChainFromRevert(barcode) {
-  if (!barcode) {
-    this.$message.warning('璇峰厛杈撳叆鏉$爜');
-    return;
-  }
-  
-  // 鍏堝叧闂挙閿�鎷嗗寘寮圭獥
-  this.closeRevertSplitDialog();
-  
-  await this.$nextTick();
-  
-  // 鐒跺悗鎵撳紑鎷嗗寘閾句俊鎭脊绐�
-  await this.viewSplitChain(barcode);
-},
-// 蹇�熼噸鏂版墦寮�鎷嗗寘閾惧脊绐�
-async quickReopenSplitChainDialog(barcode) {
-  if (!barcode) return;
-  
-  this.showSplitChainDialog = true;
-  this.splitChainLoading = true;
-  
-  try {
-    const res = await http.post('/api/OutboundBatchPicking/split-package-chain-info', {
-      orderNo: this.scanData.orderNo,
-      barcode: barcode
-    });
-    
-    if (res.status) {
-      this.splitChainInfo = res.data;
-    }
-  } catch (error) {
-    console.error('閲嶆柊鍔犺浇鎷嗗寘閾句俊鎭け璐�:', error);
-  } finally {
-    this.splitChainLoading = false;
-  }
-},
+
     // 鍙栨秷鍗曚釜鎷嗗寘璁板綍
-async cancelSingleSplit(newBarcode) {
-   try {
-        await ElMessageBox.confirm(
+    async cancelSingleSplit(newBarcode) {
+      const originalBarcode = this.splitChainInfo.originalBarcode;
+      
+      try {
+        await this.$confirm(
           `纭畾瑕佸彇娑堟潯鐮� ${newBarcode} 鐨勬媶鍖呮搷浣滃悧锛焋, 
           '鍙栨秷鍗曚釜鎷嗗寘', 
           {
             confirmButtonText: '纭畾鍙栨秷',
             cancelButtonText: '鍐嶆兂鎯�',
-            type: 'warning',
-            customClass: 'message-box-top'
+            type: 'warning'
           }
         );
         
@@ -901,29 +839,26 @@
         if (res.status) {
           this.$message.success('鍙栨秷鎷嗗寘鎴愬姛');
           await this.loadPalletData();
-          
-          // 閲嶆柊鍔犺浇鎷嗗寘閾句俊鎭�
-          if (this.splitChainInfo.originalBarcode) {
-            await this.viewSplitChain(this.splitChainInfo.originalBarcode);
-          }
+          this.closeAllDialogs();
+          setTimeout(() => {
+            this.viewSplitChain(originalBarcode);
+          }, 50);
         } else {
           this.$message.error(res.message || '鍙栨秷鎷嗗寘澶辫触');
         }
       } catch (error) {
         if (error !== 'cancel') {
-          this.$message.error('鍙栨秷鎷嗗寘澶辫触: ' + error.message);
+          this.$message.error('鍙栨秷鎷嗗寘澶辫触');
         }
       } finally {
         this.revertSplitLoading = false;
       }
-},
+    },
 
-// 鍙栨秷鏁翠釜鎷嗗寘閾�  
-async cancelWholeSplitChain() {
-  if (!this.canCancelWholeChain) return;
-      
+    // 鍙栨秷鏁翠釜鎷嗗寘閾�  
+    async cancelWholeSplitChain() {
       try {
-        await ElMessageBox.confirm(
+        await this.$confirm(
           `纭畾瑕佸彇娑堟暣涓媶鍖呴摼鍚楋紵\n杩欏皢鍙栨秷浠庢潯鐮� ${this.splitChainInfo.originalBarcode} 寮�濮嬬殑鎵�鏈夋媶鍖呮搷浣溿�俙, 
           '鍙栨秷鎷嗗寘閾剧‘璁�', 
           {
@@ -931,8 +866,7 @@
             cancelButtonText: '鍐嶆兂鎯�',
             type: 'warning',
             center: true,
-            closeOnClickModal: false,
-            customClass: 'message-box-top'
+            closeOnClickModal: false
           }
         );
         
@@ -946,7 +880,7 @@
         
         if (res.status) {
           this.$message.success('鍙栨秷鎷嗗寘閾炬垚鍔�');
-          this.closeSplitChainDialog();
+          this.closeAllDialogs();
           await this.loadPalletData();
         } else {
           this.$message.error(res.message || '鍙栨秷鎷嗗寘閾惧け璐�');
@@ -958,7 +892,7 @@
       } finally {
         this.revertSplitLoading = false;
       }
-},
+    },
 
     // 妫�鏌ユ潯鐮佹槸鍚﹀凡琚垎鎷�
     hasPicked(barcode) {
@@ -971,31 +905,44 @@
       const date = new Date(dateTime);
       return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')} ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`;
     },
- closeAllDialogs() {
+
+    // 鍏抽敭淇锛氭柊澧炲叧闂墍鏈夊脊绐楃殑鏂规硶
+    closeAllDialogs() {
+      this.activeDialog = null;
+      // 纭繚鎵�鏈夊脊绐楃姸鎬侀兘琚噸缃�
       this.showCustomSplitDialog = false;
       this.showRevertSplitDialog = false;
-      this.showSplitChainDialog = false;
       this.showBatchReturnDialog = false;
       this.showEmptyPalletDialog = false;
-      this.activeDialog = null;
+      this.showSplitChainDialog = false;
     },
+
     // 鍥炲簱鐩稿叧鏂规硶
     openBatchReturnDialog() {
-     if (!this.scanData.palletCode) {
+      if (!this.scanData.palletCode) {
         this.$message.warning('璇峰厛鎵弿鎵樼洏鐮�');
         return;
       }
       
-      // 鍏抽棴鍏朵粬寮圭獥
-      this.closeAllDialogs();
+      if (this.isOpeningDialog) return;
       
-      this.$nextTick(() => {
-        this.showBatchReturnDialog = true;
-        this.batchReturnForm.orderNo = this.scanData.orderNo;
-        this.batchReturnForm.palletCode = this.scanData.palletCode;
-        this.batchReturnForm.unpickedCount = this.summary.unpickedCount;
-        this.batchReturnForm.unpickedQuantity = this.summary.unpickedQuantity;
-      });
+      this.isOpeningDialog = true;
+      
+      setTimeout(() => {
+        this.closeAllDialogsImmediately();
+        
+        requestAnimationFrame(() => {
+          this.showBatchReturnDialog = true;
+          this.batchReturnForm.orderNo = this.scanData.orderNo;
+          this.batchReturnForm.palletCode = this.scanData.palletCode;
+          this.batchReturnForm.unpickedCount = this.summary.unpickedCount;
+          this.batchReturnForm.unpickedQuantity = this.summary.unpickedQuantity;
+          
+          this.$nextTick(() => {
+            this.isOpeningDialog = false;
+          });
+        });
+      }, 0);
     },
 
     async handleBatchReturnConfirm() {
@@ -1007,28 +954,37 @@
         });
         if (res.status) {
           this.$message.success('鍥炲簱鎴愬姛');
-          this.showBatchReturnDialog = false;
+          this.closeAllDialogs();
           await this.loadPalletData();
         } else {
           this.$message.error(res.message || '鍥炲簱澶辫触');
         }
       } catch (error) {
-        this.$message.error('鍥炲簱澶辫触: ' + (error.message || '缃戠粶閿欒'));
+        this.$message.error('鍥炲簱澶辫触');
       } finally {
         this.batchReturnLoading = false;
       }
     },
 
     // 鍙栫┖绠辨柟娉�
-    handleEmptyPallet() {
-      // 鍏抽棴鍏朵粬寮圭獥
-      this.closeAllDialogs();
+handleEmptyPallet() {
+      if (this.isOpeningDialog) return;
       
-      this.$nextTick(() => {
-        this.showEmptyPalletDialog = true;
-        this.emptypalletOutForm.orderNo = this.scanData.orderNo;
-        this.emptypalletOutForm.palletCode = '';
-      });
+      this.isOpeningDialog = true;
+      
+      setTimeout(() => {
+        this.closeAllDialogsImmediately();
+        
+        requestAnimationFrame(() => {
+          this.showEmptyPalletDialog = true;
+          this.emptypalletOutForm.orderNo = this.scanData.orderNo;
+          this.emptypalletOutForm.palletCode = '';
+          
+          this.$nextTick(() => {
+            this.isOpeningDialog = false;
+          });
+        });
+      }, 0);
     },
 
     async handleEmptyPalletConfirm() {
@@ -1040,13 +996,13 @@
         });
         if (res.status) {
           this.$message.success('鍙栬蛋绌虹鎴愬姛');
-          this.showEmptyPalletDialog = false;
+          this.closeAllDialogs();
           await this.loadPalletData();
         } else {
           this.$message.error(res.message || '鍙栬蛋绌虹澶辫触');
         }
       } catch (error) {
-        this.$message.error('鍙栬蛋绌虹澶辫触: ' + (error.message || '缃戠粶閿欒'));
+        this.$message.error('鍙栬蛋绌虹澶辫触');
       } finally {
         this.emptypalletOutLoading = false;
       }
@@ -1054,21 +1010,19 @@
 
     // 鏁版嵁鍔犺浇鏂规硶
     async loadPalletData() {
-       if (!this.scanData.orderNo || !this.scanData.palletCode) return;
+      if (!this.scanData.orderNo || !this.scanData.palletCode) return;
       
       try {
-        await Promise.all([
-          this.loadUnpickedList(),
-          this.loadPickedList(),
-          this.loadPalletStatus()
-        ]);
+        await this.loadUnpickedList();
+        await this.loadPickedList();
+        await this.loadPalletStatus();
       } catch (error) {
         console.error('鍔犺浇鎵樼洏鏁版嵁澶辫触:', error);
       }
     },
 
     async loadUnpickedList() {
-       try {
+      try {
         const res = await http.post('/api/OutboundBatchPicking/pallet-locks', {
           orderNo: this.scanData.orderNo,
           palletCode: this.scanData.palletCode
@@ -1079,7 +1033,6 @@
           this.summary.unpickedQuantity = this.unpickedList.reduce((sum, item) => sum + (item.remainQuantity || 0), 0);
         }
       } catch (error) {
-        console.error('鍔犺浇鏈嫞閫夊垪琛ㄥけ璐�:', error);
         this.$message.error('鍔犺浇鏈嫞閫夊垪琛ㄥけ璐�');
       }
     },
@@ -1098,13 +1051,12 @@
           this.summary.pickedCount = this.pickedList.length;
         }
       } catch (error) {
-        console.error('鍔犺浇宸叉嫞閫夊垪琛ㄥけ璐�:', error);
         this.$message.error('鍔犺浇宸叉嫞閫夊垪琛ㄥけ璐�');
       }
     },
 
     async loadPalletStatus() {
-          try {
+      try {
         const res = await http.post('/api/OutboundBatchPicking/pallet-status', {
           orderNo: this.scanData.orderNo,
           palletCode: this.scanData.palletCode
@@ -1113,14 +1065,13 @@
           this.palletStatus = res.data.statusText || '鏈煡';
         }
       } catch (error) {
-        console.error('鍔犺浇鎵樼洏鐘舵�佸け璐�:', error);
         this.palletStatus = '鏈煡';
       }
     },
 
     // 鎵爜鐩稿叧鏂规硶
     onPalletScan() {
-       this.scanData.palletCode = this.scanData.palletCode.replace(/\n/g, '').trim();
+      this.scanData.palletCode = this.scanData.palletCode.replace(/\n/g, '').trim();
       if (!this.scanData.palletCode) return;
       
       this.loadPalletData();
@@ -1130,7 +1081,7 @@
     },
 
     onBarcodeScan() {
-       this.scanData.barcode = this.scanData.barcode.replace(/\n/g, '').trim();
+      this.scanData.barcode = this.scanData.barcode.replace(/\n/g, '').trim();
       if (!this.scanData.barcode) return;
       this.confirmPicking();
     },
@@ -1158,40 +1109,33 @@
         return;
       }
 
-      try {
-        await ElMessageBox.confirm(
-          `纭畾瑕佸彇娑堥�変腑鐨� ${this.selectedPickedRows.length} 椤瑰悧锛焋, 
-          '鎻愮ず', 
-          {
-            confirmButtonText: '纭畾',
-            cancelButtonText: '鍙栨秷',
-            type: 'warning',
-            customClass: 'message-box-top'
-          }
-        );
-        
-        for (const row of this.selectedPickedRows) {
-          try {
-            const res = await http.post('/api/OutboundBatchPicking/cancel-picking', {
-              orderNo: this.scanData.orderNo,
-              palletCode: this.scanData.palletCode,
-              barcode: row.currentBarcode
-            });
-            if (!res.status) {
-              this.$message.warning(`鍙栨秷鎷i�夊け璐�: ${row.currentBarcode} - ${res.message}`);
+      this.$confirm(`纭畾瑕佸彇娑堥�変腑鐨� ${this.selectedPickedRows.length} 椤瑰悧锛焋, '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(async () => {
+        try {
+          for (const row of this.selectedPickedRows) {
+            try {
+              const res = await http.post('/api/OutboundBatchPicking/cancel-picking', {
+                orderNo: this.scanData.orderNo,
+                palletCode: this.scanData.palletCode,
+                barcode: row.currentBarcode
+              });
+              if (!res.status) {
+                this.$message.warning(`鍙栨秷鎷i�夊け璐�: ${row.currentBarcode} - ${res.message}`);
+              }
+            } catch (error) {
+              this.$message.warning(`鍙栨秷鎷i�夊け璐�: ${row.currentBarcode} - ${error.message}`);
             }
-          } catch (error) {
-            this.$message.warning(`鍙栨秷鎷i�夊け璐�: ${row.currentBarcode} - ${error.message}`);
-          }
-        }        
-        this.$message.success('鎵归噺鍙栨秷瀹屾垚');
-        await this.loadPalletData();
-        this.selectedPickedRows = [];
-      } catch (error) {
-        if (error !== 'cancel') {
+          }        
+          this.$message.success('鎵归噺鍙栨秷瀹屾垚');
+          await this.loadPalletData();
+          this.selectedPickedRows = [];
+        } catch (error) {
           this.$message.error('鎵归噺鍙栨秷鎿嶄綔澶辫触');
         }
-      }
+      });
     },
 
     // 閲嶇疆鏂规硶
@@ -1207,22 +1151,31 @@
       this.resetSplitForm();
     },
 
-    openRevertSplitDialog() {
-       // 鍏抽棴鍏朵粬寮圭獥
-      this.closeAllDialogs();
+openRevertSplitDialog() {
+      if (this.isOpeningDialog) return;
       
-      this.$nextTick(() => {
-        this.showRevertSplitDialog = true;
-        this.revertSplitForm.newBarcode = '';
-      });
+      this.isOpeningDialog = true;
+      
+      setTimeout(() => {
+        this.closeAllDialogsImmediately();
+        
+        requestAnimationFrame(() => {
+          this.showRevertSplitDialog = true;
+          this.revertSplitForm.newBarcode = '';
+          
+          this.$nextTick(() => {
+            this.isOpeningDialog = false;
+          });
+        });
+      }, 0);
     },
 
-    closeRevertSplitDialog() {
+  closeRevertSplitDialog() {
       this.showRevertSplitDialog = false;
       this.revertSplitForm.newBarcode = '';
     },
 
-    closeBatchReturnDialog() {
+ closeBatchReturnDialog() {
       this.showBatchReturnDialog = false;
     },
 
@@ -1231,7 +1184,7 @@
       this.emptypalletOutForm.palletCode = this.emptypalletOutForm.palletCode.replace(/\n/g, '').trim();
     },
 
-    closeEmptyPalletDialog() {
+     closeEmptyPalletDialog() {
       this.showEmptyPalletDialog = false;
       this.emptypalletOutForm.palletCode = '';
     },
@@ -1278,24 +1231,7 @@
   color: #909399;
 }
 
-/* 鑷畾涔夊脊绐楁牱寮� */
-:deep(.el-message-box) {
-  z-index: 9999 !important;
-}
-
-:deep(.el-overlay) {
-  z-index: 9998 !important;
-}
-
-:deep(.el-message) {
-  z-index: 10000 !important;
-}
-
-/* 纭繚纭瀵硅瘽妗嗗湪鏈�鍓嶉潰 */
-:deep(.message-box-top) {
-  z-index: 10001 !important;
-}
-
+/* 鑷畾涔夊脊绐楁牱寮� - 鍏抽敭淇 */
 .custom-dialog-overlay {
   position: fixed;
   top: 0;
@@ -1306,12 +1242,12 @@
   display: flex;
   align-items: center;
   justify-content: center;
-  z-index: 2000;
+  z-index: 9999; /* 鎻愰珮z-index纭繚鍦ㄦ渶涓婂眰 */
 }
 
 .custom-dialog-wrapper {
   position: relative;
-  z-index: 2001;
+  z-index: 10000;
 }
 
 .custom-dialog {

--
Gitblit v1.9.3