当前位置: 首页 > Web前端 > HTML

前端blob模式导出Excel

时间:2023-03-28 17:48:54 HTML

包axios:从“axios”导入axios;constserver=axios.create({timeout:20000,withCredentials:true,headers:{"Content-Type":"application/json;charset=utf-8"},});//请求拦截器server.interceptors.request.use(function(config){//在发送请求之前做一些事情letuserinfo=JSON.parse(window.localStorage.getItem("userinfo"));if(userinfo){config.headers.Authorization=userinfo.token;}returnconfig;},function(error){//处理请求错误returnPromise.reject(error);});//响应拦截server.interceptors.response.use(function(response){//如果返回状态码为200,说明接口请求成功,可以正常获取数据,否则会抛错if(response.status===200){//未登录或令牌过期if(response.data.err===1){localStorage.removeItem("userinfo");setTimeout(()=>{router.push("/login");},1000);}elseif(response.data.err===10){setTimeout(()=>{router.push("/nopower");},1000);}返回Promise.resolve(响应);}else{returnPromise.reject(response);}},function(error){if(error.response.status){switch(error.response.status){case401:break;case404:Message.error("网络请求不存在");休息;//其他错误直接抛出错误提示case500:if(error.response.data.err===1){localStorage.removeItem("userinfo");setTimeout(()=>{router.push("/login");},1000);}休息;默认值:Message.error(error.response.data.msg);}返回Promise.reject(error.response.data.msg);}});server.adornUrl=(actionName)=>{//非生产环境&&开启代理,接口前缀统一使用[/proxyApi/]前缀进行代理拦截!return"/api"+actionName;};exportdefaultserver;请求接口:从“@/导入服务器api/request";exportconstexportLogin=async(data)=>awaitserver.post("/farm/sys/log/exportLogin",data,{responseType:"blob"})主要代码:exportLogin({pn:this.currentPage,ps:this.pageSize,}).then((res)=>{this.exportLoading=false;constfileName=`名称${+newDate()}.xlsx`;constblob=newBlob([res.data],{type:"application/vnd.ms-excel;charset=utf-8",});constlink=document.createElement("a");link.href=URL.createObjectURL(blob);link.download=fileName;link.click();URL.revokeObjectURL(link.href);}).catch((err)=>{this.$message.error({message:err});this.exportLoading=错误的;});