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(() => { if (top !== window) { // 判断当前是否在iframe内 top.location.href = this.webBaseUrl + ReLoginUrl; } else { window.location.href = this.webBaseUrl + ReLoginUrl; } // 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, }