mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-06-21 07:52:00 +08:00
78 lines
2.2 KiB
Vue
78 lines
2.2 KiB
Vue
<script setup lang="ts">
|
|
import { ElDropdown, ElDropdownMenu, ElDropdownItem, ElMessageBox } from 'element-plus'
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
import { useCache } from '@/hooks/web/useCache'
|
|
import { useRouter } from 'vue-router'
|
|
import { useDesign } from '@/hooks/web/useDesign'
|
|
import avatarImg from '@/assets/imgs/avatar.gif'
|
|
import { useUserStore } from '@/store/modules/user'
|
|
import { useTagsViewStore } from '@/store/modules/tagsView'
|
|
|
|
const { t } = useI18n()
|
|
|
|
const { wsCache } = useCache()
|
|
|
|
const { push, replace } = useRouter()
|
|
|
|
const userStore = useUserStore()
|
|
|
|
const tagsViewStore = useTagsViewStore()
|
|
|
|
const { getPrefixCls } = useDesign()
|
|
|
|
const prefixCls = getPrefixCls('user-info')
|
|
|
|
const user = wsCache.get('user')
|
|
|
|
const avatar = user.user.avatar ? user.user.avatar : avatarImg
|
|
|
|
const userName = user.user.nickname ? user.user.nickname : 'Admin'
|
|
|
|
const loginOut = () => {
|
|
ElMessageBox.confirm(t('common.loginOutMessage'), t('common.reminder'), {
|
|
confirmButtonText: t('common.ok'),
|
|
cancelButtonText: t('common.cancel'),
|
|
type: 'warning'
|
|
})
|
|
.then(async () => {
|
|
userStore.loginOut()
|
|
tagsViewStore.delAllViews
|
|
replace('/login')
|
|
})
|
|
.catch(() => {})
|
|
}
|
|
const toProfile = async () => {
|
|
push('/userinfo/profile')
|
|
}
|
|
const toDocument = () => {
|
|
window.open('https://doc.iocoder.cn/')
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<ElDropdown :class="prefixCls" trigger="click">
|
|
<div class="flex items-center">
|
|
<img :src="avatar" alt="" class="w-[calc(var(--logo-height)-25px)] rounded-[50%]" />
|
|
<span class="<lg:hidden text-14px pl-[5px] text-[var(--top-header-text-color)]">
|
|
{{ userName }}
|
|
</span>
|
|
</div>
|
|
<template #dropdown>
|
|
<ElDropdownMenu>
|
|
<ElDropdownItem>
|
|
<Icon icon="ep:tools" />
|
|
<div @click="toProfile">{{ t('common.profile') }}</div>
|
|
</ElDropdownItem>
|
|
<ElDropdownItem>
|
|
<Icon icon="ep:menu" />
|
|
<div @click="toDocument">{{ t('common.document') }}</div>
|
|
</ElDropdownItem>
|
|
<ElDropdownItem divided>
|
|
<Icon icon="ep:switch-button" />
|
|
<div @click="loginOut">{{ t('common.loginOut') }}</div>
|
|
</ElDropdownItem>
|
|
</ElDropdownMenu>
|
|
</template>
|
|
</ElDropdown>
|
|
</template>
|