石墨仪设备 前端仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

203 lines
5.3 KiB

<template>
<div class="header">
<div class="header_logo">
<img :src="logo" class="logo"/>
<div>长春黄金研究院有限公司</div>
</div>
<div class="header_time">
{{ currentTime }}
</div>
<div class="header_user">
<img :src="AvatarSvg" width="20px" height="20px"/>
<div class="user_name" @click="onShowMenu">Admin</div>
<div class="user_opt" v-show="showUserMenu">
<div class="updatePwd" @click="onUpdatePwd">
<img :src="PwdSvg" style="width: 1.25rem; height: 1.25rem;" />
修改密码
</div>
<div class="login_out" @click="onLoginout">
<img :src="OutSvg" style="width: 1.25rem; height: 1.25rem;"/>
退出登录</div>
</div>
</div>
<OverlayModal :visible="updatePwdVisible">
<UpdatePwd @cancel="onCancelUpdate"></UpdatePwd>
</OverlayModal>
</div>
</template>
<script lang="ts" setup>
import logo from '@/assets/logo.svg'
import AvatarSvg from '@/assets/avatar.svg'
import OutSvg from '@/assets/out.svg'
import PwdSvg from '@/assets/pwd.svg'
import { ref, onMounted } from 'vue'
import OverlayModal from '@/components/OverlayModal.vue'
import UpdatePwd from '../components/UpdatePwd.vue'
import {eventBus} from '@/eventBus'
import { useRouter } from 'vue-router'
import { getFormattedDateTime } from '@/utils'
const router = useRouter()
const menuId = ref(0)
const time = getFormattedDateTime()
const showUserMenu = ref(false)
const currentTime = ref(time)
onMounted(()=>{
//测试页面返回时,需要调整菜单
// eventBus.on('menuId', (value:number)=>{
// menuId.value = value
// })
})
const updatePwdVisible = ref(false)
const onUpdatePwd = () => {
updatePwdVisible.value = true;
}
const onLoginout = () => {
router.push('/login')
}
const onShowMenu = () => {
showUserMenu.value = !showUserMenu.value;
}
const onCancelUpdate = () => {
updatePwdVisible.value = false;
}
</script>
<style lang="scss" scoped>
@use "@/assets/style/mixin.scss" as *;
.header{
display: flex;
align-items: center;
background: #e9e9e9;
align-items: center;
height: var(--headerHeight);
.header_logo{
display: flex;
font-size: 1.125rem;
align-items: center;
width: 21.875rem;
color: #8799AB;
gap: 5px;
padding-left: 1.5625rem;
.logo{
height:2.75rem;
width:2.625rem;
}
}
.header_time{
width: 11.875rem;
height: 2.5rem;
font-size: .875rem;
display: flex;
align-items: center;
margin-left: 54%;
background: white;
justify-content: center;
border-radius: 10px;
}
.header_ins{
display: flex;
align-items: center;
border-radius: 5px;
width: 13.875rem;
height: 2.5rem;
background: #FFFFFF;
}
.header_container{
margin-left: 3.125rem;
display: flex;
align-items: center;
border-radius: 5px;
width: 15.625rem;
height: 2.5rem;
background: #FFFFFF;
.waste_status{
padding:5px 5px;
width: 75%;
}
.waste_detail{
display: flex;
justify-content: flex-end;
width: 40%;
}
}
.header_user{
display: flex;
align-items: center;
justify-content: flex-end;
gap: 5px;
margin-left: .9375rem;
}
.user_name{
font-size: 1rem;
color: #393F46;
}
.user_opt{
width: 10rem;
height: 6.25rem;
position:absolute;
top:3rem;
background: #ffffff;
.updatePwd{
color: #323233;
font-size: 1.125rem;
display: flex;
justify-content: center;
margin-top: 1.5rem;
gap: 15px;
}
.login_out{
color: #323233;
font-size: 1.125rem;
display: flex;
justify-content: center;
margin-top: .5rem;
gap: 15px;
}
}
}
.circle {
width: .9375rem;
height: .9375rem;
background-color: green;
border-radius: 50%;
margin-left: .3125rem;
}
:deep(.van-dropdown-menu__bar){
background-color: #1871F8;
border-radius: 5px;
height: .1rem;
width: 2.875rem;
.van-ellipsis{
color:white;
}
}
:deep(.van-dropdown-item__content){
width: 4.75rem;
margin-left: 5.375rem;
}
.text_size{
font-size:1rem;
padding-right: 5px;
}
</style>