|
@@ -1,6 +1,8 @@
|
|
|
import axios, { AxiosError, type AxiosInstance, type AxiosRequestConfig, type AxiosResponse, type InternalAxiosRequestConfig } from 'axios'
|
|
|
import { ResultEnum } from '@/enums/HttpEnum'
|
|
|
import { defaultRequestInterceptors, defaultResponseInterceptors } from './config'
|
|
|
+import { checkStatus } from './checkStatus'
|
|
|
+import router from '@/router'
|
|
|
interface RequestInterceptors<T> {
|
|
|
// 请求拦截
|
|
|
requestInterceptors?: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig
|
|
@@ -44,8 +46,14 @@ axiosInstance.interceptors.response.use(
|
|
|
return res
|
|
|
},
|
|
|
(error: AxiosError) => {
|
|
|
- ElMessage.error('服务未连接!')
|
|
|
- console.error('response.use: ' + error)
|
|
|
+ const { response } = error
|
|
|
+ // 请求超时 && 网络错误单独判断,没有 response
|
|
|
+ if (error.message.indexOf('timeout') !== -1) ElMessage.error('请求超时!请您稍后重试')
|
|
|
+ if (error.message.indexOf('Network Error') !== -1) ElMessage.error('网络错误!请您稍后重试')
|
|
|
+ // 根据服务器响应的错误状态码,做不同的处理
|
|
|
+ if (response) checkStatus(response.status)
|
|
|
+ // 服务器结果都没有返回(可能服务器错误可能客户端断网),断网处理:可以跳转到断网页面
|
|
|
+ if (!window.navigator.onLine) router.replace('/500')
|
|
|
return Promise.reject(error)
|
|
|
}
|
|
|
)
|