This commit is contained in:
lzp
2026-03-17 09:56:58 +08:00
parent 04be0b5930
commit fbab5f4e8d
5 changed files with 25 additions and 11 deletions

View File

@@ -88,12 +88,13 @@
const observer = ref(null)
onMounted(() => {
keyEventManager.registerEvents()
canvasManager.initCanvas({
canvasRef,
canvasViewWidth: canvasContainerRef.value.clientWidth,
canvasViewHeight: canvasContainerRef.value.clientHeight,
canvasWidth: 750,
canvasHeight: 600
canvasWidth: props.config.width || 750,
canvasHeight: props.config.height || 600
})
stateManager.onMounted()
canvasManager.onMounted()

View File

@@ -11,10 +11,20 @@
import depthCanvas from './depth-canvas.vue'
import { ref } from 'vue'
const dialogVisible = ref(false)
const config = ref({})
const config = ref({
width: 750,
height: 600,
})
const open = (options) => {
dialogVisible.value = true
config.value = options || {}
// config.value = options || {}
const defaultConfig = {
canvasWidth: 750,
canvasHeight: 600,
canvasViewWidth: 750,
canvasViewHeight: 600,
}
config.value = { ...defaultConfig, ...options || {} }
}
const close = () => {
dialogVisible.value = false

View File

@@ -2,11 +2,12 @@ export class KeyEventManager {
stateManager: any
constructor(options) {
this.stateManager = options.stateManager;
this.registerEvents()
this._handleKeyDown = this.handleKeyDown.bind(this)
}
onMounted() { }
/** 处理键盘事件 */
_handleKeyDown: any
handleKeyDown(event: any) {
const ctrl = event.ctrlKey ? 'ctrl-' : "";
const shift = event.shiftKey ? 'shift-' : "";
@@ -24,11 +25,11 @@ export class KeyEventManager {
}
/** 注册事件 */
registerEvents() {
document.addEventListener('keydown', this.handleKeyDown.bind(this))
document.addEventListener('keydown', this._handleKeyDown)
}
/** 删除事件 */
removeEvents() {
document.removeEventListener('keydown', this.handleKeyDown.bind(this))
document.removeEventListener('keydown', this._handleKeyDown)
}
dispose() {
this.removeEvents()

View File

@@ -64,7 +64,7 @@
<script setup lang="ts">
import { VueFlow, useVueFlow } from '@vue-flow/core'
import { computed, ref, watch, onMounted, nextTick, provide, onBeforeMount } from 'vue'
import { computed, ref, watch, onMounted, nextTick, provide, onBeforeMount, onBeforeUnmount } from 'vue'
import { useLayout } from '@/utils/treeDiagram'
import { NODE_TYPE, NODE_COMPONENT } from './tools/index.d'
// 组件
@@ -252,7 +252,7 @@
})
}
})
onBeforeMount(() => {
onBeforeUnmount(() => {
stateManager.dispose()
eventManager.dispose()
flowManager.dispose()

View File

@@ -7,6 +7,7 @@ export class EventManager {
this.stateManager = options.stateManager;
this.vueFlow = options.vueFlow
this.zoom = this.stateManager.zoom
this._handleKeyDown = this.handleKeyDown.bind(this)
}
/** 处理视口变化 */
handleViewportChange(e: any) {
@@ -53,6 +54,7 @@ export class EventManager {
this.stateManager.deleteNode(activeNodeID, { isElMessageBox: true })
}
/** 处理键盘事件 */
_handleKeyDown: any
handleKeyDown(event: any) {
const activeNodeID = this.stateManager.activeNodeID.value;
// const shiftKey
@@ -73,12 +75,12 @@ export class EventManager {
/** 注册事件 */
registerEvents() {
// document.addEventListener('copy', this.handleCopy.bind(this))
document.addEventListener('keydown', this.handleKeyDown.bind(this))
document.addEventListener('keydown', this._handleKeyDown)
}
/** 删除事件 */
removeEvents() {
// document.removeEventListener('copy', this.handleCopy.bind(this))
document.removeEventListener('keydown', this.handleKeyDown.bind(this))
document.removeEventListener('keydown', this._handleKeyDown)
}
dispose() {
this.removeEvents()