import axios from 'axios' import router from '@/router' import { Message } from 'element-ui' import { removeToken, getToken } from '@/utils/auth' // 统一请求路径前缀 const base = process.env.VUE_APP_BASE_API // 超时设定 axios.defaults.timeout = 120000 axios.interceptors.request.use( config => { // console.log('请求拦截器数据', config) return config }, err => { Message.error('请求超时') return Promise.resolve(err) } ) // http response 拦截器 axios.interceptors.response.use( response => { const data = response.data // console.log('响应拦截器数据', response) // console.log('data.code:' + data.code) // 根据返回的code值来做不同的处理(和后端约定) switch (data.code) { case 401: // Message.error('登录失效,请重新登录!') console.log('登录失效,请重新登录!') // 未登录 // removeToken().then(() => { // 清除已登录状态 // router.push('/login') // }) // if (router.history.current.name !== 'login') { // console.log(router.history.current.name) // if (data.msg !== null) { // Message.error(data.msg) // } else { // Message.error('未知错误,请重新登录') // } // } break case 403: // 没有权限 if (data.msg !== null) { Message.error(data.msg) } else { Message.error('未知错误') } break case 500: // 错误 if (data.msg !== null) { Message.error(data.msg) } else { Message.error('未知错误') } break case 99: if (data.msg !== null) { if (data.msg == '登录状态已过期') { // 未登录 // removeToken().then(() => { // 清除已登录状态 // router.push('/login') // }) } else { // Message.error(data.msg) return data } } else { Message.error('未知错误') } break default: return data } return Promise.reject(new Error(response.msg || 'Error')) }, error => { // 返回状态码不为200时候的错误处理 Message.error(error.toString()) if (error.request.responseURL.indexOf('/sys/security/needLogin')) { // removeToken().then(() => { // 清除已登录状态 // router.push('/login') // }) } // return err return Promise.reject(error) } ) export const getRequest = (url, params) => { const accessToken = getToken() console.log(`-------------------${base}${url}`) return axios({ method: 'get', url: `${base}${url}`, params: params, headers: { accessToken: accessToken } }) } export const postRequest = (url, params) => { const accessToken = getToken() return axios({ method: 'post', url: `${base}${url}`, data: params, transformRequest: [ function(data) { let ret = '' for (const it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' } return ret } ], headers: { 'Content-Type': 'application/x-www-form-urlencoded', accessToken: accessToken } }) } export const post = (url, params) => { const accessToken = getToken() return axios({ method: 'post', url: `${base}${url}`, data: params, headers: { 'Content-Type': 'application/json;charset=utf-8', // 'Content-Type': 'multipart/form-data', accessToken: accessToken } }) } // export const postExport = (url, params) => { // const accessToken = getToken() // return axios({ // method: 'post', // url: `${base}${url}`, // data: params, // headers: { // 'Content-Type': 'application/json;charset=utf-8', // // 'Content-Type': 'multipart/form-data', // accessToken: accessToken // }, // responseType: 'blob' // 表明返回服务器返回的数据类型 // }) // } export const putRequest = (url, params) => { const accessToken = getToken() return axios({ method: 'put', url: `${base}${url}`, data: params, transformRequest: [ function(data) { let ret = '' for (const it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' } return ret } ], headers: { 'Content-Type': 'application/x-www-form-urlencoded', accessToken: accessToken } }) } export const deleteRequest = (url, params) => { const accessToken = getToken() return axios({ method: 'delete', url: `${base}${url}`, params: params, headers: { accessToken: accessToken } }) } export const importRequest = (url, params) => { const accessToken = getToken() return axios({ method: 'post', url: `${base}${url}`, data: params, headers: { accessToken: accessToken } }) } export const uploadFileRequest = (url, params) => { const accessToken = getToken() return axios({ method: 'post', url: `${base}${url}`, params: params, headers: { accessToken: accessToken } }) } export const getDownLoadUrl = (url) => { const accessToken = getToken() return base + url + '?accessToken=' + accessToken } export const uploadFileRequestJianCai = (url, params) => { const accessToken = getToken() return axios({ method: 'post', url: `${base}${url}`, data: params, headers: { 'Content-Type': 'multipart/form-data', contentType: false, processData: false, accessToken: accessToken } }) } export const postBodyRequest = (url, params) => { const accessToken = getToken() return axios({ method: 'post', url: `${base}${url}`, data: params, headers: { accessToken: accessToken } }) }