1、引入
import store from '@/store'
import { Modal } from 'iview'
import router from '@/router'
import { loginOut } from '@/api/user'
2、设置拦截处理
// 响应拦截
instance.interceptors.response.use(res => {
this.destroy(url)
const { data, status } = res
// 登录超时
if(res.status === 200 && res.data.code === 1000){
Modal.warning({
title: "登录超时",
content: "请重新登录",
onOk: () => {
new Promise((resolve, reject) => {
// 调用接口,清除vuex数据
loginOut().then(() => {
store.commit('setToken', '')
store.commit('setAccess', [])
router.push({ name: 'login' })
resolve()
}).catch(err => {
reject(err)
})
})
},
});
}
return { data, status }
}, error => {
this.destroy(url)
let errorInfo = error.response
if (!errorInfo) {
const { request: { statusText, status }, config } = JSON.parse(JSON.stringify(error))
errorInfo = {
statusText,
status,
request: { responseURL: config.url }
}
}
addErrorLog(errorInfo)
return Promise.reject(error)
})