<template> <div class="navbar-con"> <div class="navbar" v-theme.background="mTheme"> <div class="logo"> <img v-if="logo" :src="logo" class="header-logo"> </div> <div class="backdrop"> <theme style="float: right;height: 26px;width: 26px;margin-top: 26px;" @change="themeChange" /> </div> <div class="right-menu"> <svg-icon class="function" icon-class='function' /> <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover" @command="handleCommand"> <div class="avatar-wrapper"> <span style="padding-right:10px">{{ name }}</span> <img :src="avatar + '?imageView2/1/w/80/h/80'" class="user-avatar" /> <!-- <i class="el-icon-caret-bottom" /> --> </div> <el-dropdown-menu slot="dropdown"> <el-dropdown-item command="a">个人中心</el-dropdown-item> </el-dropdown-menu> </el-dropdown> <svg-icon class="shutdown" icon-class='shutdown' /> </div> </div> <NoticeBar class="NoticeBar" :noticeList="noticeList" /> </div> </template> <script> import { mapGetters } from 'vuex' import NoticeBar from '@/components/NoticeBar/index' import { getHomeNoticeList } from "@/api/user" export default { components: { NoticeBar }, computed: { ...mapGetters(['sidebar', 'avatar', 'name']) }, data () { return { logo: require('../../image/logo.png'), noticeList: [] } }, created () { this.queryNoticeList() }, mounted () { let that = this window.addEventListener('message', function (messageEvent) { if (messageEvent.data.update) { that.queryNoticeList() } }) }, destroyed () { window.removeEventListener('message') }, methods: { queryNoticeList () { getHomeNoticeList().then(res => { if (res.result) { this.noticeList = res.result.noticeList } }) }, themeChange (val) { this.$store.dispatch('app/updateTheme', val) }, searchMessageCenter () { this.$router.push({ name: 'messagecenter' }) }, handleCommand (command) { if (command == 'a') { //个人中心 this.$router.push({ name: 'personal' }) } } } } </script> <style lang="scss" scoped> .navbar-con { position: relative; } .NoticeBar { position: absolute; bottom: 0; } .el-dropdown-menu { padding: 0 !important; border: 1px solid #EBEEF5; box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.12); border-radius: 4px 0 0 4px 4px; .el-dropdown-menu__item { text-align: center; margin-top: 0 !important; font-size: 14px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #4A4A4A; width: 140px; height: 36px; line-height: 36px; } .el-dropdown-menu__item:nth-child(6) { border-top: 1px solid #EBEEF5; } .popper__arrow { top: -11px !important; left: 110px !important; transform: rotate(0deg) scale(2); } .el-dropdown-menu__item:not(.is-disabled):hover, .el-dropdown-menu__item:focus { background: #F6F7F9; color: #4A4A4A; } } .navbar { height: $headerHeight; overflow: hidden; position: relative; background: #fff; // background: linear-gradient(270deg, #148CEE 0%, #1870E3 100%); //默认颜色 box-shadow: 0 1px 0px rgba(0, 21, 41, 0.08); display: flex; align-items: center; padding: 0 20px; justify-content: space-between; .header-logo { width: 300px; } .backdrop { flex: 1; width: 60%; background: url('../../image/backdrop.png'); background-size: 100% 100%; height: $headerHeight; } .hamburger-container { line-height: 43px; height: 100%; float: left; cursor: pointer; transition: background 0.3s; -webkit-tap-highlight-color: transparent; &:hover { background: rgba(0, 0, 0, 0.025); } } .breadcrumb-container { float: left; } .right-menu { float: right; height: 100%; line-height: 50px; display: flex; align-items: center; .function { margin: 0 15px; cursor: pointer; } .shutdown { font-size: 20px; margin-left: 15px; cursor: pointer; } .organization-item { margin-right: 40px; margin-top: -40px !important; } .item { margin-right: 40px; margin-top: -20px; line-height: 18.4px; cursor: pointer; position: relative; .item-box { position: absolute; top: -5px; left: 3px; width: 100%; min-width: 25px; height: 25px; cursor: pointer; z-index: 100; } } &:focus { outline: none; } .right-menu-item { display: inline-block; font-size: 18px; color: #fff; vertical-align: text-bottom; &.hover-effect { cursor: pointer; transition: background 0.3s; display: flex; align-items: center; &:hover { background: rgba(0, 0, 0, 0.025); } } } .avatar-wrapper { position: relative; display: flex; height: 40px; align-items: center; .user-avatar { cursor: pointer; width: 35px; height: 35px; border-radius: 50%; } .el-icon-caret-bottom { cursor: pointer; position: absolute; right: -15px; top: 17px; font-size: 12px; } } } } </style>