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
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)
|
|
// },
|
|
|
|
// },
|
|
}
|
|
)
|
|
|