From 7b071bc58578f8f5e5cad56a9983c178ffdad867 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, 9 Jan 2026 17:05:46 +0800 Subject: [PATCH] fix --- src/component/Canvas/pingpu.vue | 32 +++++++++++++--------- src/component/Canvas/test.vue | 48 ++++++++++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 14 deletions(-) diff --git a/src/component/Canvas/pingpu.vue b/src/component/Canvas/pingpu.vue index df795f69..59d53846 100644 --- a/src/component/Canvas/pingpu.vue +++ b/src/component/Canvas/pingpu.vue @@ -24,6 +24,7 @@ O_BLENDMODE: "object.blendMode", }; const ACTIONS = { + ADD: "add", SELECT: "select", UPDATE: "update", DELETE: "delete", @@ -168,24 +169,25 @@ }; const setCanvasData = async () => { canvas.clear(); - const cwidth = canvas.width; - const cheight = canvas.height; - for (let i = 0; i < props.list.length; i++) { let item = props.list[i]; - let pattern = await setFill(item); - let rect = new fabric.Rect({ - id: item.id, - width: cwidth, - height: cheight, - fill: pattern, - - ...item.object, - }); - canvas.add(rect); + await addObject(item); } canvas.renderAll(); }; + const addObject = async (item) => { + const cwidth = canvas.width; + const cheight = canvas.height; + let pattern = await setFill(item); + let rect = new fabric.Rect({ + id: item.id, + width: cwidth, + height: cheight, + fill: pattern, + ...item.object, + }); + canvas.add(rect); + }; const setFill = async (item) => { if (!item) return null; const cwidth = canvas.width; @@ -280,6 +282,10 @@ canvas.add(object); } canvas.renderAll(); + } else if (item.action === ACTIONS.DELETE) { + canvas.remove(object); + } else if (item.action === ACTIONS.ADD) { + await addObject(item.data); } } canvas.renderAll(); diff --git a/src/component/Canvas/test.vue b/src/component/Canvas/test.vue index 7153f8d9..0f72a932 100644 --- a/src/component/Canvas/test.vue +++ b/src/component/Canvas/test.vue @@ -21,6 +21,7 @@ > → +