index.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <div class="parent" @click="layoutClick">
  3. <Headers class="headers"></Headers>
  4. <div class="content">
  5. <router-view></router-view>
  6. </div>
  7. <Footers v-if="footerWhiteList.indexOf(router.currentRoute.value.path) === -1" class="mt-10"></Footers>
  8. <Slider v-if="whiteList.indexOf(router.currentRoute.value.path) === -1" class="slider"></Slider>
  9. </div>
  10. </template>
  11. <script setup>
  12. import Headers from './personal/navBar.vue'
  13. import Footers from './personal/footer.vue'
  14. import Slider from './personal/slider.vue'
  15. import { useSharedState } from '@/store/sharedState'
  16. import { useRouter } from 'vue-router'
  17. defineOptions({ name: 'personal-layout-index' })
  18. // 不展示侧边栏名单
  19. const whiteList = ['/login', '/privacyPolicy', '/userAgreement', '/register', '/recruit/personal/advertisement/introduce']
  20. const footerWhiteList = ['/recruit/personal/message', '/recruit/personal/advertisement/introduce', '/about']
  21. const router = useRouter()
  22. const sharedState = useSharedState()
  23. const layoutClick = () => {
  24. sharedState.increment()
  25. }
  26. </script>
  27. <style lang="scss" scoped>
  28. .parent {
  29. background-color: var(--default-bgc);
  30. position: relative;
  31. }
  32. .headers {
  33. position: fixed;
  34. right: 0;
  35. left: 0;
  36. top: 0;
  37. z-index: 999;
  38. }
  39. .slider {
  40. position: fixed;
  41. bottom: 50%;
  42. right: 24px;
  43. translate: 0 50%;
  44. z-index: 999;
  45. }
  46. .content {
  47. min-height: calc(100vh - (48px + 225px));
  48. margin-top: 50px;
  49. }
  50. </style>