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.

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