| | |
| | | /> |
| | | <div class="w-[calc(100%-60px)] h-full"> |
| | | <span class="block text-sm font-medium text-g-800 truncate">{{ |
| | | userInfo.userName |
| | | displayNickname |
| | | }}</span> |
| | | <span class="block mt-0.5 text-xs text-g-500 truncate">{{ userInfo.email }}</span> |
| | | <span class="block mt-0.5 text-xs text-g-500 truncate">{{ displaySubTitle }}</span> |
| | | </div> |
| | | </div> |
| | | <ul class="py-4 mt-3 border-t border-g-300/80"> |
| | | <li class="btn-item" @click="goPage('/system/user-center')"> |
| | | <ArtSvgIcon icon="ri:user-3-line" /> |
| | | <span>{{ $t('topBar.user.userCenter') }}</span> |
| | | </li> |
| | | <li class="btn-item" @click="toDocs()"> |
| | | <ArtSvgIcon icon="ri:book-2-line" /> |
| | | <span>{{ $t('topBar.user.docs') }}</span> |
| | | </li> |
| | | <li class="btn-item" @click="toGithub()"> |
| | | <ArtSvgIcon icon="ri:github-line" /> |
| | | <span>{{ $t('topBar.user.github') }}</span> |
| | | </li> |
| | | <li class="btn-item" @click="lockScreen()"> |
| | | <ArtSvgIcon icon="ri:lock-line" /> |
| | | <span>{{ $t('topBar.user.lockScreen') }}</span> |
| | |
| | | |
| | | <script setup> |
| | | import { useI18n } from 'vue-i18n' |
| | | import { useRouter } from 'vue-router' |
| | | import { ElMessageBox } from 'element-plus' |
| | | import { useUserStore } from '@/store/modules/user' |
| | | import { WEB_LINKS } from '@/utils/constants' |
| | | import { mittBus } from '@/utils/sys' |
| | | defineOptions({ name: 'ArtUserMenu' }) |
| | | const router = useRouter() |
| | | const { t } = useI18n() |
| | | const userStore = useUserStore() |
| | | const { getUserInfo: userInfo } = storeToRefs(userStore) |
| | | const userMenuPopover = ref() |
| | | const goPage = (path) => { |
| | | router.push(path) |
| | | } |
| | | const toDocs = () => { |
| | | window.open(WEB_LINKS.DOCS) |
| | | } |
| | | const toGithub = () => { |
| | | window.open(WEB_LINKS.GITHUB) |
| | | } |
| | | const displayNickname = computed( |
| | | () => |
| | | userInfo.value?.nickname || |
| | | userInfo.value?.nickName || |
| | | userInfo.value?.realName || |
| | | userInfo.value?.userName || |
| | | '-' |
| | | ) |
| | | const displaySubTitle = computed( |
| | | () => userInfo.value?.userName || userInfo.value?.email || '' |
| | | ) |
| | | const lockScreen = () => { |
| | | mittBus.emit('openLockScreen') |
| | | } |