83 lines
2.3 KiB
Vue
83 lines
2.3 KiB
Vue
![]() |
<!--
|
|||
|
* @Description:
|
|||
|
* @Author: zenghua.wang
|
|||
|
* @Date: 2023-06-20 14:29:45
|
|||
|
* @LastEditors: zenghua.wang
|
|||
|
* @LastEditTime: 2025-02-18 09:48:18
|
|||
|
-->
|
|||
|
<template>
|
|||
|
<el-dropdown class="layout-avatar">
|
|||
|
<span class="el-dropdown-link">
|
|||
|
<el-avatar :size="30" class="avatar" :src="userInfo.avatar || getAssetsFile('images/avatar.gif')" />
|
|||
|
<span class="layout-avatar-name">{{ userInfo.userName || '游客' }}</span>
|
|||
|
<el-icon class="el-icon--right">
|
|||
|
<arrow-down />
|
|||
|
</el-icon>
|
|||
|
</span>
|
|||
|
<template #dropdown>
|
|||
|
<el-dropdown-menu>
|
|||
|
<el-dropdown-item :command="0"> 当前角色:{{ userInfo.nickName }} </el-dropdown-item>
|
|||
|
<el-dropdown-item :command="5" divided @click="logOut">
|
|||
|
<el-icon><SwitchButton /></el-icon>退出登录
|
|||
|
</el-dropdown-item>
|
|||
|
</el-dropdown-menu>
|
|||
|
</template>
|
|||
|
</el-dropdown>
|
|||
|
</template>
|
|||
|
|
|||
|
<script setup name="layout-avatar">
|
|||
|
import { computed } from 'vue';
|
|||
|
import { useRouter } from 'vue-router';
|
|||
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
|||
|
import { useUserStore } from '@/store/modules/user';
|
|||
|
import { useTagsViewStore } from '@/store/modules/tagsView';
|
|||
|
import { usePermissionStore } from '@/store/modules/permission';
|
|||
|
import { getAssetsFile } from '@/utils';
|
|||
|
import { Logout } from '#/apis/login';
|
|||
|
|
|||
|
const router = useRouter();
|
|||
|
const UserStore = useUserStore();
|
|||
|
const TagsViewStore = useTagsViewStore();
|
|||
|
const PermissionStore = usePermissionStore();
|
|||
|
|
|||
|
// 用户信息
|
|||
|
const userInfo = computed(() => UserStore.getUserInfo());
|
|||
|
|
|||
|
const logOut = async () => {
|
|||
|
ElMessageBox.confirm('您是否确认退出登录?', '温馨提示', {
|
|||
|
confirmButtonText: '确定',
|
|||
|
cancelButtonText: '取消',
|
|||
|
type: 'warning',
|
|||
|
}).then(async () => {
|
|||
|
Logout().then((res) => {
|
|||
|
if (res.code === 200) {
|
|||
|
UserStore.logout();
|
|||
|
TagsViewStore.clearVisitedView();
|
|||
|
PermissionStore.clearRoutes();
|
|||
|
router.push({ path: '/login' });
|
|||
|
ElMessage({
|
|||
|
type: 'success',
|
|||
|
message: '退出登录成功!',
|
|||
|
});
|
|||
|
localStorage.removeItem('daimp-front-main_user_store');
|
|||
|
}
|
|||
|
});
|
|||
|
});
|
|||
|
};
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
.layout-avatar {
|
|||
|
&-name {
|
|||
|
margin-left: 8px;
|
|||
|
@include ellipsis;
|
|||
|
}
|
|||
|
.el-dropdown-link {
|
|||
|
@include flex-row;
|
|||
|
|
|||
|
align-items: center;
|
|||
|
cursor: pointer;
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|