Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

user.js 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import {
  2. setItem,
  3. removeItem,
  4. StorageKeys,
  5. getItem
  6. } from "@/utils/storage";
  7. import {
  8. defineStore
  9. } from "pinia";
  10. import {
  11. request,requestNew
  12. } from "@/utils/network/request";
  13. import {
  14. appId,
  15. getToken,
  16. wechatAppID,
  17. getOpenId
  18. } from "@/utils/network/api";
  19. import {
  20. stringToJson
  21. } from "@/utils/network/encryption";
  22. import {
  23. confirm,
  24. msg,
  25. navTo
  26. } from "@/utils/utils";
  27. export const useUserStore = defineStore("userStore", {
  28. state: () => ({
  29. //访问令牌
  30. access_token: "",
  31. //openId
  32. openId: "",
  33. }),
  34. getters: {},
  35. actions: {
  36. //设置用户token
  37. saveToken(token) {
  38. this.access_token = token;
  39. setItem(StorageKeys.Token, token);
  40. },
  41. //设置openId
  42. saveOpenId(openId) {
  43. this.openId = openId;
  44. setItem(StorageKeys.OpenId, openId);
  45. },
  46. /*根据登录code获取token信息*/
  47. fetchToken(code) {
  48. if(getItem("wxOpenid")){
  49. const options = {
  50. type: 2,
  51. data: {
  52. deviceId: "",
  53. code: code,
  54. loginSource: getItem("loginSource"),
  55. wxOpenid: getItem("wxOpenid"),
  56. zfbOpenId: getItem("zfbOpenId"),
  57. zfbUserId: getItem("zfbUserId"),
  58. mpOpenid:getItem('mpOpenId')//用户在微信公众号的唯一身份标识openid
  59. },
  60. method: "POST",
  61. showLoading: false,
  62. };
  63. return new Promise(async (resolve, reject) => {
  64. const res = await requestNew(getToken, options);
  65. const data = res;
  66. console.log("fetchToken", options)
  67. this.saveToken(data.accessToken);
  68. this.saveOpenId(data.openId);
  69. console.log('输出内容', data.openId)
  70. resolve(data);
  71. }).catch((error) => {
  72. reject(error);
  73. });
  74. }else{
  75. var that=this
  76. // 如果没有wxOpenid重新获取
  77. //获取微信小程序openid
  78. // #ifdef MP-WEIXIN
  79. uni.login({
  80. provider: "weixin",
  81. success: function(e) {
  82. console.log("jsCode",e)
  83. const options = {
  84. type: 2,
  85. data: {
  86. "jsCode": e.code
  87. },
  88. method: "POST",
  89. };
  90. // #ifdef MP-WEIXIN
  91. requestNew(getOpenId, options).then((res) => {
  92. const result =res;
  93. console.log("getOpenId===",result)
  94. setItem("wxOpenid", result.openid);
  95. const options = {
  96. type: 2,
  97. data: {
  98. deviceId: "",
  99. code: code,
  100. loginSource: getItem("loginSource"),
  101. wxOpenid: getItem("wxOpenid"),
  102. zfbOpenId: getItem("zfbOpenId"),
  103. zfbUserId: getItem("zfbUserId"),
  104. mpOpenid:getItem('mpOpenId')//用户在微信公众号的唯一身份标识openid
  105. },
  106. method: "POST",
  107. showLoading: false,
  108. };
  109. return new Promise(async (resolve, reject) => {
  110. const res = await requestNew(getToken, options);
  111. const data = res;
  112. console.log("fetchToken", options)
  113. that.saveToken(data.accessToken);
  114. that.saveOpenId(data.openId);
  115. console.log('输出内容', data.openId)
  116. resolve(data);
  117. }).catch((error) => {
  118. reject(error);
  119. });
  120. });
  121. // #endif
  122. },
  123. });
  124. // #endif
  125. }
  126. },
  127. /*退出登录*/
  128. loginOutNoConfirm() {
  129. msg("退出登录成功!");
  130. // //把state中的值恢复成默认值
  131. this.$reset();
  132. // //移除本地缓存
  133. removeItem(StorageKeys.Token);
  134. removeItem(StorageKeys.OpenId);
  135. uni.$emit('loginOut');
  136. uni.navigateTo({
  137. url: "/login/login"
  138. });
  139. },
  140. /*退出登录*/
  141. loginOut() {
  142. confirm(
  143. "确定要退出登录吗?",
  144. () => {
  145. this.loginOutNoConfirm();
  146. },
  147. "提示",
  148. true
  149. );
  150. },
  151. },
  152. });