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