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