From e806e0da73ffdaaff7a81bdfc95869cf46142486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Thu, 13 Nov 2025 16:32:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E7=BB=BF=E5=9B=BE=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E7=A6=81=E7=94=A8=E4=B8=80=E4=BA=9B=E5=BF=AB=E6=8D=B7=E9=94=AE?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/component/Canvas/CanvasEditor/index.vue | 3 +-- .../CanvasEditor/managers/events/KeyboardManager.js | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/component/Canvas/CanvasEditor/index.vue b/src/component/Canvas/CanvasEditor/index.vue index e6fc380f..9774ab35 100644 --- a/src/component/Canvas/CanvasEditor/index.vue +++ b/src/component/Canvas/CanvasEditor/index.vue @@ -305,14 +305,13 @@ onMounted(async () => { commandManager, layerManager, toolManager, + isRedGreenMode, pasteText: (text) => { // console.log("粘贴的文本:", text); - if (isRedGreenMode.value) return; handleAddText(text); }, pasteImage: (file) => { // console.log("粘贴的图片:", file); - if (isRedGreenMode.value) return; uploadImageAndCreateLayer({ file, layerManager, diff --git a/src/component/Canvas/CanvasEditor/managers/events/KeyboardManager.js b/src/component/Canvas/CanvasEditor/managers/events/KeyboardManager.js index 3e76ec9d..49c1e110 100644 --- a/src/component/Canvas/CanvasEditor/managers/events/KeyboardManager.js +++ b/src/component/Canvas/CanvasEditor/managers/events/KeyboardManager.js @@ -12,6 +12,7 @@ export class KeyboardManager { * @param {Object} options.layerManager 图层管理器实例 * @param {Function} options.pasteText 粘贴文本回调函数 * @param {Function} options.pasteImage 粘贴图片回调函数 + * @param {Ref} options.isRedGreenMode 是否为红绿模式 * @param {HTMLElement} options.container 容器元素,用于添加事件监听 */ constructor(options = {}) { @@ -21,6 +22,7 @@ export class KeyboardManager { this.container = options.container || document; this.pasteText = options.pasteText || (() => {}); this.pasteImage = options.pasteImage || (() => {}); + this.isRedGreenMode = options.isRedGreenMode; // 检测平台类型 this.platform = this.detectPlatform(); @@ -207,6 +209,7 @@ export class KeyboardManager { */ handlePaste(event) { event.preventDefault(); // 阻止默认粘贴行为 + if(this.isRedGreenMode.value) return; const text = event.clipboardData?.getData("text/plain") || ""; if(/^aida_copy_canvas_layer/.test(text)) return; const items = event.clipboardData?.items || []; @@ -429,30 +432,35 @@ export class KeyboardManager { case "copy": // 复制逻辑 console.log("复制当前选中图层"); + if(this.isRedGreenMode.value) return; this.layerManager.copyLayer(this.layerManager.activeLayerId.value); break; case "paste": // 粘贴逻辑 console.log("粘贴"); + if(this.isRedGreenMode.value) return; this.layerManager.pasteLayer(); break; case "cut": // 剪切逻辑 console.log("剪切"); + if(this.isRedGreenMode.value) return; this.layerManager.cutLayer(this.layerManager.activeLayerId.value); break; case "delete": // 删除逻辑 console.log("删除"); + if(this.isRedGreenMode.value) return; this.layerManager.removeLayer(this.layerManager.activeLayerId.value); break; case "selectAll": // 全选逻辑 console.log("全选"); + if(this.isRedGreenMode.value) return; // 这里需要实现全选逻辑 TODO: 是否在选择模式下才可以全选? if (this.layerManager) { this.layerManager.selectAll();