From f2e80b9f8dddd8da58b9840cf69139d028aaf0d4 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期五, 16 十月 2026 17:45:36 +0800
Subject: [PATCH] feat(mes): 二维码导出接入后台任务与可隐藏进度浮层

---
 src/views/mes/pro/bagCode/index.vue |   35 ++++++++++++++++++++++++++++++-----
 1 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/src/views/mes/pro/bagCode/index.vue b/src/views/mes/pro/bagCode/index.vue
index cf22f99..6bd6b3a 100644
--- a/src/views/mes/pro/bagCode/index.vue
+++ b/src/views/mes/pro/bagCode/index.vue
@@ -30,6 +30,8 @@
   import ReplaceModal from "./modules/replace-form.vue";
   import QrTraceModal from "../components/qr-trace-modal.vue";
   import BusinessQrModal from "../components/business-qr.vue";
+  import QrExportProgress from "../qrexport/qr-export-progress.vue";
+  import { useQrExport } from "../qrexport/use-qr-export";
 
   defineOptions({ name: "MesProBagCode" });
 
@@ -91,6 +93,8 @@
     gridApi.query();
   }
 
+  const { start: startQrExport } = useQrExport();
+
   /** 鐢熸垚鏁版嵁鍖� */
   function handleGenerate() {
     generateFormModalApi.open();
@@ -131,8 +135,24 @@
       message.warning("璇峰厛鎸夌敓鎴愮粍鎴栨壒娆$瓫閫夊悗鍐嶅鍑轰簩缁寸爜");
       return;
     }
-    const data = await (kind === 'business' ? exportBagBusinessQr : exportBagQr)(params);
-    downloadFileFromBlobPart({ fileName: kind === 'business' ? '琚嬬爜涓氬姟浜岀淮鐮�.zip' : '琚嬬爜杩芥函浜岀淮鐮�.zip', source: data });
+    // 鏁伴噺灏戝垯鍚屾绉掑嚭锛涜秴杩囧垎鐣岀嚎鑷姩杞悗鍙颁换鍔★紝鐢辫繘搴︽诞灞傚睍绀虹湡瀹炶繘搴﹀苟鏀寔鍙栨秷/闅愯棌
+    const bizType = kind === "business" ? "BAG_BUSINESS" : "BAG_LABEL";
+    const fileName = kind === "business" ? "琚嬬爜涓氬姟浜岀淮鐮�" : "琚嬬爜杩芥函浜岀淮鐮�";
+    await startQrExport(
+      { bizType, ...params },
+      {
+        fileName,
+        syncDownload: async () => {
+          const data = await (kind === "business"
+            ? exportBagBusinessQr
+            : exportBagQr)(params);
+          downloadFileFromBlobPart({
+            fileName: `${fileName}.zip`,
+            source: data,
+          });
+        },
+      },
+    );
   }
 
   /** 瀵煎嚭琚嬬爜 Excel锛堜氦浠樺嵃鍒凤級锛屽鍑哄悗琚嬬爜鐘舵�佸彉涓哄凡鍗板埛锛岄渶鍒锋柊鍒楄〃 */
@@ -238,11 +258,14 @@
   function handleBindPallet() {
     const records = getSelectedRecords();
     if (!records) return;
-    if (records.some((record) => !record.batchId)) {
-      message.warning("璇峰厛褰曞叆鐢熶骇鎵规锛屽啀缁戝畾鎵樼洏");
+    // 宸插綍鍏ユ壒娆$殑琚嬬爜鍙兘缁戝埌鏈壒娆$殑鎵樼洏锛涙湭褰曞叆鎵规鐨勮鐮佸彲缁戜换鎰忔墭鐩橈紙閫夊埌姝e紡鎵樼洏鏃跺悗绔細鍏堣ˉ褰曟壒娆★級銆�
+    // 涓よ�呮贩閫夋椂鎵规褰掑睘涓嶆槑纭紝瑕佹眰鍒嗗紑鎿嶄綔銆�
+    const boundRecords = records.filter((record) => record.batchId);
+    if (boundRecords.length > 0 && boundRecords.length < records.length) {
+      message.warning("鎵�閫夎鐮佷腑鏃㈡湁宸插綍鍏ユ壒娆°�佷篃鏈夋湭褰曞叆鎵规鐨勮褰曪紝璇峰垎寮�缁戝畾");
       return;
     }
-    const batchIds = new Set(records.map((record) => record.batchId));
+    const batchIds = new Set(boundRecords.map((record) => record.batchId));
     if (batchIds.size > 1) {
       message.warning("璇烽�夋嫨鍚屼竴鎵规涓嬬殑琚嬬爜杩涜缁戝畾");
       return;
@@ -264,6 +287,7 @@
       .setData({
         batchId: first.batchId,
         batchCode: first.batchCode,
+        itemId: first.itemId,
         ids: records.map((record) => record.id!),
       })
       .open();
@@ -347,6 +371,7 @@
     <ReplaceFormModal @success="handleReplaceSuccess" />
     <QrTraceQueryModal />
     <BusinessQrViewModal />
+    <QrExportProgress />
     <Grid table-title="琚嬬爜鍒楄〃锛堜竴琚嬩竴鐮侊級">
       <template #table-title><span class="text-[1rem] font-bold" style="white-space:nowrap">琚嬬爜鍒楄〃锛堜竴琚嬩竴鐮侊級</span></template>
       <template #toolbar-tools>

--
Gitblit v1.9.3