index.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <template>
  2. <div id="index" v-loading.fullscreen.lock="fullscreenLoading" :element-loading-text="$t('common.route_loading')"></div>
  3. </template>
  4. <script setup>
  5. import { getUserMeta, addUserRoutes } from '@/router/register'
  6. import { UserStore } from '@/store/user'
  7. import { onMounted } from 'vue'
  8. import { useRouter, useRoute } from 'vue-router'
  9. import { get } from 'lodash-es'
  10. import i18n from '@/lang'
  11. import { ElMessageBox } from 'element-plus'
  12. const fullscreenLoading = ref(true)
  13. const router = useRouter()
  14. const route = useRoute()
  15. const userStore = UserStore()
  16. // 进了这个页面了.那就是重来注册一遍路由了
  17. const token = localStorage.getItem('token')
  18. onMounted(async () => {
  19. // 1.获取用户目录
  20. const reqResult = await getUserMeta(token)
  21. if (reqResult.errcode !== 0) {
  22. // 处理异常
  23. return
  24. }
  25. const menus = get(reqResult, 'menus')
  26. if (menus.length <= 0) {
  27. const nowRouteFullPath = router.currentRoute.value.fullPath
  28. ElMessageBox.confirm(i18n.global.t('error.USER_PERMISSION_ERROR'), i18n.global.t('common.user_confirm'), {
  29. confirmButtonText: i18n.global.t('common.re_login'),
  30. cancelButtonText: i18n.global.t('common.reload'),
  31. type: 'error'
  32. })
  33. .then(() => {
  34. if (nowRouteFullPath !== '/login') window.location.href = `${import.meta.env.VITE_BASE_URL}/login`
  35. })
  36. .catch(() => {
  37. if (nowRouteFullPath !== '/login') location.reload()
  38. })
  39. }
  40. // 注册路由
  41. await addUserRoutes(menus, router)
  42. userStore.setMenus(menus)
  43. const rRoute = toRaw(route)
  44. let redirectPath = get(rRoute, 'query.redirectPath')
  45. if (!redirectPath) redirectPath = '/'
  46. router.push(redirectPath)
  47. })
  48. </script>
  49. <style scoped></style>