|
|
|
<template>
|
|
|
|
<div id="app">
|
|
|
|
<!-- <nav>
|
|
|
|
<router-link to="/">Home</router-link> |
|
|
|
|
<router-link to="/about">About</router-link> |
|
|
|
|
<router-link to="/ui">组件示例文件</router-link>
|
|
|
|
</nav> -->
|
|
|
|
<!-- <router-view/> -->
|
|
|
|
<el-container>
|
|
|
|
<el-header style="height: 62px;" v-if="showHeader">
|
|
|
|
<Header></Header>
|
|
|
|
<video class="top_viedo" width="100%" src="./assets/headerBg1.mp4" autoplay loop muted
|
|
|
|
></video>
|
|
|
|
<div class="bg"></div>
|
|
|
|
</el-header>
|
|
|
|
<el-container :class="(showHeader ? 'short-container' : '')">
|
|
|
|
<SliderMenu v-if="showSidebar"></SliderMenu>
|
|
|
|
<el-container>
|
|
|
|
<!-- 面包屑导航 -->
|
|
|
|
<Breadcrumb />
|
|
|
|
<el-main class="app-content">
|
|
|
|
<global-loading>
|
|
|
|
<router-view />
|
|
|
|
</global-loading>
|
|
|
|
</el-main>
|
|
|
|
<!-- <el-footer v-if="showFooter">
|
|
|
|
<Footer></Footer>
|
|
|
|
</el-footer> -->
|
|
|
|
|
|
|
|
</el-container>
|
|
|
|
</el-container>
|
|
|
|
</el-container>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import SliderMenu from '@/components/SliderMenu.vue';
|
|
|
|
// import Footer from '@/components/Footer.vue';
|
|
|
|
import { mapState } from 'vuex';
|
|
|
|
import Header from './components/Header.vue';
|
|
|
|
import Breadcrumb from './components/Breadcrumb.vue';
|
|
|
|
// import loadingAnimation from '@/assets/loadingAni.json' // 导入JSON文件
|
|
|
|
import GlobalLoading from '@/components/GlobalLoading1.vue'
|
|
|
|
// import ContentWithLoading from '@/components/ContentWithLoading'
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
isCollapse: true,
|
|
|
|
menuData: [
|
|
|
|
{
|
|
|
|
index: '1',
|
|
|
|
title: '父级菜单1',
|
|
|
|
icon: 'el-icon-location',
|
|
|
|
children: [
|
|
|
|
{ index: '1-1', title: '子级菜单1-1', path: '/' },
|
|
|
|
{ index: '1-2', title: 'ui页面', path: '/ui' }
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
index: '2',
|
|
|
|
title: '父级菜单2',
|
|
|
|
icon: 'el-icon-menu',
|
|
|
|
children: [
|
|
|
|
{ index: '2-1', title: '子级菜单2-1', path: '/about' },
|
|
|
|
{ index: '2-2', title: '加盟耶main', path: '/franchise' }
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
};
|
|
|
|
},
|
|
|
|
components: {
|
|
|
|
GlobalLoading,
|
|
|
|
// ContentWithLoading,
|
|
|
|
SliderMenu,
|
|
|
|
// Footer,
|
|
|
|
Header,
|
|
|
|
Breadcrumb
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
...mapState(['showSidebar', 'showFooter', 'showHeader']) // 从Vuex映射showSidebar状态到组件的计算属性中
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
window.addEventListener('beforeunload', this.clearStorage);
|
|
|
|
},
|
|
|
|
beforeUnmount() {
|
|
|
|
window.removeEventListener('beforeunload', this.clearStorage);
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
clearStorage() {
|
|
|
|
// 或按需清除特定项:
|
|
|
|
localStorage.removeItem('date');
|
|
|
|
},
|
|
|
|
handleOpen(key, keyPath) {
|
|
|
|
console.log(key, keyPath);
|
|
|
|
},
|
|
|
|
handleClose(key, keyPath) {
|
|
|
|
console.log(key, keyPath);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
#app {
|
|
|
|
font-family: Avenir, Helvetica, Arial, sans-serif;
|
|
|
|
font-family: Microsoft YaHei UI;
|
|
|
|
-webkit-font-smoothing: antialiased;
|
|
|
|
-moz-osx-font-smoothing: grayscale;
|
|
|
|
text-align: center;
|
|
|
|
color: #2c3e50;
|
|
|
|
height: 100%;
|
|
|
|
background: #F5F7FA;
|
|
|
|
}
|
|
|
|
.app-content {
|
|
|
|
position: relative;
|
|
|
|
isolation: isolate;
|
|
|
|
}
|
|
|
|
.short-container {
|
|
|
|
height: calc(100vh - 62px);
|
|
|
|
}
|
|
|
|
|
|
|
|
::v-deep .el-container .el-main {
|
|
|
|
// padding: 12px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.bg {
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
position: absolute;
|
|
|
|
left: 0;
|
|
|
|
top: 0;
|
|
|
|
background: rgba(255, 255, 255, 0.61);
|
|
|
|
z-index: 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
::v-deep .el-header {
|
|
|
|
height: 62px;
|
|
|
|
overflow: hidden;
|
|
|
|
position: relative;
|
|
|
|
box-sizing: border-box;
|
|
|
|
background: linear-gradient(270deg, #4EA4F3 0%, #3D85EA 100%);
|
|
|
|
}
|
|
|
|
|
|
|
|
.top_viedo {
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
position: absolute;
|
|
|
|
object-fit: cover;
|
|
|
|
left: 0;
|
|
|
|
top: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
nav {
|
|
|
|
padding: 30px;
|
|
|
|
|
|
|
|
a {
|
|
|
|
font-weight: bold;
|
|
|
|
color: #2c3e50;
|
|
|
|
|
|
|
|
&.router-link-exact-active {
|
|
|
|
color: #42b983;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|