|
|
|
|
@ -1,14 +1,14 @@
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
|
import LayFrame from "../lay-frame/index.vue";
|
|
|
|
|
import LayFooter from "../lay-footer/index.vue";
|
|
|
|
|
import { useTags } from "@/layout/hooks/useTag";
|
|
|
|
|
import { useGlobal, isNumber } from "@pureadmin/utils";
|
|
|
|
|
import BackTopIcon from "@/assets/svg/back_top.svg?component";
|
|
|
|
|
import { h, computed, Transition, defineComponent } from "vue";
|
|
|
|
|
import { usePermissionStoreHook } from "@/store/modules/permission";
|
|
|
|
|
import LayFrame from '../lay-frame/index.vue';
|
|
|
|
|
import LayFooter from '../lay-footer/index.vue';
|
|
|
|
|
import { useTags } from '@/layout/hooks/useTag';
|
|
|
|
|
import { useGlobal, isNumber } from '@pureadmin/utils';
|
|
|
|
|
import BackTopIcon from '@/assets/svg/back_top.svg?component';
|
|
|
|
|
import { h, computed, Transition, defineComponent } from 'vue';
|
|
|
|
|
import { usePermissionStoreHook } from '@/store/modules/permission';
|
|
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
|
|
|
fixedHeader: Boolean
|
|
|
|
|
fixedHeader: Boolean,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const { showModel } = useTags();
|
|
|
|
|
@ -19,7 +19,7 @@ const isKeepAlive = computed(() => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const transitions = computed(() => {
|
|
|
|
|
return route => {
|
|
|
|
|
return (route) => {
|
|
|
|
|
return route.meta.transition;
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
@ -37,38 +37,20 @@ const stretch = computed(() => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const layout = computed(() => {
|
|
|
|
|
return $storage?.layout.layout === "vertical";
|
|
|
|
|
return $storage?.layout.layout === 'vertical';
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const getMainWidth = computed(() => {
|
|
|
|
|
return isNumber(stretch.value)
|
|
|
|
|
? stretch.value + "px"
|
|
|
|
|
: stretch.value
|
|
|
|
|
? "1440px"
|
|
|
|
|
: "100%";
|
|
|
|
|
return isNumber(stretch.value) ? stretch.value + 'px' : stretch.value ? '1440px' : '100%';
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const getSectionStyle = computed(() => {
|
|
|
|
|
return [
|
|
|
|
|
hideTabs.value && layout ? "padding-top: 48px;" : "",
|
|
|
|
|
!hideTabs.value && layout
|
|
|
|
|
? showModel.value == "chrome"
|
|
|
|
|
? "padding-top: 85px;"
|
|
|
|
|
: "padding-top: 81px;"
|
|
|
|
|
: "",
|
|
|
|
|
hideTabs.value && !layout.value ? "padding-top: 48px;" : "",
|
|
|
|
|
!hideTabs.value && !layout.value
|
|
|
|
|
? showModel.value == "chrome"
|
|
|
|
|
? "padding-top: 85px;"
|
|
|
|
|
: "padding-top: 81px;"
|
|
|
|
|
: "",
|
|
|
|
|
props.fixedHeader
|
|
|
|
|
? ""
|
|
|
|
|
: `padding-top: 0;${
|
|
|
|
|
hideTabs.value
|
|
|
|
|
? "min-height: calc(100vh - 48px);"
|
|
|
|
|
: "min-height: calc(100vh - 86px);"
|
|
|
|
|
}`
|
|
|
|
|
hideTabs.value && layout ? 'padding-top: 48px;' : '',
|
|
|
|
|
!hideTabs.value && layout ? (showModel.value == 'chrome' ? 'padding-top: 85px;' : 'padding-top: 81px;') : '',
|
|
|
|
|
hideTabs.value && !layout.value ? 'padding-top: 48px;' : '',
|
|
|
|
|
!hideTabs.value && !layout.value ? (showModel.value == 'chrome' ? 'padding-top: 85px;' : 'padding-top: 81px;') : '',
|
|
|
|
|
props.fixedHeader ? '' : `padding-top: 0;${hideTabs.value ? 'min-height: calc(100vh - 48px);' : 'min-height: calc(100vh - 86px);'}`,
|
|
|
|
|
];
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@ -76,32 +58,27 @@ const transitionMain = defineComponent({
|
|
|
|
|
props: {
|
|
|
|
|
route: {
|
|
|
|
|
type: undefined,
|
|
|
|
|
required: true
|
|
|
|
|
}
|
|
|
|
|
required: true,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
render() {
|
|
|
|
|
const transitionName =
|
|
|
|
|
transitions.value(this.route)?.name || "fade-transform";
|
|
|
|
|
const transitionName = transitions.value(this.route)?.name || 'fade-transform';
|
|
|
|
|
const enterTransition = transitions.value(this.route)?.enterTransition;
|
|
|
|
|
const leaveTransition = transitions.value(this.route)?.leaveTransition;
|
|
|
|
|
return h(
|
|
|
|
|
Transition,
|
|
|
|
|
{
|
|
|
|
|
name: enterTransition ? "pure-classes-transition" : transitionName,
|
|
|
|
|
enterActiveClass: enterTransition
|
|
|
|
|
? `animate__animated ${enterTransition}`
|
|
|
|
|
: undefined,
|
|
|
|
|
leaveActiveClass: leaveTransition
|
|
|
|
|
? `animate__animated ${leaveTransition}`
|
|
|
|
|
: undefined,
|
|
|
|
|
mode: "out-in",
|
|
|
|
|
appear: true
|
|
|
|
|
name: enterTransition ? 'pure-classes-transition' : transitionName,
|
|
|
|
|
enterActiveClass: enterTransition ? `animate__animated ${enterTransition}` : undefined,
|
|
|
|
|
leaveActiveClass: leaveTransition ? `animate__animated ${leaveTransition}` : undefined,
|
|
|
|
|
mode: 'out-in',
|
|
|
|
|
appear: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
default: () => [this.$slots.default()]
|
|
|
|
|
default: () => [this.$slots.default()],
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
@ -112,7 +89,10 @@ const transitionMain = defineComponent({
|
|
|
|
|
>
|
|
|
|
|
<router-view>
|
|
|
|
|
<template #default="{ Component, route }">
|
|
|
|
|
<LayFrame :currComp="Component" :currRoute="route">
|
|
|
|
|
<LayFrame
|
|
|
|
|
:currComp="Component"
|
|
|
|
|
:currRoute="route"
|
|
|
|
|
>
|
|
|
|
|
<template #default="{ Comp, fullPath, frameInfo }">
|
|
|
|
|
<el-scrollbar
|
|
|
|
|
v-if="fixedHeader"
|
|
|
|
|
@ -121,13 +101,13 @@ const transitionMain = defineComponent({
|
|
|
|
|
'flex-wrap': 'wrap',
|
|
|
|
|
'max-width': getMainWidth,
|
|
|
|
|
margin: '0 auto',
|
|
|
|
|
transition: 'all 300ms cubic-bezier(0.4, 0, 0.2, 1)'
|
|
|
|
|
transition: 'all 300ms cubic-bezier(0.4, 0, 0.2, 1)',
|
|
|
|
|
}"
|
|
|
|
|
:view-style="{
|
|
|
|
|
display: 'flex',
|
|
|
|
|
flex: 'auto',
|
|
|
|
|
overflow: 'hidden',
|
|
|
|
|
'flex-direction': 'column'
|
|
|
|
|
'flex-direction': 'column',
|
|
|
|
|
}"
|
|
|
|
|
>
|
|
|
|
|
<el-backtop
|
|
|
|
|
@ -136,7 +116,7 @@ const transitionMain = defineComponent({
|
|
|
|
|
>
|
|
|
|
|
<BackTopIcon />
|
|
|
|
|
</el-backtop>
|
|
|
|
|
<div class="grow">
|
|
|
|
|
|
|
|
|
|
<transitionMain :route="route">
|
|
|
|
|
<keep-alive
|
|
|
|
|
v-if="isKeepAlive"
|
|
|
|
|
@ -157,10 +137,10 @@ const transitionMain = defineComponent({
|
|
|
|
|
class="main-content"
|
|
|
|
|
/>
|
|
|
|
|
</transitionMain>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<LayFooter v-if="!hideFooter" />
|
|
|
|
|
</el-scrollbar>
|
|
|
|
|
<div v-else class="grow">
|
|
|
|
|
<template v-else>
|
|
|
|
|
<transitionMain :route="route">
|
|
|
|
|
<keep-alive
|
|
|
|
|
v-if="isKeepAlive"
|
|
|
|
|
@ -181,7 +161,7 @@ const transitionMain = defineComponent({
|
|
|
|
|
class="main-content"
|
|
|
|
|
/>
|
|
|
|
|
</transitionMain>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
</template>
|
|
|
|
|
</LayFrame>
|
|
|
|
|
</template>
|
|
|
|
|
@ -208,6 +188,6 @@ const transitionMain = defineComponent({
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.main-content {
|
|
|
|
|
margin: 24px;
|
|
|
|
|
margin: 0;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
|