From b1cdece5bda9d3868f07d2f5d1bb5d0aa0a942e1 Mon Sep 17 00:00:00 2001 From: zqm Date: Wed, 7 Jan 2026 10:50:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E4=B8=80=E4=B8=AA=E6=B5=AE=E5=8A=A8Ar?= =?UTF-8?q?ea=EF=BC=8C=E4=B8=80=E4=B8=AAtabpage=EF=BC=8C=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?Panel=E7=9A=84=E5=9C=BA=E6=99=AF=E4=B8=8B=E3=80=82=E6=8B=96?= =?UTF-8?q?=E6=8B=BD=E9=9D=A2=E6=9D=BF=E6=A0=87=E9=A2=98=E6=A0=8F=E5=BA=94?= =?UTF-8?q?=E8=AF=A5=E7=AD=89=E5=90=8C=E4=BA=8E=E6=8B=96=E6=8B=BDArea?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Robot/Web/src/DockLayout/DockLayout.vue | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/AutoRobot/Windows/Robot/Web/src/DockLayout/DockLayout.vue b/AutoRobot/Windows/Robot/Web/src/DockLayout/DockLayout.vue index 245a27f..e89fc76 100644 --- a/AutoRobot/Windows/Robot/Web/src/DockLayout/DockLayout.vue +++ b/AutoRobot/Windows/Robot/Web/src/DockLayout/DockLayout.vue @@ -126,25 +126,23 @@ const dragOperationCache = new Map(); */ const shouldOperateAreaInsteadOfPanel = (areaId) => { try { - // 简化逻辑:直接检查区域的面板数量 - // 遍历所有子元素,统计Panel数量 - let panelCount = 0; - + // 检查区域的子元素结构 + // 如果有一个TabPage和任意数量的Panel,返回true const childrenArray = Array.isArray(area.children) ? area.children : [area.children]; for (const child of childrenArray) { if (child.type === 'TabPage' && child.children) { const tabChildrenArray = Array.isArray(child.children) ? child.children : [child.children]; - for (const tabChild of tabChildrenArray) { - if (tabChild.type === 'Panel') { - panelCount++; - } + const panelCount = tabChildrenArray.filter(tabChild => tabChild.type === 'Panel').length; + + // 如果TabPage有Panel,返回true + if (panelCount > 0) { + return true; } } } - // 如果区域中只有一个面板,返回true - return panelCount === 1; + return false; } catch (error) { return false; } @@ -152,7 +150,7 @@ const shouldOperateAreaInsteadOfPanel = (areaId) => { /** * 检查是否应该操作区域而非面板(从GlobalEventManager.js迁移) - * 当只有一个面板时,操作区域而不是面板 + * 当有一个TabPage和任意数量的Panel时,操作区域而不是面板 * @param {Object} data - 事件数据 * @returns {boolean} 是否应该操作区域 */ @@ -162,15 +160,17 @@ const shouldOperateAreaInsteadOfPanelFromData = (data) => { // 从AreaHandler获取区域状态 const areaState = areaHandler.getAreaState(areaId); - // 检查区域是否只有一个面板 - let panelCount = 0; + // 检查区域是否有一个TabPage和任意数量的Panel if (areaState.children && areaState.children.type === 'TabPage') { const tabChildren = Array.isArray(areaState.children.children) ? areaState.children.children : [areaState.children.children]; - panelCount = tabChildren.filter(child => child.type === 'Panel').length; + const panelCount = tabChildren.filter(child => child.type === 'Panel').length; + + // 如果TabPage有Panel,返回true + return panelCount > 0; } - // 如果区域中只有一个面板,返回true - return panelCount === 1; + // 默认不是 + return false; }; const onCloseFloatingArea = (event) => {