From 6540316952969ed21230c0f92c3bc57e88f58142 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 16 十月 2026 20:15:15 +0800
Subject: [PATCH] feat(mes): 新增二维码后台导出功能

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

diff --git a/src/views/mes/pro/bagCode/index.vue b/src/views/mes/pro/bagCode/index.vue
index cf22f99..9f0df83 100644
--- a/src/views/mes/pro/bagCode/index.vue
+++ b/src/views/mes/pro/bagCode/index.vue
@@ -1,4 +1,5 @@
 <script lang="ts" setup>
+  import { ref } from 'vue';
   import type { VxeTableGridOptions } from "#/adapter/vxe-table";
   import type { MesProBagCodeApi } from "#/api/mes/pro/bagCode";
 
@@ -20,6 +21,7 @@
     unbindBagCodePallet,
   } from "#/api/mes/pro/bagCode";
   import { IconifyIcon } from "@vben/icons";
+  import { countQrExport, submitQrExport } from '#/api/mes/pro/qrExport';
   import { $t } from "#/locales";
 
   import { useGridColumns, useGridFormSchema } from "./data";
@@ -30,8 +32,11 @@
   import ReplaceModal from "./modules/replace-form.vue";
   import QrTraceModal from "../components/qr-trace-modal.vue";
   import BusinessQrModal from "../components/business-qr.vue";
+  import QrExportTaskModal from '../components/qr-export-task-modal.vue';
 
   defineOptions({ name: "MesProBagCode" });
+
+  const qrExportTaskModal = ref<InstanceType<typeof QrExportTaskModal>>();
 
   const [GenerateFormModal, generateFormModalApi] = useVbenModal({
     connectedComponent: GenerateModal,
@@ -129,6 +134,14 @@
     }
     if (!params.uuid && !params.batchId) {
       message.warning("璇峰厛鎸夌敓鎴愮粍鎴栨壒娆$瓫閫夊悗鍐嶅鍑轰簩缁寸爜");
+      return;
+    }
+    const bizType = kind === 'business' ? 'BAG_BUSINESS' : 'BAG_LABEL';
+    const count = await countQrExport({ bizType, ...params });
+    if (count.mode === 'ASYNC') {
+      const task = await submitQrExport({ bizType, ...params });
+      qrExportTaskModal.value?.show(task);
+      message.success(`宸叉彁浜� ${count.totalCount} 寮犱簩缁寸爜鐨勫悗鍙板鍑轰换鍔);
       return;
     }
     const data = await (kind === 'business' ? exportBagBusinessQr : exportBagQr)(params);
@@ -347,6 +360,7 @@
     <ReplaceFormModal @success="handleReplaceSuccess" />
     <QrTraceQueryModal />
     <BusinessQrViewModal />
+    <QrExportTaskModal ref="qrExportTaskModal" />
     <Grid table-title="琚嬬爜鍒楄〃锛堜竴琚嬩竴鐮侊級">
       <template #table-title><span class="text-[1rem] font-bold" style="white-space:nowrap">琚嬬爜鍒楄〃锛堜竴琚嬩竴鐮侊級</span></template>
       <template #toolbar-tools>
@@ -360,6 +374,7 @@
           { label: 'Excel 鏁版嵁鍖�', auth: ['mes:pro-bag-code:export'], onClick: handleExport }]">
             <template #more><Button>瀵煎嚭 <IconifyIcon icon="lucide:chevron-down" /></Button></template>
           </TableAction>
+          <Button @click="qrExportTaskModal?.showLast()">鍚庡彴瀵煎嚭浠诲姟</Button>
           <TableAction :dropdown-trigger="['click']" :drop-down-actions="[{ label: '鐢熸垚鍘熷琚嬬爜', auth: ['mes:pro-bag-code:create'], onClick: handleRawGenerate },
           { label: '琛ョ敓鎴愪笟鍔$爜', auth: ['mes:pro-bag-code:create'], onClick: handleGenerateBusinessCodes },
           { label: '鐮存崯鏇挎崲', auth: ['mes:pro-bag-code:replace'], onClick: handleReplace },

--
Gitblit v1.9.3