超时遮罩封装

This commit is contained in:
pixel
2019-12-27 16:28:41 +08:00
parent 51f613c7fb
commit 22820d9983
2 changed files with 35 additions and 4 deletions

View File

@@ -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,