| <template> | 
|   <div class="navbar"> | 
|     <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /> | 
|   | 
|     <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/> | 
|     <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/> | 
|   | 
|     <div class="right-menu"> | 
|       <template v-if="device!=='mobile'"> | 
|         <search id="header-search" class="right-menu-item" /> | 
|          | 
|         <el-tooltip content="源码地址" effect="dark" placement="bottom"> | 
|           <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" /> | 
|         </el-tooltip> | 
|   | 
|         <el-tooltip content="文档地址" effect="dark" placement="bottom"> | 
|           <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" /> | 
|         </el-tooltip> | 
|   | 
|         <screenfull id="screenfull" class="right-menu-item hover-effect" /> | 
|   | 
|         <el-tooltip content="布局大小" effect="dark" placement="bottom"> | 
|           <size-select id="size-select" class="right-menu-item hover-effect" /> | 
|         </el-tooltip> | 
|   | 
|       </template> | 
|   | 
|       <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click"> | 
|         <div class="avatar-wrapper"> | 
|           <img :src="avatar" class="user-avatar"> | 
|           <i class="el-icon-caret-bottom" /> | 
|         </div> | 
|         <el-dropdown-menu slot="dropdown"> | 
|           <router-link to="/user/profile"> | 
|             <el-dropdown-item>个人中心</el-dropdown-item> | 
|           </router-link> | 
|           <el-dropdown-item @click.native="setting = true"> | 
|             <span>布局设置</span> | 
|           </el-dropdown-item> | 
|           <el-dropdown-item divided @click.native="logout"> | 
|             <span>退出登录</span> | 
|           </el-dropdown-item> | 
|         </el-dropdown-menu> | 
|       </el-dropdown> | 
|     </div> | 
|   </div> | 
| </template> | 
|   | 
| <script> | 
| import { mapGetters } from 'vuex' | 
| import Breadcrumb from '@/components/Breadcrumb' | 
| import TopNav from '@/components/TopNav' | 
| import Hamburger from '@/components/Hamburger' | 
| import Screenfull from '@/components/Screenfull' | 
| import SizeSelect from '@/components/SizeSelect' | 
| import Search from '@/components/HeaderSearch' | 
| import RuoYiGit from '@/components/RuoYi/Git' | 
| import RuoYiDoc from '@/components/RuoYi/Doc' | 
|   | 
| export default { | 
|   components: { | 
|     Breadcrumb, | 
|     TopNav, | 
|     Hamburger, | 
|     Screenfull, | 
|     SizeSelect, | 
|     Search, | 
|     RuoYiGit, | 
|     RuoYiDoc | 
|   }, | 
|   computed: { | 
|     ...mapGetters([ | 
|       'sidebar', | 
|       'avatar', | 
|       'device' | 
|     ]), | 
|     setting: { | 
|       get() { | 
|         return this.$store.state.settings.showSettings | 
|       }, | 
|       set(val) { | 
|         this.$store.dispatch('settings/changeSetting', { | 
|           key: 'showSettings', | 
|           value: val | 
|         }) | 
|       } | 
|     }, | 
|     topNav: { | 
|       get() { | 
|         return this.$store.state.settings.topNav | 
|       } | 
|     } | 
|   }, | 
|   methods: { | 
|     toggleSideBar() { | 
|       this.$store.dispatch('app/toggleSideBar') | 
|     }, | 
|     async logout() { | 
|       this.$confirm('确定注销并退出系统吗?', '提示', { | 
|         confirmButtonText: '确定', | 
|         cancelButtonText: '取消', | 
|         type: 'warning' | 
|       }).then(() => { | 
|         this.$store.dispatch('LogOut').then(() => { | 
|           location.href = '/index'; | 
|         }) | 
|       }).catch(() => {}); | 
|     } | 
|   } | 
| } | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
| .navbar { | 
|   height: 50px; | 
|   overflow: hidden; | 
|   position: relative; | 
|   background: #fff; | 
|   box-shadow: 0 1px 4px rgba(0,21,41,.08); | 
|   | 
|   .hamburger-container { | 
|     line-height: 46px; | 
|     height: 100%; | 
|     float: left; | 
|     cursor: pointer; | 
|     transition: background .3s; | 
|     -webkit-tap-highlight-color:transparent; | 
|   | 
|     &:hover { | 
|       background: rgba(0, 0, 0, .025) | 
|     } | 
|   } | 
|   | 
|   .breadcrumb-container { | 
|     float: left; | 
|   } | 
|   | 
|   .topmenu-container { | 
|     position: absolute; | 
|     left: 50px; | 
|   } | 
|   | 
|   .errLog-container { | 
|     display: inline-block; | 
|     vertical-align: top; | 
|   } | 
|   | 
|   .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; | 
|         transition: background .3s; | 
|   | 
|         &:hover { | 
|           background: rgba(0, 0, 0, .025) | 
|         } | 
|       } | 
|     } | 
|   | 
|     .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> |