{"version":3,"file":"UserBar.mjs","sources":["../../../../src/components/layout/UserBar.vue"],"sourcesContent":["<template>\r\n  <div class=\"user-bar\">\r\n    <a-dropdown class=\"user panel-item\">\r\n      <div class=\"user-avatar\">\r\n        <SmartAvatar :src=\"userInfo.avatar\"\r\n                     style=\"display: flex; flex-direction: row; align-items: center; justify-content: center\"/>\r\n        <label>{{ userName }}</label>\r\n        <slot name=\"avaOtherContent\"></slot>\r\n      </div>\r\n      <template #overlay>\r\n        <a-menu>\r\n          <a-menu-item key=\"clearCache\" @click=\"handleUser('clearCache')\">\r\n            <loading3-quarters-outlined style=\"margin-right: 8px\"/>\r\n            <span>清理缓存</span>\r\n          </a-menu-item>\r\n          <a-menu-divider/>\r\n          <a-menu-item key=\"outLogin\" @click=\"handleUser('outLogin')\">\r\n            <export-outlined style=\"margin-right: 8px\"/>\r\n            <span>退出登录</span>\r\n          </a-menu-item>\r\n        </a-menu>\r\n      </template>\r\n    </a-dropdown>\r\n    <slot name=\"barOtherContent\"></slot>\r\n    <div class=\"screen panel-item hidden-sm-and-down\" @click=\"fullscreen\">\r\n      <fullscreen-outlined/>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script>\r\nimport {createVNode, getCurrentInstance} from 'vue'\r\nimport {ExclamationCircleOutlined} from '@ant-design/icons-vue'\r\nimport {message} from 'ant-design-vue'\r\nimport {tool} from 'elead-ui-tool-v3'\r\nimport ssoApi from '@/api/auth/sso2Api'\r\nimport * as sso from \"@/utils/sso\"\r\nimport screenfull from 'screenfull'\r\nexport default {\r\n  name: 'UserBar',\r\n  components: {},\r\n  data() {\r\n    return {\r\n      lang: [],\r\n      userInfo: {},\r\n      userName: '',\r\n      userNameF: ''\r\n    }\r\n  },\r\n  watch: {\r\n    userInfoWatch(newVal, oldVal) {\r\n      this.userInfo = newVal\r\n    }\r\n  },\r\n  created() {\r\n    const {proxy} = getCurrentInstance()\r\n    this.userInfo = proxy.$TOOL.data.get('USER_INFO')\r\n    this.userName = this.userInfo.userName\r\n    // 获取默认语言\r\n    this.lang = new Array(this.$TOOL.data.get('APP_LANG') || this.$CONFIG.LANG)\r\n    this.userInfo = this.$TOOL.data.get('USER_INFO')\r\n    this.userNameF = this.userName.substring(0, 1)\r\n  },\r\n  methods: {\r\n    // 个人信息\r\n    handleUser(key) {\r\n      if (key === 'clearCache') {\r\n        this.$confirm({\r\n          title: '提示',\r\n          content: '确认清理所有缓存？',\r\n          icon: createVNode(ExclamationCircleOutlined),\r\n          maskClosable: false,\r\n          okText: '确定',\r\n          cancelText: '取消',\r\n          onOk() {\r\n            message.loading('正在清理中...', 1)\r\n            tool.data.clear()\r\n            setTimeout(() => {\r\n              sso.toLogin()\r\n            }, 100)\r\n          },\r\n          onCancel() {\r\n          }\r\n        })\r\n      }\r\n      if (key === 'outLogin') {\r\n        this.$confirm({\r\n          title: '提示',\r\n          content: '确认退出当前用户？',\r\n          icon: createVNode(ExclamationCircleOutlined),\r\n          maskClosable: false,\r\n          onOk() {\r\n            // 取得缓存中的token\r\n            const token = tool.data.get('TOKEN')\r\n            const param = {\r\n              token: token\r\n            }\r\n            message.loading('退出中...', 0)\r\n            ssoApi\r\n                .logout(param)\r\n                .then(() => {\r\n                  // message.c\r\n                  // 清理掉个人的一些信息\r\n                  tool.data.remove('TOKEN')\r\n                  tool.data.remove('USER_INFO')\r\n                  tool.data.remove('MENU')\r\n                  tool.data.remove('PERMISSIONS')\r\n                  sso.toLogin()\r\n                })\r\n                .catch(() => {\r\n                  tool.data.clear()\r\n                  sso.toLogin()\r\n                })\r\n          },\r\n          onCancel() {\r\n          }\r\n        })\r\n      }\r\n    },\r\n    // 设置多语言语种\r\n    handleIn18(key) {\r\n      this.lang = []\r\n      this.lang.push(key)\r\n      this.$i18n.locale = key\r\n      this.$TOOL.data.set('APP_LANG', key)\r\n    },\r\n    // 全屏\r\n    fullscreen() {\r\n      const element = document.documentElement\r\n      if (screenfull.isEnabled) {\r\n        screenfull.toggle(element)\r\n      }\r\n    }\r\n  }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n:deep(.ant-modal) {\r\n  top: 20px;\r\n}\r\n:deep(.ant-modal-content) {\r\n  border-radius: 10px;\r\n}\r\n.user-bar {\r\n  display: flex !important;\r\n  align-items: center;\r\n  height: 100%;\r\n}\r\n.user-bar .panel-item {\r\n  padding: 0 10px;\r\n  cursor: pointer;\r\n  height: 100%;\r\n  display: flex;\r\n  align-items: center;\r\n}\r\n.user-bar .panel-item i {\r\n}\r\n.user-bar .panel-item:hover {\r\n  background: var(--header-color-split);\r\n}\r\n.user-bar .user-avatar {\r\n  height: 49px;\r\n  display: flex;\r\n  align-items: center;\r\n}\r\n.user-bar .user-avatar label {\r\n  display: inline-block;\r\n  margin-left: 5px;\r\n  cursor: pointer;\r\n  width: 60px;\r\n}\r\n</style>\r\n"],"names":["sso.toLogin","_openBlock","_createElementBlock","_createVNode","_createElementVNode","_renderSlot"],"mappings":"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"}