简单封装一个导出方法

本文介绍了如何在Vue项目中使用axios进行异步数据获取,封装导出函数,用于从/api/settlement/api/reconciliation/record/daily/export接口下载Excel文件,提供自定义文件名选项。
摘要由CSDN通过智能技术生成
import axios from "axios"
import { getToken } from "@/utils/auth"


/** 导出 */
export function exportData(url, query, filename) {
  axios({
    method: "get",
    url: process.env.VUE_APP_BASE_API + url,
    responseType: "blob",
    params: query || {},
    headers: {
      Authorization: getToken(),
    },
  }).then(res => {
    // console.log(res);
    // 创建一个下载链接
    const downloadLink = document.createElement("a");
    downloadLink.href = URL.createObjectURL(res.data);

    if (filename) {
      downloadLink.download = filename
    } else {
      // 设置下载的文件名为后台返回的文件名
      const contentDisposition = res.headers["content-disposition"];
      const filenameMatch = contentDisposition.match(/filename=(.+)$/);
      const file = filenameMatch ? filenameMatch[1] : "download.xlsx";
      downloadLink.download = decodeURIComponent(file);
    }

    // 触发下载
    downloadLink.click();

    // 清除创建的下载链接
    URL.revokeObjectURL(downloadLink.href);
  }).catch((error) => {
    console.error("下载 Excel 文件出错:", error);
  })
}

先创建一个utils.js文件,封装一段js导出代码; 

 import { exportData } from "../utils";


/** 导出 */
    exportData() {
      // @TODO
      const filename = `差错明细${formatNow("YYYY-MM-DD")}.xlsx`;
      const query = {...this.payload}
      delete query.pageNum
      delete query.pageSize
      exportData(
        "/api/settlement/api/reconciliation/record/daily/export",
        query,
        filename
      );
    },

再向所用组件引用此方法即可,query代表需要单独传递的参数;

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值