user.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { defineStore } from 'pinia'
  2. import { ref } from 'vue'
  3. import { getUserInfo as _getUserInfo } from '@/api/login'
  4. // 初始化状态
  5. const userInfoState: any = {
  6. id: 0,
  7. name: '',
  8. avatar: '/static/images/default-avatar.png',
  9. token: '',
  10. }
  11. export const useUserStore = defineStore(
  12. 'user',
  13. () => {
  14. // 定义用户信息
  15. const userInfo = ref<any>({ ...userInfoState })
  16. // 设置用户信息
  17. const setUserInfo = (val: any) => {
  18. console.log('设置用户信息', val)
  19. userInfo.value = { ...userInfo, val }
  20. }
  21. // 删除用户信息
  22. const removeUserInfo = () => {
  23. userInfo.value = { ...userInfoState }
  24. uni.removeStorageSync('userInfo')
  25. uni.removeStorageSync('token')
  26. }
  27. /**
  28. * 获取用户信息
  29. */
  30. const getUserInfo = async () => {
  31. const res = await _getUserInfo()
  32. const userInfo = res.data
  33. setUserInfo(userInfo)
  34. uni.setStorageSync('userInfo', userInfo)
  35. return res
  36. }
  37. return {
  38. userInfo,
  39. getUserInfo,
  40. setUserInfo,
  41. removeUserInfo,
  42. }
  43. },
  44. )