zipdownload.js 9.28 KB
import axios from "axios";
import { getToken } from "@/utils/auth";
import settings from "@/settings";

// const mimeMap = {
//   xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
//   zip: "application/zip",
//   pdf: "application/pdf",
// };
const mimeMap = {
  xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  zip: 'application/zip',
  pdf: 'application/pdf',
  jpg: 'image/jpeg',
  jpeg: 'image/jpeg',
  png: 'image/png',
  bmp: 'image/bmp',
  tiff: 'image/tiff',
  tif: 'image/tiff',
  xls: 'application/vnd.ms-excel',
  docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
  doc: 'application/msword'
}
const baseUrl = process.env.VUE_APP_BASE_API; //接口地址

export function downLoadZip(str, data, filename) {
  var url = baseUrl + str;
  return new Promise((resolve, reject) => {
    axios({
      method: "get",
      url: url,
      params: {
        cusFileId: data,
      },
      responseType: "blob",
      headers: { Authorization: getToken() },
    })
      .then((res) => {
        resolveBlob(res, mimeMap.zip, filename);
        resolve(res);
      })
      .catch((err) => {
        reject(err);
      });
  });
}
//异步上传报关文件
export function downLoadViewPdf(str, id, title) {

  var url = baseUrl + str;
  return new Promise((resolve, reject) => {
    axios({
      method: "post",
      url: url,
      params: id, // 参数
      responseType: "blob",
      headers: { Authorization: getToken() },
    })
      .then((res) => {
        const blob = new Blob([res.data], {
          type: "application/pdf",
        });
        let url = window.URL.createObjectURL(blob);
        var win= window.open(url, "_blank"); // 打开新的标签页

        var setTitle= setInterval(() => {
          if (win.document.title!=""){
            clearInterval("setTitle");
          }else{
            win.document.title = title;
          }

        },500);
        // var fileURL = URL.createObjectURL(blob);
        // var win = window.open();
        // win.document.write('<iframe name="' + title + '" src="' + fileURL + '" frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;" allowfullscreen></iframe>');
        // win.document.title = title;
        resolve(url);
      })
      .catch((err) => {
        reject(err);
      });
  });


}
// export function downLoadViewPdf(str, id,title) {
//   var url = baseUrl + str;
//   axios({
//     url: url,
//     method: "post",
//     params: id, // 参数
//     responseType: "blob",
//     headers: { Authorization: getToken() },
//   }).then((res) => {
//     const blob = new Blob([res.data], {
//       type: "application/pdf",
//     });

//     // const aLink = document.createElement("a");
//     // aLink.href = URL.createObjectURL(res.data);
//     // aLink.setAttribute("download", "test.pdf"); // 设置下载文件名称
//     // document.body.appendChild(aLink);
//     // aLink.click();
//     // document.body.removeChild(aLink);


//     // var fileURL = URL.createObjectURL(blob);
//     // var win = window.open();
//     // win.document.write('<iframe name="' + title + '" src="' + fileURL + '" frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;" allowfullscreen></iframe>');
//     // win.document.title = title;
//     // console.log(fileURL);
//     // console.log(win);


//     // let url = window.URL.createObjectURL(blob);
//     // var win= window.open(url, "_blank"); // 打开新的标签页
//     // //关闭查看按钮得loading
//     // data.findLoading=false;

//     // var setTitle= setInterval(() => {
//     //   if (win.document.title!=""){
//     //     clearInterval("setTitle");
//     //   }else{
//     //     win.document.title = title;
//     //   }

//     // },500);

// let url1 = window.URL.createObjectURL(blob);
// console.log(url1);
// const newWindow = window.open('about:blank', title);
// newWindow.document.title = title;
// let iframe = document.createElement('iframe');
// iframe.src = url1;
//   iframe.style.width = '100%';
//   iframe.style.height = '100vh';
//   iframe.style.margin = '0';
//   iframe.style.padding = '0';
//   iframe.style.overflow = 'hidden';
//   iframe.style.border = 'none';
//   newWindow.document.body.style.margin = '0';
//   newWindow.document.body.appendChild(iframe);

