import { setItem, removeItem, StorageKeys, getItem } from "@/utils/storage"; import { defineStore } from "pinia"; import { request,requestNew } from "@/utils/network/request"; import { appId, getToken, wechatAppID, getOpenId } from "@/utils/network/api"; import { stringToJson } from "@/utils/network/encryption"; import { confirm, msg, navTo } from "@/utils/utils"; export const useUserStore = defineStore("userStore", { state: () => ({ //访问令牌 access_token: "", //openId openId: "", }), getters: {}, actions: { //设置用户token saveToken(token) { this.access_token = token; setItem(StorageKeys.Token, token); }, //设置openId saveOpenId(openId) { this.openId = openId; setItem(StorageKeys.OpenId, openId); }, /*根据登录code获取token信息*/ fetchToken(code) { if(getItem("QYorder") && getItem("QYorder").openid){ const options = { type: 2, data: { deviceId: "", code: code, loginSource: getItem("loginSource"), wxOpenid: getItem("QYorder").openid, zfbOpenId: getItem("zfbOpenId"), zfbUserId: getItem("zfbUserId"), }, method: "POST", showLoading: false, }; return new Promise(async (resolve, reject) => { const res = await requestNew(getToken, options); const data = res; console.log("fetchToken", options) this.saveToken(data.accessToken); this.saveOpenId(data.openId); console.log('输出内容', data.openId) resolve(data); }).catch((error) => { reject(error); }); }else{ var that=this // 如果没有wxOpenid重新获取 //获取微信小程序openid // #ifdef MP-WEIXIN uni.login({ provider: "weixin", success: function(e) { console.log("jsCode",e.code) const options = { type: 2, data: { "jsCode": e.code }, method: "POST", }; // #ifdef MP-WEIXIN requestNew(getOpenId, options).then((res) => { const result =res; console.log("getOpenId===",result) const openidData = stringToJson(result.data); setItem("QYorder", openidData); const options = { type: 2, data: { deviceId: "", code: code, loginSource: getItem("loginSource"), wxOpenid: getItem("QYorder").openid, zfbOpenId: getItem("zfbOpenId"), zfbUserId: getItem("zfbUserId"), }, method: "POST", showLoading: false, }; return new Promise(async (resolve, reject) => { const res = await requestNew(getToken, options); const data = res; console.log("fetchToken", options) that.saveToken(data.accessToken); that.saveOpenId(data.openId); console.log('输出内容', data.openId) resolve(data); }).catch((error) => { reject(error); }); }); // #endif }, }); // #endif } }, /*退出登录*/ loginOutNoConfirm() { msg("退出登录成功!"); // //把state中的值恢复成默认值 this.$reset(); // //移除本地缓存 removeItem(StorageKeys.Token); removeItem(StorageKeys.OpenId); uni.$emit('loginOut'); uni.navigateTo({ url: "/login/login" }); }, /*退出登录*/ loginOut() { confirm( "确定要退出登录吗?", () => { this.loginOutNoConfirm(); }, "提示", true ); }, }, });