123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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) => {
- // 报表导出
- 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)
- that.$message.error(json.msg)
- } 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();
- }
- })
- load.endLoading();
- }).catch(error => {
- that.$message.error('下载失败,请联系管理员');
- load.endLoading();
- });
- })
- .catch(() => {});
- }
|