| | |
| | | |
| | | <template #overlay> |
| | | <Menu @click="handleMenuClick"> |
| | | <MenuItem key="doc" :text="t('layout.header.dropdownItemDoc')" icon="ion:document-text-outline" v-if="getShowDoc" /> |
| | | <!-- <MenuItem key="doc" :text="t('layout.header.dropdownItemDoc')" icon="ion:document-text-outline" v-if="getShowDoc" /> --> |
| | | <MenuDivider v-if="getShowDoc" /> |
| | | <MenuItem key="account" :text="t('layout.header.dropdownItemSwitchAccount')" icon="ant-design:setting-outlined" /> |
| | | <MenuItem key="password" :text="t('layout.header.dropdownItemSwitchPassword')" icon="ant-design:edit-outlined" /> |
| | |
| | | </template> |
| | | <script lang="ts"> |
| | | // components |
| | | import { Dropdown, Menu } from 'ant-design-vue'; |
| | | import { Dropdown, Menu } from 'ant-design-vue' |
| | | |
| | | import { defineComponent, computed, ref } from 'vue'; |
| | | import { defineComponent, computed, ref } from 'vue' |
| | | |
| | | import { SITE_URL } from '/@/settings/siteSetting'; |
| | | import { SITE_URL } from '/@/settings/siteSetting' |
| | | |
| | | import { useUserStore } from '/@/store/modules/user'; |
| | | import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting'; |
| | | import { useI18n } from '/@/hooks/web/useI18n'; |
| | | import { useDesign } from '/@/hooks/web/useDesign'; |
| | | import { useModal } from '/@/components/Modal'; |
| | | import { useMessage } from '/src/hooks/web/useMessage'; |
| | | import { useGo } from '/@/hooks/web/usePage'; |
| | | import headerImg from '/@/assets/images/header.jpg'; |
| | | import { propTypes } from '/@/utils/propTypes'; |
| | | import { openWindow } from '/@/utils'; |
| | | import { useUserStore } from '/@/store/modules/user' |
| | | import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting' |
| | | import { useI18n } from '/@/hooks/web/useI18n' |
| | | import { useDesign } from '/@/hooks/web/useDesign' |
| | | import { useModal } from '/@/components/Modal' |
| | | import { useMessage } from '/src/hooks/web/useMessage' |
| | | import { useGo } from '/@/hooks/web/usePage' |
| | | import headerImg from '/@/assets/images/header.jpg' |
| | | import { propTypes } from '/@/utils/propTypes' |
| | | import { openWindow } from '/@/utils' |
| | | |
| | | import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; |
| | | import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent' |
| | | |
| | | import { refreshCache, queryAllDictItems } from '/@/views/system/dict/dict.api'; |
| | | import { DB_DICT_DATA_KEY } from '/src/enums/cacheEnum'; |
| | | import { removeAuthCache, setAuthCache } from '/src/utils/auth'; |
| | | import { getFileAccessHttpUrl } from '/@/utils/common/compUtils'; |
| | | import { refreshCache, queryAllDictItems } from '/@/views/system/dict/dict.api' |
| | | import { DB_DICT_DATA_KEY } from '/src/enums/cacheEnum' |
| | | import { removeAuthCache, setAuthCache } from '/src/utils/auth' |
| | | import { getFileAccessHttpUrl } from '/@/utils/common/compUtils' |
| | | |
| | | type MenuEvent = 'logout' | 'doc' | 'lock' | 'cache' | 'depart'; |
| | | const { createMessage } = useMessage(); |
| | | type MenuEvent = 'logout' | 'doc' | 'lock' | 'cache' | 'depart' |
| | | const { createMessage } = useMessage() |
| | | export default defineComponent({ |
| | | name: 'UserDropdown', |
| | | components: { |
| | |
| | | theme: propTypes.oneOf(['dark', 'light']), |
| | | }, |
| | | setup() { |
| | | const { prefixCls } = useDesign('header-user-dropdown'); |
| | | const { t } = useI18n(); |
| | | const { getShowDoc, getUseLockPage } = useHeaderSetting(); |
| | | const userStore = useUserStore(); |
| | | const go = useGo(); |
| | | const { prefixCls } = useDesign('header-user-dropdown') |
| | | const { t } = useI18n() |
| | | const { getShowDoc, getUseLockPage } = useHeaderSetting() |
| | | const userStore = useUserStore() |
| | | const go = useGo() |
| | | |
| | | const getUserInfo = computed(() => { |
| | | const { realname = '', avatar, desc } = userStore.getUserInfo || {}; |
| | | return { realname, avatar: avatar || headerImg, desc }; |
| | | }); |
| | | const { realname = '', avatar, desc } = userStore.getUserInfo || {} |
| | | return { realname, avatar: avatar || headerImg, desc } |
| | | }) |
| | | |
| | | const getAvatarUrl = computed(() => { |
| | | let { avatar } = getUserInfo.value; |
| | | let { avatar } = getUserInfo.value |
| | | if (avatar == headerImg) { |
| | | return avatar; |
| | | return avatar |
| | | } else { |
| | | return getFileAccessHttpUrl(avatar); |
| | | return getFileAccessHttpUrl(avatar) |
| | | } |
| | | }); |
| | | }) |
| | | |
| | | const [register, { openModal }] = useModal(); |
| | | const [register, { openModal }] = useModal() |
| | | /** |
| | | * 多部门弹窗逻辑 |
| | | */ |
| | | const loginSelectRef = ref(); |
| | | const loginSelectRef = ref() |
| | | function handleLock() { |
| | | openModal(true); |
| | | openModal(true) |
| | | } |
| | | |
| | | // login out |
| | | function handleLoginOut() { |
| | | userStore.confirmLoginOut(); |
| | | userStore.confirmLoginOut() |
| | | } |
| | | |
| | | // open doc |
| | | function openDoc() { |
| | | openWindow(SITE_URL); |
| | | openWindow(SITE_URL) |
| | | } |
| | | |
| | | // 清除缓存 |
| | | async function clearCache() { |
| | | const result = await refreshCache(); |
| | | const result = await refreshCache() |
| | | if (result.success) { |
| | | const res = await queryAllDictItems(); |
| | | removeAuthCache(DB_DICT_DATA_KEY); |
| | | setAuthCache(DB_DICT_DATA_KEY, res.result); |
| | | createMessage.success('刷新缓存完成!'); |
| | | const res = await queryAllDictItems() |
| | | removeAuthCache(DB_DICT_DATA_KEY) |
| | | setAuthCache(DB_DICT_DATA_KEY, res.result) |
| | | createMessage.success('刷新缓存完成!') |
| | | } else { |
| | | createMessage.error('刷新缓存失败!'); |
| | | createMessage.error('刷新缓存失败!') |
| | | } |
| | | } |
| | | // 切换部门 |
| | | function updateCurrentDepart() { |
| | | loginSelectRef.value.show(); |
| | | loginSelectRef.value.show() |
| | | } |
| | | // 修改密码 |
| | | const updatePasswordRef = ref(); |
| | | const updatePasswordRef = ref() |
| | | function updatePassword() { |
| | | updatePasswordRef.value.show(userStore.getUserInfo.username); |
| | | updatePasswordRef.value.show(userStore.getUserInfo.username) |
| | | } |
| | | |
| | | function handleMenuClick(e: { key: MenuEvent }) { |
| | | switch (e.key) { |
| | | case 'logout': |
| | | handleLoginOut(); |
| | | break; |
| | | handleLoginOut() |
| | | break |
| | | case 'doc': |
| | | openDoc(); |
| | | break; |
| | | openDoc() |
| | | break |
| | | case 'lock': |
| | | handleLock(); |
| | | break; |
| | | handleLock() |
| | | break |
| | | case 'cache': |
| | | clearCache(); |
| | | break; |
| | | clearCache() |
| | | break |
| | | case 'depart': |
| | | updateCurrentDepart(); |
| | | break; |
| | | updateCurrentDepart() |
| | | break |
| | | case 'password': |
| | | updatePassword(); |
| | | break; |
| | | updatePassword() |
| | | break |
| | | case 'account': |
| | | //update-begin---author:wangshuai ---date:20221125 for:进入用户设置页面------------ |
| | | go(`/system/usersetting`); |
| | | go(`/system/usersetting`) |
| | | //update-end---author:wangshuai ---date:20221125 for:进入用户设置页面-------------- |
| | | break; |
| | | break |
| | | } |
| | | } |
| | | |
| | |
| | | getUseLockPage, |
| | | loginSelectRef, |
| | | updatePasswordRef, |
| | | }; |
| | | } |
| | | }, |
| | | }); |
| | | }) |
| | | </script> |
| | | <style lang="less"> |
| | | @prefix-cls: ~'@{namespace}-header-user-dropdown'; |