From 212d128c599b672852be5c48d42260d159978ee1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=A5=E4=BA=89=E9=B8=A3?= Date: Wed, 23 Apr 2025 14:17:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=96=E6=8B=BDpanel=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.ts | 3 + src/utils/directive.js | 76 ++++++++++++++++ src/views/Content/index.vue | 2 +- .../components/MultiHisTrajectory.vue | 6 +- .../MultiTrajPlayback/hooks/useMultiDDTraj.js | 4 + .../MultiTrajPlayback/hooks/useMultiHJTraj.js | 4 + .../hooks/useMultiSatTraj.js | 20 +++++ .../MultiTrajPlayback/hooks/useMultiTraj.js | 89 +++++++++++++++---- .../hooks/useMultiTrajReq.js | 19 ++-- .../MultiTrajPlayback/hooks/useMultiZBTraj.js | 12 +++ src/views/MultiTrajPlayback/index.jsx | 29 +++--- src/views/Satellite/hooks/satellite.ts | 14 ++- 12 files changed, 239 insertions(+), 39 deletions(-) create mode 100644 src/utils/directive.js create mode 100644 src/views/MultiTrajPlayback/hooks/useMultiDDTraj.js create mode 100644 src/views/MultiTrajPlayback/hooks/useMultiHJTraj.js create mode 100644 src/views/MultiTrajPlayback/hooks/useMultiSatTraj.js create mode 100644 src/views/MultiTrajPlayback/hooks/useMultiZBTraj.js diff --git a/src/main.ts b/src/main.ts index 7fd6565fe..0b8a5a767 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,6 @@ import { createApp } from 'vue' import { createPinia } from 'pinia' +import { drag } from '@/utils/directive' // import * as Cesium from 'cesium' // window.Cesium = Cesium @@ -26,4 +27,6 @@ app.use(createPinia()) app.use(router) app.use(Loading) +app.directive('drag', drag) + app.mount('#app') diff --git a/src/utils/directive.js b/src/utils/directive.js new file mode 100644 index 000000000..c8b92aedb --- /dev/null +++ b/src/utils/directive.js @@ -0,0 +1,76 @@ +export const drag = { + mounted(el, binding, vnode, prevVnode) { + // let oDiv = el // 获取当前元素 + // oDiv.onmousedown = e => { + // // 算出鼠标相对元素的位置 + // let disX = e.clientX - oDiv.offsetLeft + // let disY = e.clientY - oDiv.offsetTop + // document.onmousemove = e => { + // // 用鼠标的位置减去鼠标相对元素的位置,得到元素的位置 + // let left = e.clientX - disX + // let top = e.clientY - disY + // oDiv.style.left = left + 'px' + // oDiv.style.top = top + 'px' + // } + + // document.onmouseup = e => { + // document.onmousemove = null + // document.onmouseup = null + // } + // } + el.style.cursor = 'move' + el.style.position = 'absolute' + el.onmousedown = function (e) { + let disX = e.pageX - el.offsetLeft + let disY = e.pageY - el.offsetTop + + if (binding.value === 'father') { + disX = e.pageX - el.parentNode.offsetLeft + disY = e.pageY - el.parentNode.offsetTop + } else { + disX = e.pageX - el.offsetLeft + disY = e.pageY - el.offsetTop + } + + document.onmousemove = function (e) { + let x = e.pageX - disX + let y = e.pageY - disY + let maxX + let maxY + + if (binding.value === 'father') { + maxX = + el.parentNode.parentNode.offsetWidth - el.parentNode.offsetWidth + maxY = + el.parentNode.parentNode.offsetHeight - el.parentNode.offsetHeight + } else { + maxX = el.parentNode.offsetWidth - el.offsetWidth + maxY = el.parentNode.offsetHeight - el.offsetHeight + } + + if (x < 0) { + x = 0 + } else if (x > maxX) { + x = maxX + } + + if (y < 0) { + y = 0 + } else if (y > maxY) { + y = maxY + } + + if (binding.value === 'father') { + el.parentNode.style.left = x + 'px' + el.parentNode.style.top = y + 'px' + } else { + el.style.left = x + 'px' + el.style.top = y + 'px' + } + } + document.onmouseup = function () { + document.onmousemove = document.onmouseup = null + } + } + }, +} diff --git a/src/views/Content/index.vue b/src/views/Content/index.vue index d4a11900f..9f7f6b21b 100644 --- a/src/views/Content/index.vue +++ b/src/views/Content/index.vue @@ -267,7 +267,7 @@ const showOrHideTextReport = () => { > { + const segments = divideTimeRangeIntoParts( timeArray[0], timeArray[timeArray.length - 1], @@ -114,7 +115,7 @@ function divideTimeRangeIntoParts(