From 2135b15e5af9d7218b1c4b18cde73bd2ae92a85a Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Thu, 12 Jun 2025 14:29:55 +0800
Subject: [PATCH] 工单导出数据优化

---
 src/views/tickets/ticket.vue |  107 ++++++++++++++---------------------------------------
 1 files changed, 28 insertions(+), 79 deletions(-)

diff --git a/src/views/tickets/ticket.vue b/src/views/tickets/ticket.vue
index 065fb9c..2becf76 100644
--- a/src/views/tickets/ticket.vue
+++ b/src/views/tickets/ticket.vue
@@ -1944,89 +1944,16 @@
     },
 
     async exportData() {
-      // 修改导出方法,添加选中数据的处理
       try {
         this.loading = true;
-
-        // 如果有选中的数据,则只导出选中的数据
         let exportData = [];
+
+        // 如果有选中的数据,则导出选中的数据
         if (this.selections.length > 0) {
-          exportData = this.selections.map(item => ({
-            工单编号: item.orderNumber || '',
-            工单名称: item.orderName || '',
-            所属单位: item.department || '',
-            发起时间: item.startTime || '',
-            关联算法: item.aiType || '',
-            工单内容: item.address || '',
-            工单类型: item.type || '',
-            经纬度: item.location
-              ? `${item.location[0].toFixed(6)}, ${item.location[1].toFixed(6)}`
-              : '',
-            创建人: item.creator || '',
-            处理人: item.handler || '',
-            工单状态: this.mapStatus(item.status),
-          }));
+          exportData = this.selections.map(item => this.formatExportItem(item));
         } else {
-          // 原有的导出全部数据的逻辑
-          const currentTab = this.tabs.find(tab => tab.name === this.activeTab);
-
-          // 使用与查询列表相同的参数构造逻辑
-          const params = {
-            word_order_type: this.filters.type || undefined,
-            status:
-              currentTab?.name === 'myTickets'
-                ? undefined
-                : this.filters.status !== ''
-                ? Number(this.filters.status)
-                : currentTab?.value, // 使用当前tab的状态值
-            keyword: this.filters.keyword || undefined,
-            dept_id: this.filters.department || undefined,
-            start_date: this.filters.dateRange?.[0]
-              ? this.formatDate(this.filters.dateRange[0])
-              : undefined,
-            end_date: this.filters.dateRange?.[1]
-              ? this.formatDate(this.filters.dateRange[1])
-              : undefined,
-            current: 1,
-            size: 10,
-          };
-
-          const response = await getList(params);
-          if (!response?.data?.data?.records) {
-            throw new Error('接口返回数据格式不正确');
-          }
-
-          const { records } = response.data.data;
-
-          // 使用与查询列表相同的过滤逻辑
-          let filteredRecords = records;
-          if (currentTab?.name === 'myTickets') {
-            filteredRecords = records.filter(
-              item => String(item.create_user_id) === String(item.user_id)
-            );
-          }
-
-          exportData = filteredRecords.map(item => {
-            const longitude = Number(item.longitude) || 0;
-            const latitude = Number(item.latitude) || 0;
-            return {
-              工单编号: item.event_num || '',
-              工单名称: item.event_name || '',
-              所属单位: item.dept_name || '',
-              发起时间: item.create_time || '',
-              关联算法: item.ai_types || '',
-              工单内容: item.address || '',
-              工单类型:
-                this.types.find(t => t.value === item.work_order_type_dict_key)?.label || '',
-              经纬度:
-                !isNaN(longitude) && !isNaN(latitude)
-                  ? `${longitude.toFixed(6)}, ${latitude.toFixed(6)}`
-                  : '',
-              创建人: item.create_user || '',
-              处理人: item.update_user || '',
-              工单状态: this.mapStatus(Number(item.status || 0)),
-            };
-          });
+          // 没有选中数据时,导出当前页面的数据
+          exportData = this.tableData.map(item => this.formatExportItem(item));
         }
 
         if (exportData.length === 0) {
@@ -2045,18 +1972,40 @@
           '经纬度',
           '创建人',
           '处理人',
-          '工单状态',
+          '工单状态'
         ];
 
         export_json_to_excel(headers, exportData, '工单数据');
         this.$message.success('数据导出成功');
       } catch (error) {
+        console.error('导出失败:', error);
         this.$message.error(error.message || '导出失败,请稍后重试');
       } finally {
         this.loading = false;
       }
     },
 
+    formatExportItem(item) {
+      const longitude = Number(item.longitude) || Number(item.location?.[0]) || 0;
+      const latitude = Number(item.latitude) || Number(item.location?.[1]) || 0;
+      
+      return {
+        工单编号: item.orderNumber || item.event_num || '',
+        工单名称: item.orderName || item.event_name || '',
+        所属单位: item.department || item.dept_name || '',
+        发起时间: item.startTime || item.create_time || '',
+        关联算法: item.aiType || item.ai_types || '',
+        工单内容: item.address || item.content || '',
+        工单类型: this.types.find(t => t.value === (item.type || item.work_order_type_dict_key))?.label || '',
+        经纬度: (!isNaN(longitude) && !isNaN(latitude)) 
+          ? `${longitude.toFixed(6)}, ${latitude.toFixed(6)}`
+          : '',
+        创建人: item.creator || item.create_user || '',
+        处理人: item.handler || item.update_user || '',
+        工单状态: this.mapStatus(Number(item.status || 0))
+      };
+    },
+
     handleDepartmentChange(deptId) {
       this.form.handler = '';
     },

--
Gitblit v1.9.3