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.

user.js 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. },
  52. method: "POST",
  53. showLoading: false,
  54. };
  55. return new Promise(async (resolve, reject) => {
  56. const res = await request(getToken, options);
  57. const data = stringToJson(res.bizContent);
  58. this.saveToken(data.accessToken);
  59. this.saveOpenId(data.openId);
  60. resolve(data);
  61. }).catch((error) => {
  62. reject(error);
  63. });
  64. },
  65. /*退出登录*/
  66. loginOutNoConfirm() {
  67. msg("退出登录成功!");
  68. // //把state中的值恢复成默认值
  69. this.$reset();
  70. // //移除本地缓存
  71. removeItem(StorageKeys.Token);
  72. removeItem(StorageKeys.OpenId);
  73. uni.$emit('loginOut');
  74. uni.navigateTo({
  75. url: "/login/login"
  76. });
  77. },
  78. /*退出登录*/
  79. loginOut() {
  80. confirm(
  81. "确定要退出登录吗?",
  82. () => {
  83. this.loginOutNoConfirm();
  84. },
  85. "提示",
  86. true
  87. );
  88. },
  89. },
  90. });