根据你提供的代码片段,我看到了一些错误和缺失的部分。下面是完整修改后的代码:
<a-button
@click="templateDwn"
icon="download"
class="margin-right-10 button-light-blue"
>
数据模板
</a-button>
methods: {
templateDwn() {
this.$httpacm
.post("/gw/api/acm-service/limitManage/downLoadApprovalBatchAdjustmentTable", { responseType: 'blob' })
.then(r => {
console.log('0000000', r);
let nameString = r.headers['content-disposition'];
this.download(r.data, window.decodeURI(nameString.split(',')[1].split('=')[1]));
const url = window.URL.createObjectURL(new Blob([r.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'filename.xlsx'); // 设置下载的文件名
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
});
},
download(data, filename) {
const blob = new Blob([data]);
if (navigator.msSaveBlob) {
// For IE browser
navigator.msSaveBlob(blob, filename);
} else {
// For other browsers
const link = document.createElement('a');
if (link.download !== undefined) {
const url = URL.createObjectURL(blob);
link.setAttribute('href', url);
link.setAttribute('download', filename);
// Simulate click event to trigger the download
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
}
}
请注意以下修改:
在
@click
事件绑定中,修正了templateDwn
方法的括号闭合问题。在 POST 请求中,正确设置了请求路径和参数,并指定响应类型为
'blob'
。在
then()
回调函数中,添加了对返回结果的处理逻辑。将文件下载相关代码封装到了
download()
方法中,以便复用。该方法会根据浏览器支持情况来选择不同的下载方式(包括 IE 浏览器和其他浏览器)。
请根据你的实际需求进行进一步修改和测试。如果还有其他问题,请提供更多详细信息以便我能够更好地帮助你。
内容由零声教学AI助手提供,问题来源于学员提问