user.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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. getSession,
  15. setSession
  16. } from '@/utils/auth'
  17. import {
  18. reLogin,
  19. keepSession
  20. } from '@/api/login.js'
  21. import $modal from '@/plugins/modal.js'
  22. import config from '@/config.js'
  23. export const useUserStore = defineStore('user', () => {
  24. const user = ref(getUserInfo()) // 用户信息
  25. const useId = ref(0) // staffId
  26. const timer = ref(true) //定时器
  27. function keep() {
  28. keepSession().then(res => {
  29. setTimeout(() => {
  30. if (timer.value) {
  31. keep()
  32. }
  33. }, 600000)
  34. })
  35. }
  36. // 登录方法
  37. function Login(userInfo) {
  38. let username = userInfo.username
  39. const password = userInfo.password
  40. const loginInfo = {
  41. username,
  42. password
  43. }
  44. return new Promise((resolve, reject) => {
  45. if (username.includes('@')) {
  46. username = username.split('@')[0]
  47. }
  48. username = username.trim() + '@' +config.companyCode // 强制使用配置的公司代码
  49. login(username, password)
  50. .then(res => {
  51. useId.value = res.returnParams.useId // 设置staffId
  52. // user.value = res.returnParams
  53. //保存账号密码
  54. uni.setStorageSync('loginInfo', loginInfo)
  55. if (config.saas != 1) { // 多租户时需要携带公司代码
  56. username = username.split('@')[0] // 获取session时不需要公司代码
  57. }
  58. reLogin(username, password).then((res) => {
  59. if ("ok" === res.data) {
  60. setSession(res.cookies[0].split("=")[1].split(";")[0]);
  61. timer.value = true
  62. keep()
  63. }
  64. })
  65. resolve(res)
  66. })
  67. .catch(error => {
  68. reject(error)
  69. })
  70. })
  71. }
  72. function GetInfo(index) {
  73. const roleIndex = index || 0
  74. if (useId.value == 0) {
  75. useId.value = uni.getStorageSync('userInfo').useId
  76. }
  77. return new Promise((resolve, reject) => {
  78. getInfo(useId.value).then(res => {
  79. if ("Exception" == res.returnMsg) {
  80. $modal.msgError(res.returnParams)
  81. reject(res.returnParams)
  82. }
  83. user.value = res.returnParams[roleIndex]
  84. // 保存 用户信息
  85. uni.setStorageSync('userInfo', user.value)
  86. resolve(res)
  87. })
  88. .catch(error => {
  89. reject(error)
  90. })
  91. })
  92. }
  93. function LogOut() {
  94. return new Promise((resolve, reject) => {
  95. // logout().then(() => {
  96. user.value = {}
  97. useId.value = 0
  98. timer.value = false
  99. uni.clearStorageSync()
  100. resolve()
  101. }).catch(error => {
  102. reject(error)
  103. })
  104. // })
  105. }
  106. return {
  107. user,
  108. useId,
  109. Login,
  110. GetInfo,
  111. LogOut
  112. }
  113. })