From 05ded03b5070e2ad24cd21e11755aba09f0de89f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=BD=99?= Date: Fri, 16 Dec 2022 15:12:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=89=93=E5=BC=80=E5=A4=96=E9=83=A8?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=88=E5=86=85=E5=B5=8C/=E5=A4=96?= =?UTF-8?q?=E9=93=BE=EF=BC=89=20(#377)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/event/useWindowSizeFn.ts | 34 +++++++++ src/layouts/components/Content.vue | 2 + src/layouts/components/FrameBlank.vue | 10 +++ src/layouts/components/FrameContent.vue | 99 +++++++++++++++++++++++++ src/layouts/components/MenuContent.vue | 12 ++- src/layouts/frame/index.vue | 25 +++++++ src/layouts/frame/useFrameKeepAlive.ts | 53 +++++++++++++ src/layouts/index.vue | 2 +- src/router/modules/iframe.ts | 47 ++++++++++++ src/types/interface.d.ts | 2 + 10 files changed, 283 insertions(+), 3 deletions(-) create mode 100644 src/hooks/event/useWindowSizeFn.ts create mode 100644 src/layouts/components/FrameBlank.vue create mode 100644 src/layouts/components/FrameContent.vue create mode 100644 src/layouts/frame/index.vue create mode 100644 src/layouts/frame/useFrameKeepAlive.ts create mode 100644 src/router/modules/iframe.ts diff --git a/src/hooks/event/useWindowSizeFn.ts b/src/hooks/event/useWindowSizeFn.ts new file mode 100644 index 0000000..8bee3fb --- /dev/null +++ b/src/hooks/event/useWindowSizeFn.ts @@ -0,0 +1,34 @@ +import debounce from 'lodash/debounce'; +import { onUnmounted, onMounted } from 'vue'; + +interface WindowSizeOptions { + immediate?: boolean; +} + +interface Fn { + (...arg: T[]): R; +} + +export function useWindowSizeFn(fn: Fn, options?: WindowSizeOptions, wait = 150) { + const handleSize: () => void = debounce(fn, wait); + + const start = () => { + if (options && options.immediate) { + fn(); + } + window.addEventListener('resize', handleSize); + }; + + const stop = () => { + window.removeEventListener('resize', handleSize); + }; + + onMounted(() => { + start(); + }); + + onUnmounted(() => { + stop(); + }); + return [start, stop]; +} diff --git a/src/layouts/components/Content.vue b/src/layouts/components/Content.vue index 069ad1e..e4a11cd 100644 --- a/src/layouts/components/Content.vue +++ b/src/layouts/components/Content.vue @@ -6,12 +6,14 @@ + diff --git a/src/layouts/components/FrameContent.vue b/src/layouts/components/FrameContent.vue new file mode 100644 index 0000000..2b8e362 --- /dev/null +++ b/src/layouts/components/FrameContent.vue @@ -0,0 +1,99 @@ + + + diff --git a/src/layouts/components/MenuContent.vue b/src/layouts/components/MenuContent.vue index 7f77765..f15cf99 100644 --- a/src/layouts/components/MenuContent.vue +++ b/src/layouts/components/MenuContent.vue @@ -2,7 +2,7 @@