vue的表格导出

30 阅读1分钟
 let fileName='事项数据表' //表名
 let params={} //传给后台的数据
 
 async exportData(params, fileName) {
    params = params || {};
    let token = params.token || eap.getToken();
    delete params.token;
    const resp = await axios({
        url: SafeprodApi.getExportDataUrl(),//请求链接
        method: "POST",
        responseType: "blob",
        headers: {'x-token': token},
        data: params //如果后台要求将参数传到query里,通过改变params
    });

    if (resp.status !== 200 || !resp.data.type.startsWith("application")) {
        console.error("数据导出失败", resp);
        Notification.error({title: "数据导出失败"});
        return;
    }

    if (window.navigator.msSaveOrOpenBlob) {
        navigator.msSaveBlob(resp.data, fileName);
    } else {
        const link = document.createElement('a');
        const body = document.querySelector('body');

        const blob = new Blob([resp.data]);
        link.href = window.URL.createObjectURL(blob);
        link.download = (fileName || "数据导出") + ".xlsx";
        // fix Firefox
        link.style.display = 'none';
        body.appendChild(link);

        link.click();
        body.removeChild(link);
        // 释放URL 对象
        window.URL.revokeObjectURL(link.href);
    }
},