diff --git a/src/api/business/service-applications/service-applications-api.js b/src/api/business/service-applications/service-applications-api.js index f895282..93d276f 100644 --- a/src/api/business/service-applications/service-applications-api.js +++ b/src/api/business/service-applications/service-applications-api.js @@ -96,6 +96,6 @@ export const serviceApplicationsApi = { * 导出律所统计信息 @author wzh */ exportLawyer: (params) => { - return postDownload('/serviceApplications/exportLawyer', params); + return getDownload('/serviceApplications/exportLawyer', params); }, }; diff --git a/src/components/system/service-count/quarter-statistics.vue b/src/components/system/service-count/quarter-statistics.vue index d2948ab..10362b6 100644 --- a/src/components/system/service-count/quarter-statistics.vue +++ b/src/components/system/service-count/quarter-statistics.vue @@ -211,29 +211,10 @@ async function handleExport() { firmName: queryForm.firmName }; - // 调用导出接口 - const response = await serviceApplicationsApi.exportLawyer(exportParams); - - // 处理文件下载 - if (response && response.data) { - // 创建下载链接 - const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' }); - const url = window.URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - - // 生成文件名 - const fileName = `季度服务统计_${queryForm.year || '全部'}_${queryForm.quarter ? '第' + queryForm.quarter + '季度' : '全部'}.xlsx`; - link.download = fileName; - - // 触发下载 - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - window.URL.revokeObjectURL(url); - + // 调用导出接口 + await serviceApplicationsApi.exportLawyer(exportParams); + message.success('导出成功'); - } } catch (error) { message.error('导出失败'); console.error('导出失败:', error); diff --git a/src/lib/axios.js b/src/lib/axios.js index 84da1c4..ed9a6d0 100644 --- a/src/lib/axios.js +++ b/src/lib/axios.js @@ -233,12 +233,28 @@ function handleDownloadData(response) { link.href = url; // 从消息头获取文件名 - let str = _.isUndefined(response.headers['content-disposition']) - ? response.headers['Content-Disposition'].split(';')[1] - : response.headers['content-disposition'].split(';')[1]; - - let filename = _.isUndefined(str.split('fileName=')[1]) ? str.split('filename=')[1] : str.split('fileName=')[1]; - link.setAttribute('download', decodeURIComponent(filename)); + let contentDisposition = response.headers['content-disposition'] || response.headers['Content-Disposition']; + if (!contentDisposition) { + link.setAttribute('download', 'download'); + } else { + let filenameMatch = contentDisposition.match(/filename[\*]?=['\"]([^'\"]+)['\"]/i); + if (filenameMatch && filenameMatch[1]) { + link.setAttribute('download', decodeURIComponent(filenameMatch[1])); + } else { + // 备用方案:尝试从 content-disposition 中提取文件名 + let parts = contentDisposition.split(';'); + for (let part of parts) { + let trimmedPart = part.trim(); + if (trimmedPart.startsWith('filename=') || trimmedPart.startsWith('fileName=')) { + let filename = trimmedPart.substring(trimmedPart.indexOf('=') + 1).trim(); + // 移除可能的引号 + filename = filename.replace(/^["']|["']$/g, ''); + link.setAttribute('download', decodeURIComponent(filename)); + break; + } + } + } + } // 触发点击下载 document.body.appendChild(link);