From 871a672d6704ebba9801fe20a7f871e02767c3da Mon Sep 17 00:00:00 2001
From: rjg <746338628@qq.com>
Date: Fri, 11 Apr 2025 18:51:12 +0800
Subject: [PATCH] fix:导出
---
src/views/tickets/orderLog.vue | 175 +++++++++++++++++--------------------------
src/api/tickets/orderLog.js | 10 ++
2 files changed, 79 insertions(+), 106 deletions(-)
diff --git a/src/api/tickets/orderLog.js b/src/api/tickets/orderLog.js
index db8c13b..1cf0db0 100644
--- a/src/api/tickets/orderLog.js
+++ b/src/api/tickets/orderLog.js
@@ -50,3 +50,13 @@
});
};
+// 导出
+export const orderLogExport = (data) => {
+ return request({
+ url: '/drone-device-core/wayline/orderLog/export',
+ method: 'post',
+ data,
+ responseType: 'blob',
+ });
+};
+
diff --git a/src/views/tickets/orderLog.vue b/src/views/tickets/orderLog.vue
index 2392a07..5a8d826 100644
--- a/src/views/tickets/orderLog.vue
+++ b/src/views/tickets/orderLog.vue
@@ -18,7 +18,7 @@
@keyup.enter="handleSearch"
/>
- <el-select
+ <el-select
v-model="filters.create_dept"
placeholder="请选择所属单位"
class="filter-item"
@@ -30,20 +30,19 @@
:label="item.label"
:value="item.value"
/>
- </el-select>
-
-
- <el-date-picker
- v-model="filters.dateRange"
- type="daterange"
- range-separator="至"
- start-placeholder="开始日期"
- end-placeholder="结束日期"
- class="filter-item"
- style="width:80px"
- value-format="yyyy-MM-dd"
- />
-
+ </el-select>
+
+ <el-date-picker
+ v-model="filters.dateRange"
+ type="daterange"
+ range-separator="至"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ class="filter-item"
+ style="width: 80px"
+ value-format="yyyy-MM-dd"
+ />
+
<el-select
v-model="filters.ai_types"
placeholder="关联算法"
@@ -165,13 +164,12 @@
</el-col>
<el-col :span="12">
<el-form-item label="关联航线" prop="file_id">
- <el-select v-model="form.file_id" placeholder="请选择航线" @change="getFlyingNestBy" >
+ <el-select v-model="form.file_id" placeholder="请选择航线" @change="getFlyingNestBy">
<el-option
v-for="item in wayLineList"
:key="item.wayline_id"
:label="item.name"
:value="item.wayline_id"
-
/>
</el-select>
</el-form-item>
@@ -239,7 +237,7 @@
<el-col :span="3">
<el-time-picker
- style="width:100px"
+ style="width: 100px"
v-model="form.deal_time"
prop="deal_time"
value-format="HH:mm"
@@ -268,14 +266,13 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="关联航线" prop="file_id">
- <el-select v-model="form.file_id" placeholder="请选择航线" @change="getFlyingNestBy" >
+ <el-form-item label="关联航线" prop="file_id">
+ <el-select v-model="form.file_id" placeholder="请选择航线" @change="getFlyingNestBy">
<el-option
v-for="item in wayLineList"
:key="item.wayline_id"
:label="item.name"
:value="item.wayline_id"
-
/>
</el-select>
</el-form-item>
@@ -283,7 +280,7 @@
</el-row>
<el-row :gutter="20">
<el-col :span="12">
- <el-form-item label="关联机巢" prop="device_sns">
+ <el-form-item label="关联机巢" prop="device_sns">
<el-select v-model="form.device_sns" placeholder="请选择机巢" multiple>
<el-option
v-for="item in device_sns"
@@ -334,7 +331,7 @@
<el-button
type="danger"
- v-if="form.status == 0|| form.status == 2 && userInfo.user_id == form.create_user"
+ v-if="form.status == 0 || (form.status == 2 && userInfo.user_id == form.create_user)"
@click="submitForm(1)"
>发布</el-button
>
@@ -381,12 +378,16 @@
orderLogRecall,
orderLogReject,
orderLogPass,
+ orderLogExport
} from '@/api/tickets/orderLog';
import { getDictionary } from '@/api/system/dictbiz';
import{getWaylineFileListByArea} from '@/api/resource/wayline';
import { export_json_to_excel } from '@/utils/exportExcel';
import {getFlyingNestBy} from '@/api/device/device';
import { mapGetters } from 'vuex';
+import NProgress from 'nprogress';
+import { downloadXls } from '@/utils/util';
+import 'nprogress/nprogress.css';
export default {
name: 'TicketPage',
@@ -451,6 +452,8 @@
{ label: '工单内容', prop: 'content', width: 160 },
{ label: '关联航线', prop: 'wayline_name', width: 160 },
{ label: '关联算法', prop: 'ai_type_str', width: 180 },
+ { label: '关联机巢', prop: 'device_names', width: 180 },
+
{ label: '创建人', prop: 'creator_name', width: 180 },
{ label: '关联机巢', prop: 'device_names', width: 108 },
{
@@ -545,27 +548,7 @@
async fetchTableData() {
this.loading = true;
try {
- const currentTab = this.tabs.find(tab => tab.name === this.activeTab);
-
- const params = {
- key_word: this.filters.key_word || undefined,
- create_dept: this.filters.create_dept || undefined,
- ai_types:
- this.filters.ai_types && this.filters.ai_types.length > 0
- ? [this.filters.ai_types]
- : null,
- file_id: this.filters.file_id || undefined,
- status: this.filters.status !== '' ? Number(this.filters.status) : currentTab?.value,
- 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]).replace('00:00:00', '23:59:59')
- : undefined,
- current: this.pagination.currentPage,
- size: this.pagination.pageSize,
- };
+ let params=this.getQueryParam();
console.log('发送的参数:', params);
const response = await getList(params);
if (!response?.data?.data?.records) {
@@ -593,6 +576,30 @@
}
},
+ getQueryParam(){
+ const currentTab = this.tabs.find(tab => tab.name === this.activeTab);
+
+ const params = {
+ key_word: this.filters.key_word || undefined,
+ create_dept: this.filters.create_dept || undefined,
+ ai_types:
+ this.filters.ai_types && this.filters.ai_types.length > 0
+ ? [this.filters.ai_types]
+ : null,
+ file_id: this.filters.file_id || undefined,
+ status: this.filters.status !== '' ? Number(this.filters.status) : currentTab?.value,
+ 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]).replace('00:00:00', '23:59:59')
+ : undefined,
+ current: this.pagination.currentPage,
+ size: this.pagination.pageSize,
+ };
+ return params;
+ },
async submitForm(status) {
@@ -777,7 +784,23 @@
this.asyncgetWaylineFileListByArea();
this.device_sns=response.data.data.deviceList;
},
-
+ //导出
+ async exportData() {
+
+ this.$confirm('是否智飞工单数据?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
+ }).then(() => {
+ NProgress.start();
+ let params=this.getQueryParam();
+ orderLogExport(params).then(res => {
+ downloadXls(res.data, `智飞工单${this.$dayjs().format('YYYY-MM-DD')}.xlsx`);
+ NProgress.done();
+ });
+ });
+
+ },
@@ -839,68 +862,8 @@
this.detailVisible = false;
});
},
- async exportData() {
- try {
- this.loading = true;
- const params = {
- keyword: this.filters.keyword || undefined,
- word_order_type: this.filters.type || undefined,
- status: this.filters.status || 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,
- };
-
- const response = await getList(params);
- if (!response?.data?.data?.records) {
- throw new Error('接口返回数据格式不正确');
- }
-
- const records = response.data.data.records;
- const exportData = records.map(item => ({
- 工单编号: item.wayline_job_id || '',
- 工单名称: item.event_name || '',
- 所属单位: this.departments.find(d => d.value === item.deptId)?.label || '未知单位',
- 发起时间: item.create_time || '',
- 工单内容: item.ai_types || '',
- 工单类型: this.types.find(t => t.value === item.event_dict_key)?.label || '未知类型',
- 经纬度: `${item.longitude || '未知'}, ${item.latitude || '未知'}`,
- 详细地址: item.address || '暂无地址信息',
- 创建人: item.create_user || '未知创建人',
- 处理人: item.update_user || '未分配',
- 工单状态: this.mapStatus(Number(item.status || 0)),
- }));
-
- export_json_to_excel(
- [
- '工单编号',
- '工单名称',
- '所属单位',
- '发起时间',
- '工单内容',
- '工单类型',
- '经纬度',
- '详细地址',
- '创建人',
- '处理人',
- '工单状态',
- ],
- exportData,
- '工单数据'
- );
- this.$message.success('数据导出成功');
- } catch (error) {
- console.error('导出失败:', error);
- this.$message.error('数据导出失败');
- } finally {
- this.loading = false;
- }
- },
},
+
watch: {
tableData: {
handler() {
--
Gitblit v1.9.3