| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <template>
- <Layout :class="prefixCls" v-bind="lockEvents">
- <LayoutFeatures />
- <LayoutHeader fixed v-if="getShowFullHeaderRef" />
- <Layout :class="[layoutClass, `${prefixCls}-out`]">
- <LayoutSideBar v-if="getShowSidebar || getIsMobile" />
- <Layout :class="`${prefixCls}-main`">
- <LayoutMultipleHeader v-if="username !== 'autoAdmin'" />
- <LayoutContent />
- <LayoutFooter />
- </Layout>
- </Layout>
- </Layout>
- </template>
- <script lang="ts" setup>
- import { computed, unref, ref } from 'vue';
- import { Layout } from 'ant-design-vue';
- import { createAsyncComponent } from '@/utils/factory/createAsyncComponent';
- import LayoutHeader from './header/index.vue';
- import LayoutContent from './content/index.vue';
- import LayoutSideBar from './sider/index.vue';
- import LayoutMultipleHeader from './header/MultipleHeader.vue';
- import { useHeaderSetting } from '@/hooks/setting/useHeaderSetting';
- import { useMenuSetting } from '@/hooks/setting/useMenuSetting';
- import { useDesign } from '@/hooks/web/useDesign';
- import { useLockPage } from '@/hooks/web/useLockPage';
- import { useAppInject } from '@/hooks/web/useAppInject';
- import { useMultipleTabSetting } from '@/hooks/setting/useMultipleTabSetting';
- import { useUserStore } from '@/store/modules/user';
- const userStore = useUserStore();
- const LayoutFeatures = createAsyncComponent(() => import('@/layouts/default/feature/index.vue'));
- const LayoutFooter = createAsyncComponent(() => import('@/layouts/default/footer/index.vue'));
- defineOptions({ name: 'DefaultLayout' });
- const { prefixCls } = useDesign('default-layout');
- const { getIsMobile } = useAppInject();
- const { getShowFullHeaderRef } = useHeaderSetting();
- const { getShowSidebar, getIsMixSidebar, getShowMenu } = useMenuSetting();
- const { getAutoCollapse } = useMultipleTabSetting();
- // Create a lock screen monitor
- const lockEvents = useLockPage();
- const layoutClass = computed(() => {
- let cls: string[] = ['vMonitor-layout'];
- if (unref(getIsMixSidebar) || unref(getShowMenu)) {
- cls.push('vMonitor-layout-has-sider');
- }
- if (!unref(getShowMenu) && unref(getAutoCollapse)) {
- cls.push('vMonitor-layout-auto-collapse-tabs');
- }
- return cls;
- });
- const userInfo = userStore.getUserInfo;
- const username = ref(userInfo.username ? userInfo.username : '');
- </script>
- <style lang="less">
- @prefix-cls: ~'@{namespace}-default-layout';
- .@{prefix-cls} {
- display: flex;
- flex-direction: column;
- width: 100%;
- min-height: 100%;
- background-color: @content-bg;
- > .vMonitor-layout {
- min-height: 100%;
- background-color: @content-bg;
- }
- &-main {
- width: 100%;
- margin-left: 1px;
- }
- }
- .@{prefix-cls}-out {
- &.vMonitor-layout-has-sider {
- .@{prefix-cls} {
- &-main {
- margin-left: 1px;
- }
- }
- }
- }
- .vMonitor-layout {
- background-color: @content-bg;
- }
- </style>
|