|
@@ -1,89 +1,74 @@
|
|
|
import axios from 'axios'
|
|
import axios from 'axios'
|
|
|
-import { MessageBox, Message } from 'element-ui'
|
|
|
|
|
|
|
+import { MessageBox, Message, Loading } from 'element-ui'
|
|
|
|
|
+
|
|
|
|
|
+let loadingInstance = null
|
|
|
|
|
+let requestCount = 0
|
|
|
|
|
|
|
|
-let acitveAxios = 0
|
|
|
|
|
-let timer
|
|
|
|
|
const showLoading = () => {
|
|
const showLoading = () => {
|
|
|
- acitveAxios++
|
|
|
|
|
- if (timer) {
|
|
|
|
|
- clearTimeout(timer)
|
|
|
|
|
|
|
+ requestCount++
|
|
|
|
|
+ if (requestCount === 1) {
|
|
|
|
|
+ loadingInstance = Loading.service({
|
|
|
|
|
+ target: '.pc-player-container',
|
|
|
|
|
+ text: '加载中...',
|
|
|
|
|
+ background: 'rgba(255,255,255,0.6)'
|
|
|
|
|
+ })
|
|
|
}
|
|
}
|
|
|
- timer = setTimeout(() => {
|
|
|
|
|
- if (acitveAxios > 0) {
|
|
|
|
|
- context.$bus.emit("showLoading")
|
|
|
|
|
- }
|
|
|
|
|
- }, 400);
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const closeLoading = () => {
|
|
const closeLoading = () => {
|
|
|
- acitveAxios--
|
|
|
|
|
- if (acitveAxios <= 0) {
|
|
|
|
|
- clearTimeout(timer)
|
|
|
|
|
- context.$bus.emit("closeLoading")
|
|
|
|
|
|
|
+ requestCount--
|
|
|
|
|
+ if (requestCount <= 0) {
|
|
|
|
|
+ requestCount = 0
|
|
|
|
|
+ if (loadingInstance) {
|
|
|
|
|
+ loadingInstance.close()
|
|
|
|
|
+ loadingInstance = null
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// create an axios instance
|
|
|
|
|
const service = axios.create({
|
|
const service = axios.create({
|
|
|
- baseURL: '/', // url = base url + request url
|
|
|
|
|
- // withCredentials: true, // send cookies when cross-domain requests
|
|
|
|
|
- // timeout: 5000 // request timeout
|
|
|
|
|
|
|
+ baseURL: '/',
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
-// request interceptor
|
|
|
|
|
service.interceptors.request.use(
|
|
service.interceptors.request.use(
|
|
|
config => {
|
|
config => {
|
|
|
- // if (store.getters.token) {
|
|
|
|
|
- // config.headers['x-token'] = localStorage.token
|
|
|
|
|
- // config.headers['x-userId'] = localStorage.userId
|
|
|
|
|
- // }
|
|
|
|
|
|
|
+ if (!config.hideLoading) {
|
|
|
|
|
+ showLoading()
|
|
|
|
|
+ }
|
|
|
return config
|
|
return config
|
|
|
},
|
|
},
|
|
|
error => {
|
|
error => {
|
|
|
- // do something with request error
|
|
|
|
|
- console.log(error) // for debug
|
|
|
|
|
return Promise.reject(error)
|
|
return Promise.reject(error)
|
|
|
}
|
|
}
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-// response interceptor
|
|
|
|
|
service.interceptors.response.use(
|
|
service.interceptors.response.use(
|
|
|
- /**
|
|
|
|
|
- * If you want to get http information such as headers or status
|
|
|
|
|
- * Please return response => response
|
|
|
|
|
- */
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * Determine the request status by custom code
|
|
|
|
|
- * Here is just an example
|
|
|
|
|
- * You can also judge the status by HTTP Status Code
|
|
|
|
|
- */
|
|
|
|
|
response => {
|
|
response => {
|
|
|
- const res = response.data||{}
|
|
|
|
|
- // if the custom code is not 200, it is judged as an error.
|
|
|
|
|
|
|
+ if (!response.config.hideLoading) {
|
|
|
|
|
+ closeLoading()
|
|
|
|
|
+ }
|
|
|
|
|
+ const res = response.data || {}
|
|
|
if (res.code == 200 || res.code == 20000) {
|
|
if (res.code == 200 || res.code == 20000) {
|
|
|
- return Promise.resolve(res )
|
|
|
|
|
- } else if( res.code == 401){
|
|
|
|
|
- // localStorage.removeItem('token')
|
|
|
|
|
- // localStorage.removeItem('paperId')
|
|
|
|
|
- // return Promise.reject( res )
|
|
|
|
|
|
|
+ return Promise.resolve(res)
|
|
|
|
|
+ } else if (res.code == 401) {
|
|
|
Message({
|
|
Message({
|
|
|
message: '用户被踢下线,请重新登入',
|
|
message: '用户被踢下线,请重新登入',
|
|
|
type: 'error',
|
|
type: 'error',
|
|
|
- duration: 5000
|
|
|
|
|
|
|
+ duration: 5000
|
|
|
})
|
|
})
|
|
|
- window.location.href = '/'
|
|
|
|
|
- return Promise.resolve( res )
|
|
|
|
|
- }else {
|
|
|
|
|
|
|
+ window.location.href = '/'
|
|
|
|
|
+ return Promise.resolve(res)
|
|
|
|
|
+ } else {
|
|
|
Message({
|
|
Message({
|
|
|
message: res.msg || 'Error',
|
|
message: res.msg || 'Error',
|
|
|
type: 'error',
|
|
type: 'error',
|
|
|
- duration: 2000
|
|
|
|
|
|
|
+ duration: 2000
|
|
|
})
|
|
})
|
|
|
- return Promise.resolve( res )
|
|
|
|
|
|
|
+ return Promise.resolve(res)
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
error => {
|
|
error => {
|
|
|
|
|
+ closeLoading()
|
|
|
Message({
|
|
Message({
|
|
|
message: error.message,
|
|
message: error.message,
|
|
|
type: 'error',
|
|
type: 'error',
|