| | |
| | | /* |
| | | * @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 |