|
|
@ -1,15 +1,36 @@ |
|
|
|
import axios from 'axios'; // 引入axios
|
|
|
|
import { Message } from 'element-ui'; |
|
|
|
import { Message, Loading } from 'element-ui'; |
|
|
|
import { store } from '@/store/index' |
|
|
|
|
|
|
|
const service = axios.create({ |
|
|
|
baseURL: process.env.VUE_APP_BASE_API, |
|
|
|
timeout: 99999 |
|
|
|
}) |
|
|
|
let acitveAxios = 0 |
|
|
|
let loadingInstance |
|
|
|
let timer |
|
|
|
const showLoading = () => { |
|
|
|
acitveAxios++ |
|
|
|
if (timer) { |
|
|
|
clearTimeout(timer) |
|
|
|
} |
|
|
|
timer = setTimeout(() => { |
|
|
|
if (acitveAxios > 0) { |
|
|
|
loadingInstance = Loading.service({ fullscreen: true }) |
|
|
|
} |
|
|
|
}, 400); |
|
|
|
} |
|
|
|
|
|
|
|
//http request 拦截器
|
|
|
|
const closeLoading = () => { |
|
|
|
acitveAxios-- |
|
|
|
if (acitveAxios <= 0) { |
|
|
|
clearTimeout(timer) |
|
|
|
loadingInstance && loadingInstance.close() |
|
|
|
} |
|
|
|
} |
|
|
|
//http request 拦截器
|
|
|
|
service.interceptors.request.use( |
|
|
|
config => { |
|
|
|
showLoading() |
|
|
|
const token = store.getters['user/token'] |
|
|
|
config.data = JSON.stringify(config.data); |
|
|
|
config.headers = { |
|
|
@ -19,6 +40,7 @@ service.interceptors.request.use( |
|
|
|
return config; |
|
|
|
}, |
|
|
|
error => { |
|
|
|
closeLoading() |
|
|
|
Message({ |
|
|
|
showClose: true, |
|
|
|
message: error, |
|
|
@ -32,6 +54,7 @@ service.interceptors.request.use( |
|
|
|
//http response 拦截器
|
|
|
|
service.interceptors.response.use( |
|
|
|
response => { |
|
|
|
closeLoading() |
|
|
|
if (response.data.success) { |
|
|
|
return response.data |
|
|
|
} else { |
|
|
@ -47,6 +70,7 @@ service.interceptors.response.use( |
|
|
|
} |
|
|
|
}, |
|
|
|
error => { |
|
|
|
closeLoading() |
|
|
|
Message({ |
|
|
|
showClose: true, |
|
|
|
message: error, |
|
|
|