From 28ee3f073baeb13209d3421795e1554116e336ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Fri, 17 Oct 2025 14:16:08 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=BB=E5=B8=83=E5=88=A0=E9=99=A4=E5=91=A8?= =?UTF-8?q?=E6=92=A4=E5=9B=9E=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CanvasEditor/commands/LayerCommands.js | 8 +++- src/component/Canvas/CanvasEditor/index.vue | 37 ++++++++++--------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/component/Canvas/CanvasEditor/commands/LayerCommands.js b/src/component/Canvas/CanvasEditor/commands/LayerCommands.js index 1dffba96..2a9503bd 100644 --- a/src/component/Canvas/CanvasEditor/commands/LayerCommands.js +++ b/src/component/Canvas/CanvasEditor/commands/LayerCommands.js @@ -563,6 +563,12 @@ export class RemoveLayerCommand extends Command { allObjects.push(object); } } + layer.fabricObjects?.forEach((fabric) => { + const { object } = findObjectById(this.canvas, fabric.id); + if (object && !allObjects.includes(object)) { + allObjects.push(object); + } + }); // 递归收集子图层的对象 if (layer.children && Array.isArray(layer.children)) { @@ -609,7 +615,7 @@ export class RemoveLayerCommand extends Command { // this.canvas.renderAll(); // } await this.layerManager?.updateLayersObjectsInteractivity?.(); - // this.canvas.renderAll(); + this.canvas.renderAll(); console.log( `✅ 已移除图层: ${this.removedLayer.name} (ID: ${this.layerId}),包含 ${this.originalObjects.length} 个对象` diff --git a/src/component/Canvas/CanvasEditor/index.vue b/src/component/Canvas/CanvasEditor/index.vue index 6ab169bb..32af587b 100644 --- a/src/component/Canvas/CanvasEditor/index.vue +++ b/src/component/Canvas/CanvasEditor/index.vue @@ -693,25 +693,26 @@ function removeLayer(layerId) { return; } - if (canvasManager && canvasManager.canvas) { - const layerToRemove = layers.value.find((l) => l.id === layerId); - if (layerToRemove) { - const elementIds = layerToRemove?.fabricObjects?.map((e) => e.id); - elementIds.forEach((elementId) => { - const objectToRemove = canvasManager.canvas - .getObjects() - .find((obj) => obj.id === elementId); - if (objectToRemove) { - canvasManager.canvas.remove(objectToRemove); - } - }); - if (activeLayerId.value === layerId) { - activeElementId.value = null; - } - canvasManager.canvas.renderAll(); - } - } layerManager.removeLayer(layerId); +// 此处删除画布上内容导致撤回操作无效(多余) +// if (canvasManager && canvasManager.canvas) { +// const layerToRemove = layers.value.find((l) => l.id === layerId); +// if (layerToRemove) { +// const elementIds = layerToRemove?.fabricObjects?.map((e) => e.id); +// elementIds.forEach((elementId) => { +// const objectToRemove = canvasManager.canvas +// .getObjects() +// .find((obj) => obj.id === elementId); +// if (objectToRemove) { +// canvasManager.canvas.remove(objectToRemove); +// } +// }); +// if (activeLayerId.value === layerId) { +// activeElementId.value = null; +// } +// canvasManager.canvas.renderAll(); +// } +// } } function triggerImageUpload() {