import axios from 'axios' import qs from 'qs' import { Notification, MessageBox, Message } from 'element-ui' import store from '@/store' import { getToken } from '@/utils/token' import errorCode from '@/utils/errorCode' /** *request请求 axios.request(config) *requestJson请求 axios.request(config) *get请求 axios.get(url[, config]) *post请求 axios.post(url[, data[, config]]) *postJson请求 axios.post(url[, data[, config]]) *put请求 axios.put(url[, data[, config]]) *putJson请求 axios.put(url[, data[, config]]) *patch请求 axios.patch(url[, data[, config]]) *patchJson请求 axios.patch(url[, data[, config]]) *delete请求 axios.delete(url[, config]) */ // const ReLoginUrl=process.env.VUE_APP_LOGIN_URL; const TokenName='XBOE-Access-Token'; /**axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'**/ //只是用于发送json对象数据时使用post,put,patch /**axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'**/ //只是用于发送json对象数据时使用post,put,patch //用于普通的发送请求 const formRequest=axios.create({ // headers:{'Content-Type':'application/x-www-form-urlencoded'}, // axios中请求配置有baseURL选项,表示请求URL公共部分 // baseURL: process.env.VUE_APP_CESOURCE_BASE_API, //超时 timeout: 60000, }) //发送json对象的拦截器 formRequest.interceptors.request.use(config => { //是否需要设置 token const isToken = (config.headers || {}).isToken === false if (getToken() && !isToken) { config.headers[TokenName] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 } return config }, error => { console.log(error) Promise.reject(error) }); formRequest.interceptors.response.use(res => { const code = res.data.status || 200; if(code===200){ return res.data }else{ if(code === 401){ //Message({message: msg, type: 'error'}); store.dispatch('LogOut').then(() => { location.href = this.webBaseUrl + ReLoginUrl; }) }else if(code===403){ var msg='当前操作没有权限'; Message({message: msg, type: 'error'}); return Promise.reject(new Error(msg)) }else{ //Message({message: res.data.message, type: 'error'}); //console.log('err' + res.data.error); return res.data } } }, error => { console.log('err' + error) let { message } = error; if (message == "Network Error") { message = "网络异常,请稍后重试"; } else if (message.includes("timeout")) { message = "网络异常或接口错误,请求超时"; } else if (message.includes("Request failed with status code")) { message = "系统接口" + message.substr(message.length - 3) + "异常"; } Message({ message: message, type: 'error', duration: 5 * 1000 }) return Promise.reject(error) } ) /** * request请求,可以自定义参数 */ const request=formRequest.request; /** * get请求 ,只有url */ const get = function(baseURL,url){ return request({ baseURL, url: url, method: 'get', headers:{'Content-Type':'application/x-www-form-urlencoded'} }) } /** * post请求 * @param {Object} url * @param {Object} postData */ const post=function(baseURL,url,postData){ if(postData){ postData=qs.stringify(postData); } return request({ baseURL, url: url, method: 'post', data:postData, headers:{'Content-Type':'application/x-www-form-urlencoded'} }) } //post请求 const postForm=function(baseURL,url,data){ return request({ baseURL, url, data, method: 'post', headers:{'Content-Type':'application/x-www-form-urlencoded'} }); } // const postJson=jsonRequest.post; const postJson=function(baseURL,url,postData){ return request({ baseURL, url: url, method: 'post', data:postData, headers:{'Content-Type':'application/json;charset=utf-8'}, }) } const postPdf=function(baseURL,url,postData){ return request({ baseURL, url: url, responseType: 'blob', method: 'post', data:postData, headers:{'Content-Type':'application/pdf'}, }) } // 导出文件请求定义 const postJsonToFile=function(baseURL,url,postData){ return request({ baseURL, url: url, method: 'post', data:postData, headers:{'Content-Type':'application/json;charset=utf-8'}, responseType: 'blob' }) } /** * put请求 */ const put=function(baseURL,url,data){ if(data){ data=qs.stringify(data); } return request({ baseURL, url: url, method: 'put', data:data, headers:{'Content-Type':'application/x-www-form-urlencoded'} }) } const putJson=function(baseURL,url,data){ return request({ baseURL, url: url, method: 'put', data:data, headers:{'Content-Type':'application/json;charset=utf-8'}, }) } export default { tokenName:TokenName, request, get, post, postJson, postJsonToFile, put, putJson, postPdf, }