干燥机配套车间生产管理系统/云平台服务端
baoshiwei
2023-05-24 beca65f4d01ca07c358102a35b949c2a4f277afe
src/layouts/default/header/components/user-dropdown/index.vue
@@ -11,7 +11,7 @@
    <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" />
@@ -33,32 +33,32 @@
</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: {
@@ -74,92 +74,92 @@
      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
        }
      }
@@ -174,9 +174,9 @@
        getUseLockPage,
        loginSelectRef,
        updatePasswordRef,
      };
         }
    },
  });
   })
</script>
<style lang="less">
  @prefix-cls: ~'@{namespace}-header-user-dropdown';