声脉桥梁云监控平台

Layout.vue 1.9KB

    <template> <div class="app-wrapper" :class="classObj"> <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"></div> <sidebar class="sidebar-container" v-if="roles.indexOf('1')>=0"></sidebar> <TopNavbar></TopNavbar> <div class="main-container" :style="(roles.indexOf('1')>=0) ? '' : 'marginLeft:0'"> <navbar></navbar> <app-main></app-main> </div> </div> </template> <script> import { mapGetters } from 'vuex' import { TopNavbar, Navbar, Sidebar, AppMain } from './components' import ResizeMixin from './mixin/ResizeHandler' export default { name: 'layout', components: { TopNavbar, Navbar, Sidebar, AppMain }, mixins: [ResizeMixin], computed: { ...mapGetters([ 'roles' ]), sidebar() { return this.$store.state.app.sidebar }, device() { return this.$store.state.app.device }, classObj() { return { hideSidebar: !this.sidebar.opened, openSidebar: this.sidebar.opened, withoutAnimation: this.sidebar.withoutAnimation, mobile: this.device === 'mobile' } } }, methods: { handleClickOutside() { this.$store.dispatch('CloseSideBar', { withoutAnimation: false }) } } } </script> <style rel="stylesheet/scss" lang="scss" scoped> @import "src/styles/mixin.scss"; .app-wrapper { @include clearfix; position: relative; height: 100%; width: 100%; &.mobile.openSidebar{ position: fixed; top: 0; } } .drawer-bg { background: #000; opacity: 0.3; width: 100%; top: 0; height: 100%; position: absolute; z-index: 999; } .main-footer{ z-index: 2002; position:fixed; background: rgba(48, 65, 86, 1); border-top:1px solid #e6e6e6; bottom:0; left:0; right:0; font-size:14px; text-align: center; color: #333; } </style>