123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <!--
- * @FilePath: index.vue
- * @Author: 旭颖
- * @Date: 2022-10-31 14:56:49
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2023-03-16 11:51:51
- -->
- <script lang="ts" setup>
- import { useUserStore } from '@/store/modules/user'
- import { toLoginRoute } from '@/utils/routes'
- import { VabRoute } from '/#/router'
- const route: VabRoute = useRoute()
- const router = useRouter()
- const userStore = useUserStore()
- const { avatar, username } = storeToRefs(userStore)
- const { logout } = userStore
- const active = ref(false)
- const handleVisibleChange = (val: boolean) => {
- active.value = val
- }
- const handleCommand = async (command: string) => {
- switch (command) {
- case 'logout':
- await logout()
- localStorage.removeItem('dictsSetting')
- localStorage.removeItem('factory')
- localStorage.removeItem('factory_list')
- await router.push(toLoginRoute(route.fullPath))
- break
- case 'personalCenter':
- await router.push('/setting/personalCenter')
- break
- }
- }
- </script>
- <template>
- <el-dropdown @command="handleCommand" @visible-change="handleVisibleChange">
- <span class="avatar-dropdown">
- <!-- <el-avatar class="user-avatar" :src="avatar" /> -->
- <div class="user-name">
- <span class="hidden-xs-only" :title="username">{{ username }}</span>
- <vab-icon
- class="vab-dropdown"
- :class="{ 'vab-dropdown-active': active }"
- icon="arrow-down-s-line"
- />
- </div>
- </span>
- <template #dropdown>
- <el-dropdown-menu>
- <!-- <el-dropdown-item command="personalCenter">
- <vab-icon icon="user-line" />
- <span>{{ translate('个人中心') }}</span>
- </el-dropdown-item> -->
- <el-dropdown-item command="logout">
- <vab-icon icon="logout-circle-r-line" />
- <span>退出登录</span>
- </el-dropdown-item>
- </el-dropdown-menu>
- </template>
- </el-dropdown>
- </template>
- <style lang="scss" scoped>
- .avatar-dropdown {
- display: flex;
- align-content: center;
- align-items: center;
- justify-content: center;
- justify-items: center;
- .user-avatar {
- flex-shrink: 0;
- width: 40px;
- height: 40px;
- margin-left: 15px;
- cursor: pointer;
- border-radius: 50%;
- }
- .user-name {
- position: relative;
- display: flex;
- flex-shrink: 0;
- align-content: center;
- align-items: center;
- height: 40px;
- margin-left: 6px;
- line-height: 40px;
- cursor: pointer;
- span {
- max-width: 100px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- [class*='ri-'] {
- margin-left: 3px !important;
- }
- }
- }
- </style>
|