diff --git a/components.d.ts b/components.d.ts
index 3b15375..316f41e 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -38,6 +38,7 @@ declare module 'vue' {
ElPagination: typeof import('element-plus/es')['ElPagination']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
+ ElResult: typeof import('element-plus/es')['ElResult']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSlider: typeof import('element-plus/es')['ElSlider']
@@ -98,6 +99,7 @@ declare global {
const ElPagination: typeof import('element-plus/es')['ElPagination']
const ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
const ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
+ const ElResult: typeof import('element-plus/es')['ElResult']
const ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
const ElSelect: typeof import('element-plus/es')['ElSelect']
const ElSlider: typeof import('element-plus/es')['ElSlider']
diff --git a/src/layouts/default.vue b/src/layouts/default.vue
index 5553c6d..08dee7e 100644
--- a/src/layouts/default.vue
+++ b/src/layouts/default.vue
@@ -57,7 +57,11 @@
@close-all="handleCloseAll"
/>
-
+
+
+
+
+
@@ -72,7 +76,7 @@ import { computed, onMounted, ref, watch } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
import { useAppStore } from '@/stores/modules/app'
-import { HOME_PATH, useTabsStore } from '@/stores/modules/tabs'
+import { HOME_PATH, pathToName, useTabsStore } from '@/stores/modules/tabs'
import { useAuthStore } from '@/stores/modules/auth'
import { useMenuStore } from '@/stores/modules/menu'
import { useDictStore } from '@/stores/modules/dict'
@@ -110,6 +114,9 @@ onMounted(() => {
const activePath = computed(() => route.path)
+/** keep-alive 缓存的组件名集合:打开且未关闭缓存的页签(keepAlive !== false 以兼容旧持久化数据)。 */
+const cachedNames = computed(() => tabsStore.tabs.filter((t) => t.keepAlive !== false).map((t) => pathToName(t.path)))
+
/** 当前路由对应的顶级菜单(及其叶子)。 */
const activeTop = computed(() => {
for (const m of menus.value) {
@@ -297,7 +304,7 @@ watch(
const top = activeTop.value
const leaf = top?.children?.find((c) => (c.path ?? c.code) === p)
const title = leaf?.name ?? top?.name ?? p
- tabsStore.addTab({ path: p, title, closable: p !== '/' })
+ tabsStore.addTab({ path: p, title, closable: p !== '/', keepAlive: route.meta.keepAlive !== false })
},
{ immediate: true },
)
diff --git a/src/pages/index.vue b/src/pages/index.vue
index 4b6b383..becd6e4 100644
--- a/src/pages/index.vue
+++ b/src/pages/index.vue
@@ -35,6 +35,8 @@