Blame view

src/layout/components/Navbar.vue 4.27 KB
80a28914e   吉鹏   init
1
2
  <template>
    <div class="navbar">
d7d9c38c2   Adam   auto commit the c...
3
      <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
80a28914e   吉鹏   init
4

d7d9c38c2   Adam   auto commit the c...
5
      <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
80a28914e   吉鹏   init
6
7
  
      <div class="right-menu">
d7d9c38c2   Adam   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   Adam   auto commit the c...
32
              </el-dropdown-item>
d7d9c38c2   Adam   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   Adam   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   Adam   auto commit the c...
69
70
71
72
73
74
      Hamburger,
      ErrorLog,
      Screenfull,
      SizeSelect,
      LangSelect,
      Search
80a28914e   吉鹏   init
75
76
    },
    computed: {
d7d9c38c2   Adam   auto commit the c...
77
78
79
80
81
      ...mapGetters([
        'sidebar',
        'avatar',
        'device'
      ])
80a28914e   吉鹏   init
82
83
84
    },
    methods: {
      toggleSideBar() {
d7d9c38c2   Adam   auto commit the c...
85
        this.$store.dispatch('app/toggleSideBar')
80a28914e   吉鹏   init
86
87
      },
      async logout() {
d7d9c38c2   Adam   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   Adam   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   Adam   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   Adam   auto commit the c...
108
109
      transition: background .3s;
      -webkit-tap-highlight-color:transparent;
80a28914e   吉鹏   init
110
111
  
      &:hover {
d7d9c38c2   Adam   auto commit the c...
112
        background: rgba(0, 0, 0, .025)
80a28914e   吉鹏   init
113
114
115
116
117
118
      }
    }
  
    .breadcrumb-container {
      float: left;
    }
d7d9c38c2   Adam   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   Adam   auto commit the c...
142
          transition: background .3s;
80a28914e   吉鹏   init
143
144
  
          &:hover {
d7d9c38c2   Adam   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>