index.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <div class="avue-top">
  3. <div class="top-bar__left">
  4. <div
  5. v-if="showCollapse"
  6. :class="[{ 'avue-breadcrumb--active': isCollapse }]"
  7. class="avue-breadcrumb">
  8. <i
  9. class="icon-navicon"
  10. @click="setCollapse"/>
  11. </div>
  12. </div>
  13. <div class="top-bar__title">
  14. <div
  15. v-if="showMenu"
  16. class="top-bar__item top-bar__item--show">
  17. <top-menu/>
  18. </div>
  19. </div>
  20. <div class="top-bar__right">
  21. <el-tooltip
  22. v-if="showColor"
  23. effect="dark"
  24. content="主题色"
  25. placement="bottom">
  26. <div class="top-bar__item">
  27. <top-color/>
  28. </div>
  29. </el-tooltip>
  30. <el-tooltip
  31. v-if="showDebug"
  32. :content="logsFlag?'没有错误日志':`${logsLen}条错误日志`"
  33. effect="dark"
  34. placement="bottom">
  35. <div class="top-bar__item">
  36. <top-logs/>
  37. </div>
  38. </el-tooltip>
  39. <el-tooltip
  40. v-if="showLock"
  41. effect="dark"
  42. content="锁屏"
  43. placement="bottom">
  44. <div class="top-bar__item">
  45. <top-lock/>
  46. </div>
  47. </el-tooltip>
  48. <el-tooltip
  49. v-if="showTheme"
  50. effect="dark"
  51. content="特色主题"
  52. placement="bottom">
  53. <div class="top-bar__item top-bar__item--show">
  54. <top-theme/>
  55. </div>
  56. </el-tooltip>
  57. <el-tooltip
  58. v-if="showFullScren"
  59. :content="isFullScren?'退出全屏':'全屏'"
  60. effect="dark"
  61. placement="bottom">
  62. <div class="top-bar__item">
  63. <i
  64. :class="isFullScren?'icon-zuixiaohua':'icon-quanpingzuidahua'"
  65. @click="handleScreen"/>
  66. </div>
  67. </el-tooltip>
  68. <el-tooltip
  69. v-if="userInfo.avatar"
  70. effect="dark"
  71. content="用户头像"
  72. placement="bottom">
  73. <img
  74. id="thumbnail"
  75. class="top-bar__img">
  76. </el-tooltip>
  77. <el-dropdown>
  78. <span class="el-dropdown-link">
  79. {{ userInfo.username }}
  80. <i class="el-icon-arrow-down el-icon--right"/>
  81. </span>
  82. <el-dropdown-menu slot="dropdown">
  83. <el-dropdown-item divided>
  84. <router-link to="/">首页</router-link>
  85. </el-dropdown-item>
  86. <el-dropdown-item divided>
  87. <router-link to="/info/index">个人信息</router-link>
  88. </el-dropdown-item>
  89. <el-dropdown-item
  90. divided
  91. @click.native="$refs.seting.open()">界面设置
  92. </el-dropdown-item>
  93. <el-dropdown-item
  94. divided
  95. @click.native="logout">退出系统
  96. </el-dropdown-item>
  97. </el-dropdown-menu>
  98. </el-dropdown>
  99. <top-setting ref="seting"/>
  100. </div>
  101. </div>
  102. </template>
  103. <script>
  104. import { mapGetters, mapState } from 'vuex'
  105. import { fullscreenToggel, handleImg, listenfullscreen } from '@/util/util'
  106. import topLock from './top-lock'
  107. import topMenu from './top-menu'
  108. import topTheme from './top-theme'
  109. import topLogs from './top-logs'
  110. import topColor from './top-color'
  111. import topSetting from './top-setting'
  112. export default {
  113. name: 'Top',
  114. components: {
  115. topLock,
  116. topMenu,
  117. topTheme,
  118. topLogs,
  119. topColor,
  120. topSetting
  121. },
  122. filters: {},
  123. data() {
  124. return {}
  125. },
  126. computed: {
  127. ...mapState({
  128. showDebug: state => state.common.showDebug,
  129. showTheme: state => state.common.showTheme,
  130. showLock: state => state.common.showLock,
  131. showFullScren: state => state.common.showFullScren,
  132. showCollapse: state => state.common.showCollapse,
  133. showMenu: state => state.common.showMenu,
  134. showColor: state => state.common.showColor
  135. }),
  136. ...mapGetters([
  137. 'userInfo',
  138. 'isFullScren',
  139. 'tagWel',
  140. 'tagList',
  141. 'isCollapse',
  142. 'tag',
  143. 'logsLen',
  144. 'logsFlag'
  145. ])
  146. },
  147. created() {
  148. handleImg(this.userInfo.avatar, 'thumbnail')
  149. },
  150. mounted() {
  151. listenfullscreen(this.setScreen)
  152. },
  153. methods: {
  154. handleScreen() {
  155. fullscreenToggel()
  156. },
  157. setCollapse() {
  158. this.$store.commit('SET_COLLAPSE')
  159. },
  160. setScreen() {
  161. this.$store.commit('SET_FULLSCREN')
  162. },
  163. logout() {
  164. this.$confirm('是否退出系统, 是否继续?', '提示', {
  165. confirmButtonText: '确定',
  166. cancelButtonText: '取消',
  167. type: 'warning'
  168. }).then(() => {
  169. this.$store.dispatch('LogOut').then(() => {
  170. this.$router.push({ path: '/login' })
  171. })
  172. })
  173. }
  174. }
  175. }
  176. </script>
  177. <style lang="scss" scoped>
  178. </style>