index.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  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="$t('navbar.color')"
  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?$t('navbar.bug'):logsLen+$t('navbar.bugs')"
  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="$t('navbar.lock')"
  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="$t('navbar.theme')"
  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 effect="dark"
  55. :content="$t('navbar.language')"
  56. placement="bottom">
  57. <div class="top-bar__item top-bar__item--show">
  58. <top-lang></top-lang>
  59. </div>
  60. </el-tooltip>
  61. <el-tooltip v-if="showFullScren"
  62. effect="dark"
  63. :content="isFullScren?$t('navbar.screenfullF'):$t('navbar.screenfull')"
  64. placement="bottom">
  65. <div class="top-bar__item">
  66. <i :class="isFullScren?'icon-tuichuquanping':'icon-quanping'"
  67. @click="handleScreen"></i>
  68. </div>
  69. </el-tooltip>
  70. <img class="top-bar__img"
  71. :src="userInfo.avatar">
  72. <el-dropdown>
  73. <span class="el-dropdown-link">
  74. {{userInfo.userName}}
  75. <i class="el-icon-arrow-down el-icon--right"></i>
  76. </span>
  77. <el-dropdown-menu slot="dropdown">
  78. <el-dropdown-item>
  79. <router-link to="/">{{$t('navbar.dashboard')}}</router-link>
  80. </el-dropdown-item>
  81. <el-dropdown-item>
  82. <router-link to="/info/index">{{$t('navbar.userinfo')}}</router-link>
  83. </el-dropdown-item>
  84. <el-dropdown-item @click.native="logout"
  85. divided>{{$t('navbar.logOut')}}</el-dropdown-item>
  86. </el-dropdown-menu>
  87. </el-dropdown>
  88. </div>
  89. </div>
  90. </template>
  91. <script>
  92. import { mapGetters, mapState } from "vuex";
  93. import { fullscreenToggel, listenfullscreen } from "@/util/util";
  94. import topLock from "./top-lock";
  95. import topMenu from "./top-menu";
  96. // import topSearch from "./top-search";
  97. import topTheme from "./top-theme";
  98. import topLogs from "./top-logs";
  99. import topColor from "./top-color";
  100. import topLang from "./top-lang";
  101. export default {
  102. components: {
  103. topLock,
  104. topMenu,
  105. // topSearch,
  106. topTheme,
  107. topLogs,
  108. topColor,
  109. topLang
  110. },
  111. name: "top",
  112. data() {
  113. return {};
  114. },
  115. filters: {},
  116. created() {},
  117. mounted() {
  118. listenfullscreen(this.setScreen);
  119. },
  120. computed: {
  121. ...mapState({
  122. showDebug: state => state.common.showDebug,
  123. showTheme: state => state.common.showTheme,
  124. showLock: state => state.common.showLock,
  125. showFullScren: state => state.common.showFullScren,
  126. showCollapse: state => state.common.showCollapse,
  127. showSearch: state => state.common.showSearch,
  128. showMenu: state => state.common.showMenu,
  129. showColor: state => state.common.showColor
  130. }),
  131. ...mapGetters([
  132. "userInfo",
  133. "isFullScren",
  134. "tagWel",
  135. "tagList",
  136. "isCollapse",
  137. "tag",
  138. "logsLen",
  139. "logsFlag"
  140. ])
  141. },
  142. methods: {
  143. handleScreen() {
  144. fullscreenToggel();
  145. },
  146. setCollapse() {
  147. this.$store.commit("SET_COLLAPSE");
  148. },
  149. setScreen() {
  150. this.$store.commit("SET_FULLSCREN");
  151. },
  152. logout() {
  153. this.$confirm(this.$t("logoutTip"), this.$t("tip"), {
  154. confirmButtonText: this.$t("submitText"),
  155. cancelButtonText: this.$t("cancelText"),
  156. type: "warning"
  157. }).then(() => {
  158. this.$store.dispatch("LogOut").then(() => {
  159. this.$router.push({ path: "/login" });
  160. });
  161. });
  162. }
  163. }
  164. };
  165. </script>
  166. <style lang="scss" scoped>
  167. </style>