heshaofeng
2026-03-09 557f7f6079c30cd6fe8d6005cea3d89468bbcd31
ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/extension/outbound/extend/NoStockOut.vue
@@ -208,6 +208,21 @@
const outboundInputRef = ref(null);
const purchaseInputRef = ref(null);
const successAudioSrc = require('@/assets/audio/success.mp3');
const errorAudioSrc = require('@/assets/audio/error.mp3');
// ========== ä»…新增:音频播放函数(无其他代码改动) ==========
const playAudio = (audioSrc, volume = 0.8) => {
  try {
    const audio = new Audio(audioSrc);
    audio.volume = volume;
    audio.play().catch(() => {});
  } catch (e) {}
};
const playSuccess = () => playAudio(successAudioSrc);
const playError = () => playAudio(errorAudioSrc);
// ========== éŸ³é¢‘函数结束 ==========
// ç»„件挂载时聚焦到出库单输入框
onMounted(() => {
  nextTick(() => {
@@ -340,6 +355,7 @@
  // æ ¸å¿ƒæ–°å¢žï¼šå‰ç½®æ ¡éªŒï¼Œç¡®ä¿å‡ºåº“单已验证
  if (!isOutboundVerified.value) {
    ElMessage.warning("请先验证有效的出库单据号后再扫描条码");
    playError(); // ========== ä»…新增这一行 ==========
    nextTick(() => {
      outboundInputRef.value?.focus();
    });
@@ -356,6 +372,7 @@
  const isDuplicate = scannedBarcodes.value.some(item => item.barcode === barcode);
  if (isDuplicate) {
    ElMessage.warning(`条码【${barcode}】已存在,无需重复扫描`);
    playError(); // ========== ä»…新增这一行 ==========
    formData.barcode = "";
    nextTick(() => barcodeInputRef.value?.focus()); // åŽ»é‡åŽä»èšç„¦æ¡ç æ¡†
    return;
@@ -365,13 +382,18 @@
    loading.value = true;
    // æ­¥éª¤1:查询采购单号
    const purchaseOrderNo = await getPurchaseOrderByBarcode(barcode);
    if (purchaseOrderNo) {
      orderForm.purchaseOrderNo = purchaseOrderNo;
    } else {
      ElMessage.info("未查询到该条码对应的采购单号,继续验证条码有效性");
      formData.barcode = "";
      nextTick(() => barcodeInputRef.value?.focus());
    let purchaseOrderNo = '';
    try {
      purchaseOrderNo = await getPurchaseOrderByBarcode(barcode);
      if (purchaseOrderNo) {
        orderForm.purchaseOrderNo = purchaseOrderNo;
      } else {
        ElMessage.info("未查询到该条码对应的采购单号,继续验证条码有效性");
        playError(); // ========== ä»…新增这一行 ==========
      }
    } catch (error) {
      ElMessage.info("未查询到该条码对应的采购单号,继续验证条码有效性:" + error.message);
      playError(); // ========== ä»…新增这一行 ==========
    }
    // æ­¥éª¤2:验证条码并获取物料信息
@@ -384,6 +406,7 @@
    if (validateRes.status === true) {
      if (!Array.isArray(validateRes.data) || validateRes.data.length === 0) {
        ElMessage.warning("该条码验证成功,但未返回物料信息");
        playError(); // ========== ä»…新增这一行 ==========
        formData.barcode = "";
        nextTick(() => barcodeInputRef.value?.focus());
      } else {
@@ -398,15 +421,18 @@
        }));
        scannedBarcodes.value.push(...newItems);
        ElMessage.success(`扫描成功,新增 ${newItems.length} æ¡ç‰©æ–™ä¿¡æ¯ï¼Œç´¯è®¡ ${scannedBarcodes.value.length} æ¡`);
        playSuccess(); // ========== ä»…新增这一行 ==========
        formData.barcode = "";
      }
    } else {
      ElMessage.error("扫描失败:" + (validateRes.message || '条码验证失败'));
      playError(); // ========== ä»…新增这一行 ==========
      formData.barcode = "";
      nextTick(() => barcodeInputRef.value?.focus());
    }
  } catch (error) {
    ElMessage.error(error.message);
    playError(); // ========== ä»…新增这一行 ==========
    formData.barcode = "";
    nextTick(() => barcodeInputRef.value?.focus());
  } finally {