index.vue 5.1 KB

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