App.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <a-config-provider
  3. :locale="zhCN"
  4. :theme="{
  5. token: {
  6. colorPrimary: '#bd4b36',
  7. },
  8. }"
  9. :componentSize="'large'"
  10. >
  11. <NavBar />
  12. <main>
  13. <RouterView />
  14. </main>
  15. <FooterSmall />
  16. </a-config-provider>
  17. </template>
  18. <script setup lang="ts">
  19. import { onMounted, watch } from 'vue';
  20. import { RouterView, useRoute } from 'vue-router'
  21. import { useAuthStore } from './stores/auth';
  22. import NavBar from './components/NavBar.vue';
  23. import zhCN from 'ant-design-vue/es/locale/zh_CN';
  24. import { useRedirectLoginPage } from './common/LoginPageRedirect';
  25. import FooterSmall from './components/FooterSmall.vue';
  26. const authStore = useAuthStore();
  27. const { checkAndRedirectLoginPage } = useRedirectLoginPage();
  28. onMounted(async () => {
  29. await authStore.loadLoginState();
  30. checkAndRedirectLoginPage();
  31. });
  32. const route = useRoute();
  33. watch(route, () => {
  34. window.scrollTo({
  35. top: 0,
  36. behavior: 'instant'
  37. });
  38. checkAndRedirectLoginPage();
  39. });
  40. </script>
  41. <style>
  42. @import "bootstrap/dist/css/bootstrap.css";
  43. @import "bootstrap/dist/css/bootstrap-grid.css";
  44. @import "bootstrap/dist/css/bootstrap-utilities.css";
  45. @import "./assets/scss/main.scss";
  46. @import "vue3-carousel/carousel.css";
  47. @import "@vuemap/vue-amap/dist/style.css";
  48. @import "@imengyu/vue-scroll-rect/lib/vue-scroll-rect.css";
  49. </style>