Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

user.js 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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
  12. } from "@/utils/network/request";
  13. import {
  14. appId,
  15. getToken
  16. } from "@/utils/network/api";
  17. import {
  18. stringToJson
  19. } from "@/utils/network/encryption";
  20. import {
  21. confirm,
  22. msg,
  23. navTo
  24. } from "@/utils/utils";
  25. export const useUserStore = defineStore("userStore", {
  26. state: () => ({
  27. //访问令牌
  28. access_token: "",
  29. //openId
  30. openId: "",
  31. }),
  32. getters: {},
  33. actions: {
  34. //设置用户token
  35. saveToken(token) {
  36. this.access_token = token;
  37. setItem(StorageKeys.Token, token);
  38. },
  39. //设置openId
  40. saveOpenId(openId) {
  41. this.openId = openId;
  42. setItem(StorageKeys.OpenId, openId);
  43. },
  44. /*根据登录code获取token信息*/
  45. fetchToken(code) {
  46. const options = {
  47. type: 2,
  48. data: {
  49. deviceId: "",
  50. code: code,
  51. loginSource: "69af303ba2eb4608a099163f0d2a5dbd"
  52. },
  53. method: "POST",
  54. showLoading: false,
  55. };
  56. return new Promise(async (resolve, reject) => {
  57. const res = await request(getToken, options);
  58. const data = stringToJson(res.bizContent);
  59. this.saveToken(data.accessToken);
  60. this.saveOpenId(data.openId);
  61. resolve(data);
  62. }).catch((error) => {
  63. reject(error);
  64. });
  65. },
  66. /*退出登录*/
  67. loginOutNoConfirm() {
  68. msg("退出登录成功!");
  69. // //把state中的值恢复成默认值
  70. this.$reset();
  71. // //移除本地缓存
  72. removeItem(StorageKeys.Token);
  73. removeItem(StorageKeys.OpenId);
  74. uni.$emit('loginOut');
  75. uni.navigateTo({
  76. url: "/login/login"
  77. });
  78. },
  79. /*退出登录*/
  80. loginOut() {
  81. confirm(
  82. "确定要退出登录吗?",
  83. () => {
  84. this.loginOutNoConfirm();
  85. },
  86. "提示",
  87. true
  88. );
  89. },
  90. },
  91. });