| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import { defineStore } from 'pinia'
- import { ref, computed } from 'vue'
- import { userApi } from '@/api/user'
- export const useUserStore = defineStore('user', () => {
- // 状态
- const userInfo = ref(uni.getStorageSync('userInfo') || null)
- const loginPopupVisible = ref(false)
-
- // 计算属性
- const isLoggedIn = computed(() => !!userInfo.value?.openid)
- const userId = computed(() => userInfo.value?.userId)
- const userName = computed(() => userInfo.value?.username)
-
- // 方法
- const showLoginPopup = () => {
- loginPopupVisible.value = true
- }
-
- const hideLoginPopup = () => {
- loginPopupVisible.value = false
- }
-
- const setUserInfo = (info) => {
- userInfo.value = info
- uni.setStorageSync('userInfo', info)
- }
-
- const clearUserInfo = () => {
- userInfo.value = null
- uni.removeStorageSync('userInfo')
- }
-
- // 登录方法
- const wechatLogin = async (code) => {
- console.log('wechatLogin', code)
- try {
- const data = await userApi.login({ code })
- setUserInfo(data)
- return data
- } catch (error) {
- console.error('微信登录失败:', error)
- throw error
- }
- }
-
- const accountLogin = async (username, password) => {
- try {
- const data = await userApi.mobileLogin({ username, password })
- setUserInfo(data)
- return data
- } catch (error) {
- console.error('账号登录失败:', error)
- throw error
- }
- }
- // 登出
- const logout = () => {
- clearUserInfo()
- uni.reLaunch({
- url: '/pages/parent/index'
- })
- }
-
- return {
- // 状态
- userInfo,
- loginPopupVisible,
- // 计算属性
- isLoggedIn,
- userId,
- userName,
- // 方法
- showLoginPopup,
- hideLoginPopup,
- setUserInfo,
- clearUserInfo,
- wechatLogin,
- accountLogin,
- logout
- }
- })
|