罗广辉
2025-09-30 c76922f37ddeeb3344304af453dd2f8befdedb89
src/store/modules/user/index.js
@@ -1,87 +1,23 @@
/*
 * @Author       : yuan
 * @Date         : 2025-09-28 09:31:16
 * @LastEditors  : yuan
 * @LastEditTime : 2025-09-28 10:02:26
 * @FilePath     : \src\store\modules\user\index.ts
 * @Description  :
 * Copyright 2025 OBKoro1, All Rights Reserved.
 * 2025-09-28 09:31:16
 */
import { defineStore } from 'pinia'
import { UserApi } from '@/api'
import { clearToken, setToken } from '@/utils/auth'
import {defineStore} from 'pinia'
const useUserStore = defineStore('user', {
  state: () => ({
    user_id: '',
    user_name: '江阳小道',
    avatar: '',
    token: ''
    userInfo: null // 用户信息
  }),
  getters: {
    userInfo (state) {
      return { ...state }
    }
  },
  actions: {
    // 设置用户的信息
    setInfo (partial) {
      this.$patch(partial)
    setUserInfo(userInfo) {
      this.userInfo = userInfo
    },
    // 重置用户信息
    resetInfo () {
    // 重置
    resetUserStore() {
      this.$reset()
    },
    // 获取用户信息
    async info () {
      const result = await UserApi.profile()
      this.setInfo(result)
    // 合并
    mergeUserStore(data) {
      this.$patch(data)
    },
    // 异步登录并存储token
    login (loginForm) {
      return new Promise((resolve, reject) => {
        UserApi.login(loginForm)
          .then((res) => {
            const token = res.token
            if (token) {
              setToken(token)
            }
            resolve(res)
          })
          .catch((error) => {
            reject(error)
          })
      })
    },
    // Logout
    async logout () {
      await UserApi.logout()
      this.resetInfo()
      clearToken()
    },
    // 小程序授权登录
    authLogin (provider = 'weixin') {
      return new Promise((resolve, reject) => {
        uni.login({
          provider,
          success: async (result) => {
            if (result.code) {
              const res = await UserApi.loginByCode({ code: result.code })
              resolve(res)
            } else {
              reject(new Error(result.errMsg))
            }
          },
          fail: (err) => {
            console.error(`login error: ${err}`)
            reject(err)
          }
        })
      })
    }
  },
  persist: true
  persist: true //持久化
})
export default useUserStore