tuqin
14 小时以前 8dd12f3fb9f2c8c8b319bad323209f28429a80ef
src/views/mes/pro/components/qr-trace-modal.vue
@@ -11,7 +11,7 @@
  import { Button, Empty, Input, message, Spin, Tag } from "ant-design-vue";
  import { getBagCodeByCode } from "#/api/mes/pro/bagCode";
  import { getBagCodeByCode, resolveTraceType } from "#/api/mes/pro/bagCode";
  import { getBatchByCode } from "#/api/mes/pro/batch";
  import { getPalletByCode } from "#/api/mes/pro/pallet";
  import { getQrConfig } from "#/api/mes/trace/config";
@@ -72,24 +72,6 @@
    return trimmed;
  }
  /** 识别二维码内容类型:批次号(含临时批次码)/ 托盘码(含临时托盘码)/ 袋码 */
  function resolveCodeType(raw: string): TraceType | undefined {
    const value = raw.trim().toUpperCase();
    if (/^PB-\d{8}$/.test(value)) {
      return "batch";
    }
    if (/^PL-\d{8}$/.test(value)) {
      return "pallet";
    }
    if (/^.*-P\d{2}$/.test(value)) {
      return "pallet";
    }
    if (/^BAG-\d{8}$/.test(value) || /^.*-\d{4}$/.test(value)) {
      return "bag";
    }
    return "batch";
  }
  function resetState() {
    currentCode.value = undefined;
    traceType.value = undefined;
@@ -113,11 +95,6 @@
      message.warning("二维码内容过长,请检查是否扫描正确");
      return;
    }
    const type = resolveCodeType(value);
    if (!type) {
      message.warning("无法识别二维码类型");
      return;
    }
    loading.value = true;
    searched.value = true;
    searchError.value = false;
@@ -128,15 +105,21 @@
    palletTrace.value = undefined;
    batchTrace.value = undefined;
    try {
      if (type === "batch") {
        batchTrace.value = await getBatchByCode(value);
        traceTypeLabel.value = "批次号";
      // 编码已统一为「16 位纯数字」,无法再按前缀判断类型,改由后端按编码解析类型
      const type = await resolveTraceType(value);
      if (type === "bag") {
        bagTrace.value = await getBagCodeByCode(value);
        traceTypeLabel.value = "袋码";
      } else if (type === "pallet") {
        palletTrace.value = await getPalletByCode(value);
        traceTypeLabel.value = "托盘码";
      } else if (type === "batch") {
        batchTrace.value = await getBatchByCode(value);
        traceTypeLabel.value = "批次号";
      } else {
        bagTrace.value = await getBagCodeByCode(value);
        traceTypeLabel.value = "袋码";
        searchError.value = true;
        currentCode.value = undefined;
        return;
      }
      traceType.value = type;
    } catch {