user.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { userStore } from '@/store/mobx'
  2. import { iAccountGroupItem, iGroup, iUserInfo } from '@/types/setting'
  3. import { storage } from '@/utils/util'
  4. import consts from '../consts'
  5. import { apiGetAccountWithSearch } from './api'
  6. const USER_INFO = 'user_info' // 用户个人信息
  7. const TENDER_INFO = 'tender_info' // 标段信息
  8. /**
  9. * 保存用户信息到本地存储中
  10. * @param {Object} userInfo - 用户信息
  11. */
  12. export const saveUserInfo = (userInfo: iUserInfo): void => {
  13. storage.set(USER_INFO, userInfo)
  14. }
  15. /**
  16. * 获取用户信息
  17. * @returns {iUserInfo} 用户信息
  18. */
  19. export const getUserInfo = (): iUserInfo => {
  20. return storage.get(USER_INFO)
  21. }
  22. /**
  23. * 删除用户信息
  24. */
  25. export const delUserInfo = () => {
  26. // 本身是同步的,所以不需要用promise包裹
  27. storage.del(USER_INFO)
  28. storage.del(TENDER_INFO)
  29. }
  30. /**
  31. * 用户注销
  32. */
  33. export const logout = () => {
  34. delUserInfo()
  35. }
  36. // 获取用户分组
  37. export const getUserGroupName = (key: number): iGroup | undefined =>{
  38. return userStore.groupList.find((item: iGroup) => item.key === key)
  39. }
  40. interface UserGroupQuery {
  41. name?: string
  42. hasOwner?: boolean
  43. }
  44. // 根据group对用户列表进行分组
  45. export const getUserGroup = async ({ name = '', hasOwner = true } : UserGroupQuery) => {
  46. const { code = -1, data = [] } = await apiGetAccountWithSearch(name)
  47. const accountGroup: iAccountGroupItem[] = []
  48. if (code === consts.RET_CODE.SUCCESS) {
  49. for (const group of userStore.groupList) {
  50. const groupItem = { value: group.value, children: [] }
  51. const items = data.filter((item: iUserInfo) => {
  52. if (!hasOwner && item.id === userStore.userInfo.id) {
  53. return
  54. }
  55. return item.accountGroup === group.key
  56. })
  57. groupItem.children = items
  58. accountGroup.push(groupItem)
  59. }
  60. }
  61. return accountGroup
  62. }