index.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { apiLogout } from '@/components/Menu/api'
  2. import { apiLogin } from '@/pages/Login/api'
  3. import { iFromValues } from '@/types/login'
  4. import { iUserInfo } from '@/types/setting'
  5. import { delUserInfo, getUserInfo, saveUserInfo } from '@/utils/common/user'
  6. import consts from '@/utils/consts'
  7. import history from '@/utils/history'
  8. import { action, computed, observable } from 'mobx'
  9. class UserState {
  10. initUserState = {
  11. account: '',
  12. accountGroup: undefined,
  13. company: '',
  14. csrf: '',
  15. enable: 0,
  16. id: '',
  17. isAdmin: 0,
  18. mobile: '',
  19. name: '',
  20. password: '',
  21. position: '',
  22. projectId: '',
  23. role: '',
  24. telephone: ''
  25. }
  26. @observable userInfo: iUserInfo = this.initUserState
  27. @observable permission: [] = []
  28. @computed get isLogin() {
  29. return !!this.userInfo.id
  30. }
  31. @computed get role() {
  32. return this.userInfo.isAdmin ? 'ADMIN' : 'USER'
  33. }
  34. @action login(values: iFromValues) {
  35. apiLogin(values).then(({ code = -1, data }) => {
  36. if (code === consts.RET_CODE.SUCCESS) {
  37. saveUserInfo(data)
  38. this.userInfo = data
  39. history.push('/')
  40. }
  41. })
  42. }
  43. @action logout() {
  44. apiLogout().then(({ code = -1 }) => {
  45. if (code === consts.RET_CODE.SUCCESS) {
  46. delUserInfo()
  47. this.userInfo = this.initUserState
  48. history.push('/login')
  49. }
  50. })
  51. }
  52. @action check() {
  53. const user: iUserInfo | null = getUserInfo()
  54. if (user) {
  55. this.userInfo = user
  56. }
  57. }
  58. }
  59. export default new UserState()