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/batch/index.vue | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/src/views/mes/pro/batch/index.vue b/src/views/mes/pro/batch/index.vue
index 49e137d..7200a27 100644
--- a/src/views/mes/pro/batch/index.vue
+++ b/src/views/mes/pro/batch/index.vue
@@ -1,4 +1,5 @@
<script lang="ts" setup>
+ import { ref } from 'vue';
import type { VxeTableGridOptions } from "#/adapter/vxe-table";
import type { MesProBatchApi } from "#/api/mes/pro/batch";
@@ -19,6 +20,7 @@
updateBatchStatus,
} from "#/api/mes/pro/batch";
import { IconifyIcon } from "@vben/icons";
+ import { countQrExport, submitQrExport } from '#/api/mes/pro/qrExport';
import { $t } from "#/locales";
import { useGridColumns, useGridFormSchema } from "./data";
@@ -26,6 +28,9 @@
import PreGenerateModal from "./modules/pre-generate.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';
+
+ const qrExportTaskModal = ref<InstanceType<typeof QrExportTaskModal>>();
const [FormModal, formModalApi] = useVbenModal({
connectedComponent: Form,
@@ -54,6 +59,13 @@
}
async function handleExportBusiness(row: MesProBatchApi.Batch) {
if (row.id == null) return;
+ const params = { bizType: 'BATCH_BUSINESS' as const, batchId: row.id };
+ const count = await countQrExport(params);
+ if (count.mode === 'ASYNC') {
+ qrExportTaskModal.value?.show(await submitQrExport(params));
+ message.success(`宸叉彁浜� ${count.totalCount} 寮犱簩缁寸爜鐨勫悗鍙板鍑轰换鍔);
+ return;
+ }
const data = await exportBatchBusinessQr(row.id);
downloadFileFromBlobPart({ fileName: '鎵规涓庢墭鐩樹笟鍔′簩缁寸爜.zip', source: data });
}
@@ -79,6 +91,13 @@
/** 鎵撳嵃鏁村浜岀淮鐮侊紙鎵规鍥� + 鍏ㄩ儴鎵樼洏鍥� ZIP锛� */
async function handlePrintQrSet(row: MesProBatchApi.Batch) {
+ const params = { bizType: 'BATCH_LABEL' as const, batchId: row.id! };
+ const count = await countQrExport(params);
+ if (count.mode === 'ASYNC') {
+ qrExportTaskModal.value?.show(await submitQrExport(params));
+ message.success(`宸叉彁浜� ${count.totalCount} 寮犱簩缁寸爜鐨勫悗鍙板鍑轰换鍔);
+ return;
+ }
const data = await exportBatchQr(row.id!);
downloadFileFromBlobPart({
fileName: `鎵规浜岀淮鐮�-${getDisplayCode(row)}.zip`,
@@ -182,6 +201,7 @@
<PreGenerateModalApi @success="handlePreGenerateSuccess" />
<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>
@@ -192,6 +212,7 @@
<TableAction :dropdown-trigger="['click']" :drop-down-actions="[{ label: 'Excel 鏁版嵁', auth: ['mes:pro-batch:export'], onClick: handleExport }]">
<template #more><Button>瀵煎嚭 <IconifyIcon icon="lucide:chevron-down" /></Button></template>
</TableAction>
+ <Button @click="qrExportTaskModal?.showLast()">鍚庡彴瀵煎嚭浠诲姟</Button>
</div>
</template>
<template #code="{ row }">
--
Gitblit v1.9.3