Index.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <script setup lang="ts">
  2. import { useRoute } from "vue-router"
  3. import { reinitializeComponents } from "@@/vb-dom"
  4. import { headerDisplayToolbar } from "@@/config/theme"
  5. import LayoutService from "@@/services/LayoutService"
  6. import Header from "@/layouts/main/header/Header.vue"
  7. import Sidebar from "@/layouts/main/sidebar/Sidebar.vue"
  8. import Toolbar from "@/layouts/main/toolbar/Toolbar.vue"
  9. import Content from "@/layouts/main/content/Content.vue"
  10. import Footer from "@/layouts/main/footer/Footer.vue"
  11. import Extras from "@/layouts/main/extras/Extras.vue"
  12. const route = useRoute()
  13. onBeforeMount(() => {
  14. LayoutService.init()
  15. })
  16. onMounted(() => {
  17. nextTick(() => {
  18. reinitializeComponents()
  19. })
  20. })
  21. onMounted(() => {
  22. let protocol = window.location.protocol === "https:" ? "wss://" : "ws://"
  23. initWebSocket(
  24. protocol + window.location.host + import.meta.env.VITE_APP_BASE_API + "/resource/websocket"
  25. )
  26. })
  27. onMounted(() => {
  28. initSSE(import.meta.env.VITE_APP_BASE_API + "/resource/sse")
  29. })
  30. watch(
  31. () => route.path,
  32. () => {
  33. nextTick(() => {
  34. reinitializeComponents()
  35. })
  36. }
  37. )
  38. </script>
  39. <template>
  40. <div class="d-flex flex-column flex-root app-root" id="vb_app_root">
  41. <div class="app-page flex-column flex-column-fluid" id="vb_app_page">
  42. <Header />
  43. <div class="app-wrapper flex-column flex-row-fluid" id="vb_app_wrapper">
  44. <Sidebar />
  45. <div class="app-main flex-column flex-row-fluid" id="vb_app_main">
  46. <div class="d-flex flex-column flex-column-fluid">
  47. <Toolbar v-if="!headerDisplayToolbar" />
  48. <div id="vb_app_content" class="app-content flex-column-fluid">
  49. <Content></Content>
  50. </div>
  51. </div>
  52. <Footer />
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. <Extras />
  58. </template>