import axios, {AxiosError, AxiosResponse} from 'axios'
|
import { Session } from '@/utils/storage'
|
import { ElMessage } from 'element-plus'
|
import { ipcRenderer } from 'electron'
|
|
|
let BASE_URL = 'https://hemobs.icoldchain.cn'
|
const TIME_OUT = 10 * 1000
|
|
// setTimeout(()=>{
|
// console.log('重新赋值api',confingInfoStore().confingInfo)
|
// BASE_URL=confingInfoStore().confingInfo.base_api
|
// },10000)
|
/**
|
* 创建axios实例
|
*/
|
const instance = axios.create({
|
baseURL: BASE_URL,
|
timeout: TIME_OUT
|
})
|
|
const errorHandle = (status: number, error:any): void => {
|
// HTTP状态码判断
|
switch (status) {
|
case 401:
|
ElMessage.error(`Error Code: ${status}, Message: ${error.msg || '登录失效,请重新登录'}`)
|
case 403:
|
ElMessage.error(`Error Code: ${status}, Message: ${error.msg || '你没有访问权限'}`)
|
case 500:
|
ElMessage.error(`Error Code: ${status}, Message: ${error.msg || '后台错误,请联系管理员'}`)
|
case 502:
|
ElMessage.error(`Error Code: ${status}, Message: ${error.msg || '平台环境异常'}`)
|
default:
|
ElMessage.error(`Error Code: ${status}, Message: ${error.msg || '未知错误,请刷新重试'}`)
|
|
}
|
}
|
|
// 前置拦截器(发起请求之前的拦截)
|
instance.interceptors.request.use(
|
(response:any) =>{
|
if (Session.get('token')) {
|
response.headers.common['Authorization'] = 'Bearer '+ `${Session.get('token')}`
|
}
|
ipcRenderer.invoke('logger', `http请求参数:${JSON.stringify(response)}`)
|
return response
|
},
|
(error) => Promise.reject(error)
|
)
|
|
// 后置拦截器(获取到响应时的拦截)
|
instance.interceptors.response.use(
|
(res: AxiosResponse) => {
|
ipcRenderer.invoke('logger', `http响应参数:${JSON.stringify(res)}`)
|
if (String(res.status).indexOf('2') !== 0) {
|
return {
|
code: res.status,
|
message: res.data.message || '请求异常,请刷新重试',
|
result: false
|
}
|
}
|
if (res.data.code===200){
|
return res.data
|
}
|
else {
|
ElMessage.error(res.data.message)
|
return Promise.reject(instance.interceptors.response)
|
}
|
},
|
(error: AxiosError) => {
|
if (error && error.response) {
|
// 请求已发出,但是不在2xx的范围
|
errorHandle(error.response.status, error.response)
|
return Promise.reject(error.response)
|
}
|
console.log('网络请求失败, 请刷新重试')
|
return Promise.reject(error)
|
}
|
)
|
|
export default instance
|