|
|
@@ -244,17 +244,18 @@
|
|
|
class="tab-content-item"
|
|
|
>
|
|
|
<!-- 浏览器标签页 -->
|
|
|
- <BrowserTab
|
|
|
- v-if="tab.type === 'browser'"
|
|
|
+ <BrowserTab
|
|
|
+ v-if="tab.type === 'browser'"
|
|
|
+ :ref="(el: any) => { if (el) browserTabRefs[tab.id] = el }"
|
|
|
:tab="tab"
|
|
|
@account-saved="handleAccountSaved"
|
|
|
@close="tabsStore.closeTab(tab.id)"
|
|
|
/>
|
|
|
<!-- 页面标签页 -->
|
|
|
- <component
|
|
|
+ <component
|
|
|
v-else-if="tab.type === 'page' && getPageComponent(tab.path || '')"
|
|
|
:is="getPageComponent(tab.path || '')"
|
|
|
- :key="tab.path"
|
|
|
+ :key="`${tab.path}-${tabsStore.tabRefreshTrigger[tab.id] || 0}`"
|
|
|
/>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -375,6 +376,9 @@ const tabsStore = useTabsStore();
|
|
|
// 窗口状态
|
|
|
const isMaximized = ref(false);
|
|
|
|
|
|
+// 浏览器标签页的 ref 引用(用于刷新)
|
|
|
+const browserTabRefs = ref<Record<string, { reload: () => void }>>({});
|
|
|
+
|
|
|
// 关闭按钮右键菜单
|
|
|
const closeMenuVisible = ref(false);
|
|
|
const closeMenuX = ref(0);
|
|
|
@@ -597,11 +601,19 @@ function closeContextMenu() {
|
|
|
}
|
|
|
|
|
|
function handleRefreshTab() {
|
|
|
- // 刷新标签页(重新加载组件)
|
|
|
+ // 刷新标签页
|
|
|
const tab = contextMenu.value.tab;
|
|
|
if (tab) {
|
|
|
- // 可以通过 key 变化来强制重新渲染
|
|
|
- // 这里简单处理,只是关闭菜单
|
|
|
+ if (tab.type === 'browser') {
|
|
|
+ // 浏览器标签页:调用 reload 方法
|
|
|
+ const browserTab = browserTabRefs.value[tab.id];
|
|
|
+ if (browserTab) {
|
|
|
+ browserTab.reload();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 页面标签页:通过触发器强制重新渲染
|
|
|
+ tabsStore.triggerTabRefresh(tab.id);
|
|
|
+ }
|
|
|
}
|
|
|
closeContextMenu();
|
|
|
}
|