Navbar.vue 5.36 KB
<template>
  <div class="navbar-con">
    <div class="navbar">
      <div class="logo">
        <img :src="require('@/image/logo.png')" alt="" />
      </div>
      <!-- <div class="backdrop">
        <Breadcrumb />
      </div> -->
      <div class="right-menu">
        <div class="dataView d-center pointer" @click="handleDataView">大屏展示</div>
        <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" />
          </div>
          <el-dropdown-menu slot="dropdown">
            <el-dropdown-item command="a">个人中心</el-dropdown-item>
            <el-dropdown-item command="b">退出</el-dropdown-item>
          </el-dropdown-menu>
        </el-dropdown>
      </div>
    </div>
  </div>
</template>
<script>
  import { mapGetters } from 'vuex'
  import Breadcrumb from './Breadcrumb'
  import defaultSettings from '@/settings'
  export default {
    components: {
      Breadcrumb
    },
    computed: {
      ...mapGetters(['sidebar', 'avatar', 'name'])
    },
    data () {
      return {
        title: defaultSettings.title
      }
    },
    methods: {
      handleDataView () {
        const { href } = this.$router.resolve('/dataView');
        window.open(href, '_blank');
      },
      themeChange (val) {
        this.$store.dispatch('app/updateTheme', val)
      },
      handleCommand (command) {
        if (command == 'a') {
        } else {

        }
      }
    }
  }
</script>
<style lang="scss" scoped>
  .navbar-con {
    position: relative;

    .logo {
      color: #fff;
      font-size: 26px;
      font-weight: 700;
    }
  }

  .dataView {
    color: #fff;
    width: 120px;
    height: 32px;
    background: url("../../image/dp.png");
    background-size: cover;
    margin-right: 20px;
  }

  .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: linear-gradient(270deg, #148CEE 0%, #1870E3 100%); //默认颜色
    // box-shadow: 0 1px 0px rgba(0, 21, 41, 0.08);
    background: #0d1230;
    display: flex;
    align-items: center;
    padding-right: 20px;
    justify-content: space-between;
    margin-bottom: 10px;

    .header-logo {
      width: 300px;
    }

    .backdrop {
      flex: 1;
      width: 60%;
      background-size: 100% 100%;
      height: $headerHeight;
      display: flex;
      align-items: center;
    }

    .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;
        height: 100%;
        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>