user.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import useTabbarStore from './tabbar'
  2. import useRouteStore from './route'
  3. import useMenuStore from './menu'
  4. import { getPermit, signIn, signOut, updatePassword } from '@/api'
  5. import storage from '@/utils/storage'
  6. const useUserStore = defineStore(
  7. // 唯一ID
  8. 'user',
  9. () => {
  10. const tabbarStore = useTabbarStore()
  11. const routeStore = useRouteStore()
  12. const menuStore = useMenuStore()
  13. const account = ref(storage.local.get('account') ?? '')
  14. const userData = ref(storage.local.get('userData'))
  15. const token = ref(storage.local.get('token') ?? '')
  16. const failure_time = ref(storage.local.get('failure_time') ?? '')
  17. const permissions = ref<string[]>([])
  18. const isLogin = computed(() => {
  19. let retn = false
  20. if (token.value) {
  21. if (new Date().getTime() < parseInt(failure_time.value)) {
  22. retn = true
  23. }
  24. }
  25. return retn
  26. })
  27. // 登录
  28. function login(username: string, password: string) {
  29. return new Promise<void>((resolve, reject) => {
  30. const f = new FormData()
  31. f.append('username', username)
  32. f.append('password', password)
  33. signIn(f).then((res) => {
  34. storage.local.set('account', res.data.user.userName)
  35. storage.local.set('userData', res.data.user)
  36. storage.local.set('token', res.data.accessToken)
  37. storage.local.set('failure_time', res.data.leaseTime)
  38. userData.value = res.data.user
  39. token.value = res.data.accessToken
  40. failure_time.value = res.data.leaseTime
  41. resolve()
  42. }).catch((error) => {
  43. reject(error)
  44. })
  45. })
  46. }
  47. interface USER {
  48. ocId: string
  49. grantGroupId: number
  50. grantGroupName: string
  51. groupId: number
  52. groupName: string
  53. mapId: number
  54. ocAdminId: number
  55. ocGroupId: number
  56. ocName: string
  57. ocTypeId: number
  58. positionId: number
  59. positionName: string
  60. roleCode: number
  61. roleId: number
  62. roleName: string
  63. roleTypeId: number
  64. userAvatar: string
  65. userId: number
  66. userIntro: string
  67. userName: string
  68. userPhone: number
  69. userPhoto: string
  70. userRealName: string
  71. }
  72. function getUserData() {
  73. return userData as unknown as USER
  74. }
  75. // 登出
  76. async function logout() {
  77. await signOut()
  78. storage.local.remove('account')
  79. storage.local.remove('userData')
  80. storage.local.remove('token')
  81. storage.local.remove('failure_time')
  82. account.value = ''
  83. userData.value = null
  84. token.value = ''
  85. failure_time.value = ''
  86. permissions.value = []
  87. tabbarStore.clean()
  88. routeStore.removeRoutes()
  89. menuStore.setActived(0)
  90. }
  91. // 获取我的权限
  92. async function getPermissions() {
  93. const res = await getPermit()
  94. permissions.value = res.data
  95. return permissions.value
  96. }
  97. // 修改密码
  98. async function editPassword(data: {
  99. accountId: number
  100. password: string
  101. }) {
  102. await updatePassword({
  103. accountId: data.accountId,
  104. password: data.password,
  105. })
  106. }
  107. return {
  108. account,
  109. getUserData,
  110. token,
  111. permissions,
  112. isLogin,
  113. login,
  114. logout,
  115. getPermissions,
  116. editPassword,
  117. }
  118. },
  119. )
  120. export default useUserStore