Top.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <template>
  2. <div :class="classObj" class="app__wrap">
  3. <!-- Top -->
  4. <div class="sidebar__wrap--Top">
  5. <div>
  6. <logo
  7. v-if="showLogo"
  8. :collapsed="collapsed"
  9. />
  10. </div>
  11. <div class="sidebar__item--Top">
  12. <sider :layout="layout" mode="horizontal" />
  13. </div>
  14. <div>
  15. <div v-if="showScreenfull || showUserInfo" class="navbar__wrap--right">
  16. <screenfull v-if="showScreenfull" class="hover-container screenfull-container" />
  17. <user-info v-if="showUserInfo" class="hover-container user-container" />
  18. </div>
  19. </div>
  20. </div>
  21. <!-- Top -->
  22. <div
  23. class="main__wrap"
  24. :class="{
  25. 'main__wrap--collapsed': collapsed
  26. }"
  27. >
  28. <el-scrollbar
  29. class="main__wrap--content"
  30. :class="{
  31. 'main__wrap--fixed--all': fixedHeader && showNavbar && showTags,
  32. 'main__wrap--fixed--nav': fixedHeader && showNavbar && !showTags,
  33. 'main__wrap--fixed--tags': fixedHeader && !showNavbar && showTags
  34. }"
  35. >
  36. <div
  37. class="header__wrap"
  38. :class="{
  39. 'header__wrap--fixed': fixedHeader,
  40. 'header__wrap--collapsed': fixedHeader && collapsed
  41. }"
  42. >
  43. <!-- <div
  44. v-if="showNavbar && layout !== 'Top'"
  45. class="navbar__wrap"
  46. >
  47. <hamburger
  48. v-if="showHamburger"
  49. :collapsed="collapsed"
  50. class="hover-container"
  51. @toggleClick="setCollapsed"
  52. />
  53. <breadcrumb v-if="showBreadcrumb" />
  54. <div v-if="showScreenfull || showUserInfo" class="navbar__wrap--right">
  55. <screenfull v-if="showScreenfull" class="hover-container screenfull-container" />
  56. <user-info v-if="showUserInfo" class="hover-container user-container" />
  57. </div>
  58. </div> -->
  59. <div
  60. v-if="showTags"
  61. class="tags__wrap"
  62. >
  63. <tags-view />
  64. </div>
  65. </div>
  66. <app-main />
  67. </el-scrollbar>
  68. </div>
  69. <!-- setting -->
  70. <setting />
  71. <!-- setting -->
  72. <backtop v-if="showBackTop" />
  73. </div>
  74. </template>
  75. <script lang="ts">
  76. import { defineComponent, computed } from 'vue'
  77. import { appStore } from '_p/index/store/modules/app'
  78. import AppMain from '../components/AppMain.vue'
  79. import TagsView from '_c/TagsView/index.vue'
  80. import Logo from '_c/Logo/index.vue'
  81. import Sider from '_c/Sider/index.vue'
  82. // import Hamburger from '_c/Hamburger/index.vue'
  83. // import Breadcrumb from '_c/Breadcrumb/index.vue'
  84. import Screenfull from '_c/Screenfull/index.vue'
  85. import UserInfo from '_c/UserInfo/index.vue'
  86. import Setting from '_c/Setting/index.vue'
  87. import Backtop from '_c/Backtop/index.vue'
  88. export default defineComponent({
  89. name: 'Top',
  90. components: {
  91. Sider,
  92. // Hamburger,
  93. // Breadcrumb,
  94. Screenfull,
  95. UserInfo,
  96. AppMain,
  97. TagsView,
  98. Logo,
  99. Setting,
  100. Backtop
  101. },
  102. setup() {
  103. const layout = computed(() => appStore.layout)
  104. const collapsed = computed(() => appStore.collapsed)
  105. const showLogo = computed(() => appStore.showLogo)
  106. const showTags = computed(() => appStore.showTags)
  107. const showBreadcrumb = computed(() => appStore.showBreadcrumb)
  108. const showHamburger = computed(() => appStore.showHamburger)
  109. const showScreenfull = computed(() => appStore.showScreenfull)
  110. const showUserInfo = computed(() => appStore.showUserInfo)
  111. const showNavbar = computed(() => appStore.showNavbar)
  112. // const fixedNavbar = computed(() => appStore.fixedNavbar)
  113. // const fixedTags = computed(() => appStore.fixedTags)
  114. const fixedHeader = computed(() => appStore.fixedHeader)
  115. const showBackTop = computed(() => appStore.showBackTop)
  116. const classObj = computed(() => {
  117. const obj = {}
  118. obj[`app__wrap--${layout.value}`] = true
  119. return obj
  120. })
  121. function setCollapsed(collapsed: boolean): void {
  122. appStore.SetCollapsed(collapsed)
  123. }
  124. return {
  125. classObj,
  126. layout,
  127. collapsed,
  128. showLogo,
  129. showTags,
  130. showBreadcrumb,
  131. showHamburger,
  132. showScreenfull,
  133. showUserInfo,
  134. showNavbar,
  135. fixedHeader,
  136. // fixedNavbar,
  137. // fixedTags,
  138. setCollapsed,
  139. showBackTop
  140. }
  141. }
  142. })
  143. </script>
  144. <style lang="less" scoped>
  145. @import './style.less';
  146. </style>