You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

131 lines
3.9 KiB

// 定义组合式API仓库
import { defineStore } from 'pinia'
import { getPrefixName } from '@/config'
import { getOpenid } from '@/api/login'
import { infoForOpenid,getMember_mobile, bind as bindApi } from '@/api/user'
interface userInfoStoreInt {
[n: string]: any
}
export default defineStore(
getPrefixName('user'),
() => {
const openId = ref('')
const mobile = ref('')
const meetId = ref('')
const showtoast = ref(false)
const userInfo = ref<userInfoStoreInt>({})
function getopenid(params: { code: string }) {
return new Promise<any>((resolve, reject) => {
getOpenid(params)
.then((res) => {
const { data } = res as { data: string }
openId.value = data
resolve({ code: 1, message: '登录成功~' })
})
.catch((err) => {
reject(err)
})
})
}
function getUserInfo() {
return new Promise<any>( (resolve, reject) => {
infoForOpenid({ openid: openId.value, mobile: mobile.value, meetId: meetId.value})
.then((res) => {
const { data } = res as { data: userInfoStoreInt }
userInfo.value = data || {}
resolve({ code: 1, data, message: 'SUCCESS' })
})
.catch((err) => {
reject(err)
})
})
}
function getUserInfomobile() {
return new Promise<any>( (resolve, reject) => {
getMember_mobile({ openid: openId.value})
.then((res) => {
const { data } = res as { data: userInfoStoreInt }
userInfo.value = data || {}
resolve({ code: 1, data, message: 'SUCCESS' })
})
.catch((err) => {
reject(err)
})
})
}
function bindUser(id: number) {
return new Promise<any>((resolve, reject) => {
bindApi({ id, openid: openId.value })
.then(() => {
resolve({ code: 1, message: 'SUCCESS' })
})
.catch((err) => {
reject(err)
})
})
}
function logOut() {
userInfo.value = {}
uni.clearStorageSync()
uni.showToast({
icon: 'none',
title: '退出成功',
mask: true,
success() {
setTimeout(() => uni.reLaunch({ url: 'pages/login/login' }), 1000)
}
})
}
return {
openId,
mobile,
meetId,
showtoast,
userInfo,
getopenid,
bindUser,
getUserInfo,
logOut,
getUserInfomobile
}
},
{
unistorage: {
serializer: {
// 序列化,默认为 JSON.stringify
serialize(v) {
return JSON.stringify(v)
},
// 反序列化,默认为 JSON.parse
deserialize(v) {
return JSON.parse(v)
}
}
} // 开启后对 state 的数据读写都将持久化
// unistorage: {
// key: 'userInfo', // 缓存的键,默认为该 store 的 id,这里是 main,
// paths: ['userInfo.token'], // 需要缓存的路径,这里设置 foo 和 nested 下的 data 会被缓存
// // 初始化恢复前触发
// beforeRestore(ctx: any) {
// console.log(ctx)
// },
// // 初始化恢复后触发
// afterRestore(ctx: any) {
// console.log('ctx', ctx)
// },
// },
}
)