index.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <template>
  2. <div>
  3. <headCarousel></headCarousel>
  4. <div class="stickyBox py-5">
  5. <headSearch v-if="industryTreeData"></headSearch>
  6. </div>
  7. <hotJobs></hotJobs>
  8. <div class="default-width">
  9. <jobTypeCard class="mb-5" v-if="industryTreeData"></jobTypeCard>
  10. <hotPromotedPositions></hotPromotedPositions>
  11. <PopularEnterprises class="mt-10"></PopularEnterprises>
  12. </div>
  13. </div>
  14. </template>
  15. <script setup>
  16. import headCarousel from './components/headCarousel.vue'
  17. import headSearch from './components/search.vue'
  18. import hotJobs from './components/hotJobs.vue'
  19. import jobTypeCard from './components/jobTypeCard.vue'
  20. import hotPromotedPositions from './components/hotPromotedPositions.vue'
  21. import PopularEnterprises from './components/popularEnterprises.vue'
  22. import { getPositionTreeData } from '@/api/common/index'
  23. import { provide, ref } from 'vue';
  24. defineOptions({ name:'personal-index'})
  25. // 获取行业树形
  26. let industryTreeData = ref(null)
  27. const getTreeData = async () => {
  28. const res = await getPositionTreeData()
  29. if (res?.length) industryTreeData.value = JSON.stringify(res)
  30. else industryTreeData.value = "[]"
  31. }
  32. provide('industryTreeData', industryTreeData)
  33. getTreeData()
  34. </script>
  35. <style lang="scss" scoped>
  36. .stickyBox {
  37. position: sticky;
  38. top: 48px;
  39. z-index: 999;
  40. background-color: var(--default-bgc);
  41. }
  42. </style>