index.vue 2.02 KB
Newer Older
Pan's avatar
Pan committed
1
<template>
2
  <div :class="classObj" class="app-wrapper">
yanzhongrong's avatar
yanzhongrong committed
3
    <navbar />
花裤衩's avatar
花裤衩 committed
4
    <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
yanzhongrong's avatar
yanzhongrong committed
5
    <div :class="{sidebarHide: sidebar.hide}" class="main-container">
yanzhongrong's avatar
yanzhongrong committed
6 7 8 9 10
      <orgTree style="float:left" />
      <div class="flex_clo">
        <Breadcrumb />
        <app-main />
      </div>
Pan's avatar
Pan committed
11 12
    </div>
  </div>
Pan's avatar
Pan committed
13 14 15
</template>

<script>
yanzhongrong's avatar
yanzhongrong committed
16
import Breadcrumb from '@/components/Breadcrumb'
yanzhongrong's avatar
yanzhongrong committed
17
import { Navbar, Sidebar, AppMain, Topbar } from './components'
18
import ResizeMixin from './mixin/ResizeHandler'
yanzhongrong's avatar
yanzhongrong committed
19
import orgTree from '@/components/orgTree.vue'
Pan's avatar
Pan committed
20

Pan's avatar
Pan committed
21
export default {
22
  name: 'Layout',
Pan's avatar
Pan committed
23
  components: {
yanzhongrong's avatar
yanzhongrong committed
24
    Breadcrumb,
Pan's avatar
Pan committed
25 26
    Navbar,
    Sidebar,
yanzhongrong's avatar
yanzhongrong committed
27
    AppMain,
yanzhongrong's avatar
yanzhongrong committed
28 29
    Topbar,
    orgTree
Pan's avatar
Pan committed
30
  },
31
  mixins: [ResizeMixin],
Pan's avatar
Pan committed
32 33 34
  computed: {
    sidebar() {
      return this.$store.state.app.sidebar
35 36 37 38
    },
    device() {
      return this.$store.state.app.device
    },
花裤衩's avatar
花裤衩 committed
39 40 41
    fixedHeader() {
      return this.$store.state.settings.fixedHeader
    },
42 43 44
    classObj() {
      return {
        hideSidebar: !this.sidebar.opened,
45
        openSidebar: this.sidebar.opened,
46 47 48
        withoutAnimation: this.sidebar.withoutAnimation,
        mobile: this.device === 'mobile'
      }
Pan's avatar
Pan committed
49
    }
50 51 52
  },
  methods: {
    handleClickOutside() {
53
      this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })
54
    }
Pan's avatar
Pan committed
55 56
  }
}
Pan's avatar
Pan committed
57 58
</script>

花裤衩's avatar
花裤衩 committed
59 60 61 62
<style lang="scss" scoped>
  @import "~@/styles/mixin.scss";
  @import "~@/styles/variables.scss";

63 64 65 66 67
  .app-wrapper {
    @include clearfix;
    position: relative;
    height: 100%;
    width: 100%;
68 69 70 71
    &.mobile.openSidebar{
      position: fixed;
      top: 0;
    }
72
  }
73 74 75 76 77 78 79 80 81
  .drawer-bg {
    background: #000;
    opacity: 0.3;
    width: 100%;
    top: 0;
    height: 100%;
    position: absolute;
    z-index: 999;
  }
花裤衩's avatar
花裤衩 committed
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98

  .fixed-header {
    position: fixed;
    top: 0;
    right: 0;
    z-index: 9;
    width: calc(100% - #{$sideBarWidth});
    transition: width 0.28s;
  }

  .hideSidebar .fixed-header {
    width: calc(100% - 54px)
  }

  .mobile .fixed-header {
    width: 100%;
  }
Pan's avatar
Pan committed
99
</style>