From 691c626e3f5f90b4e57b90cdc65608a9186f540f Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 3 Feb 2026 10:21:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=A4=9A=E5=BC=A0=E5=9B=BE=E7=89=87=E6=97=B6?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E9=87=8D=E5=8F=A0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/canvas/CanvasChatPanel.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/components/canvas/CanvasChatPanel.tsx b/components/canvas/CanvasChatPanel.tsx index 72a7935..f65f940 100644 --- a/components/canvas/CanvasChatPanel.tsx +++ b/components/canvas/CanvasChatPanel.tsx @@ -856,6 +856,9 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF if (!files) return; let firstImageUrl: string | null = null; + // 记录本次上传开始时的节点数量,用于计算新图片位置 + const baseNodeCount = nodes.length; + let uploadIndex = 0; for (const file of Array.from(files)) { if (!file.type.startsWith('image/')) { @@ -907,10 +910,12 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF // 获取图片原始尺寸后添加到画布 const dimensions = await getImageDimensions(imageUrl); - const existingNodes = nodes.length; + // 使用 baseNodeCount + uploadIndex 计算位置,确保多张图片不重叠 + const nodeIndex = baseNodeCount + uploadIndex; const spacing = 20; - const x = 100 + (existingNodes % 3) * (dimensions.width + spacing); - const y = 100 + Math.floor(existingNodes / 3) * (dimensions.height + spacing); + const x = 100 + (nodeIndex % 3) * (dimensions.width + spacing); + const y = 100 + Math.floor(nodeIndex / 3) * (dimensions.height + spacing); + uploadIndex++; // 递增索引 addNode({ type: 'image',