tj
2025-05-28 6ef1b14f735acdc3ff77a50da1bb09a5bb983dcc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// stores/user.ts
import { defineStore } from 'pinia'
import { ref } from 'vue'
import http from '@/plugins/http.js' 
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
  }
})