登录、退出登录
This commit is contained in:
@@ -30,7 +30,6 @@ export const AccountLogin = (data) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 注册
|
* 注册
|
||||||
* @param data - 包含注册信息的参数
|
* @param data - 包含注册信息的参数
|
||||||
|
|||||||
@@ -5,22 +5,20 @@ import { removeLocal, setLocal } from '@/utils/local'
|
|||||||
import MyEvent from '@/utils/myEvent'
|
import MyEvent from '@/utils/myEvent'
|
||||||
export const useUserInfoStore = defineStore('userInfo', () => {
|
export const useUserInfoStore = defineStore('userInfo', () => {
|
||||||
const state = ref({
|
const state = ref({
|
||||||
userInfo: {},
|
userInfo: {
|
||||||
token: '',
|
userId: "",
|
||||||
generateParams: {
|
email: "",
|
||||||
stylist: '',
|
username: "",
|
||||||
sex: '',
|
accessToken: "",
|
||||||
stylistImage: ''
|
expiresIn: "",
|
||||||
}
|
},
|
||||||
|
token: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
// getters
|
|
||||||
const getUserInfo = computed(() => state.value.userInfo)
|
|
||||||
|
|
||||||
// actions
|
// actions
|
||||||
const setUserInfo = (data: any) => {
|
const setUserInfo = (data: any) => {
|
||||||
state.value.userInfo = data
|
state.value.userInfo = data
|
||||||
state.value.token = data.accessToken
|
setToken(data.accessToken)
|
||||||
}
|
}
|
||||||
|
|
||||||
const setToken = (data: string) => {
|
const setToken = (data: string) => {
|
||||||
@@ -28,44 +26,26 @@ export const useUserInfoStore = defineStore('userInfo', () => {
|
|||||||
setLocal(data, 'token')
|
setLocal(data, 'token')
|
||||||
}
|
}
|
||||||
|
|
||||||
const getGenerateParams = () => {
|
const logout = () => {
|
||||||
return state.value.generateParams
|
|
||||||
}
|
|
||||||
|
|
||||||
const setGenerateParams = (data: any) => {
|
|
||||||
state.value.generateParams = data
|
|
||||||
}
|
|
||||||
|
|
||||||
const resetGenerateParams = () => {
|
|
||||||
state.value.generateParams = {
|
|
||||||
stylist: '',
|
|
||||||
sex: '',
|
|
||||||
stylistImage: ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const logOut = () => {
|
|
||||||
// 处理退出登录的一些逻辑
|
// 处理退出登录的一些逻辑
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
|
state.value.userInfo = {
|
||||||
|
userId: "",
|
||||||
|
email: "",
|
||||||
|
username: "",
|
||||||
|
accessToken: "",
|
||||||
|
expiresIn: "",
|
||||||
|
}
|
||||||
state.value.token = ''
|
state.value.token = ''
|
||||||
state.value.userInfo = {}
|
|
||||||
removeLocal('token')
|
removeLocal('token')
|
||||||
resetGenerateParams()
|
|
||||||
MyEvent.emit('clear-generate-state')
|
|
||||||
MyEvent.emit('clear-client-state')
|
|
||||||
MyEvent.emit('clearAllCache')
|
|
||||||
resolve('')
|
resolve('')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
state,
|
state,
|
||||||
getUserInfo,
|
|
||||||
setToken,
|
setToken,
|
||||||
setUserInfo,
|
setUserInfo,
|
||||||
setGenerateParams,
|
logout
|
||||||
getGenerateParams,
|
|
||||||
resetGenerateParams,
|
|
||||||
logOut
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -26,13 +26,13 @@
|
|||||||
>
|
>
|
||||||
<svg-icon :name="activePath === v.path ? v.active_icon : v.icon" size="22" />
|
<svg-icon :name="activePath === v.path ? v.active_icon : v.icon" size="22" />
|
||||||
</div>
|
</div>
|
||||||
<div class="login" @click="onLogin">Login</div>
|
|
||||||
<el-popover
|
<el-popover
|
||||||
ref="profilePopover"
|
ref="profilePopover"
|
||||||
placement="bottom-end"
|
placement="bottom-end"
|
||||||
trigger="click"
|
trigger="click"
|
||||||
:show-arrow="false"
|
:show-arrow="false"
|
||||||
popper-style="width: 24rem; padding: 0; border-radius: 0; right: 2rem; top: 10rem;"
|
popper-style="width: 24rem; padding: 0; border-radius: 0; right: 2rem; top: 10rem;"
|
||||||
|
v-if="userInfo.userId"
|
||||||
>
|
>
|
||||||
<template #reference><div class="profile"></div></template>
|
<template #reference><div class="profile"></div></template>
|
||||||
<template #default>
|
<template #default>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
<img src="@/assets/images/profile-content-bg.jpg" alt="" />
|
<img src="@/assets/images/profile-content-bg.jpg" alt="" />
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="profile"></div>
|
<div class="profile"></div>
|
||||||
<div class="name">Hi, Alexandra_chen</div>
|
<div class="name">Hi, {{ userInfo.username }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-item" @click="onMyWardrobe">
|
<div class="nav-item" @click="onMyWardrobe">
|
||||||
@@ -64,6 +64,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-popover>
|
</el-popover>
|
||||||
|
<div class="login" @click="onLogin" v-else>Login</div>
|
||||||
<div class="language" @click="onLanguageClick">
|
<div class="language" @click="onLanguageClick">
|
||||||
<span :class="{ active: locale === 'CHINESE_SIMPLIFIED' }">中</span> /
|
<span :class="{ active: locale === 'CHINESE_SIMPLIFIED' }">中</span> /
|
||||||
<span :class="{ active: locale === 'ENGLISH' }">ENG</span>
|
<span :class="{ active: locale === 'ENGLISH' }">ENG</span>
|
||||||
@@ -73,13 +74,17 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { ElMessageBox } from 'element-plus'
|
||||||
import { computed, ref } from 'vue'
|
import { computed, ref } from 'vue'
|
||||||
import { useRouter, useRoute } from 'vue-router'
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
import myEvent from '@/utils/myEvent'
|
import myEvent from '@/utils/myEvent'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
import { useUserInfoStore } from '@/stores/userInfo'
|
||||||
const { t, locale } = useI18n()
|
const { t, locale } = useI18n()
|
||||||
|
const userInfoStore = useUserInfoStore()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
const userInfo = computed(() => userInfoStore.state.userInfo)
|
||||||
const activePath = computed(() => route.path)
|
const activePath = computed(() => route.path)
|
||||||
const navList1 = ref([
|
const navList1 = ref([
|
||||||
{
|
{
|
||||||
@@ -137,7 +142,12 @@
|
|||||||
}
|
}
|
||||||
const onLogout = () => {
|
const onLogout = () => {
|
||||||
hideProfilePopover()
|
hideProfilePopover()
|
||||||
console.log('logout')
|
ElMessageBox.confirm('Are you sure to log off?')
|
||||||
|
.then(() => {
|
||||||
|
userInfoStore.logout()
|
||||||
|
router.go(0)
|
||||||
|
})
|
||||||
|
.catch(() => {})
|
||||||
}
|
}
|
||||||
const onLanguageClick = () => {
|
const onLanguageClick = () => {
|
||||||
locale.value = locale.value === 'ENGLISH' ? 'CHINESE_SIMPLIFIED' : 'ENGLISH'
|
locale.value = locale.value === 'ENGLISH' ? 'CHINESE_SIMPLIFIED' : 'ENGLISH'
|
||||||
|
|||||||
Reference in New Issue
Block a user