pan
2025-12-04 f692f869d5fe2e2aee9d3487dbba83e1821b7f6c
ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/views/outbound/BatchPickingConfirm.vue
@@ -92,7 +92,7 @@
    </div>
    <!-- æ‹†åŒ…弹窗 -->
    <div  v-show="showCustomSplitDialog" class="custom-dialog-overlay" style="z-index: 2001;">
    <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" style="z-index: 2001;">
    <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" style="z-index: 2003;">
<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"  style="z-index: 2004;">
    <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"  style="z-index: 2005;">
    <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,20 +405,20 @@
  </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({
  name: 'BatchOutboundPicking',
  components: {printView},
  data() {
    return {
      // ä¿æŒåŽŸå§‹æ•°æ®ç»“æž„ä¸å˜
      // ä¿æŒæ‰€æœ‰åŽŸå§‹æ•°æ®ç»“æž„ä¸å˜...
      scanData: {
        orderNo: '',
        palletCode: '',
@@ -434,13 +434,16 @@
      },
      palletStatus: '未知',
      
      // å¼¹çª—状态 - ä¿æŒåŽŸå§‹çŠ¶æ€
      // å¼¹çª—状态 - å…³é”®ä¿®å¤ï¼šåªå…è®¸ä¸€ä¸ªå¼¹çª—打开
      activeDialog: null, // 'split', 'revert', 'batchReturn', 'emptyPallet', 'splitChain'
      showCustomSplitDialog: false,
      showRevertSplitDialog: false,
      showBatchReturnDialog: false,
      showEmptyPalletDialog: false,
      showSplitChainDialog: false,
      
        // æ·»åŠ é˜²é‡å¤ç‚¹å‡»æ ‡å¿—
      isOpeningDialog: false,
      // åŠ è½½çŠ¶æ€
      splitLoading: false,
      revertSplitLoading: false,
@@ -448,7 +451,7 @@
      emptypalletOutLoading: false,
      splitChainLoading: false,
      
      // è¡¨å•数据
      // è¡¨å•数据...
      splitForm: {
        orderNo: '',
        palletCode: '',
@@ -474,14 +477,13 @@
        palletCode: ''
      },
      
      // æ‹†åŒ…链相关数据
      splitChainInfo: {
        originalBarcode: '',
        totalSplitTimes: 0,
        splitChain: []
      },
      
      // éªŒè¯è§„则
      // éªŒè¯è§„则...
      splitFormRules: {
        originalBarcode: [
          { required: true, message: '请输入原条码', trigger: 'blur' }
@@ -504,10 +506,17 @@
        ]
      },
      
      isProcessing: false,
      // æ–°å¢ž: ç”¨äºŽé˜²æ­¢å¼¹çª—重叠
      isDialogOpening: false
      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: {
@@ -523,16 +532,20 @@
      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(){
      this.$router.back()
    },
    // ä¿®å¤: æ·»åŠ é˜²é‡å¤ç‚¹å‡»æœºåˆ¶
    // åˆ†æ‹£ç›¸å…³æ–¹æ³•
    async confirmPicking() {
      if (this.isProcessing) return;
      
@@ -572,41 +585,77 @@
      }
    },
    // ä¿®å¤: æ‰“开拆包弹窗 - æ·»åŠ é˜²é‡å æœºåˆ¶
    openSplitDialog() {
      if (this.isDialogOpening) return;
   openSplitDialog() {
      console.log('开始打开拆包弹窗');
      if (this.isOpeningDialog) {
        console.log('正在打开弹窗,跳过');
        return;
      }
      
      if (!this.scanData.palletCode) {
        this.$message.warning('请先扫描托盘码');
        return;
      }
      
      this.isDialogOpening = true;
      this.isOpeningDialog = true;
      
      try {
        // ç¡®ä¿å…³é—­å…¶ä»–弹窗
        this.closeAllDialogs();
        // å»¶è¿Ÿæ‰“开,确保DOM更新完成
        this.$nextTick(() => {
          this.showCustomSplitDialog = true;
          this.resetSplitForm();
          this.splitForm.orderNo = this.scanData.orderNo;
          this.splitForm.palletCode = this.scanData.palletCode;
        // æ–¹æ³•1: ä½¿ç”¨ setTimeout ç¡®ä¿å¼‚步执行
        setTimeout(() => {
          console.log('执行弹窗打开逻辑');
          
          // ç¡®ä¿è¾“入框获得焦点
          this.$nextTick(() => {
            const input = document.querySelector('#splitOriginalBarcode');
            if (input) {
              input.focus();
            }
            this.isDialogOpening = false;
          // å…ˆå…³é—­æ‰€æœ‰å¼¹çª—
          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('弹窗状态已设置,等待DOM更新');
            // ä½¿ç”¨ 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);
      } catch (error) {
        console.error('打开拆包弹窗失败:', error);
        this.isDialogOpening = false;
        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() {
@@ -637,59 +686,47 @@
    async handleSplitPackage() {
      if (this.$refs.splitFormRef) {
        try {
          const valid = await this.$refs.splitFormRef.validate();
          if (!valid) return;
          this.splitLoading = true;
          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 || '拆包失败');
          }
        } catch (error) {
          this.$message.error('拆包失败');
        } finally {
          this.splitLoading = false;
        }
      }
    },
    // ä¿®å¤: æ’¤é”€æ‹†åŒ…弹窗
    openRevertSplitDialog() {
      if (this.isDialogOpening) return;
      this.isDialogOpening = true;
      try {
        this.closeAllDialogs();
        this.$nextTick(() => {
          this.showRevertSplitDialog = true;
          this.revertSplitForm.newBarcode = '';
          this.$nextTick(() => {
            const input = document.querySelector('#revertSplitBarcode');
            if (input) {
              input.focus();
        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;
            }
            this.isDialogOpening = false;
          });
          }
        });
      } catch (error) {
        console.error('打开撤销拆包弹窗失败:', error);
        this.isDialogOpening = false;
      }
    },
    async viewSplitChainFromSplit(barcode) {
      if (!barcode) {
        this.$message.warning('请先输入条码');
        return;
      }
      this.closeAllDialogs();
      setTimeout(() => {
        this.viewSplitChain(barcode);
      }, 50);
    },
    // æ’¤é”€æ‹†åŒ…
    async onRevertSplitBarcodeScan() {
      if (!this.revertSplitForm.newBarcode) return;
      this.revertSplitForm.newBarcode = this.revertSplitForm.newBarcode.replace(/\n/g, '').trim();
@@ -697,41 +734,59 @@
    async handleRevertSplit() {
      if (this.$refs.revertSplitFormRef) {
        try {
          const valid = await this.$refs.revertSplitFormRef.validate();
          if (!valid) return;
          this.revertSplitLoading = true;
          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 || '撤销拆包失败');
        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('撤销拆包失败');
        } 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) {
        this.$message.warning('请先输入条码');
        return;
      }
      if (this.isDialogOpening) return;
      this.isDialogOpening = true;
      
      this.splitChainLoading = true;
      try {
@@ -742,35 +797,28 @@
        
        if (res.status) {
          this.splitChainInfo = res.data;
          // å…³é—­å…¶ä»–弹窗
          this.closeAllDialogs();
          await this.$nextTick(() => {
            this.showSplitChainDialog = true;
            this.isDialogOpening = false;
          });
          this.activeDialog = 'splitChain';
        } else {
          this.$message.error(res.message || '获取拆包链信息失败');
          this.isDialogOpening = false;
        }
      } catch (error) {
        this.$message.error('获取拆包链信息失败');
        this.isDialogOpening = false;
      } finally {
        this.splitChainLoading = false;
      }
    },
    // ä¿®å¤: å…³é—­æ‹†åŒ…链信息弹窗
    closeSplitChainDialog() {
    // å…³é—­æ‹†åŒ…链信息弹窗
     closeSplitChainDialog() {
      this.showSplitChainDialog = false;
    },
    // ä¿®å¤: å–消单个拆包记录
    // å–消单个拆包记录
    async cancelSingleSplit(newBarcode) {
      const originalBarcode = this.splitChainInfo.originalBarcode;
      try {
        await ElMessageBox.confirm(
        await this.$confirm(
          `确定要取消条码 ${newBarcode} çš„æ‹†åŒ…操作吗?`, 
          '取消单个拆包', 
          {
@@ -791,11 +839,10 @@
        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 || '取消拆包失败');
        }
@@ -808,16 +855,18 @@
      }
    },
    // ä¿®å¤: å–消整个拆包链
    // å–消整个拆包链
    async cancelWholeSplitChain() {
      try {
        await ElMessageBox.confirm(
        await this.$confirm(
          `确定要取消整个拆包链吗?\n这将取消从条码 ${this.splitChainInfo.originalBarcode} å¼€å§‹çš„æ‰€æœ‰æ‹†åŒ…操作。`, 
          '取消拆包链确认', 
          {
            confirmButtonText: '确定取消',
            cancelButtonText: '再想想',
            type: 'warning'
            type: 'warning',
            center: true,
            closeOnClickModal: false
          }
        );
        
@@ -831,14 +880,14 @@
        
        if (res.status) {
          this.$message.success('取消拆包链成功');
          this.closeSplitChainDialog();
          this.closeAllDialogs();
          await this.loadPalletData();
        } else {
          this.$message.error(res.message || '取消拆包链失败');
        }
      } catch (error) {
        if (error !== 'cancel') {
          this.$message.error('取消拆包链失败');
          this.$message.error('取消拆包链失败: ' + error.message);
        }
      } finally {
        this.revertSplitLoading = false;
@@ -857,13 +906,15 @@
      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() {
      this.activeDialog = null;
      // ç¡®ä¿æ‰€æœ‰å¼¹çª—状态都被重置
      this.showCustomSplitDialog = false;
      this.showRevertSplitDialog = false;
      this.showSplitChainDialog = false;
      this.showBatchReturnDialog = false;
      this.showEmptyPalletDialog = false;
      this.showSplitChainDialog = false;
    },
    // å›žåº“相关方法
@@ -873,15 +924,25 @@
        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() {
@@ -893,7 +954,7 @@
        });
        if (res.status) {
          this.$message.success('回库成功');
          this.showBatchReturnDialog = false;
          this.closeAllDialogs();
          await this.loadPalletData();
        } else {
          this.$message.error(res.message || '回库失败');
@@ -906,14 +967,24 @@
    },
    // å–空箱方法
    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() {
@@ -925,7 +996,7 @@
        });
        if (res.status) {
          this.$message.success('取走空箱成功');
          this.showEmptyPalletDialog = false;
          this.closeAllDialogs();
          await this.loadPalletData();
        } else {
          this.$message.error(res.message || '取走空箱失败');
@@ -942,11 +1013,9 @@
      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);
      }
@@ -964,7 +1033,6 @@
          this.summary.unpickedQuantity = this.unpickedList.reduce((sum, item) => sum + (item.remainQuantity || 0), 0);
        }
      } catch (error) {
        console.error('加载未拣选列表失败:', error);
        this.$message.error('加载未拣选列表失败');
      }
    },
@@ -983,7 +1051,6 @@
          this.summary.pickedCount = this.pickedList.length;
        }
      } catch (error) {
        console.error('加载已拣选列表失败:', error);
        this.$message.error('加载已拣选列表失败');
      }
    },
@@ -998,7 +1065,6 @@
          this.palletStatus = res.data.statusText || '未知';
        }
      } catch (error) {
        console.error('加载托盘状态失败:', error);
        this.palletStatus = '未知';
      }
    },
@@ -1043,39 +1109,33 @@
        return;
      }
      try {
        await ElMessageBox.confirm(
          `确定要取消选中的 ${this.selectedPickedRows.length} é¡¹å—?`,
          '提示',
          {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning'
          }
        );
        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(`取消拣选失败: ${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(`取消拣选失败: ${row.currentBarcode} - ${res.message}`);
              }
            } catch (error) {
              this.$message.warning(`取消拣选失败: ${row.currentBarcode} - ${error.message}`);
            }
          } catch (error) {
            this.$message.warning(`取消拣选失败: ${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('批量取消操作失败');
        }
      }
      });
    },
    // é‡ç½®æ–¹æ³•
@@ -1091,12 +1151,31 @@
      this.resetSplitForm();
    },
    closeRevertSplitDialog() {
openRevertSplitDialog() {
      if (this.isOpeningDialog) return;
      this.isOpeningDialog = true;
      setTimeout(() => {
        this.closeAllDialogsImmediately();
        requestAnimationFrame(() => {
          this.showRevertSplitDialog = true;
          this.revertSplitForm.newBarcode = '';
          this.$nextTick(() => {
            this.isOpeningDialog = false;
          });
        });
      }, 0);
    },
  closeRevertSplitDialog() {
      this.showRevertSplitDialog = false;
      this.revertSplitForm.newBarcode = '';
    },
    closeBatchReturnDialog() {
 closeBatchReturnDialog() {
      this.showBatchReturnDialog = false;
    },
@@ -1105,7 +1184,7 @@
      this.emptypalletOutForm.palletCode = this.emptypalletOutForm.palletCode.replace(/\n/g, '').trim();
    },
    closeEmptyPalletDialog() {
     closeEmptyPalletDialog() {
      this.showEmptyPalletDialog = false;
      this.emptypalletOutForm.palletCode = '';
    },
@@ -1152,7 +1231,7 @@
  color: #909399;
}
/* è‡ªå®šä¹‰å¼¹çª—样式 - å…³é”®ä¿®å¤: ç§»é™¤å¯èƒ½å¯¼è‡´å†²çªçš„z-index规则 */
/* è‡ªå®šä¹‰å¼¹çª—样式 - å…³é”®ä¿®å¤ */
.custom-dialog-overlay {
  position: fixed;
  top: 0;
@@ -1163,11 +1242,12 @@
  display: flex;
  align-items: center;
  justify-content: center;
  /* ç§»é™¤è¿™é‡Œçš„z-index,在模板中单独设置 */
  z-index: 9999; /* æé«˜z-index确保在最上层 */
}
.custom-dialog-wrapper {
  position: relative;
  z-index: 10000;
}
.custom-dialog {