enter.vue 1.42 KB
<script setup lang="ts">
/**
 * 公共布局入口组件
 * @module Enter
 */
import { onMounted, reactive, computed } from "vue";
import Header from "./header.vue";
import Menu from "./menu.vue";
import { useAppStore } from "@/pinia/app";
// import * as store from "@/pinia/index";
let asyncData = reactive({
  isCollapse: null,
});
onMounted(() => {
  asyncData.isCollapse = computed(() => {
    // return store.family.appStore().isCollapse
    return useAppStore()?.getCollapseStatus;
  });
});
</script>

<template>
  <!-- TIP 页面头部,含logo、功能按钮(用户信息、退出登录、帮助) -->
  <Header />
  <!-- TIP 页面头部,含logo、功能按钮(用户信息、退出登录、帮助)结束 -->
  <div class="main-container">
    <!-- TIP 左侧菜单 -->
    <div class="sidebar-container">
      <Menu />
    </div>
    <!-- TIP 左侧菜单结束 -->
    <!-- TIP 右侧具体页面内容 -->
    <div
      class="view-container"
      :class="asyncData.isCollapse ? 'thinMenu' : 'fatMenu'"
    >
      <div>
        <router-view v-slot="{ Component, route }">
          <transition :name="route.name">
            <keep-alive v-if="route?.meta?.keepAlive">
              <component :is="Component" />
            </keep-alive>
            <component :is="Component" v-else />
          </transition>
        </router-view>
      </div>
    </div>
    <!-- TIP 右侧具体页面内容结束 -->
  </div>
</template>