mirror of
https://github.com/YunaiV/ruoyi-vue-pro.git
synced 2026-05-09 11:17:39 +00:00
74 lines
2.1 KiB
Vue
74 lines
2.1 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'
|
|
|
|
const { t } = useI18n()
|
|
|
|
const { wsCache } = useCache()
|
|
|
|
const { push, replace } = useRouter()
|
|
|
|
const userStore = useUserStore()
|
|
|
|
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()
|
|
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>
|