aops-hermes/0003-Solving-the-query-problem-of-leaving-the-page-polling-interface.patch
2023-10-18 09:47:51 +08:00

156 lines
5.5 KiB
Diff

From c8f6d03755791bea887cc915099344df1c16d19b Mon Sep 17 00:00:00 2001
From: wkl505997900 <2313665567@qq.com>
Date: Thu, 21 Sep 2023 14:33:45 +0800
Subject: [PATCH] fix an polling issue
---
src/views/leaks/HostLeakDetail.vue | 7 +++++++
src/views/leaks/LeakTaskDetail.vue | 21 +++++++++++++--------
src/views/leaks/LeakTaskList.vue | 7 +++++++
src/views/leaks/components/CvesTable.vue | 6 ------
src/views/leaks/components/HostTable.vue | 5 ++---
5 files changed, 29 insertions(+), 17 deletions(-)
diff --git a/src/views/leaks/HostLeakDetail.vue b/src/views/leaks/HostLeakDetail.vue
index 477df57..3327f80 100644
--- a/src/views/leaks/HostLeakDetail.vue
+++ b/src/views/leaks/HostLeakDetail.vue
@@ -257,6 +257,13 @@ export default {
mounted: function () {
this.getDetail();
this.getScanStatue();
+ },
+ beforeDestroy() {
+ // 离开页面前,若当前存在轮询,清除轮询
+ if (this.getScanStatusTimeout) {
+ clearInterval(this.getScanStatusTimeout);
+ this.getScanStatusTimeout = null;
+ }
}
};
</script>
diff --git a/src/views/leaks/LeakTaskDetail.vue b/src/views/leaks/LeakTaskDetail.vue
index 28b7272..f4c84c6 100644
--- a/src/views/leaks/LeakTaskDetail.vue
+++ b/src/views/leaks/LeakTaskDetail.vue
@@ -285,6 +285,8 @@ export default {
expandedRowKeys: [],
rpmrecord: {},
propType: '',
+ // 轮询计时器
+ CveScanStatueTimeout: null,
progressUpdateCaller: null,
reportvisible: false,
runningCveIds: [],
@@ -544,6 +546,7 @@ export default {
updateProgress(taskList) {
const _this = this;
this.progressLoading = true;
+ clearTimeout(this.progressUpdateCaller);
getTaskProgress({taskList})
.then(function (res) {
_this.detail.statuses = res.data.result && res.data.result[_this.taskId];
@@ -628,6 +631,7 @@ export default {
updateCveProgress(taskId, cveList) {
const _this = this;
this.cveProgressIsLoading = true;
+ clearTimeout(this.CveScanStatueTimeout);
getCveProgressUnderCveTask({
taskId,
cveList
@@ -637,7 +641,7 @@ export default {
_this.runningCveIds = _this.getRunningCve(res.data.result);
_this.reportvisible = _this.getReportVisible(res.data.result);
if (_this.runningCveIds.length > 0) {
- setTimeout(function () {
+ _this.CveScanStatueTimeout = setTimeout(function () {
_this.updateCveProgress(taskId, cveList);
}, configs.taskProgressUpdateInterval);
} else {
@@ -860,16 +864,17 @@ export default {
});
}
},
- beforeRouteLeave(to, from, next) {
- // 路由跳转前,清除轮询
- if (this.progressUpdateCaller) {
+ mounted: function () {
+ this.getInitalData();
+ },
+ beforeDestroy() {
+ // 离开页面前,若当前存在轮询,清除轮询
+ if (this.progressUpdateCaller || this.CveScanStatueTimeout) {
clearInterval(this.progressUpdateCaller);
+ clearInterval(this.CveScanStatueTimeout);
this.progressUpdateCaller = null;
+ this.CveScanStatueTimeout = null;
}
- next();
- },
- mounted: function () {
- this.getInitalData();
}
};
</script>
diff --git a/src/views/leaks/LeakTaskList.vue b/src/views/leaks/LeakTaskList.vue
index 262fa42..df8869a 100644
--- a/src/views/leaks/LeakTaskList.vue
+++ b/src/views/leaks/LeakTaskList.vue
@@ -419,6 +419,13 @@ export default {
},
mounted: function () {
this.getTaskList();
+ },
+ beforeDestroy() {
+ // 离开页面前,若当前存在轮询,清除轮询
+ if (this.progressUpdateCaller) {
+ clearInterval(this.progressUpdateCaller);
+ this.progressUpdateCaller = null;
+ }
}
};
</script>
diff --git a/src/views/leaks/components/CvesTable.vue b/src/views/leaks/components/CvesTable.vue
index 47eed62..84e23fb 100644
--- a/src/views/leaks/components/CvesTable.vue
+++ b/src/views/leaks/components/CvesTable.vue
@@ -146,7 +146,6 @@
:row-key="innerrecord => fixed ? record.cve_id + innerrecord.installed_rpm : record.cve_id + innerrecord.available_rpm + innerrecord.installed_rpm"
:columns="fixed ? (standalone ? ainnerColumns : binnerColumns) : (standalone ? aloneinnerColumns : innerColumns)"
:data-source="record.rpms || []"
- :locale="tablenodata"
:rowSelection="innerRowSelection"
:pagination="false">
<div slot="fixed_way" slot-scope="fixed_way, innerrecord">{{ getFixedWay(fixed_way, innerrecord) }}</div>
@@ -491,11 +490,6 @@ export default {
},
data() {
return {
- tablenodata: {emptyText: () => (
- <div><div>暂无可修复的rpm包, 可能原因为:</div>
- <div>1. 界面未刷新</div>
- <div>2. 冷补丁修复kernel后界面未重启</div></div>
- )},
selectedRows: [], // 选中行的row
searchKey: '',
innerCveList: [],
diff --git a/src/views/leaks/components/HostTable.vue b/src/views/leaks/components/HostTable.vue
index 0302e0f..327a4a9 100644
--- a/src/views/leaks/components/HostTable.vue
+++ b/src/views/leaks/components/HostTable.vue
@@ -974,9 +974,8 @@ export default {
this.getRepoList();
}
},
- beforeRouteLeave(to, from, next) {
- next();
- // 路由跳转前,清除轮询
+ beforeDestroy() {
+ // 离开页面前,若当前存在轮询,清除轮询
if (this.scanStatueAllTimeout) {
clearInterval(this.scanStatueAllTimeout);
this.scanStatueAllTimeout = null;
--
Gitee