Navbar.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <template>
  2. <div class="navbar">
  3. <hamburger
  4. id="hamburger-container"
  5. :is-active="sidebar.opened"
  6. class="hamburger-container"
  7. @toggleClick="toggleSideBar"
  8. />
  9. <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
  10. <div class="right-menu" style="display: flex">
  11. <div>
  12. <el-button @click="add_(0,0)" size="small" type="primary">任务管理</el-button>
  13. </div>
  14. <template v-if="device!=='mobile'">
  15. <search id="header-search" class="right-menu-item" />
  16. <error-log class="errLog-container right-menu-item hover-effect" />
  17. <screenfull id="screenfull" class="right-menu-item hover-effect" />
  18. <el-tooltip content="Global Size" effect="dark" placement="bottom">
  19. <size-select id="size-select" class="right-menu-item hover-effect" />
  20. </el-tooltip>
  21. </template>
  22. <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
  23. <div class="avatar-wrapper">
  24. <img :src="avatar+'?imageView2/1/w/80/h/80'" class="user-avatar" />
  25. <i class="el-icon-caret-bottom" />
  26. </div>
  27. <el-dropdown-menu slot="dropdown">
  28. <!-- <router-link to="/profile/index">
  29. <el-dropdown-item>Profile</el-dropdown-item>
  30. </router-link>-->
  31. <router-link to="/">
  32. <el-dropdown-item>Dashboard</el-dropdown-item>
  33. </router-link>
  34. <!-- <a target="_blank" href="https://github.com/PanJiaChen/vue-element-admin/">
  35. <el-dropdown-item>Github</el-dropdown-item>
  36. </a>
  37. <a target="_blank" href="https://panjiachen.github.io/vue-element-admin-site/#/">
  38. <el-dropdown-item>Docs</el-dropdown-item>
  39. </a>-->
  40. <el-dropdown-item divided>
  41. <span style="display:block;" @click="logout">Log Out</span>
  42. </el-dropdown-item>
  43. </el-dropdown-menu>
  44. </el-dropdown>
  45. </div>
  46. </div>
  47. </template>
  48. <script>
  49. import { mapGetters } from "vuex";
  50. import Breadcrumb from "@/components/Breadcrumb";
  51. import Hamburger from "@/components/Hamburger";
  52. import ErrorLog from "@/components/ErrorLog";
  53. import Screenfull from "@/components/Screenfull";
  54. import SizeSelect from "@/components/SizeSelect";
  55. import Search from "@/components/HeaderSearch";
  56. export default {
  57. components: {
  58. Breadcrumb,
  59. Hamburger,
  60. ErrorLog,
  61. Screenfull,
  62. SizeSelect,
  63. Search
  64. },
  65. data() {
  66. console.log(this.$store.state);
  67. return {
  68. avatar: this.$store.state.user.avatar,
  69. direction: 'rtl',
  70. drawer: false,
  71. id:0,
  72. type:0,
  73. };
  74. },
  75. computed: {
  76. ...mapGetters(["sidebar", "device"])
  77. },
  78. methods: {
  79. toggleSideBar() {
  80. this.$store.dispatch("app/toggleSideBar");
  81. },
  82. add_(){
  83. this.$router.push("/main/task?action=add&time="+Math.random());
  84. },
  85. async logout() {
  86. // await this.$store.dispatch("user/logout");
  87. console.log(
  88. this.$store.state.domainConfig.siteUrl +
  89. `/rooter/quit?next=${this.$route.fullPath}`
  90. );
  91. window.location.href =
  92. this.$store.state.domainConfig.siteUrl +
  93. `/rooter/quit?next=${this.$route.fullPath}`;
  94. }
  95. }
  96. };
  97. </script>
  98. <style lang="scss" scoped>
  99. .navbar {
  100. height: 50px;
  101. overflow: hidden;
  102. position: relative;
  103. background: #fff;
  104. box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
  105. .hamburger-container {
  106. line-height: 46px;
  107. height: 100%;
  108. float: left;
  109. cursor: pointer;
  110. transition: background 0.3s;
  111. -webkit-tap-highlight-color: transparent;
  112. &:hover {
  113. background: rgba(0, 0, 0, 0.025);
  114. }
  115. }
  116. .breadcrumb-container {
  117. float: left;
  118. }
  119. .errLog-container {
  120. display: inline-block;
  121. vertical-align: top;
  122. }
  123. .right-menu {
  124. float: right;
  125. height: 100%;
  126. line-height: 50px;
  127. &:focus {
  128. outline: none;
  129. }
  130. .right-menu-item {
  131. display: inline-block;
  132. padding: 0 8px;
  133. height: 100%;
  134. font-size: 18px;
  135. color: #5a5e66;
  136. vertical-align: text-bottom;
  137. &.hover-effect {
  138. cursor: pointer;
  139. transition: background 0.3s;
  140. &:hover {
  141. background: rgba(0, 0, 0, 0.025);
  142. }
  143. }
  144. }
  145. .avatar-container {
  146. margin-right: 30px;
  147. .avatar-wrapper {
  148. margin-top: 5px;
  149. position: relative;
  150. .user-avatar {
  151. cursor: pointer;
  152. width: 40px;
  153. height: 40px;
  154. border-radius: 10px;
  155. }
  156. .el-icon-caret-bottom {
  157. cursor: pointer;
  158. position: absolute;
  159. right: -20px;
  160. top: 25px;
  161. font-size: 12px;
  162. }
  163. }
  164. }
  165. }
  166. }
  167. </style>