| | |
| | | }, |
| | | |
| | | 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) { |
| | |
| | | '经纬度', |
| | | '创建人', |
| | | '处理人', |
| | | '工单状态', |
| | | '工单状态' |
| | | ]; |
| | | |
| | | 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 = ''; |
| | | }, |