<script setup>
|
import {computed, ref} from "vue";
|
import FlexLayout from "@/components/FlexLayout.vue";
|
import {Expand, ArrowDown, ArrowUp, Avatar, Fold} from "@element-plus/icons-vue";
|
import usePageMenuStore from "@/store/usePageMenuStore";
|
import userDropdown from "@/views/mainLayout/js/userDropdown";
|
|
const {isVisible, visibleChange, commandClick} = userDropdown();
|
|
const pageMenuStore = usePageMenuStore();
|
const isCollapse = computed(()=>{
|
return pageMenuStore.isCollapse;
|
});
|
const changeMenuState = ()=>{
|
pageMenuStore.changeCollapse(!isCollapse.value);
|
}
|
</script>
|
|
<template>
|
<div class="header-wrapper">
|
<flex-layout no-bg direction="row">
|
<template #header>
|
<div class="header-left-wrapper">
|
<span class="menu-state-icon" @click="changeMenuState">
|
<el-icon size="20">
|
<Fold v-if="!isCollapse" />
|
<Expand v-else/>
|
</el-icon>
|
</span>
|
<span>安琪酵母(西藏)益生菌信息采集中心智能实验室</span>
|
<span class="sys-version">V1.21</span>
|
</div>
|
</template>
|
<template #footer>
|
<div class="page-header-right">
|
<div class="hdw-avatar">
|
<el-dropdown @command="commandClick" @visible-change="visibleChange">
|
<div class="hdw-avatar-wrapper">
|
<span class="hdw-avatar-icon">
|
<el-icon size="18"><Avatar /></el-icon>
|
</span>
|
<span class="hdw-avatar-text">admin</span>
|
<el-icon size="16">
|
<ArrowUp v-if="isVisible" />
|
<ArrowDown v-else />
|
</el-icon>
|
</div>
|
<template #dropdown>
|
<el-dropdown-menu>
|
<el-dropdown-item command="passwordChange">密码修改</el-dropdown-item>
|
<el-dropdown-item command="outSystem">安全退出</el-dropdown-item>
|
</el-dropdown-menu>
|
</template>
|
</el-dropdown>
|
</div>
|
</div>
|
</template>
|
</flex-layout>
|
</div>
|
</template>
|
|
<style lang="less" scoped>
|
.header-left-wrapper {
|
user-select: none;
|
height: 64px;
|
display: flex;
|
align-items: center;
|
padding-right: 150px;
|
min-width: 12em;
|
background-image: url("@/assets/images/page-header-left-bg.png");
|
background-repeat: no-repeat;
|
background-size: 150% 100%;
|
color: @font-color-high-light;
|
span {
|
font-size: 24px;
|
font-weight: bold;
|
letter-spacing: 0.2rem;
|
&.menu-state-icon {
|
display: inline-block;
|
text-align: center;
|
padding: 4px 8px;
|
cursor: pointer;
|
}
|
&.sys-version {
|
padding-top: 8px;
|
font-size: 16px;
|
vertical-align: bottom;
|
}
|
}
|
}
|
.page-header-right {
|
.hdw-avatar {
|
padding: 8px 16px;
|
}
|
.hdw-avatar-text {
|
color: @font-color-primary;
|
margin-left: 4px;
|
margin-right: 4px;
|
vertical-align: center;
|
}
|
}
|
.hdw-avatar-wrapper {
|
cursor: pointer;
|
color: @font-color-primary;
|
}
|
.hdw-avatar-wrapper:focus-visible {
|
outline: none;
|
}
|
|
.hdw-avatar-icon {
|
display: inline-flex;
|
width: 38px;
|
height: 38px;
|
border-radius: 50%;
|
justify-content: center;
|
background-color: #4ba1fa;
|
align-items: center;
|
color: #032c8f;
|
}
|
</style>
|