Browse Source

下载统计文件修改

master
“wangzihua” 4 months ago
parent
commit
66585c0c30
  1. 2
      src/api/business/service-applications/service-applications-api.js
  2. 25
      src/components/system/service-count/quarter-statistics.vue
  3. 28
      src/lib/axios.js

2
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);
},
};

25
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);

28
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);

Loading…
Cancel
Save