<template>
|
<section :class="['app-main', {'no-decoration': route.meta.decoration === false}]">
|
<router-view v-slot="{ Component, route }">
|
<transition name="fade-transform" mode="out-in">
|
<keep-alive :include="cachedViews">
|
<component :is="Component" :key="route.name" />
|
</keep-alive>
|
</transition>
|
</router-view>
|
</section>
|
</template>
|
|
<script setup name="AppMain">
|
import { defineComponent } from 'vue';
|
import { useTagsViewStore } from '@/store/tagsView';
|
import { storeToRefs } from 'pinia';
|
import { useRoute, useRouter } from "vue-router";
|
const route = useRoute();
|
const router = useRouter();
|
|
const tagsViewStore = useTagsViewStore();
|
const { cachedViews } = storeToRefs(tagsViewStore);
|
|
</script>
|
|
<style lang="less" scoped>
|
.app-main {
|
/* 50= navbar 50 */
|
// min-height: calc(100vh - 148px);
|
width: 100%;
|
position: relative;
|
overflow: hidden;
|
z-index: 0;
|
}
|
|
.fixed-header+.app-main {
|
padding-top: 148px;
|
}
|
|
.hasTagsView {
|
.app-main {
|
// height: calc(100vh - 148px);
|
background: url("@/assets/images/bg-side.png") calc(100% + 8px) top e('/') auto 80% no-repeat;
|
// position: relative;
|
z-index: 0;
|
&::before {
|
content: '';
|
position: absolute;
|
z-index: -1;
|
top: 0;
|
left: 0;
|
width: 100%;
|
height: 100%;
|
transform: scaleX(-1);
|
background: url("@/assets/images/bg-side.png") calc(100% + 8px) top e('/') auto 80% no-repeat;
|
}
|
&.no-decoration {
|
background: transparent;
|
&::before {
|
background: transparent;
|
}
|
}
|
}
|
|
// .fixed-header+.app-main {
|
// padding-top: 98px;
|
// }
|
}
|
</style>
|
|
<style lang="less">
|
// fix css style bug in open el-dialog
|
.el-popup-parent--hidden {
|
.fixed-header {
|
// padding-right: 15px;
|
}
|
}
|
</style>
|