// 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', () => {
|
const hasLogin = ref(false)
|
const isBind = ref(false)
|
|
async function getCurrentInfo() {
|
// 模拟请求用户信息
|
console.log('获取当前用户信息')
|
// 这里你可以请求 /api/user/info 等接口获取用户数据
|
}
|
|
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
|
|
if (inviter) {
|
storage.removeItem('inviter')
|
storage.removeItem('inviterTime')
|
storage.removeItem('inviterName')
|
}
|
|
await getCurrentInfo()
|
} else {
|
message.showToast('登录失败:' + (resp?.msg || '未知错误'))
|
storage.removeItem('openid')
|
storage.removeItem('tel')
|
storage.removeItem('token')
|
}
|
|
return resp
|
}
|
|
return {
|
hasLogin,
|
isBind,
|
loginwx,
|
getCurrentInfo
|
}
|
})
|