From b9be77de013507a09845a1c498d2eb7456376351 Mon Sep 17 00:00:00 2001 From: qiankanghui <11284155+qian-kanghui@user.noreply.gitee.com> Date: Thu, 5 Feb 2026 13:59:08 +0800 Subject: [PATCH] =?UTF-8?q?refactor(report):=20=E6=9B=B4=E6=96=B0=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 reportExchangeWorkOrderExport 重命名为 reportExchangeWorkOrderExcel - 在 reportDefectOrder2.vue 中添加导出按钮加载状态 - 实现新的 Excel 导出逻辑,替换原有的 exportTable 方法 - 添加导出过程中的 loading 状态管理 - 统一导出文件命名格式为 "设备维修组维修执行工单_时间戳.xlsx" - 添加导出失败的错误处理和用户提示 --- src/api/eam/eam.js | 2 +- .../reportWorkOrder/reportDefectOrder.vue | 4 +- .../reportWorkOrder/reportDefectOrder2.vue | 50 ++++++++++++++----- 3 files changed, 40 insertions(+), 16 deletions(-) diff --git a/src/api/eam/eam.js b/src/api/eam/eam.js index 836b2e7..67f80fa 100644 --- a/src/api/eam/eam.js +++ b/src/api/eam/eam.js @@ -238,7 +238,7 @@ export const deleteFeedMatter = data => createAPI(`/pms/eam/deleteFeedMatter`,'p export const getOperatorListByOrder = data => createAPI(`/pms/eam/getOperatorListByOrder`,'post',data) export const checkWorkOrders = data => createAPI(`/pms/eam/checkWorkOrders`,'post',data) export const exportEmployeeAttendanceSearch = data => createAPI(`/pms/eam/exportEmployeeAttendanceSearch`,'post',data) -export const reportExchangeWorkOrderExport = data => createAPI(`/pms/eam/reportExchangeWorkOrderExport`,'post', data, 'download') +export const reportExchangeWorkOrderExcel = data => createAPI(`/pms/eam/reportExchangeWorkOrderExcel`,'post', data, 'download') // 换线专家组维修执行 转单 export const updateRepairTypes = data => createAPI(`/pms/eam/updateRepairTypes`,'post',data) diff --git a/src/views/modules/reportWorkOrder/reportDefectOrder.vue b/src/views/modules/reportWorkOrder/reportDefectOrder.vue index f4410f7..19eba2b 100644 --- a/src/views/modules/reportWorkOrder/reportDefectOrder.vue +++ b/src/views/modules/reportWorkOrder/reportDefectOrder.vue @@ -732,7 +732,7 @@ saveCoreComponent, getSparPartImages, // 获取备件图片 deleteCoreComponents,//删除核心备件 - reportExchangeWorkOrderExport//执行工单导出 + reportExchangeWorkOrderExcel//执行工单导出 } from "@/api/eam/eam.js" import { downLoadObjectFile, @@ -2189,7 +2189,7 @@ params.limit = -1 params.page = 1 - const response = await reportExchangeWorkOrderExport(params) + const response = await reportExchangeWorkOrderExcel(params) const now = new Date() const pad = n => n.toString().padStart(2, '0') diff --git a/src/views/modules/reportWorkOrder/reportDefectOrder2.vue b/src/views/modules/reportWorkOrder/reportDefectOrder2.vue index 4ab6828..2d4539f 100644 --- a/src/views/modules/reportWorkOrder/reportDefectOrder2.vue +++ b/src/views/modules/reportWorkOrder/reportDefectOrder2.vue @@ -81,7 +81,7 @@ 查询 - {{'导出'}} + {{'导出'}} @@ -724,6 +724,7 @@ import { saveCoreComponent, getSparPartImages, // 获取备件图片 deleteCoreComponents,//删除核心备件 + reportExchangeWorkOrderExcel//执行工单导出 } from "@/api/eam/eam.js" import { downLoadObjectFile, @@ -761,6 +762,7 @@ export default { }, data () { return { + loading: false, updateCoreComponentsFlag: false, coreComponentFlag: false, uploadDialog: false, @@ -2164,18 +2166,40 @@ export default { }, async exportExcel() { - this.searchData.limit = -1 - this.searchData.page = 1 - excel.exportTable({ - url: "/pms/eam/eamWorkOrderSearch2", - columnMapping: this.columnList,//可以直接用table,不需要的列就剔除 - mergeSetting: [],//需要合并的列 - params: this.searchData, - fileName: this.exportName+".xlsx", - rowFetcher: res => res.data, - columnFormatter: [], - dropColumns: [],//需要剔除的列,例如dropColumns: ["netWeight"],即剔除净重列 - }); + try { + this.exportLoading = true + let params = this.searchData + params.limit = -1 + params.page = 1 + + const response = await reportExchangeWorkOrderExcel(params) + + const now = new Date() + const pad = n => n.toString().padStart(2, '0') + const timeStr = + now.getFullYear() + + pad(now.getMonth() + 1) + + pad(now.getDate()) + + pad(now.getHours()) + + pad(now.getMinutes()) + + pad(now.getSeconds()) + + const fileName = `设备维修组维修执行工单_${timeStr}.xlsx` + + const url = window.URL.createObjectURL(new Blob([response.data])) + const link = document.createElement('a') + link.href = url + link.setAttribute('download', fileName) + document.body.appendChild(link) + link.click() + link.remove() + window.URL.revokeObjectURL(url) + } catch (error) { + console.error('导出失败:', error) + this.$message.error('导出失败') + } finally { + this.exportLoading = false + } }, rowStyle({row}){ let isReturn = row.isReturn