|
|
@ -1,9 +1,9 @@ |
|
|
|
<template> |
|
|
|
<template> |
|
|
|
<Dropdown placement="bottomLeft" :trigger="['click', 'hover']" :overlayClassName="`${prefixCls}-dropdown-overlay`"> |
|
|
|
<Dropdown placement="bottomLeft" :trigger="['click', 'hover']" :overlayClassName="`${prefixCls}-dropdown-overlay`"> |
|
|
|
<span :class="[prefixCls, `${prefixCls}--${theme}`]" class="flex"> |
|
|
|
<span :class="[prefixCls, `${prefixCls}--${theme}`]" class="flex"> |
|
|
|
<img :class="`${prefixCls}__header`" :src="getUserInfo.avatar"> |
|
|
|
<img :class="`${prefixCls}__header`" :src="getAvatarUrl"> |
|
|
|
<span :class="`${prefixCls}__info hidden md:block`"> |
|
|
|
<span :class="`${prefixCls}__info hidden md:block`"> |
|
|
|
<span :class="`${prefixCls}__name `" class="truncate"> |
|
|
|
<span :class="`${prefixCls}__name`" class="truncate"> |
|
|
|
{{ getUserInfo.nickName }} |
|
|
|
{{ getUserInfo.nickName }} |
|
|
|
</span> |
|
|
|
</span> |
|
|
|
</span> |
|
|
|
</span> |
|
|
@ -34,7 +34,7 @@ |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<script lang="ts"> |
|
|
|
<script lang="ts"> |
|
|
|
import { Dropdown, Menu } from 'ant-design-vue'; |
|
|
|
import { Dropdown, Menu } from 'ant-design-vue'; |
|
|
|
import { defineComponent, computed } from 'vue'; |
|
|
|
import { defineComponent, computed, unref, ref } from 'vue'; |
|
|
|
import { useUserStore } from '/@/store/modules/user'; |
|
|
|
import { useUserStore } from '/@/store/modules/user'; |
|
|
|
import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting'; |
|
|
|
import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting'; |
|
|
|
import { useI18n } from '/@/hooks/web/useI18n'; |
|
|
|
import { useI18n } from '/@/hooks/web/useI18n'; |
|
|
@ -43,7 +43,11 @@ |
|
|
|
import { propTypes } from '/@/utils/propTypes'; |
|
|
|
import { propTypes } from '/@/utils/propTypes'; |
|
|
|
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; |
|
|
|
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; |
|
|
|
import { useRouter } from 'vue-router'; |
|
|
|
import { useRouter } from 'vue-router'; |
|
|
|
|
|
|
|
import { isUrl } from '/@/utils/is'; |
|
|
|
|
|
|
|
import { useGlobSetting } from '/@/hooks/setting'; |
|
|
|
type MenuEvent = 'logout' | 'doc' | 'lock' | 'userInfo'; |
|
|
|
type MenuEvent = 'logout' | 'doc' | 'lock' | 'userInfo'; |
|
|
|
|
|
|
|
import defaultAvatar from '/@/assets/images/defaultAvatar.svg'; |
|
|
|
|
|
|
|
import type { User } from '/@/api/platform/core/entity/user'; |
|
|
|
|
|
|
|
|
|
|
|
export default defineComponent({ |
|
|
|
export default defineComponent({ |
|
|
|
name: 'UserDropdown', |
|
|
|
name: 'UserDropdown', |
|
|
@ -61,11 +65,9 @@ |
|
|
|
const { t } = useI18n(); |
|
|
|
const { t } = useI18n(); |
|
|
|
const { getUseLockPage } = useHeaderSetting(); |
|
|
|
const { getUseLockPage } = useHeaderSetting(); |
|
|
|
const userStore = useUserStore(); |
|
|
|
const userStore = useUserStore(); |
|
|
|
|
|
|
|
const { apiUrl } = useGlobSetting(); |
|
|
|
|
|
|
|
|
|
|
|
const getUserInfo = computed(() => { |
|
|
|
const getUserInfo = computed((): User => userStore.getUserInfo || {}); |
|
|
|
const { nickName = '', avatar, remarks } = userStore.getUserInfo || {}; |
|
|
|
|
|
|
|
return { nickName, avatar: avatar, remarks }; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
const { push } = useRouter(); |
|
|
|
const { push } = useRouter(); |
|
|
|
const [register, { openModal }] = useModal(); |
|
|
|
const [register, { openModal }] = useModal(); |
|
|
|
|
|
|
|
|
|
|
@ -78,6 +80,11 @@ |
|
|
|
userStore.confirmLoginOut(); |
|
|
|
userStore.confirmLoginOut(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const getAvatarUrl = computed((): string => { |
|
|
|
|
|
|
|
if (!unref(getUserInfo).avatar) return defaultAvatar; |
|
|
|
|
|
|
|
return isUrl(unref(getUserInfo).avatar) ? unref(getUserInfo).avatar : apiUrl + unref(getUserInfo).avatar; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
function handleMenuClick(e: { key: MenuEvent }) { |
|
|
|
function handleMenuClick(e: { key: MenuEvent }) { |
|
|
|
switch (e.key) { |
|
|
|
switch (e.key) { |
|
|
|
case 'userInfo': |
|
|
|
case 'userInfo': |
|
|
@ -99,6 +106,7 @@ |
|
|
|
handleMenuClick, |
|
|
|
handleMenuClick, |
|
|
|
register, |
|
|
|
register, |
|
|
|
getUseLockPage, |
|
|
|
getUseLockPage, |
|
|
|
|
|
|
|
getAvatarUrl, |
|
|
|
}; |
|
|
|
}; |
|
|
|
}, |
|
|
|
}, |
|
|
|
}); |
|
|
|
}); |
|
|
|