index.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <template>
  2. <div class="box" :class="{mini: isMini}">
  3. <div class="list d-flex flex-column">
  4. <div style="flex: 1; height: 0; overflow: auto;">
  5. <v-list color="rgba(0,0,0,0)" subheader>
  6. <slot></slot>
  7. <side-list :items="list" :mini-menu="isMini" />
  8. </v-list>
  9. </div>
  10. <!-- <div class="list-bottom white">
  11. <v-divider></v-divider>
  12. <div class="pa-3">
  13. <div class="d-flex mb-1">
  14. <div class="list-bottom-label mr-3">今日访问</div>
  15. <div>{{ dayTotal }}</div>
  16. </div>
  17. <div class="d-flex">
  18. <div class="list-bottom-label mr-3">总访问量</div>
  19. <div>{{ total }}</div>
  20. </div>
  21. </div>
  22. </div> -->
  23. </div>
  24. <!-- <div class="tools"> -->
  25. <!-- 判断是否有权限 -->
  26. <!-- <v-btn depressed color="blue-grey" class="white--text">
  27. <v-icon
  28. left
  29. dark
  30. >
  31. mdi-cog
  32. </v-icon>
  33. 菜单设置
  34. </v-btn> -->
  35. <!-- </div> -->
  36. </div>
  37. </template>
  38. <script>
  39. import SideList from '@/components/Side/sideList.vue'
  40. import { mapGetters } from 'vuex'
  41. // import { getBurialPointStatistics } from '@/api/system'
  42. export default {
  43. name: 'side-index',
  44. components: { SideList },
  45. props: {
  46. isMini: {
  47. type: Boolean,
  48. default: false
  49. }
  50. },
  51. data () {
  52. return {
  53. active: false,
  54. dayTotal: 0,
  55. total: 0
  56. }
  57. },
  58. computed: {
  59. ...mapGetters(['roles']),
  60. list () {
  61. return this.getList(this.roles)
  62. }
  63. },
  64. // created () {
  65. // this.handleGetBurialPointStatistics()
  66. // },
  67. methods: {
  68. getList (arr, obj = []) {
  69. arr.sort((a, b) => a - b).forEach(element => {
  70. if (element.hidden) return
  71. const data = {}
  72. data.title = element.meta.title
  73. data.target = element.meta.target
  74. data.enName = element.enName
  75. data.name = element.name
  76. data.path = element.path
  77. data.icon = element.icon
  78. data.active = false
  79. data.children = []
  80. if (element?.children) {
  81. this.getList(element.children, data.children)
  82. }
  83. obj.push(data)
  84. })
  85. return obj
  86. }
  87. // async handleGetBurialPointStatistics () {
  88. // try {
  89. // const { data } = await getBurialPointStatistics()
  90. // this.dayTotal = data.dayTotal ?? 0
  91. // this.total = data.total ?? 0
  92. // } catch (error) {
  93. // this.$snackbar.error(error)
  94. // }
  95. // }
  96. }
  97. }
  98. </script>
  99. <style lang="scss" scoped>
  100. .box {
  101. width: 230px;
  102. &.mini {
  103. width: 60px;
  104. }
  105. .card {
  106. // background: var(--v-info-lighten2);
  107. display: flex;
  108. flex-direction: column;
  109. }
  110. .list {
  111. height: 100%;
  112. &-bottom {
  113. // position: sticky;
  114. // bottom: 0;
  115. }
  116. }
  117. .tools {
  118. width: 100%;
  119. height: 60px;
  120. // position: absolute;
  121. display: flex;
  122. align-items: center;
  123. padding: 10px;
  124. box-sizing: border-box;
  125. }
  126. }
  127. </style>