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)
|
})
|
})
|
}
|
}
|