| | |
| | | * 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' |
| | | import { UserApi } from '@/api' |
| | | import { clearToken, setToken } from '@/utils/auth' |
| | | |
| | | const useUserStore = defineStore('user', { |
| | | state: () => ({ |
| | |
| | | token: '' |
| | | }), |
| | | getters: { |
| | | userInfo(state) { |
| | | return { ...state }; |
| | | userInfo (state) { |
| | | return { ...state } |
| | | } |
| | | }, |
| | | actions: { |
| | | // 设置用户的信息 |
| | | setInfo(partial) { |
| | | this.$patch(partial); |
| | | setInfo (partial) { |
| | | this.$patch(partial) |
| | | }, |
| | | // 重置用户信息 |
| | | resetInfo() { |
| | | this.$reset(); |
| | | resetInfo () { |
| | | this.$reset() |
| | | }, |
| | | // 获取用户信息 |
| | | async info() { |
| | | const result = await UserApi.profile(); |
| | | this.setInfo(result); |
| | | async info () { |
| | | const result = await UserApi.profile() |
| | | this.setInfo(result) |
| | | }, |
| | | // 异步登录并存储token |
| | | login(loginForm) { |
| | | login (loginForm) { |
| | | return new Promise((resolve, reject) => { |
| | | UserApi.login(loginForm) |
| | | .then((res) => { |
| | | const token = res.token; |
| | | const token = res.token |
| | | if (token) { |
| | | setToken(token); |
| | | setToken(token) |
| | | } |
| | | resolve(res); |
| | | resolve(res) |
| | | }) |
| | | .catch((error) => { |
| | | reject(error); |
| | | }); |
| | | }); |
| | | reject(error) |
| | | }) |
| | | }) |
| | | }, |
| | | // Logout |
| | | async logout() { |
| | | await UserApi.logout(); |
| | | this.resetInfo(); |
| | | clearToken(); |
| | | async logout () { |
| | | await UserApi.logout() |
| | | this.resetInfo() |
| | | clearToken() |
| | | }, |
| | | // 小程序授权登录 |
| | | authLogin(provider = 'weixin') { |
| | | 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); |
| | | const res = await UserApi.loginByCode({ code: result.code }) |
| | | resolve(res) |
| | | } else { |
| | | reject(new Error(result.errMsg)); |
| | | reject(new Error(result.errMsg)) |
| | | } |
| | | }, |
| | | fail: (err) => { |
| | | console.error(`login error: ${err}`); |
| | | reject(err); |
| | | console.error(`login error: ${err}`) |
| | | reject(err) |
| | | } |
| | | }); |
| | | }); |
| | | }) |
| | | }) |
| | | } |
| | | }, |
| | | persist: true |
| | | }); |
| | | }) |
| | | |
| | | export default useUserStore; |
| | | export default useUserStore |