diff --git a/src/components/ConfigGlobal/src/ConfigGlobal.vue b/src/components/ConfigGlobal/src/ConfigGlobal.vue index af543df2d..4feb43548 100644 --- a/src/components/ConfigGlobal/src/ConfigGlobal.vue +++ b/src/components/ConfigGlobal/src/ConfigGlobal.vue @@ -7,6 +7,7 @@ import { useWindowSize } from '@vueuse/core' import { useAppStore } from '@/store/modules/app' import { setCssVar } from '@/utils' import { useDesign } from '@/hooks/web/useDesign' +import { normalizeLayout } from '@/utils/layout' const { variables } = useDesign() @@ -33,7 +34,9 @@ watch( !appStore.getMobile ? appStore.setMobile(true) : undefined setCssVar('--left-menu-min-width', '0') appStore.setCollapse(true) - appStore.getLayout !== 'classic' ? appStore.setLayout('classic') : undefined + normalizeLayout(appStore.getLayout) !== 'sidebar-nav' + ? appStore.setLayout('sidebar-nav') + : undefined } else { appStore.getMobile ? appStore.setMobile(false) : undefined setCssVar('--left-menu-min-width', '64px') diff --git a/src/components/IFrame/src/IFrame.vue b/src/components/IFrame/src/IFrame.vue index 64ffc0e57..1f90e96e0 100644 --- a/src/components/IFrame/src/IFrame.vue +++ b/src/components/IFrame/src/IFrame.vue @@ -7,7 +7,7 @@ const props = defineProps({ src: propTypes.string.def('') }) const loading = ref(true) -const frameRef = ref(null) +const frameRef = ref(null) const init = () => { nextTick(() => { loading.value = true @@ -20,6 +20,11 @@ const init = () => { onMounted(() => { init() }) +onBeforeUnmount(() => { + if (!frameRef.value) return + frameRef.value.onload = null + frameRef.value.src = 'about:blank' +}) watch( () => props.src, () => { diff --git a/src/layout/Layout.vue b/src/layout/Layout.vue index d15025c6e..1cb4635e9 100644 --- a/src/layout/Layout.vue +++ b/src/layout/Layout.vue @@ -5,6 +5,7 @@ import { Backtop } from '@/components/Backtop' import { Setting } from '@/layout/components/Setting' import { useRenderLayout } from './components/useRenderLayout' import { useDesign } from '@/hooks/web/useDesign' +import { getLayoutRenderMode } from '@/utils/layout' const { getPrefixCls } = useDesign() @@ -25,7 +26,7 @@ const handleClickOutside = () => { } const renderLayout = () => { - switch (unref(layout)) { + switch (getLayoutRenderMode(unref(layout))) { case 'classic': const { renderClassic } = useRenderLayout() return renderClassic() @@ -47,7 +48,14 @@ export default defineComponent({ name: 'Layout', setup() { return () => ( -
+
{mobile.value && !collapse.value ? (
{ watch( () => collapse.value, (collapse: boolean) => { - if (unref(layout) === 'topLeft' || unref(layout) === 'cutMenu') { + if (getLayoutRenderMode(unref(layout)) === 'topLeft' || getLayoutRenderMode(unref(layout)) === 'cutMenu') { show.value = true return } @@ -43,7 +44,8 @@ watch( watch( () => layout.value, (layout) => { - if (layout === 'top' || layout === 'cutMenu') { + const renderMode = getLayoutRenderMode(layout) + if (renderMode === 'top' || renderMode === 'cutMenu') { show.value = true } else { if (unref(collapse)) { @@ -61,7 +63,7 @@ watch( diff --git a/src/layout/components/Menu/src/Menu.vue b/src/layout/components/Menu/src/Menu.vue index af6ae0f7a..3007e9f2e 100644 --- a/src/layout/components/Menu/src/Menu.vue +++ b/src/layout/components/Menu/src/Menu.vue @@ -1,12 +1,26 @@