This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
cyber-narrator-cn-ui/src/components/layout/Header.vue

221 lines
5.7 KiB
Vue
Raw Normal View History

2021-06-07 18:35:16 +08:00
<template>
<div class="cn-header">
<!-- <div class="left-menu&#45;&#45;pin" :class="false ? 'left-menu&#45;&#45;pin-normal' : 'left-menu&#45;&#45;pin-reverse'" @click="shrink"><i :class="{'icon-reverse': false}" class="el-icon-s-fold"></i></div>-->
<!--导航面包屑-->
2021-08-12 18:23:22 +08:00
<div style="flex-grow: 1;display: flex;padding: 0 70px;align-items: center">
2021-08-12 18:11:38 +08:00
<el-breadcrumb separator="/">
<el-breadcrumb-item v-for="item in breadcrumb" :key="item">{{item}}</el-breadcrumb-item>
</el-breadcrumb>
</div>
2021-06-07 18:35:16 +08:00
<!--个人操作-->
<div class="personal">
<el-dropdown>
<div class="header-menu--item">Language</div>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item>
<div id="header-to-english" :style="language === 'en'?'color:#0091ff':''" @click="changeLocal('en')">English</div>
</el-dropdown-item>
<el-dropdown-item>
<div id="header-to-chinese" :style="language === 'cn'?'color:#0091ff':''" @click="changeLocal('cn')">中文</div>
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<el-dropdown>
<div class='login-user header-menu--item'>{{username}}&nbsp;<i class="cn-icon cn-icon-arrow-down"></i></div>
<template #dropdown>
<el-dropdown-menu #dropdown>
2021-06-07 18:35:16 +08:00
<el-dropdown-item>
<div id="header-to-changepin" @click="showPinDialog">Change pin</div>
</el-dropdown-item>
<el-dropdown-item>
<div id="header-to-logout" @click="logout">Sign out</div>
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
<!-- <change-password :cur-user="username" :show-dialog="showChangePin" @click="showPinDialog" @dialogClosed="dialogClosed"></change-password>-->
</div>
</template>
<script>
2021-08-12 18:11:38 +08:00
import { useRoute } from 'vue-router'
2021-06-07 18:35:16 +08:00
export default {
name: 'Header',
data () {
return {
username: 'admin', // sessionStorage.getItem('cn-username'),
language: localStorage.getItem('cn-language') ? localStorage.getItem('cn-language') : 'en',
2021-08-12 18:11:38 +08:00
showChangePin: false,
breadcrumbMap: [
{
path: '/panel/trafficSummary',
parentName: this.$t('overall.dashboard'),
name: this.$t('trafficSummary.trafficSummary')
},
{
path: '/panel/networkAppPerformance',
parentName: this.$t('overall.dashboard'),
name: this.$t('networkAppPerformance.networkAppPerformance')
}, {
path: '/panel/dnsServiceInsights',
parentName: this.$t('overall.dashboard'),
name: this.$t('dnsServiceInsights')
}, {
path: '/entityExplorer',
parentName: this.$t('overall.dashboard'),
name: this.$t('overall.entityExplorer')
}, {
path: '/user',
parentName: this.$t('overall.dashboard'),
name: this.$t('user')
}, {
path: '/role',
parentName: this.$t('overall.dashboard'),
name: this.$t('role')
}, {
path: '/operationLog',
parentName: this.$t('overall.dashboard'),
name: this.$t('overall.operationLog')
}, {
path: '/i18n',
parentName: this.$t('overall.dashboard'),
name: this.$t('l18n')
}
]
}
},
computed: {
breadcrumb () {
const breadcrumb = this.breadcrumbMap.find(b => this.path === b.path)
return breadcrumb ? [breadcrumb.parentName, breadcrumb.name] : []
},
path () {
const { path } = useRoute()
return path
2021-06-07 18:35:16 +08:00
}
},
methods: {
changeLocal (lang) {
if (lang !== localStorage.getItem('cn-language')) {
localStorage.setItem('cn-language', lang)
// this.$i18n.locale = lang
window.location.reload()
}
},
showPinDialog () {
this.showChangePin = true
},
logout () {
},
refreshLang () {
this.language = localStorage.getItem('cn-language')
this.$i18n.locale = this.language
this.$nextTick(() => {
window.location.reload()
})
},
shrink () {
}
}
}
</script>
<style lang="scss">
.cn-header {
display: flex;
height: 50px;
.header-menu {
display: flex;
justify-content: flex-end;
flex-grow: 1;
.el-dropdown {
width: 60px;
text-align: center;
height: 36px;
line-height: 50px;
.el-dialog{
width: 1000px;
height: 70px;
.el-dialog__header{
.el-dialog__title{
color: #fff;
}
.el-dialog__close{
color: #fff;
line-height: 50px;
font-size: 30px;
}
}
}
}
}
.header-menu--item {
color: #778391;
cursor: pointer;
transition: color linear .2s;
i {
font-size: 18px;
}
}
.header-menu--item:hover {
color: #313336;
}
.personal {
display: flex;
.el-dropdown {
margin: 0 10px 0 30px;
height: 36px;
line-height: 50px;
text-align: center;
}
.login-user {
color: #333;
i {
color: #999;
font-size: 12px;
}
}
}
.left-menu--pin {
width: 20px;
font-size: 20px;
font-weight: 100;
color: #999999;
transition: all .4s;
height: 100%;
line-height: 50px;
margin-left: 10px;
i {
transform: rotateY(0);
transition: transform .4s;
}
i.icon-reverse {
transform: rotateY(180deg);
}
}
.left-menu--pin-normal{
}
.left-menu--pin-reverse{
}
}
.link-title a {
color: inherit;
text-decoration: none;
}
.cn-breakcrumb {
padding-left: 15px;
line-height: 50px;
.el-breadcrumb__item .el-breadcrumb__inner {
color: #999;
}
}
</style>