Browse Source

refactor(report): 更新工单导出功能实现

- 将 reportExchangeWorkOrderExport 重命名为 reportExchangeWorkOrderExcel
- 在 reportDefectOrder2.vue 中添加导出按钮加载状态
- 实现新的 Excel 导出逻辑,替换原有的 exportTable 方法
- 添加导出过程中的 loading 状态管理
- 统一导出文件命名格式为 "设备维修组维修执行工单_时间戳.xlsx"
- 添加导出失败的错误处理和用户提示
master
qiankanghui 3 weeks ago
parent
commit
b9be77de01
  1. 2
      src/api/eam/eam.js
  2. 4
      src/views/modules/reportWorkOrder/reportDefectOrder.vue
  3. 50
      src/views/modules/reportWorkOrder/reportDefectOrder2.vue

2
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 getOperatorListByOrder = data => createAPI(`/pms/eam/getOperatorListByOrder`,'post',data)
export const checkWorkOrders = data => createAPI(`/pms/eam/checkWorkOrders`,'post',data) export const checkWorkOrders = data => createAPI(`/pms/eam/checkWorkOrders`,'post',data)
export const exportEmployeeAttendanceSearch = data => createAPI(`/pms/eam/exportEmployeeAttendanceSearch`,'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) export const updateRepairTypes = data => createAPI(`/pms/eam/updateRepairTypes`,'post',data)

4
src/views/modules/reportWorkOrder/reportDefectOrder.vue

@ -732,7 +732,7 @@
saveCoreComponent, saveCoreComponent,
getSparPartImages, // getSparPartImages, //
deleteCoreComponents,// deleteCoreComponents,//
reportExchangeWorkOrderExport//
reportExchangeWorkOrderExcel//
} from "@/api/eam/eam.js" } from "@/api/eam/eam.js"
import { import {
downLoadObjectFile, downLoadObjectFile,
@ -2189,7 +2189,7 @@
params.limit = -1 params.limit = -1
params.page = 1 params.page = 1
const response = await reportExchangeWorkOrderExport(params)
const response = await reportExchangeWorkOrderExcel(params)
const now = new Date() const now = new Date()
const pad = n => n.toString().padStart(2, '0') const pad = n => n.toString().padStart(2, '0')

50
src/views/modules/reportWorkOrder/reportDefectOrder2.vue

@ -81,7 +81,7 @@
</el-form-item> </el-form-item>
<el-form-item label=" "> <el-form-item label=" ">
<el-button v-if="!authSearch" @click="getDataList()">查询</el-button> <el-button v-if="!authSearch" @click="getDataList()">查询</el-button>
<el-button @click="exportExcel()" type="primary" style="margin-left: 2px">{{'导出'}}</el-button>
<el-button @click="exportExcel()" type="primary" :loading="exportLoading" style="margin-left: 2px">{{'导出'}}</el-button>
<!-- <download-excel--> <!-- <download-excel-->
<!-- :fields="fields()"--> <!-- :fields="fields()"-->
<!-- :data="exportData"--> <!-- :data="exportData"-->
@ -724,6 +724,7 @@ import {
saveCoreComponent, saveCoreComponent,
getSparPartImages, // getSparPartImages, //
deleteCoreComponents,// deleteCoreComponents,//
reportExchangeWorkOrderExcel//
} from "@/api/eam/eam.js" } from "@/api/eam/eam.js"
import { import {
downLoadObjectFile, downLoadObjectFile,
@ -761,6 +762,7 @@ export default {
}, },
data () { data () {
return { return {
loading: false,
updateCoreComponentsFlag: false, updateCoreComponentsFlag: false,
coreComponentFlag: false, coreComponentFlag: false,
uploadDialog: false, uploadDialog: false,
@ -2164,18 +2166,40 @@ export default {
}, },
async exportExcel() { 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}){ rowStyle({row}){
let isReturn = row.isReturn let isReturn = row.isReturn

Loading…
Cancel
Save