35 lines
1.1 KiB
Vue
35 lines
1.1 KiB
Vue
<!-- 💥 这里是异步加载 LayoutComponents -->
|
|
<template>
|
|
<suspense>
|
|
<template #default>
|
|
<component :is="LayoutComponents[layout]" />
|
|
</template>
|
|
<template #fallback>
|
|
<Loading />
|
|
</template>
|
|
</suspense>
|
|
</template>
|
|
|
|
<script setup lang="ts" name="layoutAsync">
|
|
import { computed, defineAsyncComponent, type Component } from "vue";
|
|
// import { LayoutType } from "@/stores/interface";
|
|
import { useGlobalStore } from "@/stores/modules/global";
|
|
import Loading from "@/components/Loading/index.vue";
|
|
|
|
const LayoutComponents: Record<any, Component> = {
|
|
vertical: defineAsyncComponent(() => import("./LayoutVertical/index.vue")),
|
|
classic: defineAsyncComponent(() => import("./LayoutClassic/index.vue")),
|
|
transverse: defineAsyncComponent(() => import("./LayoutTransverse/index.vue")),
|
|
columns: defineAsyncComponent(() => import("./LayoutColumns/index.vue"))
|
|
};
|
|
|
|
const globalStore = useGlobalStore();
|
|
const layout = computed(() => globalStore.layout);
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.layout {
|
|
min-width: 730px;
|
|
}
|
|
</style>
|