chore: 初始化项目 — uni-app + Vue3 + TypeScript 脚手架
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { ref, computed } from 'vue'
|
||||
import { getToken, setToken, removeToken } from '../api/request'
|
||||
import { getUserInfo, login as apiLogin, type UserInfo, type LoginParams } from '../api/user'
|
||||
|
||||
export const useUserStore = defineStore('user', () => {
|
||||
const token = ref<string>(getToken())
|
||||
const userInfo = ref<UserInfo | null>(null)
|
||||
|
||||
const isLogin = computed(() => !!token.value)
|
||||
|
||||
async function login(params: LoginParams) {
|
||||
const result = await apiLogin(params)
|
||||
token.value = result.token
|
||||
userInfo.value = result.userInfo
|
||||
setToken(result.token)
|
||||
return result
|
||||
}
|
||||
|
||||
async function fetchUserInfo() {
|
||||
if (!token.value) return
|
||||
const info = await getUserInfo()
|
||||
userInfo.value = info
|
||||
return info
|
||||
}
|
||||
|
||||
function logout() {
|
||||
token.value = ''
|
||||
userInfo.value = null
|
||||
removeToken()
|
||||
}
|
||||
|
||||
return {
|
||||
token,
|
||||
userInfo,
|
||||
isLogin,
|
||||
login,
|
||||
fetchUserInfo,
|
||||
logout
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user