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)
})