diff --git a/core/core-frontend/src/components/data-visualization/canvas/CanvasCore.vue b/core/core-frontend/src/components/data-visualization/canvas/CanvasCore.vue index 6857004247..8a929df9d0 100644 --- a/core/core-frontend/src/components/data-visualization/canvas/CanvasCore.vue +++ b/core/core-frontend/src/components/data-visualization/canvas/CanvasCore.vue @@ -1519,6 +1519,7 @@ defineExpose({ :style="editStyle" @contextmenu="handleContextMenu" > + { + if (isSpaceDown.value) { + // 仅在空格键按下时启用拖动 + isDragging = true + startX = e.pageX - canvasOut.value.wrapRef.offsetLeft + startY = e.pageY - canvasOut.value.wrapRef.offsetTop + scrollLeft = canvasOut.value.wrapRef.scrollLeft + scrollTop = canvasOut.value.wrapRef.scrollTop + e.preventDefault() + e.stopPropagation() + } +} + +// 执行拖动 +const onMouseMove = e => { + if (!isDragging) return + e.preventDefault() + e.stopPropagation() + const x = e.pageX - canvasOut.value.wrapRef.offsetLeft + const y = e.pageY - canvasOut.value.wrapRef.offsetTop + const walkX = x - startX + const walkY = y - startY + canvasOut.value.wrapRef.scrollLeft = scrollLeft - walkX + canvasOut.value.wrapRef.scrollTop = scrollTop - walkY + console.log('====onMouseMove==walkX=' + walkX + ';walkY=' + walkY) +} + +// 禁用拖动 +const disableDragging = () => { + isDragging = false +} + const contentStyle = computed(() => { const { width, height } = canvasStyleData.value if (editMode.value === 'preview') { @@ -421,6 +456,8 @@ eventBus.on('handleNew', handleNew) :class="isDataEaseBi && !newWindowFromDiv && 'dataease-w-h'" > + ---{{ isSpaceDown }} +
+
+ > + +
@@ -580,6 +626,7 @@ eventBus.on('handleNew', handleNew) background-color: rgba(51, 51, 51, 1); overflow: auto; .content { + position: relative; flex: 1; width: 100%; overflow: auto; @@ -644,4 +691,19 @@ eventBus.on('handleNew', handleNew) color: #ebebeb; } } + +.canvas-drag { + position: absolute; + z-index: 1; + opacity: 0.3; + cursor: pointer; +} + +.canvas-drag-tip { + position: absolute; + right: 5px; + bottom: -20px; + font-size: 12px; + color: rgb(169, 175, 184); +}