| | |
| | | /* |
| | | * @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() { |
| | | this.$reset(); |
| | | // 重置 |
| | | 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; |
| | | export default useUserStore |