惠企通
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.
 
 
 
 
 

106 lines
3.3 KiB

// 定义组合式API仓库
import { defineStore } from 'pinia'
import { getPrefixName } from '@/config'
import { getOpenid } from '@/api/login'
import { infoForOpenid, logout } from '@/api/user'
interface userInfoStoreInt {
[n: string]: any
}
export default defineStore(
getPrefixName('user'),
() => {
const openId = ref('')
const mobile = ref('')
const showtoast = ref(false)
const userInfo = ref<userInfoStoreInt>({})
const cometype = ref(0)
function getopenid(params: { code: string }) {
return new Promise<any>((resolve, reject) => {
getOpenid(params)
.then((res: any) => {
openId.value = res.data.openid
resolve({ code: 1, message: '登录成功~' })
})
.catch((err) => {
reject(err)
})
})
}
function getUserInfo() {
return new Promise<any>((resolve, reject) => {
infoForOpenid()
.then((res: any) => {
const { data } = res as { data: userInfoStoreInt }
userInfo.value = data || {}
resolve({ code: 1, data, message: 'SUCCESS' })
})
.catch((err) => {
reject(err)
})
})
}
function logOut() {
if (uni.getStorageSync('access_token') === '') {
uni.navigateTo({
url: '/pages/login/login'
})
} else {
userInfo.value = {}
uni.clearStorageSync()
const res = logout()
console.log(res, uni.getStorageSync('access_token'))
uni.showToast({
icon: 'none',
title: '退出成功',
mask: true,
success() {
setTimeout(() => uni.navigateTo({ url: 'pages/login/login' }), 1000)
}
})
}
}
return {
openId,
mobile,
showtoast,
userInfo,
getopenid,
getUserInfo,
logOut,
cometype
}
},
{
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)
// },
// },
}
)