user.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import router from '@/router'
  2. import useMenuStore from './menu'
  3. import useRouteStore from './route'
  4. import useSettingsStore from './settings'
  5. import useTabbarStore from './tabbar'
  6. import api from '@/api'
  7. import {
  8. clearId
  9. } from "@/utils/composables/routeUtils"; // 导入工具方法
  10. const useUserStore = defineStore(
  11. // 唯一ID
  12. 'user',
  13. () => {
  14. const settingsStore = useSettingsStore()
  15. const routeStore = useRouteStore()
  16. const menuStore = useMenuStore()
  17. const tabbarStore = useTabbarStore()
  18. const userName = ref(localStorage.userName ?? '')
  19. const token = ref(localStorage.token ?? '')
  20. const avatar = ref(localStorage.avatar ?? '')
  21. const userInfo = ref(localStorage.userInfo ?? '')
  22. const realName = JSON.parse(userInfo.value)?.name ?? '';
  23. const permissions = ref<string[]>([])
  24. const staticRouter = ref<string[]>([])
  25. const isLogin = computed(() => {
  26. if (token.value) {
  27. return true
  28. }
  29. return false
  30. })
  31. //登录
  32. async function login(data: {
  33. userName: string
  34. passWord: string
  35. captcha: string
  36. system: string
  37. captchaId: number
  38. }) {
  39. const res = await api.userApi.login(data)
  40. localStorage.setItem('userName', data.userName)
  41. localStorage.setItem('token', res.data.token)
  42. userName.value = data.userName
  43. token.value = res.data.token
  44. avatar.value = 'https://fantastic-admin.hurui.me/logo.png'
  45. const result = await api.userApi.getCurUserInfo()
  46. localStorage.setItem('userDeptId', result.data.deptId)
  47. localStorage.setItem('userInfo', JSON.stringify(result.data))
  48. userInfo.value = result.data
  49. }
  50. //获取运营交付菜单
  51. async function getMenu(codeItem) {
  52. const res = await api.menuApi.getTenantConfig({ ...codeItem })
  53. if (res.code === 200) {
  54. // staticRouter.value=JSON.parse(res.data.sysConfig)
  55. localStorage.setItem("menu", res.data.sysConfig)
  56. // routeStore.routesRaw=JSON.parse(res.data.sysConfig)
  57. }
  58. }
  59. // 登出
  60. async function logout(redirect = router.currentRoute.value.fullPath) {
  61. localStorage.removeItem('userName')
  62. localStorage.removeItem('token')
  63. localStorage.removeItem('avatar')
  64. localStorage.removeItem('userInfo')
  65. userName.value = ''
  66. token.value = ''
  67. // avatar.value = ''
  68. permissions.value = []
  69. routeStore.removeRoutes()
  70. menuStore.setActived(0)
  71. settingsStore.settings.tabbar.enable && tabbarStore.clean()
  72. router.push({
  73. name: 'login',
  74. query: {
  75. ...(redirect !== settingsStore.settings.home.fullPath && router.currentRoute.value.name !== 'login' && { redirect }),
  76. },
  77. })
  78. clearId()
  79. }
  80. // 获取权限
  81. async function getPermissions() {
  82. const res = await api.menuApi.getAllButtons()
  83. permissions.value = res.data
  84. }
  85. // 修改密码
  86. async function editPassword(data: {
  87. password: string
  88. newpassword: string
  89. }) {
  90. await api.userApi.passwordEdit(data)
  91. }
  92. return {
  93. userName,
  94. realName,
  95. token,
  96. avatar,
  97. permissions,
  98. isLogin,
  99. staticRouter,
  100. login,
  101. logout,
  102. getPermissions,
  103. editPassword,
  104. getMenu,
  105. userInfo
  106. }
  107. },
  108. )
  109. export default useUserStore