user.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import {
  2. defineStore
  3. } from 'pinia'
  4. import {
  5. ref
  6. } from 'vue'
  7. import {
  8. login,
  9. getInfo,
  10. logout
  11. } from '@/api/login.js'
  12. import {
  13. getUserInfo
  14. } from '@/utils/auth'
  15. export const useUserStore = defineStore('user', () => {
  16. const user = ref(getUserInfo()) // 用户信息
  17. const useId = ref(0) // staffId
  18. // 登录方法
  19. function Login(userInfo) {
  20. const username = userInfo.username
  21. const password = userInfo.password
  22. return new Promise((resolve, reject) => {
  23. login(username.trim(), password)
  24. .then(res => {
  25. useId.value = res.returnParams.useId // 设置staffId
  26. user.value = res.returnParams
  27. // setToken(res.token)
  28. resolve(res)
  29. })
  30. .catch(error => {
  31. reject(error)
  32. })
  33. })
  34. }
  35. function GetInfo(index) {
  36. const roleIndex = index || 0
  37. return new Promise((resolve, reject) => {
  38. getInfo(useId.value).then(res => {
  39. const source = res.returnParams[roleIndex]
  40. Object.keys(source).forEach(key => {
  41. // 目标对象没有该属性或者该属性为 null,则赋值
  42. if (!(key in user.value) || user.value[key] === null) {
  43. user.value[key] = source[key] === undefined ? user.value[key] : source[key];
  44. }
  45. });
  46. // 保存 用户信息
  47. uni.setStorageSync('userInfo', user.value)
  48. resolve(res)
  49. })
  50. .catch(error => {
  51. reject(error)
  52. })
  53. })
  54. }
  55. function LogOut() {
  56. return new Promise((resolve, reject) => {
  57. // logout().then(() => {
  58. user.value = {}
  59. useId.value = 0
  60. uni.clearStorageSync()
  61. resolve()
  62. }).catch(error => {
  63. reject(error)
  64. })
  65. // })
  66. }
  67. return {
  68. user,
  69. useId,
  70. Login,
  71. GetInfo,
  72. LogOut
  73. }
  74. })