blob: 21882933d05759680be3370bb783b7524a640aec [file] [log] [blame]
<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-->
<template>
<div class="s-layout-header">
<div class="s-pro-components-header">
<i :class="classes" @click="togger" />
<div class="s-pro-components-header-right">
<div class="avatar">
<el-dropdown @command="handlerClick">
<el-tag type="success">
<span class="el-dropdown-link">
{{ username || 'Not logged in' }}
<i class="el-icon-arrow-down el-icon--right" />
</span>
</el-tag>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>{{ $t("common.loginOut") }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
<div class="lang-more">
<el-dropdown @command="handleCommand">
<span class="el-dropdown-link">
{{ dropdownTitle }}<i class="el-icon-arrow-down el-icon--right" />
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, index) in dropdownList" :key="index" :command="item.command">{{ item.title }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
<el-breadcrumb separator="/" class="bread-nav">
<el-breadcrumb-item>
<a
style="font-weight: bold; color: #E17425;"
>{{currentRegistryCenter}}: {{ $store.state.global.regCenterActivated || '' }}</a>
</el-breadcrumb-item>
</el-breadcrumb>
</div>
</div>
</template>
<script>
export default {
name: 'Head',
data() {
return {
isCollapse: false,
username: '',
breadcrumbTxt: '',
dropdownList: this.$t('common').dropdownList,
dropdownTitle: localStorage.getItem('language') === 'zh-CN' ? this.$t('common').dropdownList[0].title : this.$t('common').dropdownList[1].title,
currentRegistryCenter: this.$t('common').currentRegistryCenter
}
},
computed: {
classes() {
return [
`icon-item`,
{
[`icon-shrink`]: !this.isCollapse,
[`icon-expand`]: this.isCollapse
}
]
}
},
created() {
const store = window.localStorage
this.username = store.getItem('username')
},
methods: {
handleCommand(command) {
this.$i18n.locale = command
const ls = this.$t('common').dropdownList
this.dropdownTitle = command === 'zh-CN' ? ls[0].title : ls[1].title
localStorage.setItem('language', command)
location.reload()
},
togger() {
this.isCollapse = !this.isCollapse
this.$emit('on-togger', this.isCollapse)
},
handlerClick() {
const store = window.localStorage
store.removeItem('username')
store.removeItem('Access-Token')
location.href = '#/login'
}
}
}
</script>
<style lang="scss" scoped>
.s-layout-header {
background: #001529;
padding: 0;
height: 64px;
line-height: 64px;
width: 100%;
.bread-nav {
float: right;
height: 64px;
line-height: 64px;
padding-right: 20px;
}
.s-pro-components-header {
height: 64px;
padding: 0;
background: #fff;
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
position: relative;
i.icon-item {
width: 16px;
height: 16px;
float: left;
cursor: pointer;
margin: 24px;
}
i.icon-shrink {
background: url('../../assets/img/shrink.png') no-repeat left center;
}
.icon-expand {
background: url('../../assets/img/expand.png') no-repeat left center;
}
.s-pro-components-header-right {
float: right;
height: 100%;
overflow: hidden;
}
}
.avatar {
cursor: pointer;
padding: 0 12px;
display: inline-block;
transition: all 0.3s;
height: 100%;
}
.lang-more {
cursor: pointer;
padding: 0 20px;
display: inline-block;
transition: all 0.3s;
height: 100%;
// .lang-icon {
// background: url('../../assets/img/lang.png') no-repeat center center;
// width: 32px;
// height: 60px;
// }
}
}
</style>