user.ts 2.9 KB

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