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.

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