user.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import { defineStore } from 'pinia'
  2. import { StaticUrl } from '@/config'
  3. interface userStroe {
  4. token: string
  5. /**
  6. * 重定向路由名称
  7. */
  8. redirectName: string
  9. /**
  10. * 用户登录信息
  11. */
  12. userInfo: Api.userInfo
  13. /**
  14. * 用户收货地址
  15. */
  16. addresses: Api.addressList[]
  17. /**
  18. * 星闪爆用户选择的收货地址
  19. *
  20. */
  21. selectedAddress: Api.addressList | null
  22. /**
  23. * 市民请集合购物车用户选中的收货地址
  24. */
  25. smqjhSelectedAddress: Api.addressList | null
  26. }
  27. export const useUserStore = defineStore('user', {
  28. state: (): userStroe => ({
  29. token: '',
  30. redirectName: '',
  31. userInfo: {
  32. id: 0,
  33. channelId: 0,
  34. channelName: '',
  35. },
  36. addresses: [],
  37. selectedAddress: null,
  38. smqjhSelectedAddress: null,
  39. }),
  40. getters: {
  41. getUserAvatar(): string {
  42. if (this.userInfo.avatarUrl) {
  43. return this.userInfo.avatarUrl
  44. }
  45. return `${StaticUrl}/avator.png`
  46. },
  47. },
  48. actions: {
  49. async getUserInfo() {
  50. if (this.token) {
  51. const { data } = await api.sys.userInfo({})
  52. this.userInfo = data
  53. await this.getuserAddresslist()
  54. this.getSelectedAddress()
  55. await useSmqjhCartStore().getCartList('XSB')
  56. const { getTotalNum } = storeToRefs(useSmqjhCartStore())
  57. useTabbar().setTabbarItem('smqjh-cart', getTotalNum.value)
  58. }
  59. },
  60. async updataUserInfo(data: Api.userInfo) {
  61. uni.showLoading({ mask: true })
  62. await Apis.sys.updateUserInfo({ pathParams: { memberId: data.id }, data })
  63. uni.hideLoading()
  64. useGlobalToast().show({ msg: '修改成功' })
  65. this.getUserInfo()
  66. },
  67. /**
  68. * 获取用户收货地址列表
  69. */
  70. async getuserAddresslist() {
  71. return new Promise((resolve, reject) => {
  72. uni.showLoading({ mask: true })
  73. Apis.sys.addresses({}).then((res) => {
  74. this.addresses = res.data || []
  75. resolve(res)
  76. }).catch(err => reject(err)).finally(() => uni.hideLoading())
  77. })
  78. },
  79. /**
  80. *
  81. * 更新用户选择的收货地址
  82. */
  83. updateSelectedAddress(address: Api.addressList) {
  84. this.selectedAddress = address
  85. },
  86. /**
  87. * 获取用户收货地址
  88. * @description 默认选择默认地址,如无默认地址则不选择
  89. */
  90. getSelectedAddress() {
  91. this.selectedAddress = this.addresses.find(it => it.defaulted === 1) ?? null
  92. },
  93. /**
  94. * 获取市民请集合购物车用户选择的收货地址
  95. * @description 默认选择默认地址,如无默认地址则不选择
  96. */
  97. getSmqjhSelectedAddress() {
  98. this.smqjhSelectedAddress = this.addresses.find(it => it.defaulted === 1) ?? null
  99. },
  100. /**
  101. * 更新市民请集合购物车用户选择的收货地址
  102. */
  103. updateSmqjhSelectedAddress(address: Api.addressList) {
  104. this.smqjhSelectedAddress = address
  105. },
  106. },
  107. })