user.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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,getSession,setSession
  14. } from '@/utils/auth'
  15. import { reLogin,keepSession } from '@/api/login.js'
  16. export const useUserStore = defineStore('user', () => {
  17. const user = ref(getUserInfo()) // 用户信息
  18. const useId = ref(0) // staffId
  19. const timer = ref(true)
  20. function keep() {
  21. setTimeout(() => {
  22. if (timer.value) {
  23. keepSession().then(res=>{
  24. keep()
  25. })
  26. }
  27. }, 600000)
  28. }
  29. // 登录方法
  30. function Login(userInfo) {
  31. const username = userInfo.username
  32. const password = userInfo.password
  33. return new Promise((resolve, reject) => {
  34. login(username.trim(), password)
  35. .then(res => {
  36. useId.value = res.returnParams.useId // 设置staffId
  37. user.value = res.returnParams
  38. // setSession(res.session)
  39. reLogin(username.trim(), password).then((res)=>{
  40. if("ok"===res.data){
  41. setSession(res.cookies[0].split("=")[1].split(";")[0]);
  42. timer.value=true
  43. keep()
  44. }
  45. })
  46. resolve(res)
  47. })
  48. .catch(error => {
  49. reject(error)
  50. })
  51. })
  52. }
  53. function GetInfo(index) {
  54. const roleIndex = index || 0
  55. return new Promise((resolve, reject) => {
  56. getInfo(useId.value).then(res => {
  57. const source = res.returnParams[roleIndex]
  58. Object.keys(source).forEach(key => {
  59. // 目标对象没有该属性或者该属性为 null,则赋值
  60. if (!(key in user.value) || user.value[key] === null || user.value[key] === "") {
  61. user.value[key] = source[key] === undefined ? user.value[key] : source[key];
  62. }
  63. });
  64. // 保存 用户信息
  65. uni.setStorageSync('userInfo', user.value)
  66. resolve(res)
  67. })
  68. .catch(error => {
  69. reject(error)
  70. })
  71. })
  72. }
  73. function LogOut() {
  74. return new Promise((resolve, reject) => {
  75. // logout().then(() => {
  76. user.value = {}
  77. useId.value = 0
  78. timer.value = false
  79. uni.clearStorageSync()
  80. resolve()
  81. }).catch(error => {
  82. reject(error)
  83. })
  84. // })
  85. }
  86. return {
  87. user,
  88. useId,
  89. Login,
  90. GetInfo,
  91. LogOut
  92. }
  93. })