Layout.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <div class="Layout">
  3. <nav class="Layout__nav" v-if="!$store.state.isMinion">
  4. <NavMenu :menus="menus" />
  5. </nav>
  6. <main class="Layout__main">
  7. <article class="Layout__content">
  8. <router-view />
  9. </article>
  10. </main>
  11. </div>
  12. </template>
  13. <script>
  14. import { mapState } from 'vuex'
  15. import NavMenu from '@/components/common/menu'
  16. export default {
  17. components: {
  18. NavMenu,
  19. },
  20. computed: {
  21. ...mapState('user', {
  22. userInfo: 'info',
  23. menus: 'menus',
  24. }),
  25. },
  26. methods: {
  27. goBack ({ keyCode }) {
  28. if (keyCode === 27) this.$stack.go()
  29. },
  30. },
  31. mounted () {
  32. window.addEventListener('keydown', this.goBack, false)
  33. },
  34. beforeDestroy () {
  35. window.removeEventListener('keydown', this.goBack, false)
  36. },
  37. }
  38. </script>
  39. <style lang="scss" scoped>
  40. .Layout {
  41. display: flex;
  42. width: 100vw;
  43. height: 100vh;
  44. overflow: hidden;
  45. background: #fff;
  46. }
  47. .Layout__nav {
  48. flex: 0 0 auto;
  49. overflow: hidden;
  50. }
  51. .Layout__main {
  52. display: flex;
  53. flex-direction: column;
  54. flex: 1;
  55. overflow: hidden;
  56. }
  57. .Layout__content {
  58. flex: 1;
  59. overflow: hidden;
  60. }
  61. </style>