You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.5 KiB
135 lines
3.5 KiB
// 引入axios
|
|
import Vue from 'vue'
|
|
import promise from 'es6-promise'
|
|
import axios from 'axios'
|
|
import qs from 'qs'
|
|
import store from '@/store/index'
|
|
import router from '../router'
|
|
// import localStorage from '../storage/localStorage'
|
|
import Cookie from 'js-cookie'
|
|
promise.polyfill()
|
|
|
|
export const baseURL = (process.env.NODE_ENV === 'production') ? 'http://36.138.125.206:8081/ceres-app-api' : '/api'
|
|
export const uploadURL = 'http://36.138.125.206:8081/ceres-app-api/api'
|
|
|
|
// export const baseURL = (process.env.NODE_ENV === 'production') ? 'https://wechat.hnthee.com/ceres-app-api' : '/api'
|
|
// export const uploadURL = 'https://wechat.hnthee.com/ceres-app-api/api'
|
|
|
|
const service = axios.create({
|
|
baseURL,
|
|
headers: {
|
|
'X-Requested-With': 'XMLHttpRequest'
|
|
},
|
|
withCredentials: true,
|
|
timeout: 20000 // 请求超时 20s
|
|
})
|
|
|
|
// 请求拦截器
|
|
service.interceptors.request.use(config => {
|
|
// 是否为当前的请求加上请求头 token
|
|
// if (localStorage.get('token')) {
|
|
// config.headers['x-auth-token'] = localStorage.get('token')
|
|
// }
|
|
|
|
if (Cookie.get('token')) {
|
|
config.headers['Authorization'] = Cookie.get('token')
|
|
}
|
|
config.headers['language'] = localStorage.getItem("language") || 'zh'
|
|
|
|
config.paramsSerializer = function(params) {
|
|
let result = qs.stringify(params, { arrayFormat: 'repeat' })
|
|
return result
|
|
}
|
|
|
|
var fullUrl = window.location.search;
|
|
if (fullUrl.indexOf("?") != -1) {
|
|
fullUrl = fullUrl.substring(1);
|
|
var paramStrs = fullUrl.split("&");
|
|
for(let i=0;i<paramStrs.length;i++){
|
|
const newStrs = paramStrs[i].split("=");
|
|
if(newStrs[0] === 'project'){
|
|
config.headers['project'] = newStrs[1]
|
|
return config
|
|
}
|
|
}
|
|
config.headers['project'] = '0'
|
|
}else{
|
|
config.headers['project'] = '0'
|
|
}
|
|
|
|
return config
|
|
}, error => {
|
|
return Promise.reject(error)
|
|
})
|
|
|
|
// 响应拦截器
|
|
service.interceptors.response.use(
|
|
(response) => {
|
|
if (response.data.code === '20005' || response.data.code === '20004') {
|
|
store.commit('resetVuex')
|
|
Cookie.remove('token')
|
|
store.commit('IS_LOGIN', false) // 清除顶部导航栏数据
|
|
store.commit('SHOW_LOGIN') // 展示登录弹框
|
|
}
|
|
return response
|
|
},
|
|
err => {
|
|
// 失败响应
|
|
if (err && err.response) {
|
|
switch (err.response.status) {
|
|
case 400:
|
|
err.message = '请求无效,请检查参数是否正确!'
|
|
break
|
|
|
|
case 401:
|
|
err.message = '未经授权,访问被拒!'
|
|
break
|
|
|
|
case 403:
|
|
err.message = '拒绝访问!'
|
|
break
|
|
|
|
case 404:
|
|
err.message = `地址不存在!`
|
|
break
|
|
|
|
case 408:
|
|
err.message = '请求超时!'
|
|
break
|
|
|
|
case 500:
|
|
err.message = '系统错误!'
|
|
break
|
|
|
|
case 501:
|
|
err.message = '该方法未实现!'
|
|
break
|
|
|
|
case 502:
|
|
err.message = '网管出错!'
|
|
break
|
|
|
|
case 503:
|
|
err.message = '服务不可用!'
|
|
break
|
|
|
|
case 504:
|
|
err.message = '网关请求超时'
|
|
break
|
|
|
|
case 505:
|
|
err.message = 'HTTP版本不受支持'
|
|
break
|
|
|
|
default:
|
|
}
|
|
if (err.response.data.error) {
|
|
err.message = err.response.data.error
|
|
}
|
|
Vue.prototype.$message.closeAll()
|
|
// Vue.prototype.$message.error(err.message)
|
|
// router.push({name: 'error', params: {message: err.message, status: err.response.status}})
|
|
}
|
|
}
|
|
)
|
|
export default service
|