user.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { defineStore } from 'pinia'
  2. import { storage } from '@/utils/storage'
  3. export const useUserStore = defineStore('user', {
  4. state: () => ({
  5. member: {},
  6. token: '',
  7. openid: '',
  8. isMer: 0, // 是否是商家
  9. merchartShop: {} // 商家店铺信息
  10. }),
  11. getters: {
  12. /**
  13. * 是否登录
  14. */
  15. isLogin: (state) => {
  16. return Object.keys(state.member).length > 0 && !!state.token
  17. },
  18. /**
  19. * 用户信息
  20. */
  21. userInfo: (state) => state.member,
  22. /**
  23. * 是否是商家
  24. */
  25. isMerchant: (state) => state.isMer === 1
  26. },
  27. actions: {
  28. /**
  29. * 设置用户信息
  30. */
  31. setMember(member) {
  32. this.member = member
  33. },
  34. /**
  35. * 设置Token
  36. */
  37. setToken(token) {
  38. this.token = token
  39. storage.set('accessToken', token)
  40. },
  41. /**
  42. * 设置OpenID
  43. */
  44. setOpenid(openid) {
  45. this.openid = openid
  46. },
  47. /**
  48. * 设置是否是商家
  49. */
  50. setMer(isMer) {
  51. this.isMer = isMer
  52. },
  53. /**
  54. * 设置商家店铺信息
  55. */
  56. setMerchartShop(shop) {
  57. this.merchartShop = shop
  58. },
  59. /**
  60. * 登出
  61. */
  62. logout() {
  63. this.member = {}
  64. this.token = ''
  65. this.openid = ''
  66. this.isMer = 0
  67. this.merchartShop = {}
  68. storage.remove('accessToken')
  69. },
  70. /**
  71. * 初始化用户信息
  72. */
  73. init() {
  74. const token = storage.get('accessToken')
  75. if (token) {
  76. this.token = token
  77. }
  78. }
  79. },
  80. persist: {
  81. enabled: true,
  82. strategies: [
  83. {
  84. storage: localStorage,
  85. paths: ['member', 'token', 'openid', 'isMer']
  86. }
  87. ]
  88. }
  89. })