// 定义组合式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({}) const cometype = ref(0) function getopenid(params: { code: string }) { return new Promise((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((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) // }, // }, } )