index.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <Layout>
  3. <PageHeader v-model:collapsed="collapsed" :theme="getTheme">
  4. <template v-if="themeStore.layout === 'topmenu'" #default>
  5. <Logo :collapsed="collapsed"/>
  6. <AsideMenu :collapsed="collapsed" :theme="getTheme"/>
  7. </template>
  8. </PageHeader>
  9. <Layout class="layout">
  10. <Layout.Sider
  11. v-if="themeStore.layout === 'sidemenu'"
  12. v-model:collapsed="collapsed"
  13. :width="asiderWidth"
  14. :trigger="null"
  15. collapsible
  16. :theme="getTheme"
  17. class="layout-sider"
  18. >
  19. <Logo :collapsed="collapsed"/>
  20. <AsideMenu :collapsed="collapsed" :theme="getTheme"/>
  21. </Layout.Sider>
  22. <Layout>
  23. <TabHeader v-model:collapsed="collapsed" :theme="getTheme">
  24. <template v-if="themeStore.layout === 'topmenu'" #default>
  25. <Logo :collapsed="collapsed"/>
  26. <AsideMenu :collapsed="collapsed" :theme="getTheme"/>
  27. </template>
  28. </TabHeader>
  29. <Layout.Content class="layout-content">
  30. <tabs-view/>
  31. </Layout.Content>
  32. </Layout>
  33. </Layout>
  34. </Layout>
  35. </template>
  36. <script lang="ts" setup>
  37. import {ref, computed} from 'vue';
  38. import {Layout} from 'ant-design-vue';
  39. import Logo from './logo/index.vue';
  40. import {TabsView} from './tabs';
  41. import AsideMenu from './menu/menu.vue';
  42. import PageHeader from './header/index.vue';
  43. import TabHeader from './tabHeader/index.vue';
  44. import PageFooter from './footer';
  45. import {useThemeStore} from '@/store/modules/projectConfig';
  46. const themeStore = useThemeStore();
  47. const collapsed = ref<boolean>(false);
  48. // 自定义侧边栏菜单收缩和展开时的宽度
  49. const asiderWidth = computed(() => (collapsed.value ? 80 : 220));
  50. //const getTheme = computed(() => (themeStore.navTheme === 'light' ? 'light' : 'dark'));
  51. const getTheme = 'light';
  52. </script>
  53. <style lang="less" scoped>
  54. .layout {
  55. display: flex;
  56. height: calc(100% - 1000px);
  57. overflow: hidden;
  58. .ant-layout {
  59. overflow: hidden;
  60. background-color: #f6f8f9 !important;
  61. }
  62. .layout-content {
  63. flex: none;
  64. }
  65. .layout-header {
  66. height: 56px;
  67. }
  68. }
  69. </style>