导出两种方式:
    1.和get请求一样,参数拼接在后面即可。

    1. let url = `${process.env.VUE_APP_BASE_API}/statistics/dataExportDayOrMonth?dateType=${dateType}&startTime=${startTime}&endTime=${endTime}`;
    2. var $a = document.createElement('a');
    3. $a.setAttribute("href", url);
    4. $a.setAttribute("download", "");
    5. //兼容火狐
    6. //a.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}));
    7. var evObj = document.createEvent('MouseEvents');
    8. evObj.initMouseEvent( 'click', true, true, window, 0, 0, 0, 0, 0, false, false, true, false, 0, null);
    9. $a.dispatchEvent(evObj);
    10. //导出功能兼容FireFox的代码
    11. var explorer = window.navigator.userAgent;
    12. if (explorer.indexOf("Firefox") >= 0) {
    13. //alert('Firefox');
    14. var downloadLink = document.createElement("a");
    15. downloadLink.href = url;
    16. //downloadLink.download = '统计.xls';
    17. document.body.appendChild(downloadLink);
    18. downloadLink.click();
    19. document.body.removeChild(downloadLink);
    20. }

    2.post请求(和平时我们请求post接口一样,不过导出这里请求接口返回的是流,需要前端解析之后,然后通过a标签在浏览器中下载即可)。

    1. export function exportDayOrMonthData(data) {
    2. return request({
    3. url: '/statistics/dataExportDayOrMonth',
    4. method: 'post',
    5. data:data,
    6. //服务器返回的数据类型(重点代码)
    7. responseType: 'blob',
    8. })
    9. }
    1. exportDayOrMonthData(data).then(res=>{
    2. let blob = new Blob([res], {type:"application/force-download"}) // Blob 对象表示一个不可变、原始数据的类文件对象
    3. let fileReader = new FileReader() // FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件的内容
    4. fileReader.readAsDataURL(blob)
    5. //开始读取指定的Blob中的内容。一旦完成,result属性中将包含一个data: URL格式的Base64字符串以表示所读取文件的内容
    6. fileReader.onload = (e) => {
    7. let a = document.createElement('a')
    8. a.download = `日活统计.xlsx`
    9. a.href = e.target.result;
    10. document.body.appendChild(a)
    11. a.click()
    12. document.body.removeChild(a)
    13. }
    14. })

    Blob对象表示一个不可变、原始数据的类文件对象。
    FileReader 对象允许web应用程序异步读取存储在用户计算机上的文件内容。