detail.vue 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <template>
  2. <view class="page-content">
  3. <mx-nav-bar :title="major.name||prevData.name"/>
  4. <mx-tabs-swiper v-if="major.code" :tabs="tabs" border>
  5. <template #base>
  6. <base-info :major="major"/>
  7. </template>
  8. <template #college>
  9. <open-college :major="major"/>
  10. </template>
  11. </mx-tabs-swiper>
  12. <uv-empty v-else text="暂无相关专业介绍" margin-top="100"/>
  13. </view>
  14. </template>
  15. <script setup>
  16. import {ref, computed, onMounted} from 'vue';
  17. import {useTransfer} from "@/hooks/useTransfer";
  18. import {findTreeNode} from "@/utils/tree-helper";
  19. import {useCacheStore} from "@/hooks/useCacheStore";
  20. import {cacheActions} from "@/hooks/defineCacheActions";
  21. import {useUserStore} from "@/hooks/useUserStore";
  22. import BaseInfo from "@/pages/major-library/detail/components/base-info.vue";
  23. import OpenCollege from "@/pages/major-library/detail/components/open-college.vue";
  24. const {prevData} = useTransfer()
  25. const {dispatchCache} = useCacheStore()
  26. const {isCultural} = useUserStore()
  27. const majorTree = ref([])
  28. const major = computed(() => findTreeNode(majorTree.value, m => m.code == prevData.value.code) || {})
  29. const tabs = ref([
  30. {name: '专业概况', template: 'base'},
  31. {name: isCultural.value ? '招生院校' : '开设院校', template: 'college'}
  32. ])
  33. onMounted(async () => {
  34. majorTree.value = await dispatchCache(cacheActions.getMajorTree)
  35. })
  36. </script>
  37. <style lang="scss">
  38. </style>