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