From f85006844550bd25c98fcbe841b903ff4d98761e Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 20 Jan 2026 09:06:50 +0800
Subject: [PATCH] feat:部分处理
---
applications/drone-command/src/views/job/jobinfo.vue | 12 +++++-
applications/drone-command/src/page/index/top/top-full.vue | 13 ++++++
applications/drone-command/src/page/login/index.vue | 10 ++++
applications/drone-command/src/utils/cesium/DrawPolygon.js | 1
applications/drone-command/src/views/layerManagement/components/utils.js | 1
applications/drone-command/src/page/lock/index.vue | 10 ++++
applications/drone-command/src/utils/util.js | 25 ++++++------
applications/drone-command/src/mac/index.vue | 7 +++
applications/drone-command/src/views/layerManagement/index.vue | 8 ++-
applications/drone-command/src/views/dataCenter/components/dataCenterMap.vue | 8 +++-
10 files changed, 72 insertions(+), 23 deletions(-)
diff --git a/applications/drone-command/src/mac/index.vue b/applications/drone-command/src/mac/index.vue
index 0d7f386..675df91 100644
--- a/applications/drone-command/src/mac/index.vue
+++ b/applications/drone-command/src/mac/index.vue
@@ -69,6 +69,7 @@
return {
app: false,
timeString: '',
+ timeTimer: null,
}
},
computed: {
@@ -116,6 +117,12 @@
this.startTimer()
this.$store.dispatch('GetMenu')
},
+ beforeDestroy () {
+ if (this.timeTimer) {
+ clearInterval(this.timeTimer)
+ this.timeTimer = null
+ }
+ },
methods: {
switchTheme () {
this.$store.commit('SET_THEME_NAME', '')
diff --git a/applications/drone-command/src/page/index/top/top-full.vue b/applications/drone-command/src/page/index/top/top-full.vue
index 099d698..cec6ea3 100644
--- a/applications/drone-command/src/page/index/top/top-full.vue
+++ b/applications/drone-command/src/page/index/top/top-full.vue
@@ -6,11 +6,22 @@
import { fullscreenToggel, listenfullscreen } from 'utils/util';
export default {
+ data() {
+ return {
+ fullscreenCleanup: null,
+ };
+ },
computed: {
...mapGetters(['isFullScren']),
},
mounted() {
- listenfullscreen(this.setScreen);
+ this.fullscreenCleanup = listenfullscreen(this.setScreen);
+ },
+ beforeDestroy() {
+ if (this.fullscreenCleanup) {
+ this.fullscreenCleanup();
+ this.fullscreenCleanup = null;
+ }
},
methods: {
setScreen() {
diff --git a/applications/drone-command/src/page/lock/index.vue b/applications/drone-command/src/page/lock/index.vue
index 2215769..9b65ab3 100644
--- a/applications/drone-command/src/page/lock/index.vue
+++ b/applications/drone-command/src/page/lock/index.vue
@@ -45,6 +45,7 @@
data() {
return {
time: '',
+ timeTimer: null,
passwd: '',
passwdError: false,
pass: false,
@@ -52,10 +53,17 @@
},
created() {
this.getTime();
- setInterval(() => {
+ if (this.timeTimer) clearInterval(this.timeTimer);
+ this.timeTimer = setInterval(() => {
this.getTime();
}, 1000);
},
+ beforeDestroy() {
+ if (this.timeTimer) {
+ clearInterval(this.timeTimer);
+ this.timeTimer = null;
+ }
+ },
mounted() {},
computed: {
...mapGetters(['userInfo', 'tag', 'lockPasswd']),
diff --git a/applications/drone-command/src/page/login/index.vue b/applications/drone-command/src/page/login/index.vue
index 4453760..ad005da 100644
--- a/applications/drone-command/src/page/login/index.vue
+++ b/applications/drone-command/src/page/login/index.vue
@@ -56,6 +56,7 @@
},
website: website,
time: '',
+ timeTimer: null,
activeName: 'user',
socialForm: {
tenantId: '000000',
@@ -82,6 +83,12 @@
computed: {
...mapGetters(['tagWel']),
},
+ beforeDestroy() {
+ if (this.timeTimer) {
+ clearInterval(this.timeTimer);
+ this.timeTimer = null;
+ }
+ },
props: [],
methods: {
// 动态获取系统名称
@@ -93,7 +100,8 @@
})
},
getTime() {
- setInterval(() => {
+ if (this.timeTimer) clearInterval(this.timeTimer);
+ this.timeTimer = setInterval(() => {
this.time = this.$dayjs().format('YYYY-MM-DD HH:mm:ss');
}, 1000);
},
diff --git a/applications/drone-command/src/utils/cesium/DrawPolygon.js b/applications/drone-command/src/utils/cesium/DrawPolygon.js
index 6c37a35..4a4f10c 100644
--- a/applications/drone-command/src/utils/cesium/DrawPolygon.js
+++ b/applications/drone-command/src/utils/cesium/DrawPolygon.js
@@ -785,6 +785,7 @@
this.handler.removeInputAction(type)
})
+ this.handler.destroy()
this.handler = null
}
}
diff --git a/applications/drone-command/src/utils/util.js b/applications/drone-command/src/utils/util.js
index 57c3536..c149ad4 100644
--- a/applications/drone-command/src/utils/util.js
+++ b/applications/drone-command/src/utils/util.js
@@ -102,22 +102,21 @@
* esc监听全屏
*/
export const listenfullscreen = callback => {
- function listen () {
+ const handler = () => {
callback()
}
- document.addEventListener('fullscreenchange', function () {
- listen()
- })
- document.addEventListener('mozfullscreenchange', function () {
- listen()
- })
- document.addEventListener('webkitfullscreenchange', function () {
- listen()
- })
- document.addEventListener('msfullscreenchange', function () {
- listen()
- })
+ document.addEventListener('fullscreenchange', handler)
+ document.addEventListener('mozfullscreenchange', handler)
+ document.addEventListener('webkitfullscreenchange', handler)
+ document.addEventListener('msfullscreenchange', handler)
+
+ return () => {
+ document.removeEventListener('fullscreenchange', handler)
+ document.removeEventListener('mozfullscreenchange', handler)
+ document.removeEventListener('webkitfullscreenchange', handler)
+ document.removeEventListener('msfullscreenchange', handler)
+ }
}
/**
* 获取缩略图路径
diff --git a/applications/drone-command/src/views/dataCenter/components/dataCenterMap.vue b/applications/drone-command/src/views/dataCenter/components/dataCenterMap.vue
index 5271f02..dbe87c4 100644
--- a/applications/drone-command/src/views/dataCenter/components/dataCenterMap.vue
+++ b/applications/drone-command/src/views/dataCenter/components/dataCenterMap.vue
@@ -72,8 +72,11 @@
const removeDom = () => {
const dom = document.querySelector('#mapPopUpBox');
- if (dom && dom.parentNode) {
- dom.parentNode.removeChild(dom);
+ if (dom) {
+ render(null, dom);
+ if (dom.parentNode) {
+ dom.parentNode.removeChild(dom);
+ }
}
};
// 移除弹框标签
@@ -290,6 +293,7 @@
onMounted(() => {});
onBeforeUnmount(() => {
+ removeLabel();
if (viewer) {
viewer.destroy();
}
diff --git a/applications/drone-command/src/views/job/jobinfo.vue b/applications/drone-command/src/views/job/jobinfo.vue
index 2fa7b2b..240c22f 100644
--- a/applications/drone-command/src/views/job/jobinfo.vue
+++ b/applications/drone-command/src/views/job/jobinfo.vue
@@ -45,13 +45,21 @@
selectionList: [],
option: option,
data: [],
+ searchChangeHandler: null,
}
},
created() {
- this.$bus?.on('triggerSearchChange', (params) => {
+ this.searchChangeHandler = (params) => {
this.searchChange(params, () => {});
- });
+ };
+ this.$bus?.on('triggerSearchChange', this.searchChangeHandler);
},
+ beforeDestroy() {
+ if (this.searchChangeHandler) {
+ this.$bus?.off('triggerSearchChange', this.searchChangeHandler);
+ this.searchChangeHandler = null;
+ }
+ },
computed: {
...mapGetters(['permission']),
permissionList () {
diff --git a/applications/drone-command/src/views/layerManagement/components/utils.js b/applications/drone-command/src/views/layerManagement/components/utils.js
index 7001570..458b5a7 100644
--- a/applications/drone-command/src/views/layerManagement/components/utils.js
+++ b/applications/drone-command/src/views/layerManagement/components/utils.js
@@ -600,6 +600,7 @@
this.handler.removeInputAction(type)
})
+ this.handler.destroy()
this.handler = null
}
}
diff --git a/applications/drone-command/src/views/layerManagement/index.vue b/applications/drone-command/src/views/layerManagement/index.vue
index 67ee11a..f1bcf7a 100644
--- a/applications/drone-command/src/views/layerManagement/index.vue
+++ b/applications/drone-command/src/views/layerManagement/index.vue
@@ -488,14 +488,15 @@
isPageLoading.value = status;
};
provide('layerParams', layerParams);
+const focusOnNodeHandler = nodeData => {
+ focusOnNode(nodeData);
+};
onMounted(() => {
initMap();
cesiumContextMenu();
getdataFolderApi();
// 监听定位事件
- EventBus.on('focusOnNode', (nodeData) => {
- focusOnNode(nodeData);
- });
+ EventBus.on('focusOnNode', focusOnNodeHandler);
EventBus.on('deleteMapEntityById', deleteMapEntityById);
EventBus.on('deleteMapEntitiesByFolderId', deleteMapEntitiesByFolderId);
});
@@ -523,6 +524,7 @@
onBeforeUnmount(() => {
destroyMap();
cesiumContextMenu(false);
+ EventBus.off('focusOnNode', focusOnNodeHandler);
EventBus.off('deleteMapEntityById', deleteMapEntityById);
EventBus.off('deleteMapEntitiesByFolderId', deleteMapEntitiesByFolderId);
});
--
Gitblit v1.9.3