From cd3c32c3dada0fce5d4a208283254ffdd1018b0b Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Mon, 13 Jun 2022 18:29:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=87=E6=8D=A2=E4=BB=AA=E8=A1=A8?= =?UTF-8?q?=E6=9D=BF=E8=87=AA=E5=8A=A8=E5=8F=96=E6=B6=88=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90=E7=9A=84=E6=95=B0=E6=8D=AE=E8=AF=B7?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canvas/components/Editor/Preview.vue | 4 ++++ frontend/src/main.js | 14 ++++++++++++++ frontend/src/utils/request.js | 7 +++++++ 3 files changed, 25 insertions(+) diff --git a/frontend/src/components/canvas/components/Editor/Preview.vue b/frontend/src/components/canvas/components/Editor/Preview.vue index 19a7d214cc..aeb4046729 100644 --- a/frontend/src/components/canvas/components/Editor/Preview.vue +++ b/frontend/src/components/canvas/components/Editor/Preview.vue @@ -173,6 +173,10 @@ export default { } }, created() { + // 取消视图请求 + this.$cancelRequest('/chart/view/getData/**') + this.$cancelRequest('/api/link/viewDetail/**') + this.$cancelRequest('/static-resource/**') }, computed: { mainActiveName() { diff --git a/frontend/src/main.js b/frontend/src/main.js index 0bd473aca9..de2901acca 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -118,6 +118,20 @@ Vue.prototype.checkPermission = function(pers) { return hasPermission } 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({ router, diff --git a/frontend/src/utils/request.js b/frontend/src/utils/request.js index dc79cca838..05a275a803 100644 --- a/frontend/src/utils/request.js +++ b/frontend/src/utils/request.js @@ -6,6 +6,7 @@ import Config from '@/settings' import i18n from '@/lang' import { tryShowLoading, tryHideLoading } from './loading' import { getLinkToken, setLinkToken } from '@/utils/auth' +import Vue from 'vue' const TokenKey = Config.TokenKey const RefreshTokenKey = Config.RefreshTokenKey @@ -49,6 +50,7 @@ let service = axios.create({ // request interceptor service.interceptors.request.use( config => { + const CancelToken = axios.CancelToken const idToken = getIdToken() if (idToken) { config.headers[Config.IdTokenKey] = idToken @@ -72,6 +74,10 @@ service.interceptors.request.use( } config.loading && tryShowLoading(store.getters.currentPath) + config.cancelToken = new CancelToken(function executor(c) { + Vue.prototype.$currentHttpRequestList.set(config.url, c) + }) + return config }, error => { @@ -91,6 +97,7 @@ service.setTimeOut = time => { service.interceptors.response.use(response => { response.config.loading && tryHideLoading(store.getters.currentPath) checkAuth(response) + Vue.prototype.$currentHttpRequestList.delete(response.config.url) return response.data }, error => { const config = error.response && error.response.config || error.config