import html from "html"; import { useAppStore } from "../store/index.js"; import { defineAsyncComponent, computed } from "vue"; export default { components: { LayoutHeader: defineAsyncComponent(() => import("./header.js")), LayoutMenu: defineAsyncComponent(() => import("./menu.js")), LayoutTabs: defineAsyncComponent(() => import("./tabs.js")), LayoutFooter: defineAsyncComponent(() => import("./footer.js")), }, template: html`<el-container> <el-header><layout-header /></el-header> <el-container> <el-aside width="auto"> <el-scrollbar><layout-menu /></el-scrollbar> </el-aside> <el-container class="backtop"> <el-scrollbar> <layout-tabs /> <el-main> <router-view v-if="!isRefreshing" v-slot="{ Component, route }"> <component :is="Component" v-if="route.meta?.disableCaching" :key="$route.fullPath" /> <keep-alive :include="appStore.routes.map(o=>o.path)"> <component :is="Component" v-if="!route.meta?.disableCaching" :key="route.fullPath" /> </keep-alive> </router-view> </el-main> <el-footer> <layout-footer /> </el-footer> <el-backtop target=".backtop > .el-scrollbar > .el-scrollbar__wrap" /> </el-scrollbar> </el-container> </el-container> </el-container>`, setup() { const appStore = useAppStore(); const isRefreshing = computed(() => appStore.isRefreshing); const path = computed(() => useRoute().matched[0].path); const items = computed(() => useRoute().matched[0].children); return { appStore, isRefreshing, path, items, }; }, };