123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import axios from 'axios'
- import qs from 'qs'
- import {
- getToken
- } from '@/utils/auth'
- // import load from '@/utils/loading'
- import cleanDeep from 'clean-deep'
- /**
- * 导出模板
- * @param {*} params
- * params: {
- * url: xxx,
- * params: {},
- * fileName: xxx.xls
- * }
- */
- export const Export = (that, params, message, func) => {
- // 报表导出
- let url = params.url
- const options = {
- method: params.method ? params.method : 'get',
- headers: {
- Authorization: getToken()
- },
- // params: params.params,
- url,
- responseType: "blob"
- };
- if (options.method == 'post') {
- options.data = params.params
- } else {
- options.params = params.params
- }
- that.$confirm((message || "您确定下载模板"), "提示", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning"
- })
- .then(() => {
- // load.startLoading()
- axios(cleanDeep(options)).then(res => {
- let blob = new Blob([res.data], {
- // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
- type: "application/vnd.ms-excel;charset=utf-8"
- //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
- });
- let text = (new Response(blob)).text()
- text.then(res => {
- // 判断是否报错
- if (res.indexOf('code') != -1) {
- let json = JSON.parse(res)
- if (json.code == 403) {
- that.$message.error(`登录过期,请重新登录!`)
- setTimeout(() => {
- that.$store.dispatch('user/resetToken').then(() => {
- location.reload()
- })
- }, 1000);
- return
- } else if(json.code == 200){
- that.$message.success(json.msg || json.message)
- } else {
- that.$message.error(json.msg || json.message)
- }
- if (func) {
- func()
- }
- } else {
- let objectUrl = URL.createObjectURL(blob);
- let link = document.createElement("a");
- let fname = params.fileName || "导出文件.xls"; //下载文件的名字
- link.href = objectUrl;
- link.setAttribute("download", fname);
- document.body.appendChild(link);
- link.click();
- if (func) {
- func()
- }
- }
- })
- // load.endLoading();
- }).catch(error => {
- console.log(error)
- that.$message.error('下载失败,请联系管理员');
- // load.endLoading();
- });
- })
- .catch(() => {});
- }
|