From 844694d638b7064c48585f62a162d50d2130e35c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Tue, 20 Jan 2026 16:11:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=B9=B3=E9=93=BA=E5=81=8F=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/component/Canvas/CanvasEditor/managers/PartManager.js | 1 + src/component/Canvas/OverallCanvas/index.vue | 4 ++-- src/component/Detail/detailRight/editPrintElement.vue | 7 ++++--- .../Detail/detailRight/overallSetting/RepeatSetting.vue | 1 + 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/component/Canvas/CanvasEditor/managers/PartManager.js b/src/component/Canvas/CanvasEditor/managers/PartManager.js index 6d593eac..339cde7e 100644 --- a/src/component/Canvas/CanvasEditor/managers/PartManager.js +++ b/src/component/Canvas/CanvasEditor/managers/PartManager.js @@ -425,6 +425,7 @@ export class PartManager { // this.partGroup.add(path); this.canvas.add(path); this.canvas.renderAll(); + this.clearPart(); } /** 清空点位 */ clearPart() { diff --git a/src/component/Canvas/OverallCanvas/index.vue b/src/component/Canvas/OverallCanvas/index.vue index 0a6fad00..1e7e0d80 100644 --- a/src/component/Canvas/OverallCanvas/index.vue +++ b/src/component/Canvas/OverallCanvas/index.vue @@ -197,11 +197,11 @@ const cwidth = canvas.width; const cheight = canvas.height; let image = await urlToCanvas(item.path); - let offsetX = item.location[0]; - let offsetY = item.location[1]; let scaleX = ((cwidth / image.width) * item.scale[0]) / 5; let scaleY = ((cheight / image.height) * item.scale[1]) / 5; let scale = cwidth > cheight ? scaleX : scaleY; + let offsetX = item.location[0] * cwidth / props.width - (image.width * scale) / 2; + let offsetY = item.location[1] * cheight / props.height - (image.height * scale) / 2; let angle = item.angle; let gapX = item.object.gapX; let gapY = item.object.gapY; diff --git a/src/component/Detail/detailRight/editPrintElement.vue b/src/component/Detail/detailRight/editPrintElement.vue index f0fff224..3a3ef935 100644 --- a/src/component/Detail/detailRight/editPrintElement.vue +++ b/src/component/Detail/detailRight/editPrintElement.vue @@ -898,13 +898,14 @@ export default defineComponent({ } const inputFillOffset = (offset:any)=>{ let arr = editPrintElementData.printStyleList[props.type].overall - arr[editPrintElementData.imgDomIndex].location = [offset.left * offset.size[0] / 100,offset.top * offset.size[1] / 100] + let location = [offset.left * offset.size[0] / 100,offset.top * offset.size[1] / 100] + arr[editPrintElementData.imgDomIndex].location = location editPrintElementDom.pingpuRef.updataList([ { action: ACTIONS.UPDATE, token: arr[editPrintElementData.imgDomIndex].token, key: 'location[0]', - value: offset.left, + value: location[0], }, ]); editPrintElementDom.pingpuRef.updataList([ @@ -912,7 +913,7 @@ export default defineComponent({ action: ACTIONS.UPDATE, token: arr[editPrintElementData.imgDomIndex].token, key: 'location[1]', - value: offset.top, + value: location[1], }, ]); // editPrintElementData.overallDetail.offsetX = offset.left diff --git a/src/component/Detail/detailRight/overallSetting/RepeatSetting.vue b/src/component/Detail/detailRight/overallSetting/RepeatSetting.vue index a16ce2ae..b1142f27 100644 --- a/src/component/Detail/detailRight/overallSetting/RepeatSetting.vue +++ b/src/component/Detail/detailRight/overallSetting/RepeatSetting.vue @@ -92,6 +92,7 @@ let img = new Image(); let size = [0,0]; img.src = props.sketchPath; + console.log(props.sketchPath) await new Promise((resolve, reject) => { img.onload = () => { size = [img.width, img.height] From 11fb6f908c75cba624aa903fd5a495444e6a508d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Tue, 20 Jan 2026 16:39:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=B9=B3=E9=93=BA=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E6=B7=BB=E5=8A=A0=E7=9B=B8=E5=90=8C=E7=9A=84token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/component/Canvas/OverallCanvas/index.vue | 22 ++++++++++++++------ src/component/Detail/canvas/index.vue | 1 - 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/component/Canvas/OverallCanvas/index.vue b/src/component/Canvas/OverallCanvas/index.vue index 1e7e0d80..be1a788f 100644 --- a/src/component/Canvas/OverallCanvas/index.vue +++ b/src/component/Canvas/OverallCanvas/index.vue @@ -145,7 +145,7 @@ const onDeleteItem = (object) => { const list = [{ token: object.token, action: ACTIONS.DELETE }]; emit("change-canvas", list); - canvas.remove(object); + DeleteItemByToken(object.token); canvas.renderAll(); }; const urlToCanvas = (url) => { @@ -177,11 +177,12 @@ canvas.renderAll(); }; const addObject = async (item) => { + const token = item.token; const cwidth = canvas.width; const cheight = canvas.height; let pattern = await setFill(item); let rect = new fabric.Rect({ - token: item.token, + token: token, width: cwidth, height: cheight, fill: pattern, @@ -200,8 +201,11 @@ let scaleX = ((cwidth / image.width) * item.scale[0]) / 5; let scaleY = ((cheight / image.height) * item.scale[1]) / 5; let scale = cwidth > cheight ? scaleX : scaleY; - let offsetX = item.location[0] * cwidth / props.width - (image.width * scale) / 2; - let offsetY = item.location[1] * cheight / props.height - (image.height * scale) / 2; + let offsetX = + (item.location[0] * cwidth) / props.width - (image.width * scale) / 2; + let offsetY = + (item.location[1] * cheight) / props.height - + (image.height * scale) / 2; let angle = item.angle; let gapX = item.object.gapX; let gapY = item.object.gapY; @@ -298,9 +302,9 @@ list.value = list_; canvas.renderAll(); } else if (item.action === ACTIONS.DELETE) { - list.value = list.value.filter((v) => v.token !== item.token); - if (object) canvas.remove(object); + DeleteItemByToken(item.token); } else if (item.action === ACTIONS.ADD) { + DeleteItemByToken(item.token); list.value.push(item.data); await addObject(item.data); } @@ -309,6 +313,12 @@ }; taskQueue.addTask(async () => await cd(list_)); }; + /** 删除 */ + const DeleteItemByToken = (token) => { + list.value = list.value.filter((v) => v.token !== token); + const objects = canvas.getObjects().filter((o) => o.token === token); + objects.forEach((o) => canvas.remove(o)); + }; defineExpose({ updataList, }); diff --git a/src/component/Detail/canvas/index.vue b/src/component/Detail/canvas/index.vue index de6484e6..917a53de 100644 --- a/src/component/Detail/canvas/index.vue +++ b/src/component/Detail/canvas/index.vue @@ -185,7 +185,6 @@ export default defineComponent({ width:props.sketchSize.width, height:props.sketchSize.height, }).then((rv)=>{ - console.log(rv,'================',props.sketchSize) if(oldSelectDetail?.partialDesign)oldSelectDetail.partialDesign.partialDesignBase64 = rv })