Commit b06035a8 authored by xhx's avatar xhx

fix:全局请求等待

parent 29a9151e
...@@ -6,6 +6,32 @@ import router from '@/router' ...@@ -6,6 +6,32 @@ import router from '@/router'
let loading: ElLoadingComponent let loading: ElLoadingComponent
function startLoading() {
loading = Loading.service({
target: '.content-r'
})
}
function endLoading() {
loading.close()
}
let requestCount = 0
export function showFullScreenLoading() {
if (requestCount === 0) {
startLoading()
}
requestCount++
}
export function tryHideFullScreenLoading() {
if (requestCount <= 0) return
requestCount--
if (requestCount === 0) {
endLoading()
}
}
const service = axios.create({ const service = axios.create({
baseURL: '/api', baseURL: '/api',
...@@ -13,33 +39,30 @@ const service = axios.create({ ...@@ -13,33 +39,30 @@ const service = axios.create({
}) })
service.interceptors.request.use(function (config) { service.interceptors.request.use(function (config) {
// do something before request is sent
if (getStorage('authToken') && config.url?.indexOf('/login') === -1) { if (getStorage('authToken') && config.url?.indexOf('/login') === -1) {
const str = getStorage('authToken') const str = getStorage('authToken')
config.headers['Auth-Token'] = str config.headers['Auth-Token'] = str
} }
// showFullScreenLoading() showFullScreenLoading()
return config; return config;
}, function (error) { }, function (error) {
// tryHideFullScreenLoading()
return Promise.reject(error); return Promise.reject(error);
}); });
// Add a response interceptor
service.interceptors.response.use( service.interceptors.response.use(
response => { response => {
tryHideFullScreenLoading()
const authToken = response.headers['auth-token'] const authToken = response.headers['auth-token']
if (authToken) { if (authToken) {
saveStorage('authToken', authToken) saveStorage('authToken', authToken)
} }
const res = response.data const res = response.data
// if the custom code is not 200, it is judged as an error. // if the custom code is not 200, it is judged as an error.
// tryHideFullScreenLoading()
return res return res
}, error => { }, error => {
// Do something with response error // Do something with response error
console.log(error.response) tryHideFullScreenLoading()
const REASON = error.response.data?.reason const REASON = error?.response?.data?.reason
if (REASON === 'TOKEN') { if (REASON === 'TOKEN') {
router.push('/login') router.push('/login')
Message({ Message({
...@@ -49,12 +72,11 @@ service.interceptors.response.use( ...@@ -49,12 +72,11 @@ service.interceptors.response.use(
}) })
} else { } else {
Message({ Message({
message: error.response.data.reason || '网络异常', message: error?.response?.data?.reason || '网络异常',
type: 'error', type: 'error',
duration: 3 * 1000 duration: 3 * 1000
}) })
} }
// tryHideFullScreenLoading()
return Promise.reject(error); return Promise.reject(error);
}) })
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment