添加全局loading

上级 c325e758
<template> <template>
<section class="app-main"> <section class="app-main loadingtext">
<transition name="fade-transform" mode="out-in"> <transition name="fade-transform" mode="out-in">
<keep-alive :include="cachedViews"> <keep-alive :include="cachedViews">
<router-view :key="key" /> <router-view :key="key" />
......
import axios from 'axios' import axios from 'axios'
import {Notification, MessageBox, Message} from 'element-ui' import {Notification, MessageBox, Message, Loading} from 'element-ui'
import store from '@/store' import store from '@/store'
import {getToken} from '@/utils/auth' import {getToken} from '@/utils/auth'
import errorCode from '@/utils/errorCode' import errorCode from '@/utils/errorCode'
let loadingRequestCount = 0
let loadingInstance
const showLoading = () => {
if (loadingRequestCount === 0) {
loadingInstance = Loading.service({ target: '.loadingtext'})
}
loadingRequestCount++
}
const hideLoading = () => {
if (loadingRequestCount <= 0) return
loadingRequestCount--
if (loadingRequestCount === 0) {
loadingInstance.close()
}
}
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例 // 创建axios实例
const service = axios.create({ const service = axios.create({
...@@ -14,6 +32,8 @@ const service = axios.create({ ...@@ -14,6 +32,8 @@ const service = axios.create({
}) })
// request拦截器 // request拦截器
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
showLoading()
// 是否需要设置 token // 是否需要设置 token
const isToken = (config.headers || {}).isToken === false const isToken = (config.headers || {}).isToken === false
if (getToken() && !isToken) { if (getToken() && !isToken) {
...@@ -28,6 +48,10 @@ service.interceptors.request.use(config => { ...@@ -28,6 +48,10 @@ service.interceptors.request.use(config => {
// 响应拦截器 // 响应拦截器
service.interceptors.response.use(res => { service.interceptors.response.use(res => {
setTimeout(() => {
hideLoading()
}, 200)
// 未设置状态码则默认成功状态 // 未设置状态码则默认成功状态
const code = res.data.code || 200; const code = res.data.code || 200;
// 返回所有数据的统一处理 // 返回所有数据的统一处理
...@@ -90,6 +114,10 @@ service.interceptors.response.use(res => { ...@@ -90,6 +114,10 @@ service.interceptors.response.use(res => {
return res.data return res.data
} }
}, error => { }, error => {
setTimeout(() => {
hideLoading()
}, 200)
// --- start ---- 开发时候用这段,把错误彻底抛出来 --- start --- // --- start ---- 开发时候用这段,把错误彻底抛出来 --- start ---
let {message} = error; let {message} = error;
if (message == 'Network Error') { if (message == 'Network Error') {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论