//   });
// }
export function downLoadPdf(str, id, name) {
  var url = baseUrl + str;
  return new Promise((resolve, reject) => {
    axios({
      url: url,
      method: "post",
      params: id, // 参数
      responseType: "arraybuffer",
      headers: { Authorization: getToken() },
    })
      .then((res) => {
        const blob = new Blob([res.data], {
          type: "application/pdf",
        });
        let url = window.URL.createObjectURL(blob);
        const link = document.createElement("a");
        link.style.display = "none";
        link.href = url;
        link.setAttribute("download", name);
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
        resolve(res);
      })
      .catch((err) => {
        reject(err);
      });
  });
}
/**
 * 解析blob响应内容并下载
 * @param {*} res blob响应内容
 * @param {String} mimeType MIME类型
 */
export function resolveBlob(res, mimeType, fileName) {
  const aLink = document.createElement("a");
  var blob = new Blob([res.data], { type: mimeType });
  // //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
  var patt = new RegExp("filename=([^;]+\\.[^\\.;]+);*");
  // var contentDisposition = decodeURI(res.headers['content-disposition'])
  // var result = patt.exec(contentDisposition)
  // var fileName = result[1]
  aLink.href = URL.createObjectURL(blob);
  aLink.setAttribute("download", fileName); // 设置下载文件名称
  document.body.appendChild(aLink);
  aLink.click();
  document.body.removeChild(aLink);
}

// excel导出请求
export function downLoadXlsx(str, data, fileName) {
  var url = baseUrl + str;
  return new Promise((resolve, reject) => {
    axios({
      method: "post",
      url: url,
      data: data,
      responseType: "blob",
      headers: { Authorization: getToken() },
      // headers: { 'Authorization': decodeURIComponent(getToken()) }
      //uat环境token需要做url解码处理
    })
      .then((res) => {
        if (res.status === 200) {
          downLoadExcal(res, fileName);
        }
        resolve(res);
      })
      .catch((err) => {
        reject(err);
      });
  });
}

//excel导出下载
export function downLoadExcal(val, filename) {
  const aLink = document.createElement("a");
  const fileName = filename + ".xlsx";
  aLink.href = URL.createObjectURL(val.data);
  aLink.setAttribute("download", fileName); // 设置下载文件名称
  document.body.appendChild(aLink);
  aLink.click();
  document.body.removeChild(aLink);
}

//航班预审导出
export function cargoXlsxPre(str, data) {
  var url = baseUrl + str;
  return new Promise((resolve, reject) => {
    axios({
      method: "post",
      url: url,
      data: data,
      responseType: "blob",
      headers: { Authorization: getToken() },
    })
      .then((res) => {
        if (res.status === 200) {
          cargoTableXlsxPre(res);
        }
        resolve();
      })
      .catch((err) => {
        reject(err);
      });
  });
}

//航班预审导出
export function cargoTableXlsxPre(val) {
  const aLink = document.createElement("a");
  const fileName = "航班预审表.xlsx";
  aLink.href = URL.createObjectURL(val.data);
  aLink.setAttribute("download", fileName); // 设置下载文件名称
  document.body.appendChild(aLink);
  aLink.click();
  document.body.removeChild(aLink);
}

export function downLoadFile(str, data, filename) {
  // var url = baseUrl + str;
  // const aLink = document.createElement("a");
  // aLink.href = URL.createObjectURL(data);
  // aLink.setAttribute("download", filename); // 设置下载文件名称
  // document.body.appendChild(aLink);
  // aLink.click();
  // document.body.removeChild(aLink);
  var url = baseUrl + str;
  return new Promise((resolve, reject) => {
    axios({
      method: "get",
      url: url,
      params: {
        fileId: data,
      },
      responseType: "blob",
      headers: { Authorization: getToken() },
    })
      .then((res) => {
        const aLink = document.createElement("a");
        aLink.href = URL.createObjectURL(res.data);
        aLink.setAttribute("download", filename); // 设置下载文件名称
        document.body.appendChild(aLink);
        aLink.click();
        document.body.removeChild(aLink);

        // resolveBlob(res, mimeMap.pdf, filename);
        resolve(res);
        // console.log(type.toLowerCase());
        // resolveBlob(res, mimeMap[type.toLowerCase()], filename, type.toLowerCase())

      })
      .catch((err) => {
        reject(err);
      });
  });



}

//异步上传报关文件
export function uploadCustomsFileAsync(str, data) {

  var url = baseUrl + str;
  return new Promise((resolve, reject) => {
    axios({
      method: "post",
      url: url,
      data: data,
      responseType: "blob",
      headers: { Authorization: getToken() },
    })
      .then((res) => {
        resolve(res);
      })
      .catch((err) => {
        reject(err);
      });
  });


}