修复切换页标签后关闭面板会关闭所有面板的异常
This commit is contained in:
@@ -86,6 +86,7 @@ const mainAreaConfig = ref({
|
||||
showTitleBar: false,
|
||||
children: {
|
||||
type: 'TabPage',
|
||||
id: `tabPage-${Date.now()}`,
|
||||
children: []
|
||||
}
|
||||
})
|
||||
@@ -286,6 +287,15 @@ const onPanelClose = (event) => {
|
||||
// 3. 只移除指定的面板,不影响其他面板
|
||||
child.children.splice(i, 1);
|
||||
|
||||
// 发送面板移除事件,通知TabPage组件调整activeTabIndex
|
||||
const tabPageId = child.id || `tabPage-${areaId}`;
|
||||
eventBus.emit(EVENT_TYPES.TABPAGE_PANEL_REMOVED, {
|
||||
tabPageId,
|
||||
removedPanelId: panelId,
|
||||
removedIndex: i,
|
||||
remainingPanelCount: child.children.length
|
||||
}, { componentId: 'dock-layout' });
|
||||
|
||||
// 4. 检查TabPage是否还有子元素
|
||||
// 当child.children为空数组时,认为TabPage没有子元素
|
||||
if (child.children.length === 0) {
|
||||
@@ -535,12 +545,28 @@ const onTabClose = async (data) => {
|
||||
if (Array.isArray(targetTabPage.children)) {
|
||||
targetTabPage.children.splice(panelIndex, 1);
|
||||
console.log(`📌 从TabPage移除Panel后,剩余Panel数量: ${targetTabPage.children.length}`);
|
||||
|
||||
// 发送Panel移除事件,通知TabPage组件调整activeTabIndex
|
||||
eventBus.emit(EVENT_TYPES.TABPAGE_PANEL_REMOVED, {
|
||||
tabPageId,
|
||||
removedPanelId: panelId,
|
||||
removedIndex: panelIndex,
|
||||
remainingPanelCount: targetTabPage.children.length
|
||||
}, { componentId: 'dock-layout' });
|
||||
} else {
|
||||
// 当TabPage只有一个Panel时,我们将children设置为null
|
||||
// 这样shouldShowTabs计算属性会返回false,不显示标签栏
|
||||
// 但TabPage仍然存在
|
||||
targetTabPage.children = null;
|
||||
console.log(`📌 移除了唯一的Panel,TabPage不显示标签栏`);
|
||||
|
||||
// 发送Panel移除事件,通知TabPage组件调整activeTabIndex
|
||||
eventBus.emit(EVENT_TYPES.TABPAGE_PANEL_REMOVED, {
|
||||
tabPageId,
|
||||
removedPanelId: panelId,
|
||||
removedIndex: panelIndex,
|
||||
remainingPanelCount: 0
|
||||
}, { componentId: 'dock-layout' });
|
||||
}
|
||||
|
||||
// 5. 检查TabPage是否还有子元素
|
||||
@@ -874,6 +900,7 @@ const addFloatingPanel = (panel) => {
|
||||
// 使用children结构以兼容Render组件的渲染逻辑
|
||||
children: {
|
||||
type: 'TabPage',
|
||||
id: `tabPage-${areaId}`,
|
||||
tabPosition: ['top', 'right', 'bottom', 'left'][Math.floor(Math.random() * 4)],
|
||||
children: [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user