| | |
| | | <template> |
| | | <div class="navbar"> |
| | | <hamburger |
| | | :is-active="sidebar.opened" |
| | | class="hamburger-container" |
| | | @toggleClick="toggleSideBar" |
| | | /> |
| | | <div class="navbar"> |
| | | <hamburger |
| | | :is-active="sidebar.opened" |
| | | class="hamburger-container" |
| | | @toggleClick="toggleSideBar" |
| | | /> |
| | | |
| | | <breadcrumb class="breadcrumb-container" /> |
| | | <!-- 固定右上角 --> |
| | | <!-- <h3 style="position: fixed; top: 0; font-size: 16px; color: #5a5e66; " :style="'right:' + orgCss() ">{{ getOrgName() }}</h3> --> |
| | | <breadcrumb class="breadcrumb-container" /> |
| | | <!-- 固定右上角 --> |
| | | <!-- <h3 style="position: fixed; top: 0; font-size: 16px; color: #5a5e66; " :style="'right:' + orgCss() ">{{ getOrgName() }}</h3> --> |
| | | |
| | | <div class="right-menu"> |
| | | <el-dropdown |
| | | trigger="click" |
| | | ref="eldrop" |
| | | style="margin-right: 20px" |
| | | > |
| | | <div class="avatar-wrapper" style="font-size: 20px"> |
| | | {{ selectStaff.org.name }} |
| | | <i class="el-icon-caret-bottom"></i> |
| | | </div> |
| | | <el-dropdown-menu slot="dropdown" align="center"> |
| | | <el-dropdown-item |
| | | v-for="item in staffs" |
| | | @click.native="changeStaff(item)" |
| | | :key="item.id" |
| | | > |
| | | {{ item.org.name }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <el-dropdown class="avatar-container" trigger="click"> |
| | | <div class="avatar-wrapper"> |
| | | {{ '您好,' + getUserName() }} |
| | | <i class="el-icon-caret-bottom"></i> |
| | | </div> |
| | | <el-dropdown-menu slot="dropdown" class="user-dropdown"> |
| | | <el-dropdown-item @click.native="logout"> |
| | | <span style="display: block">退出登录</span> |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <div class="right-menu"> |
| | | <el-dropdown trigger="click" ref="eldrop" style="margin-right: 20px"> |
| | | <div class="avatar-wrapper" style="font-size: 20px"> |
| | | {{ selectStaff.org.name }} |
| | | <i class="el-icon-caret-bottom"></i> |
| | | </div> |
| | | <el-dropdown-menu slot="dropdown" align="center"> |
| | | <el-dropdown-item |
| | | v-for="item in staffs" |
| | | @click.native="changeStaff(item)" |
| | | :key="item.id" |
| | | > |
| | | {{ item.org.name }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <el-dropdown class="avatar-container" trigger="click"> |
| | | <div class="avatar-wrapper"> |
| | | {{ "您好," + getUserName() }} |
| | | <i class="el-icon-caret-bottom"></i> |
| | | </div> |
| | | <el-dropdown-menu slot="dropdown" class="user-dropdown"> |
| | | <el-dropdown-item @click.native="logout"> |
| | | <span style="display: block">退出登录</span> |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapGetters } from 'vuex' |
| | | import Breadcrumb from '@/components/Breadcrumb' |
| | | import Hamburger from '@/components/Hamburger' |
| | | import { mapGetters } from "vuex"; |
| | | import Breadcrumb from "@/components/Breadcrumb"; |
| | | import Hamburger from "@/components/Hamburger"; |
| | | |
| | | export default { |
| | | inject: ['reload'], // 依赖注入 |
| | | data() { |
| | | return { |
| | | selectStaff: JSON.parse(localStorage.getItem("selectStaff")), |
| | | staffs: JSON.parse(localStorage.getItem("staffs")) |
| | | } |
| | | inject: ["reload"], // 依赖注入 |
| | | data() { |
| | | return { |
| | | selectStaff: { org: {} }, |
| | | staffs: [], |
| | | }; |
| | | }, |
| | | components: { |
| | | Breadcrumb, |
| | | Hamburger, |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["sidebar", "avatar"]), |
| | | }, |
| | | methods: { |
| | | changeStaff(item) { |
| | | this.selectStaff = item; |
| | | localStorage.setItem("selectStaff", JSON.stringify(item)); |
| | | // this.$router.go(0) |
| | | this.reload(); |
| | | }, |
| | | components: { |
| | | Breadcrumb, |
| | | Hamburger |
| | | orgCss() { |
| | | return ( |
| | | JSON.parse(localStorage.getItem("user")).name.length * 20 + 100 + "px" |
| | | ); |
| | | }, |
| | | computed: { |
| | | ...mapGetters([ |
| | | 'sidebar', |
| | | 'avatar' |
| | | ]) |
| | | getOrgName() { |
| | | return JSON.parse(localStorage.getItem("selectStaff")).org.name; |
| | | }, |
| | | methods: { |
| | | changeStaff(item) { |
| | | this.selectStaff = item |
| | | localStorage.setItem("selectStaff", JSON.stringify(item)) |
| | | // this.$router.go(0) |
| | | this.reload() |
| | | }, |
| | | orgCss() { |
| | | return JSON.parse(localStorage.getItem("user")).name.length * 20 + 100 + 'px'; |
| | | }, |
| | | getOrgName() { |
| | | return JSON.parse(localStorage.getItem("user")).staffs[0].org.name; |
| | | }, |
| | | getUserName() { |
| | | return JSON.parse(localStorage.getItem("user")).name; |
| | | }, |
| | | toggleSideBar() { |
| | | this.$store.dispatch('app/toggleSideBar') |
| | | }, |
| | | async logout() { |
| | | // await this.$store.dispatch('user/logout') |
| | | this.$router.push(`/login`) |
| | | } |
| | | getUserName() { |
| | | return JSON.parse(localStorage.getItem("user")).name; |
| | | }, |
| | | toggleSideBar() { |
| | | this.$store.dispatch("app/toggleSideBar"); |
| | | }, |
| | | async logout() { |
| | | // await this.$store.dispatch('user/logout') |
| | | this.$router.push(`/login`); |
| | | }, |
| | | }, |
| | | created() { |
| | | const selectStaff = JSON.parse(localStorage.getItem("selectStaff")); |
| | | if (selectStaff) { |
| | | this.selectStaff = selectStaff; |
| | | } |
| | | } |
| | | const staffs = JSON.parse(localStorage.getItem("staffs")); |
| | | if (staffs) { |
| | | this.staffs = staffs; |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .navbar { |
| | | height: 50px; |
| | | overflow: hidden; |
| | | position: relative; |
| | | background: #fff; |
| | | box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); |
| | | height: 50px; |
| | | overflow: hidden; |
| | | position: relative; |
| | | background: #fff; |
| | | box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); |
| | | |
| | | .hamburger-container { |
| | | line-height: 46px; |
| | | height: 100%; |
| | | float: left; |
| | | .hamburger-container { |
| | | line-height: 46px; |
| | | 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; |
| | | |
| | | &: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 0.3s; |
| | | -webkit-tap-highlight-color: transparent; |
| | | |
| | | &:hover { |
| | | background: rgba(0, 0, 0, 0.025); |
| | | background: rgba(0, 0, 0, 0.025); |
| | | } |
| | | } |
| | | } |
| | | |
| | | .breadcrumb-container { |
| | | float: left; |
| | | .avatar-container { |
| | | margin-right: 50px; |
| | | |
| | | .avatar-wrapper { |
| | | margin-top: 5px; |
| | | position: relative; |
| | | cursor: pointer; |
| | | |
| | | .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; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .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 0.3s; |
| | | |
| | | &:hover { |
| | | background: rgba(0, 0, 0, 0.025); |
| | | } |
| | | } |
| | | } |
| | | |
| | | .avatar-container { |
| | | margin-right: 50px; |
| | | |
| | | .avatar-wrapper { |
| | | margin-top: 5px; |
| | | position: relative; |
| | | cursor: pointer; |
| | | |
| | | .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> |