SideMenuRouteView.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <template>
  2. <a-layout>
  3. <a-layout-sider
  4. v-if="menu&&menu.children!==null&&menu.children!==undefined"
  5. width="190px"
  6. v-model="collapsed"
  7. :theme="theme"
  8. :trigger="null">
  9. <s-menu
  10. :collapsed="collapsed"
  11. :menu="menu.children"
  12. :theme="theme"
  13. style="padding: 80px 0px;"></s-menu>
  14. </a-layout-sider>
  15. <a-layout class="mix-layout">
  16. <a-layout-content :style="{ minHeight: '100vh', margin: '15px 15px 0', paddingTop: '65px'}">
  17. <multi-tab v-if="multiTab"></multi-tab>
  18. <transition name="page-transition">
  19. <RouteView />
  20. </transition>
  21. </a-layout-content>
  22. <a-layout-footer>
  23. <global-footer />
  24. </a-layout-footer>
  25. </a-layout>
  26. </a-layout>
  27. </template>
  28. <script>
  29. import RouteView from './RouteView'
  30. import SMenu from '@/components/Menu'
  31. import { mapState } from 'vuex'
  32. import { mixin, mixinDevice } from '@/utils/mixin'
  33. import GlobalFooter from '@/components/GlobalFooter'
  34. export default {
  35. name: 'SideMenuRouteView',
  36. mixins: [mixin, mixinDevice],
  37. components: {
  38. RouteView,
  39. GlobalFooter,
  40. SMenu
  41. },
  42. props: {
  43. menus: {
  44. type: Object,
  45. required: true
  46. },
  47. theme: {
  48. type: String,
  49. required: false,
  50. default: 'dark'
  51. },
  52. collapsed: {
  53. type: Boolean,
  54. required: false,
  55. default: false
  56. }
  57. },
  58. data () {
  59. return {
  60. }
  61. },
  62. computed: {
  63. ...mapState({
  64. // 动态主路由
  65. activeMenu: state => state.permission.activeMenu
  66. }),
  67. menu () {
  68. return this.menus[this.activeMenu]
  69. }
  70. },
  71. mounted () {
  72. }
  73. }
  74. </script>
  75. <style lang="less">
  76. @import url('../components/global.less');
  77. .ant-pro-multi-tab{
  78. margin-left: 0px !important;
  79. }
  80. .ant-tabs-bar{
  81. padding-left: 0px !important;
  82. }
  83. .mix-layout{
  84. height: 100vh;
  85. overflow-y: auto;
  86. }
  87. </style>