index.vue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <template>
  2. <div class="system-layer" :style="{ backgroundImage: `url(${appConstant.banner})` }">
  3. <div class="content">
  4. <component :is="component" />
  5. </div>
  6. </div>
  7. </template>
  8. <script lang="ts" setup>
  9. import login from "./login.vue";
  10. import register from "./register.vue";
  11. import forget from "./forget.vue";
  12. import { computed } from "vue";
  13. import { RouteName, router } from "@/router";
  14. import { appConstant } from "@/app";
  15. const components = {
  16. [RouteName.login]: login,
  17. [RouteName.register]: register,
  18. [RouteName.forget]: forget,
  19. };
  20. const component = computed(() => {
  21. const name = router.currentRoute.value.name as any;
  22. if (name in components) {
  23. return (components as any)[name];
  24. } else {
  25. return null;
  26. }
  27. });
  28. </script>
  29. <style lang="scss" scoped>
  30. .system-layer {
  31. width: 100%;
  32. min-height: 100%;
  33. display: flex;
  34. flex-direction: row;
  35. align-items: center;
  36. justify-content: center;
  37. background: no-repeat left bottom;
  38. background-size: cover;
  39. }
  40. .content {
  41. display: flex;
  42. justify-content: center;
  43. align-items: flex-start;
  44. }
  45. </style>