require('es6-promise').polyfill(); import axios from 'axios' axios.defaults.withCredentials = true; //跨域 axios.defaults.timeout = 10000; axios.defaults.headers.post['Content-Type'] = 'application/x-www=form-urlencoded'; import utils from '../../common/utils' if(utils.getJwt()){ axios.defaults.headers['Authorization'] = 'Bearer '+utils.getJwt(); } //axios.defaults.headers['Authorization'] = '' // 请求之前拦截 /*axios.interceptors.request.use(config => { // 判断token let token = sessionStorage.getItem('Authorization'); if (!config.headers.hasOwnProperty('Authorization') && token) { config.headers.Authorization = token; } return config; },error =>{ alert("参数错误", 'fail'); return Promise.reject(error) });*/ export default { //get请求 requestGet (url, params = {}) { return new Promise((resolve, reject) => { axios.get(url, params).then(res => { resolve(res.data) }).catch(error => { reject(error) }) }) }, //get请求不带参数 requestQuickGet (url) { return new Promise((resolve, reject) => { axios.get(url).then(res => { resolve(res.data) }).catch(error => { reject(error) }) }) }, //get请求 后台接口下载 requestGetDownLoad (url) { return new Promise((resolve, reject) => { axios({ method: 'GET', url: url, headers: { 'Access-Control-Expose-Headers':'content-disposition' }, responseType: 'blob', //二进制流 }).then(res => { if (res.data.type === 'application/json') { let reader = new FileReader(); reader.readAsText(res.data, 'utf-8'); reader.onload = (e) => { JSON.parse(reader.result); resolve(JSON.parse(reader.result)); } } else { let blob = new Blob([res.data]); let fileName = decodeURI(res.headers['content-disposition'].split(";")[1].split("fileName=")[1]); if(window.navigator.msSaveOrOpenBlob){ navigator.msSaveBlob(blob,fileName); }else { let a = document.createElement('a'); a.download = fileName; a.href = window.URL.createObjectURL(blob); a.click(); } } }).catch(error => { reject(error) }) }) }, requestXlsDownLoad(url, fileName){ return new Promise((resolve, reject) => { axios({ method: 'GET', url: url, headers: { 'Access-Control-Expose-Headers':'content-disposition' }, responseType: 'blob', //二进制流 }).then(res => { if (!res.data) { this.$message.warning("文件下载失败") return } //let fileName = decodeURI(res.headers['content-disposition'].split(";")[1].split("filename=")[1]); if (typeof window.navigator.msSaveBlob !== 'undefined') { window.navigator.msSaveBlob(new Blob([res.data],{type: 'application/vnd.ms-excel'}), fileName+'.xls') }else{ let url = window.URL.createObjectURL(new Blob([res.data],{type: 'application/vnd.ms-excel'})) let link = document.createElement('a') link.style.display = 'none' link.href = url link.setAttribute('download', fileName+'.xls') document.body.appendChild(link) link.click() document.body.removeChild(link); //下载完成移除元素 window.URL.revokeObjectURL(url); //释放掉blob对象 } }).catch(error => { reject(error) }) }) }, //get请求 后台接口预览 requestGetInfo (url) { return new Promise((resolve, reject) => { axios({ method: 'GET', url: url, responseType: 'blob', }).then(res => { if (res.data.type === 'application/json') { let reader = new FileReader(); reader.readAsText(res.data, 'utf-8'); reader.onload = (e) => { JSON.parse(reader.result); resolve(JSON.parse(reader.result)); } } else { resolve(res.data) } }).catch(error => { reject(error) }) }) }, //post请求 requestPost (url, params = {}) { return new Promise((resolve, reject) => { axios.post(url, params, { timeout : 1000 * 60 * 30 }).then(res => { resolve(res.data) }).catch(error => { reject(error) }) }) }, //post form表单请求 requestPostForm (url, params = {}) { return new Promise((resolve, reject) => { axios.post(url, params, { headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, }).then(res => { resolve(res.data)//注意res是axios封装的对象,res.data才是服务端返回的信息 }).catch(error => { reject(error) }) }) }, //post 文件上传请求 requestPostUpload (url, params = {},uploader) { return new Promise((resolve, reject) => { axios.post(url, params, { timeout: 1000 * 60 * 10, headers: { 'Content-Type': 'multipart/form-data', }, onUploadProgress: progressEvent => { let percent=(progressEvent.loaded / progressEvent.total * 100) | 0; //调用onProgress方法来显示进度条,需要传递个对象 percent为进度值 uploader.onProgress({percent:percent}) } }).then(res => { resolve(res.data)//注意res是axios封装的对象,res.data才是服务端返回的信息 }).catch(error => { reject(error) }) }) }, //put请求 requestPut (url, params = {}) { return new Promise((resolve, reject) => { axios.put(url, params).then(res => { resolve(res.data) }).catch(error => { reject(error) }) }) }, //delete请求 requestDelete (url, params = {}) { return new Promise((resolve, reject) => { axios.delete(url, params).then(res => { resolve(res.data) }).catch(error => { reject(error) }) }) }, //delete请求 requestQuikDelete (url) { return new Promise((resolve, reject) => { axios.delete(url).then(res => { resolve(res.data) }).catch(error => { reject(error) }) }) } }