|
|
@@ -4,6 +4,7 @@ import {
|
|
|
Message
|
|
|
} from 'element-ui'
|
|
|
import store from '@/store'
|
|
|
+import router from '@/router'
|
|
|
|
|
|
const config = {
|
|
|
baseURL: process.env.VUE_APP_BASE_API,
|
|
|
@@ -122,7 +123,7 @@ function responseInterceptor (response) {
|
|
|
if (!response.config?.custom) {
|
|
|
Message({
|
|
|
type: 'error',
|
|
|
- message: res.errMessage || '请求异常'
|
|
|
+ message: res.errMessage || '请求失败'
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -130,46 +131,84 @@ function responseInterceptor (response) {
|
|
|
}
|
|
|
|
|
|
function responseErrorInterceptor (error) {
|
|
|
- if (!error) {
|
|
|
- return Promise.reject({ isCancel: true })
|
|
|
+ const isCancel = !error || axios.isCancel(error)
|
|
|
+ if (isCancel) {
|
|
|
+ return Promise.reject({ isCancel })
|
|
|
}
|
|
|
- const isCancel = axios.isCancel(error)
|
|
|
+
|
|
|
const { response, config } = error
|
|
|
if (response) {
|
|
|
const { status } = response
|
|
|
if (status === 401) {
|
|
|
- store.dispatch('user/clearToekn')
|
|
|
- // to re-login
|
|
|
- MessageBox.confirm(
|
|
|
- '登录状态已过期,请重新登录',
|
|
|
- '系统提示',
|
|
|
- {
|
|
|
- confirmButtonText: '重新登录',
|
|
|
- center: true,
|
|
|
- showClose: false,
|
|
|
- showCancelButton: false,
|
|
|
- closeOnClickModal: false
|
|
|
+ if (store.getters.token) {
|
|
|
+ try {
|
|
|
+ store.dispatch('user/clearToken')
|
|
|
+ MessageBox.close()
|
|
|
+ } finally {
|
|
|
+ MessageBox.confirm(
|
|
|
+ '登录状态已过期,请重新登录',
|
|
|
+ '系统提示',
|
|
|
+ {
|
|
|
+ type: 'warning',
|
|
|
+ confirmButtonText: '重新登录',
|
|
|
+ center: true,
|
|
|
+ showClose: false,
|
|
|
+ showCancelButton: false,
|
|
|
+ closeOnClickModal: false,
|
|
|
+ closeOnPressEscape: false,
|
|
|
+ closeOnHashChange: false
|
|
|
+ }
|
|
|
+ ).then(() => {
|
|
|
+ store.dispatch('user/logout')
|
|
|
+ })
|
|
|
}
|
|
|
- ).then(() => {
|
|
|
- store.dispatch('user/logout')
|
|
|
- })
|
|
|
- } else if (status === 403) {
|
|
|
+ }
|
|
|
+ return Promise.reject({ isCancel: true })
|
|
|
+ }
|
|
|
+
|
|
|
+ if (status === 403) {
|
|
|
Message({
|
|
|
type: 'warning',
|
|
|
message: '暂无相关权限,请联系管理员'
|
|
|
})
|
|
|
- } else if (!config?.custom) {
|
|
|
+ return Promise.reject({ isCancel: true })
|
|
|
+ }
|
|
|
+
|
|
|
+ if (status === 423) {
|
|
|
+ try {
|
|
|
+ store.dispatch('user/clearToken')
|
|
|
+ MessageBox.close()
|
|
|
+ } finally {
|
|
|
+ MessageBox.confirm(
|
|
|
+ '系统已锁定,请联系管理员',
|
|
|
+ '系统提示',
|
|
|
+ {
|
|
|
+ type: 'warning',
|
|
|
+ showClose: false,
|
|
|
+ showConfirmButton: false,
|
|
|
+ showCancelButton: false,
|
|
|
+ closeOnClickModal: false,
|
|
|
+ closeOnPressEscape: false,
|
|
|
+ closeOnHashChange: false
|
|
|
+ }
|
|
|
+ )
|
|
|
+ router.replace('/error')
|
|
|
+ }
|
|
|
+ return Promise.reject({ isCancel: true })
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!config?.custom) {
|
|
|
const { errMessage, errorMessage } = response.data
|
|
|
Message({
|
|
|
type: 'error',
|
|
|
- message: errMessage || errorMessage || '请求异常'
|
|
|
+ message: errMessage || errorMessage || `请求异常[${status}]`
|
|
|
})
|
|
|
}
|
|
|
- return Promise.reject({ isCancel, ...response.data })
|
|
|
+ return Promise.reject({ ...response.data })
|
|
|
}
|
|
|
|
|
|
let { message } = error
|
|
|
- if (!config?.custom && !isCancel) {
|
|
|
+ if (!config?.custom) {
|
|
|
if (message) {
|
|
|
if (/timeout/.test(message)) {
|
|
|
message = '请求超时'
|
|
|
@@ -182,5 +221,5 @@ function responseErrorInterceptor (error) {
|
|
|
message
|
|
|
})
|
|
|
}
|
|
|
- return Promise.reject({ isCancel, errCode: -1, errMessage: message })
|
|
|
+ return Promise.reject({ errCode: -1, errMessage: message })
|
|
|
}
|