| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /**
- * 用户状态管理
- */
- import { defineStore } from 'pinia'
- import { ref, computed } from 'vue'
- export const useUserStore = defineStore('user', () => {
- // 状态
- const token = ref(uni.getStorageSync('token') || '')
- const userInfo = ref(uni.getStorageSync('userInfo') || null)
- // 计算属性
- const isLoggedIn = computed(() => !!token.value)
- const userName = computed(() => userInfo.value?.name || '')
- const userAvatar = computed(() => userInfo.value?.avatar || '')
- // 设置 token
- const setToken = (newToken) => {
- token.value = newToken
- uni.setStorageSync('token', newToken)
- }
- // 设置用户信息
- const setUserInfo = (info) => {
- userInfo.value = info
- uni.setStorageSync('userInfo', info)
- }
- // 登录成功
- const loginSuccess = (data) => {
- if (data.token) {
- setToken(data.token)
- }
- if (data.userInfo) {
- setUserInfo(data.userInfo)
- }
- }
- // 退出登录
- const logout = () => {
- token.value = ''
- userInfo.value = null
- uni.removeStorageSync('token')
- uni.removeStorageSync('userInfo')
- }
- // 更新用户信息
- const updateUserInfo = (info) => {
- userInfo.value = {
- ...userInfo.value,
- ...info
- }
- uni.setStorageSync('userInfo', userInfo.value)
- }
- return {
- // 状态
- token,
- userInfo,
- // 计算属性
- isLoggedIn,
- userName,
- userAvatar,
- // 方法
- setToken,
- setUserInfo,
- loginSuccess,
- logout,
- updateUserInfo
- }
- })
|