| | |
| | | |
| | | 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"; |
| | |
| | | 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; |
| | |
| | | message.warning("二维码内容过长,请检查是否扫描正确"); |
| | | return; |
| | | } |
| | | const type = resolveCodeType(value); |
| | | if (!type) { |
| | | message.warning("无法识别二维码类型"); |
| | | return; |
| | | } |
| | | loading.value = true; |
| | | searched.value = true; |
| | | searchError.value = false; |
| | |
| | | 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 { |