From c12d7616f2a06e64482ffd218488cc6595b08370 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Fri, 6 Mar 2026 00:09:23 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(mes):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9D=A1=E7=A0=81=E7=9B=B8=E5=85=B3=E7=BB=84=E4=BB=B6=E5=92=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增条码格式枚举、条码生成组件及其相关 API,支持条码的创建、查看和配置功能。实现了条码的自动生成逻辑,并优化了条码配置管理界面,提升用户体验。 - 新增 Barcode 组件用于条码展示 - 实现条码生成和下载功能 - 添加条码配置管理功能 --- package.json | 1 + pnpm-lock.yaml | 10 +- src/views/mes/wm/barcode/BarcodeForm.vue | 148 +++++++++ .../mes/wm/barcode/BarcodeViewDialog.vue | 281 ++++++++++++++++++ .../wm/barcode/constants/BarcodeConstants.ts | 29 ++ src/views/mes/wm/barcode/index.vue | 261 ++++++++++++++++ 6 files changed, 729 insertions(+), 1 deletion(-) create mode 100644 src/views/mes/wm/barcode/BarcodeForm.vue create mode 100644 src/views/mes/wm/barcode/BarcodeViewDialog.vue create mode 100644 src/views/mes/wm/barcode/constants/BarcodeConstants.ts create mode 100644 src/views/mes/wm/barcode/index.vue diff --git a/package.json b/package.json index 3ee972492..68d6ef42b 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "element-plus": "2.11.1", "fast-xml-parser": "^4.3.2", "highlight.js": "^11.9.0", + "jsbarcode": "^3.12.3", "jsencrypt": "^3.3.2", "jsoneditor": "^10.1.3", "lodash-es": "^4.17.21", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e3f9526b..0d1beb2ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,6 +92,9 @@ importers: highlight.js: specifier: ^11.9.0 version: 11.10.0 + jsbarcode: + specifier: ^3.12.3 + version: 3.12.3 jsencrypt: specifier: ^3.3.2 version: 3.3.2 @@ -3669,6 +3672,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbarcode@3.12.3: + resolution: {integrity: sha512-CuHU9hC6dPsHF5oVFMo8NW76uQVjH4L22CsP4hW+dNnGywJHC/B0ThA1CTDVLnxKLrrpYdicBLnd2xsgTfRnvg==, tarball: https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.12.3.tgz} + jsencrypt@3.3.2: resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==} @@ -4603,7 +4609,7 @@ packages: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz} engines: {node: '>=0.10.0'} split2@4.2.0: @@ -9023,6 +9029,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsbarcode@3.12.3: {} + jsencrypt@3.3.2: {} jsesc@3.0.2: {} diff --git a/src/views/mes/wm/barcode/BarcodeForm.vue b/src/views/mes/wm/barcode/BarcodeForm.vue new file mode 100644 index 000000000..63de2041a --- /dev/null +++ b/src/views/mes/wm/barcode/BarcodeForm.vue @@ -0,0 +1,148 @@ + + + diff --git a/src/views/mes/wm/barcode/BarcodeViewDialog.vue b/src/views/mes/wm/barcode/BarcodeViewDialog.vue new file mode 100644 index 000000000..5dd8d70eb --- /dev/null +++ b/src/views/mes/wm/barcode/BarcodeViewDialog.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/src/views/mes/wm/barcode/constants/BarcodeConstants.ts b/src/views/mes/wm/barcode/constants/BarcodeConstants.ts new file mode 100644 index 000000000..83c481a30 --- /dev/null +++ b/src/views/mes/wm/barcode/constants/BarcodeConstants.ts @@ -0,0 +1,29 @@ +// TODO @AI:迁移到 /Users/yunai/Java/yudao-all-in-one/yudao-ui-admin-vue3/src/views/mes/utils/constants.ts +/** + * 条码格式枚举 + */ +export enum BarcodeFormatEnum { + QR_CODE = 1, + EAN13 = 2, + CODE39 = 3, + UPC_A = 4 +} + +/** + * 条码格式映射表 + */ +// TODO @AI:拿到需要的地方,貌似就一次性的; +export const BARCODE_FORMAT_MAP: Record = { + [BarcodeFormatEnum.QR_CODE]: 'QR_CODE', + [BarcodeFormatEnum.EAN13]: 'EAN13', + [BarcodeFormatEnum.CODE39]: 'CODE39', + [BarcodeFormatEnum.UPC_A]: 'UPC_A' +} + +/** + * 是否为有效的条码格式 + */ +// TODO @AI:去掉,拿到需要的地方; +export const isValidBarcodeFormat = (format: number): boolean => { + return Object.values(BarcodeFormatEnum).includes(format) +} diff --git a/src/views/mes/wm/barcode/index.vue b/src/views/mes/wm/barcode/index.vue new file mode 100644 index 000000000..6e00c73bf --- /dev/null +++ b/src/views/mes/wm/barcode/index.vue @@ -0,0 +1,261 @@ + + + + +