forked from github/dataease
feat: 切换仪表板自动取消之前未完成的数据请求
This commit is contained in:
parent
64ce697bcf
commit
cd3c32c3da
@ -173,6 +173,10 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
// 取消视图请求
|
||||||
|
this.$cancelRequest('/chart/view/getData/**')
|
||||||
|
this.$cancelRequest('/api/link/viewDetail/**')
|
||||||
|
this.$cancelRequest('/static-resource/**')
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
mainActiveName() {
|
mainActiveName() {
|
||||||
|
@ -118,6 +118,20 @@ Vue.prototype.checkPermission = function(pers) {
|
|||||||
return hasPermission
|
return hasPermission
|
||||||
}
|
}
|
||||||
Vue.use(deWebsocket)
|
Vue.use(deWebsocket)
|
||||||
|
|
||||||
|
Vue.prototype.$currentHttpRequestList = new Map()
|
||||||
|
Vue.prototype.$cancelRequest = function(cancelkey) {
|
||||||
|
if (cancelkey) {
|
||||||
|
if (cancelkey.indexOf('/**') > -1) {
|
||||||
|
Vue.prototype.$currentHttpRequestList.forEach((item, key) => {
|
||||||
|
key.indexOf(cancelkey.split('/**')[0]) > -1 && item('Operation canceled by the user.')
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
Vue.prototype.$currentHttpRequestList.get(cancelkey) && Vue.prototype.$currentHttpRequestList.get(cancelkey)('Operation canceled by the user.')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
|
|
||||||
router,
|
router,
|
||||||
|
@ -6,6 +6,7 @@ import Config from '@/settings'
|
|||||||
import i18n from '@/lang'
|
import i18n from '@/lang'
|
||||||
import { tryShowLoading, tryHideLoading } from './loading'
|
import { tryShowLoading, tryHideLoading } from './loading'
|
||||||
import { getLinkToken, setLinkToken } from '@/utils/auth'
|
import { getLinkToken, setLinkToken } from '@/utils/auth'
|
||||||
|
import Vue from 'vue'
|
||||||
|
|
||||||
const TokenKey = Config.TokenKey
|
const TokenKey = Config.TokenKey
|
||||||
const RefreshTokenKey = Config.RefreshTokenKey
|
const RefreshTokenKey = Config.RefreshTokenKey
|
||||||
@ -49,6 +50,7 @@ let service = axios.create({
|
|||||||
// request interceptor
|
// request interceptor
|
||||||
service.interceptors.request.use(
|
service.interceptors.request.use(
|
||||||
config => {
|
config => {
|
||||||
|
const CancelToken = axios.CancelToken
|
||||||
const idToken = getIdToken()
|
const idToken = getIdToken()
|
||||||
if (idToken) {
|
if (idToken) {
|
||||||
config.headers[Config.IdTokenKey] = idToken
|
config.headers[Config.IdTokenKey] = idToken
|
||||||
@ -72,6 +74,10 @@ service.interceptors.request.use(
|
|||||||
}
|
}
|
||||||
config.loading && tryShowLoading(store.getters.currentPath)
|
config.loading && tryShowLoading(store.getters.currentPath)
|
||||||
|
|
||||||
|
config.cancelToken = new CancelToken(function executor(c) {
|
||||||
|
Vue.prototype.$currentHttpRequestList.set(config.url, c)
|
||||||
|
})
|
||||||
|
|
||||||
return config
|
return config
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
@ -91,6 +97,7 @@ service.setTimeOut = time => {
|
|||||||
service.interceptors.response.use(response => {
|
service.interceptors.response.use(response => {
|
||||||
response.config.loading && tryHideLoading(store.getters.currentPath)
|
response.config.loading && tryHideLoading(store.getters.currentPath)
|
||||||
checkAuth(response)
|
checkAuth(response)
|
||||||
|
Vue.prototype.$currentHttpRequestList.delete(response.config.url)
|
||||||
return response.data
|
return response.data
|
||||||
}, error => {
|
}, error => {
|
||||||
const config = error.response && error.response.config || error.config
|
const config = error.response && error.response.config || error.config
|
||||||
|
Loading…
Reference in New Issue
Block a user