128 lines
4.0 KiB
Plaintext
128 lines
4.0 KiB
Plaintext
import axios from 'axios'
|
|
import { Message, MessageBox, Alert } from 'element-ui'
|
|
import store from '@/store'
|
|
import router from '@/router'
|
|
import Vue from 'vue'
|
|
axios.defaults.withCredentials = false
|
|
const service = axios.create({
|
|
baseURL: '/api',
|
|
timeout: 2 * 360000, // request timeout
|
|
withCredentials: false
|
|
})
|
|
var path
|
|
// request interceptor
|
|
service.interceptors.request.use(
|
|
config => {
|
|
path = router && router.app && router.app._route && router.app._route.path
|
|
config.headers['Content-Type'] = 'application/json;charset=UTF-8'
|
|
if (store.getters.token) {
|
|
config.headers.Authorization = `Bearer ${store.getters.token}`
|
|
}
|
|
try {
|
|
if (eval(process.env.VUE_APP_LOGIN_FOR_PERMISSION)) {
|
|
if (!path || path === '/login' || path === '/researchForm' || path === '/researchLogin' || path === '/email-recompose' || path === '/recompose' || path === '/resetpassword' || path === '/error') {
|
|
return config
|
|
}
|
|
if (store.state.user.userId !== zzSessionStorage.getItem('userId')) {
|
|
window.location.href = `/login`
|
|
zzSessionStorage.removeItem('lastWorkbench')
|
|
Alert('同一浏览器只允许同时登陆一个账户', {
|
|
type: 'warning',
|
|
})
|
|
}
|
|
}
|
|
} catch (e) {
|
|
console.log(e)
|
|
}
|
|
return config
|
|
},
|
|
error => {
|
|
// console.log(error)
|
|
return Promise.reject(error)
|
|
}
|
|
)
|
|
|
|
service.interceptors.response.use(
|
|
response => {
|
|
const res = response.data
|
|
if (res.IsSuccess) {
|
|
return Promise.resolve(res)
|
|
} else if (res.IsSuccess === false) {
|
|
if (res.Code !== 5) {
|
|
MessageBox.confirm(res.ErrorMessage, {
|
|
type: 'warning',
|
|
showCancelButton: false,
|
|
confirmButtonText: '确定',
|
|
callback: action => {}
|
|
})
|
|
}
|
|
return Promise.reject(res)
|
|
} else {
|
|
return Promise.resolve(res)
|
|
}
|
|
},
|
|
error => {
|
|
var message = ''
|
|
if (error && error.response) {
|
|
const status = error.response.status
|
|
if (error.response.data && error.response.data.Code === -1) {
|
|
store.dispatch('user/logout').then(() => {
|
|
router.push(`/login`)
|
|
})
|
|
}
|
|
switch (status) {
|
|
case 400: message = '请求错误'; break
|
|
case 401: message = '未授权或登陆超时,请重新登录'; break
|
|
case 403: message = error.response.data.ErrorMessage; break
|
|
case 404: message = `请求地址出错`; break
|
|
case 405: message = `接口参数传递错误,或者请求方法不一致`; break
|
|
case 408: message = '请求超时'; break
|
|
case 429: message = '应用服务限流,您的请求过于频繁,请稍后再试'; break
|
|
case 500: message = '服务器内部错误,无法完成请求;可能正在发布中,请联系管理员处理'; break
|
|
case 501: message = '服务未实现'; break
|
|
case 502: message = '系统正在升级,请耐心等待。'; break
|
|
case 503: message = '服务不可用'; break
|
|
case 504: message = '网关超时'; break
|
|
case 505: message = 'HTTP版本不受支持'; break
|
|
default: break
|
|
}
|
|
if (error.response.status === 401) {
|
|
if (store.getters.token) {
|
|
if(message !== ''){
|
|
Message({
|
|
message: message,
|
|
type: 'warning',
|
|
showClose: true
|
|
})
|
|
}
|
|
store.dispatch('user/logout').then(() => {
|
|
router.push(`/login`)
|
|
})
|
|
} else {
|
|
Message({
|
|
message: '您无权访问接口',
|
|
type: 'warning',
|
|
showClose: true
|
|
})
|
|
}
|
|
} else {
|
|
if(message !== ''){
|
|
MessageBox.confirm(message, '警告', {
|
|
type: 'warning',
|
|
showCancelButton: false,
|
|
confirmButtonText: '确定',
|
|
callback: action => {}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
return Promise.reject(new Error(message || 'Error'))
|
|
}
|
|
)
|
|
|
|
|
|
|
|
|
|
export default service
|