From 4d276c85477ef9f539a54b2cb828127e6e1d64dd Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期三, 22 三月 2023 15:49:32 +0800 Subject: [PATCH] 拖拽 --- src/views/intellectInspect/intelligentLine/index.vue | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/views/intellectInspect/intelligentLine/index.vue b/src/views/intellectInspect/intelligentLine/index.vue index db88ff5..bacc19e 100644 --- a/src/views/intellectInspect/intelligentLine/index.vue +++ b/src/views/intellectInspect/intelligentLine/index.vue @@ -20,7 +20,7 @@ </div> <div class="blocks"> <div> - <div class="warning-part"> + <div class="warning-part" ref="draggableElement"> <div class="warn-tit">异常警报:</div> <div class="warn-msg" v-if="excepOrder && excepOrder.length>0"> <div class="warn-item" v-for="(item,index) in excepOrder" :key="index"> @@ -141,7 +141,12 @@ data: Array<any>; excepOrder: Array<any>; id: string; - defaultImg: string + defaultImg: string; + isDragging:boolean + initialX:number|null + initialY:number|null + xOffset:number|null + yOffset:number|null } export default { name: 'intelligentLine', @@ -158,7 +163,12 @@ data: [], excepOrder: [], id: '', - defaultImg: new URL('../../../assets/default-img.jpg',import.meta.url).href + defaultImg: new URL('../../../assets/default-img.jpg',import.meta.url).href, + isDragging: false, + initialX: 0, + initialY: 0, + xOffset: 0, + yOffset: 0 }); onMounted(() => { @@ -169,11 +179,14 @@ state.id = curId.toString() getLine(state.id) getUrl(state.id) + draggableElement.value.addEventListener('mousedown', handleMouseDown); + draggableElement.value.addEventListener('mousemove', handleMouseMove); + draggableElement.value.addEventListener('mouseup', handleMouseUp); }); onActivated(()=>{ onScreenfullClick(); }) - + const draggableElement = ref(null); const dataList = computed(() => { return userInfos.value.dataList; }); @@ -254,6 +267,25 @@ window.history.go(-1); }; + const handleMouseDown = (e) => { + state.initialX = e.clientX - state.xOffset; + state.initialY = e.clientY - state.yOffset; + state.isDragging = true; + }; + + const handleMouseMove = (e) => { + if (state.isDragging) { + state.xOffset = e.clientX - state.initialX; + state.yOffset = e.clientY - state.initialY; + + draggableElement.value.style.transform = `translate3d(${state.xOffset}px, ${state.yOffset}px, 0)`; + } + }; + + const handleMouseUp = () => { + state.isDragging = false; + }; + // 页面关闭处理 onUnmounted(() => { // 销毁监听 @@ -262,9 +294,13 @@ console.log('socket已经关闭'); }; }) + draggableElement.value.removeEventListener('mousedown', handleMouseDown); + draggableElement.value.removeEventListener('mousemove', handleMouseMove); + draggableElement.value.removeEventListener('mouseup', handleMouseUp); }); return { dataList, + draggableElement, goBack, onScreenfullClick, ...toRefs(state) @@ -1411,6 +1447,7 @@ right: 60px; padding: 10px; color: rgb(0, 255, 255); + backdrop-filter: blur(5px); .warn-tit{ height: 26px; -- Gitblit v1.9.2