index.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <template>
  2. <div class="panel">
  3. <div class="flex-align-stretch">
  4. <asideTemp @getModules="getModules"></asideTemp>
  5. <div style="flex:100" class="body__panel">
  6. <headeTemp></headeTemp>
  7. <div>
  8. <!-- <menuTemp class="sticky normal-margin" :style="marginTrue ? 'margin-bottom:70px !important' : 'margin-bottom:16px'" ref="menu" style="background: red"></menuTemp>-->
  9. <menuTemp class="sticky normal-margin" ref="menu" @switch="debouned"></menuTemp>
  10. <div class="radius" ref="divContent" :style="{'marginTop':divTop,'height':divHeight}">
  11. <keep-alive :include="pageCache">
  12. <router-view></router-view>
  13. </keep-alive>
  14. </div>
  15. </div>
  16. </div>
  17. <navTemp @getModules="getModules"></navTemp>
  18. </div>
  19. <socketMessage></socketMessage>
  20. </div>
  21. </template>
  22. <script>
  23. import headeTemp from './modules/header.vue'
  24. import asideTemp from './modules/aside.vue'
  25. import menuTemp from './modules/menu.vue'
  26. import navTemp from './modules/navRight.vue'
  27. import socketMessage from '@/components/socketMessage/index.vue'
  28. import {mapGetters} from 'vuex'
  29. export default {
  30. components:{
  31. headeTemp,
  32. asideTemp,
  33. menuTemp,
  34. navTemp,
  35. socketMessage,
  36. },
  37. computed: {
  38. ...mapGetters({
  39. pageCache: 'pageCache'
  40. })
  41. },
  42. data () {
  43. return {
  44. timer:null,
  45. marginTrue:false,
  46. divHeight:'',
  47. divTop:''
  48. }
  49. },
  50. methods:{
  51. getModules (mod,type) {
  52. // this.$refs['menu'].setModules(mod,type)
  53. },
  54. debouned () {
  55. if (this.timer) {
  56. clearTimeout(this.timer)
  57. }
  58. this.timer = setTimeout(() => {
  59. let size = this.$refs.menu.$refs.menuList.$el.clientHeight / 60 -1
  60. if (this.$refs.menu.$refs.menuList.$el.clientHeight === 120){
  61. this.divTop =(this.$refs.menu.$refs.menuList.$el.clientHeight - (45 * size)) + 'px'
  62. }else {
  63. this.divTop = 0 + 'px'
  64. }
  65. /* this.divHeight = (this.$refs.divContent.clientHeight - this.$refs.menu.$refs.menuList.$el.clientHeight + 10) + 'px'*/
  66. /* if (this.$refs.menu.$el.clientWidth < 1206 && Array.from(this.$refs.menu.$el.getElementsByTagName('li')).filter(item => item.className.indexOf('el-submenu') != -1).length > 8) {
  67. this.marginTrue = true
  68. } else {
  69. this.marginTrue = false
  70. }*/
  71. },200)
  72. }
  73. },
  74. mounted() {
  75. this.debouned()
  76. /* console.log('长度')
  77. console.log(this.$refs.menu.$refs.menuList.$el.clientHeight,'高度')
  78. console.log(this.$refs.menu.$refs.menuList.$el.clientHeight % 60)
  79. if (this.$refs.menu.$refs.menuList.$el.clientHeight === 120){
  80. this.divTop =(this.$refs.menu.$refs.menuList.$el.clientHeight - 50) + 'px'
  81. }else {
  82. this.divTop = 0 + 'px'
  83. }*/
  84. },
  85. created() {
  86. window.addEventListener('resize',this.debouned)
  87. this.$nextTick(() => {
  88. this.debouned()
  89. })
  90. },
  91. }
  92. </script>
  93. <style>
  94. .panel{
  95. background: url("../../assets/wallhaven-0pq8gm.jpeg") no-repeat;
  96. background-size: cover;
  97. }
  98. .el-menu{
  99. border-right:0
  100. }
  101. </style>
  102. <style scoped>
  103. .body__panel{
  104. height: 100vh;
  105. /* padding-right: 16px; */
  106. padding-right: 60px;
  107. margin-right: 10px;
  108. overflow-y: scroll;
  109. }
  110. .body__panel::-webkit-scrollbar{
  111. display:none !important;
  112. }
  113. .sticky {
  114. position: sticky;
  115. }
  116. .radius{
  117. /* margin: 16px 0; */
  118. border-radius:10px;
  119. overflow: hidden;
  120. box-shadow: 0 2px 5px rgb(0 0 0 / 10%);
  121. transform: translate3d(0,-2px,0);
  122. background: #fff;
  123. }
  124. </style>