diff --git a/mock/asyncRoutes.ts b/mock/asyncRoutes.ts index ca7514a52..af626514a 100644 --- a/mock/asyncRoutes.ts +++ b/mock/asyncRoutes.ts @@ -118,6 +118,7 @@ const frameRouter = { meta: { title: "menus.hsEpDocument", frameSrc: "https://element-plus.org/zh-CN/", + keepAlive: true, roles: ["admin", "common"] } }, @@ -127,6 +128,7 @@ const frameRouter = { meta: { title: "menus.hsTailwindcssDocument", frameSrc: "https://tailwindcss.com/docs/installation", + keepAlive: true, roles: ["admin", "common"] } }, @@ -136,6 +138,7 @@ const frameRouter = { meta: { title: "menus.hsVueDocument", frameSrc: "https://cn.vuejs.org/", + keepAlive: true, roles: ["admin", "common"] } }, @@ -145,6 +148,7 @@ const frameRouter = { meta: { title: "menus.hsViteDocument", frameSrc: "https://cn.vitejs.dev/", + keepAlive: true, roles: ["admin", "common"] } }, @@ -154,6 +158,7 @@ const frameRouter = { meta: { title: "menus.hsPiniaDocument", frameSrc: "https://pinia.vuejs.org/zh/index.html", + keepAlive: true, roles: ["admin", "common"] } }, @@ -163,6 +168,7 @@ const frameRouter = { meta: { title: "menus.hsRouterDocument", frameSrc: "https://router.vuejs.org/zh/", + keepAlive: true, roles: ["admin", "common"] } } diff --git a/src/layout/components/appMain.vue b/src/layout/components/appMain.vue index b3564cd7d..0e7927dd3 100644 --- a/src/layout/components/appMain.vue +++ b/src/layout/components/appMain.vue @@ -1,6 +1,7 @@ + diff --git a/src/layout/components/keepAliveFrame/useMultiFrame.ts b/src/layout/components/keepAliveFrame/useMultiFrame.ts new file mode 100644 index 000000000..73a779d2e --- /dev/null +++ b/src/layout/components/keepAliveFrame/useMultiFrame.ts @@ -0,0 +1,25 @@ +const MAP = new Map(); + +export const useMultiFrame = () => { + function setMap(path, Comp) { + MAP.set(path, Comp); + } + + function getMap(path?) { + if (path) { + return MAP.get(path); + } + return [...MAP.entries()]; + } + + function delMap(path) { + MAP.delete(path); + } + + return { + setMap, + getMap, + delMap, + MAP + }; +}; diff --git a/src/layout/frameView.vue b/src/layout/frameView.vue index 35660488e..c7c9719d8 100644 --- a/src/layout/frameView.vue +++ b/src/layout/frameView.vue @@ -1,18 +1,24 @@