pc端
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.

75 lines
1.8 KiB

<template>
<div class="flex justify-between items-center">
<h1 class="">
<span>实验平台</span>
<menu-unfold-outlined v-if="collapsed" @click="toggleCollapse" />
<menu-fold-outlined v-else class="trigger" @click="toggleCollapse" />
</h1>
<div class="user-info relative flex items-center cursor-pointer">
<a-image :width="30" src="https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png" />
<div class="mr-3 ml-3">{{ account }}</div>
<CaretDownOutlined />
<div class="user-action absolute">
<div @click="signOut">退出登录</div>
</div>
</div>
</div>
</template>
<script setup>
import { computed } from 'vue';
import { useStore } from 'vuex';
import { useRouter } from 'vue-router';
// eslint-disable-next-line import/no-extraneous-dependencies
import { MenuUnfoldOutlined, MenuFoldOutlined, CaretDownOutlined } from '@ant-design/icons-vue';
const store = useStore();
const router = useRouter();
const collapsed = computed(() => store.state.layout.display.left); // 是否显示左栏
const account = computed(() => store.getters['user/account']);
// toggle left window display
function toggleCollapse() {
store.commit('layout/setDisplay', { prop: 'left', show: !collapsed.value });
}
// 退出登录
function signOut() {
store.commit('user/setUser', null);
store.commit('projects/setProject', null);
store.commit('task/setTaskDetail', null);
router.push({ path: '/experiment/user/signin' });
}
</script>
<style scoped>
h1 {
margin: 0;
}
h1 span {
font-size: 16px;
font-weight: 600;
margin-right: 10px;
}
.user-info {
height: 48px;
}
.user-action {
display: none;
top: 48px;
right: 0;
width: 150px;
text-align: center;
box-shadow: 0px 0 6px 0px rgba(0, 0, 0, 0.3);
background-color: #fff;
}
.user-info:hover .user-action {
display: block;
}
</style>