发现点击tabpage的不同页标签,标签页内容没有改变

This commit is contained in:
zqm
2025-11-18 08:46:40 +08:00
parent 0c66be439a
commit b19a0c1a39
2 changed files with 42 additions and 32 deletions

View File

@@ -115,28 +115,7 @@
@tabDragStart="() => {}"
@tabDragMove="() => {}"
@tabDragEnd="() => {}"
>
<!-- 在TabPage内渲染其包含的Panels -->
<Panel
v-for="panel in item.tabPage.panels"
:key="`received-panel-${index}-${panel.id}`"
:id="panel.id"
:title="panel.title"
:collapsed="panel.collapsed"
:toolbarExpanded="panel.toolbarExpanded"
:maximized="panel.maximized"
:content="panel.content"
@toggleCollapse="() => {}"
@maximize="onPanelMaximize"
@close="() => {}"
@toggleToolbar="() => {}"
@dragStart="() => {}"
@dragMove="() => {}"
@dragEnd="() => {}"
@dragover="handleDragOver"
@dragleave="handleDragLeave"
/>
</TabPage>
/>
</template>
</div>
</div>
@@ -593,11 +572,10 @@ const mergeAreaContent = (sourceArea) => {
sourceArea.tabPages.forEach((tabPage, tabIndex) => {
const newTabPageId = `merged-tabpage-${Date.now()}-${tabIndex}`
const newPanels = (tabPage.panels || []).map((panel, panelIndex) => {
const newPanelId = `merged-panel-${Date.now()}-${tabIndex}-${panelIndex}`
console.log(`[Area] 添加Panel: ${panel.id} -> ${newPanelId}`)
// 保持原有Panel ID不变确保Vue响应式和状态稳定性
console.log(`[Area] 添加Panel: ${panel.id}`)
return {
...panel,
id: newPanelId,
maximized: true
}
})
@@ -643,20 +621,18 @@ const mergeAreaContent = (sourceArea) => {
if (sourceArea.tabPages && sourceArea.tabPages.length > 0) {
sourceArea.tabPages.forEach((sourceTabPage, tabIndex) => {
if (sourceTabPage && sourceTabPage.panels) {
// 为每个Panel创建新的唯一ID避免冲突
// 保持原有Panel ID不变避免Vue组件重新创建和状态丢失
const newPanels = sourceTabPage.panels.map((panel, panelIndex) => {
const newPanelId = `merged-panel-${Date.now()}-${tabIndex}-${panelIndex}`
console.log(`[Area] 合并Panel到现有TabPage: ${panel.id} -> ${newPanelId}`)
console.log(`[Area] 合并Panel到现有TabPage: ${panel.id}`)
return {
...panel,
id: newPanelId,
maximized: true
}
})
// 将新的Panel添加到现有TabPage
existingTabPage.tabPage.panels.push(...newPanels)
existingTabPage.panels.push(...newPanels)
// existingTabPage.panels 是旧引用,保持结构一致性但避免重复添加
console.log(`[Area] 成功合并 ${newPanels.length} 个Panel到现有TabPage`)
}