71 lines
1.5 KiB
TypeScript
71 lines
1.5 KiB
TypeScript
// 每一个存储的模块,命名规则use开头,store结尾
|
||
import { defineStore } from 'pinia'
|
||
import { ref, computed } from 'vue'
|
||
import { removeLocal, setLocal } from '@/utils/local'
|
||
import MyEvent from '@/utils/myEvent'
|
||
export const useUserInfoStore = defineStore('userInfo', () => {
|
||
const state = ref({
|
||
userInfo: {},
|
||
token: '',
|
||
generateParams: {
|
||
stylist: '',
|
||
sex: '',
|
||
stylistImage: ''
|
||
}
|
||
})
|
||
|
||
// getters
|
||
const getUserInfo = computed(() => state.value.userInfo)
|
||
|
||
// actions
|
||
const setUserInfo = (data: any) => {
|
||
state.value.userInfo = data
|
||
}
|
||
|
||
const setToken = (data: string) => {
|
||
state.value.token = data
|
||
setLocal(data, 'token')
|
||
}
|
||
|
||
const getGenerateParams = () => {
|
||
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) => {
|
||
state.value.token = ''
|
||
state.value.userInfo = {}
|
||
removeLocal('token')
|
||
resetGenerateParams()
|
||
MyEvent.emit('clear-generate-state')
|
||
MyEvent.emit('clear-client-state')
|
||
MyEvent.emit('clearAllCache')
|
||
resolve('')
|
||
})
|
||
}
|
||
|
||
return {
|
||
state,
|
||
getUserInfo,
|
||
setToken,
|
||
setUserInfo,
|
||
setGenerateParams,
|
||
getGenerateParams,
|
||
resetGenerateParams,
|
||
logOut
|
||
}
|
||
})
|