/** * 用户状态管理 */ 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 } })