From fa74612c99459a8b4e94121d2d3bfcc42915208b Mon Sep 17 00:00:00 2001 From: tj <1378534974@qq.com> Date: 星期二, 27 五月 2025 16:08:20 +0800 Subject: [PATCH] loading,wechatLogin --- store/user.ts | 86 ++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 84 insertions(+), 2 deletions(-) diff --git a/store/user.ts b/store/user.ts index c95eed2..61a39ea 100644 --- a/store/user.ts +++ b/store/user.ts @@ -1,6 +1,88 @@ +// stores/user.ts import { defineStore } from 'pinia' import { ref } from 'vue' +import http from '@/plugins/http.js' // 请替换成你实际的 http 封装路径 +import storage from '@/plugins/storage' // 同样替换为你的封装路径 +import message from '@/plugins/message' // 你使用的消息组件封装 +import { WechatLoginData } from '@/types/index' + export const useUserStore = defineStore('user', () => { - -}) \ No newline at end of file + const hasLogin = ref(false) + const isBind = ref(false) + const userInfo = ref<any>(null) + + async function getCurrentInfo() { + const currentInfo = await http.request('get', '/api/current/user', {}) + if (currentInfo && currentInfo.code == 0) { + console.log('当前用户信息', currentInfo) + userInfo.value = currentInfo.data // 赋值到 store + } else { + message.showToast('获取用户信息失败') + } + } + + async function loginwx(data: WechatLoginData) { + const { + code, + imgurl = '', + nickname = '', + inviter = '', + phoneNumber = '', + purePhoneNumber = '' + } = data + + const resp = await http.request('post', '/api/login/wechat', { + data: { + code, + imgurl, + nickname, + inviter, + phoneNumber, + purePhoneNumber + } + }) + + if (resp && resp.code === 0) { + + isBind.value = true + storage.setItem('token', resp.data.access_token || '') + hasLogin.value = true + await getCurrentInfo() + } else { + message.showToast('登录失败:' + (resp?.msg || '未知错误')) + storage.removeItem('openid') + storage.removeItem('tel') + storage.removeItem('token') + } + + return resp + } + + + function initLoginState() { + const token = storage.getItem('token') + if (token) { + hasLogin.value = true + + const savedUserInfo = storage.getItem('userInfo') + if (savedUserInfo) { + userInfo.value = savedUserInfo + } else { + getCurrentInfo() + } + } else { + hasLogin.value = false + } + } + + + return { + hasLogin, + isBind, + userInfo, + loginwx, + getCurrentInfo, + initLoginState, + } +}) -- Gitblit v1.9.3