From ffdf0aaf717bfe327c66018d83ca31e01c403291 Mon Sep 17 00:00:00 2001
From: "HUOJIN\\92525" <925258474@qq.com>
Date: Thu, 8 May 2025 17:02:34 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=20=E4=B8=8B=E6=8B=89?=
 =?UTF-8?q?=E6=BB=9A=E5=8A=A8=E5=8A=A0=E8=BD=BD=E5=88=86=E9=A1=B5=E6=95=B0?=
 =?UTF-8?q?=E6=8D=AE=E3=80=81=E5=AF=BC=E5=87=BA=E5=8A=A8=E6=80=81=E5=8A=A0?=
 =?UTF-8?q?=E8=BD=BD=E8=BF=9B=E5=BA=A6=E6=9D=A1=E6=98=BE=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 .../business/wms/base/address/address-api.ts  | 13 ++-
 .../wms/base/address/address-list.vue         | 61 +++++++++++++-
 .../wms/base/address/address-select.vue       | 84 ++++++++++++++++---
 3 files changed, 139 insertions(+), 19 deletions(-)
diff --git a/nc_wms_web/src/api/business/wms/base/address/address-api.ts b/nc_wms_web/src/api/business/wms/base/address/address-api.ts
index 6c32858..fdbf794 100644
--- a/nc_wms_web/src/api/business/wms/base/address/address-api.ts
+++ b/nc_wms_web/src/api/business/wms/base/address/address-api.ts
@@ -59,11 +59,20 @@ export const addressApi = {
         return postRequest('/address/importAddress', file);
     },
 
+
+    createExportTask: () => {
+        return postRequest('/address/createExportTask', {});
+    },
+
+    getExportProgress: (taskId: string) => {
+        return getRequest(`/address/progress/${taskId}`, {});
+    },
+
     /**
      * 导出  @author  hj
      */
-    exportAddress: () => {
-        return getDownload('/address/exportAddress', {});
+    exportAddress: (taskId: string) => {
+        return getDownload(`/address/exportAddress/${taskId}`, {});
     }
 
 };
diff --git a/nc_wms_web/src/views/business/wms/base/address/address-list.vue b/nc_wms_web/src/views/business/wms/base/address/address-list.vue
index a24c0f3..69acb81 100644
--- a/nc_wms_web/src/views/business/wms/base/address/address-list.vue
+++ b/nc_wms_web/src/views/business/wms/base/address/address-list.vue
@@ -56,6 +56,12 @@
           
           导入
         
+        
+          
+        
 
         
           
@@ -79,6 +85,7 @@
         bordered
         :loading="tableLoading"
         :pagination="false"
+        :scroll="{ x: 1500, y: 350 }"
         :row-selection="{ selectedRowKeys: selectedRowKeyList, onChange: onSelectChange }"
     >
       
@@ -180,7 +187,6 @@ import AddressForm from '/@/views/business/wms/base/address/address-form.vue';
 import {TABLE_ID_CONST} from "/@/constants/support/table-id-const";
 import AddressSelect from "/@/views/business/wms/base/address/address-select.vue";
 import {fileApi} from "/@/api/support/file-api";
-
 // ---------------------------- 表格配置 ----------------------------
 // 表格加载loading
 const tableLoading = ref(false);
@@ -420,9 +426,56 @@ async function onImportAddress() {
 }
 
 //导出
-function onExportAddress() {
-  addressApi.exportAddress();
-}
+const progressTitle = ref('文件导出中,请稍等...');
+const progressPercent = ref(0);//进度条初始值
+const progressStatus = ref('active');//进度条状态
+const currentTaskId = ref('');//当前任务ID
+const open = ref(false);//显示模态框
+
+const onExportAddress = async () => {
+  try {
+    open.value = true;
+    //获取导出任务ID
+    const {data: taskId} = await addressApi.createExportTask();
+    currentTaskId.value = taskId;
+    progressStatus.value = 'active';
+    //导出
+    addressApi.exportAddress(currentTaskId.value);
+    // 启动轮询
+    const timer = setInterval(async () => {
+      try {
+        //获取当前任务的进度条
+        const {data: progress} = await addressApi.getExportProgress(currentTaskId.value);
+        if (progress === -1) {
+          clearInterval(timer);
+          progressStatus.value = 'exception';
+          return;
+        }
+        progressPercent.value = progress;
+        if (progress >= 100) {
+          clearInterval(timer);
+          progressStatus.value = 'success';
+          progressTitle.value = '文件导出完成';
+          // 1秒后重置状态
+          setTimeout(() => {
+            open.value = false;
+            progressPercent.value = 0;
+          }, 1000);
+        }
+
+
+      } catch (error) {
+        clearInterval(timer);
+        progressStatus.value = 'exception';
+        progressPercent.value = 0;
+      }
+    }, 1000); // 每秒轮询一次
+
+
+  } catch (error) {
+    message.error('导出失败');
+  }
+};
 
 
 onMounted(queryData);
diff --git a/nc_wms_web/src/views/business/wms/base/address/address-select.vue b/nc_wms_web/src/views/business/wms/base/address/address-select.vue
index 5610d4b..8c0febb 100644
--- a/nc_wms_web/src/views/business/wms/base/address/address-select.vue
+++ b/nc_wms_web/src/views/business/wms/base/address/address-select.vue
@@ -7,14 +7,19 @@
   
   >
     
       {{ address.name }}
@@ -25,7 +30,18 @@