
import axios from 'axios'
import store from '@/store'
import router from '@/router'
import {
Message
} from 'element-ui'
import {
getTime
} from '@/utils/auth'
const timeOut = 3600
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 5000
})
service.interceptors.request.use(config => {
if (store.getters.token) {
if (isCheckTimeOut()) {
store.dispatch('user/logout')
router.push('/login')
return Promise.reject(new Error('token超时了! '))
}
config.headers['Authorization'] = `Bearer ${store.getters.token}`
}
return config
}, error => {
return Promise.reject(error)
})
service.interceptors.response.use(response => {
const {
success,
message,
data
} = response.data
if (success) {
return data
} else {
Message.error(message)
return Promise.reject(new Error(message))
}
}, error => {
if (error.response && error.response.data && error.response.data.code === 10002) {
store.dispatch('user/logout')
router.push('/login')
} else {
Message.error(error.message)
}
return Promise.reject(error)
})
function isCheckTimeOut() {
const currentTime = Date.now()
const timeStamp = getTime()
return (currentTime - timeStamp) / 1000 > timeOut
}
export default service