12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <template>
- <view class="tabs-swiper-content pb-40">
- <view class="p-30">
- <view class="p-30 bg-white mx-card">
- <view class="fx-row fx-bet-sta mb-20">
- <view class="text-tips text-xs">
- <view v-for="p in majorPaths" :key="p">{{ p }}</view>
- </view>
- <major-item-collect :code="major.code" :model="detail"/>
- </view>
- <uv-text type="content" size="13" :text="detail.introduction"/>
- </view>
- </view>
- <view class="p-30 bg-white">
- <index-title-wrap title="核心课程" class="mb-10"/>
- <view class="bg-slate-100 p-30 rounded-lg text-xs text-content">
- {{ detail.mainCourse || '暂无介绍' }}
- </view>
- </view>
- <view class="p-30 bg-white">
- <index-title-wrap title="就业方向" class="mb-10"/>
- <view class="bg-slate-100 p-30 rounded-lg text-xs text-content">
- {{ detail.jobDirection || '暂无介绍' }}
- </view>
- </view>
- <view class="p-30 bg-white">
- <index-title-wrap title="职业能力" class="mb-10"/>
- <view class="bg-slate-100 p-30 rounded-lg text-xs text-content">
- {{ detail.loreAndAbility || '暂无介绍' }}
- </view>
- </view>
- <view class="p-30 bg-white">
- <index-title-wrap title="资格证书" class="mb-10"/>
- <view class="bg-slate-100 p-30 rounded-lg text-xs text-content">
- {{ detail.qualification || '暂无介绍' }}
- </view>
- </view>
- <view class="p-30 bg-white">
- <index-title-wrap title="衔接中职专业" class="mb-10"/>
- <view class="bg-slate-100 p-30 rounded-lg text-xs text-content">
- {{ detail.zhongzhiMajors || '暂无介绍' }}
- </view>
- </view>
- <view class="p-30 bg-white">
- <index-title-wrap title="衔接本科专业" class="mb-10"/>
- <view class="bg-slate-100 p-30 rounded-lg text-xs text-content">{{ detail.benMajors || '暂无介绍' }}</view>
- </view>
- <view class="mt-30 bg-white">
- <view class="p-30">
- <uv-text type="main" bold size="18" text="相关专业"/>
- </view>
- <uv-cell v-for="m in relatedMajors" :key="m.code" :title="m.name" is-link @click="goMajorDetail(m)"/>
- </view>
- </view>
- </template>
- <script setup>
- import {ref, computed, onMounted} from 'vue';
- import _ from 'lodash';
- import {createPropDefine} from "@/utils";
- import {findTreePath} from "@/utils/tree-helper";
- import {majorOverview} from "@/api/webApi/collegemajor";
- import IndexTitleWrap from "@/pages/index/components/index-title-wrap.vue";
- import {useCacheStore} from "@/hooks/useCacheStore";
- import {cacheActions} from "@/hooks/defineCacheActions";
- import MajorItemCollect from "@/pages/major-library/detail/components/major-item-collect.vue";
- import {useTransfer} from "@/hooks/useTransfer";
- const props = defineProps({
- major: createPropDefine({}, Object)
- })
- const {dispatchCache} = useCacheStore()
- const {transferTo} = useTransfer()
- const majorTree = ref([])
- const detail = ref({})
- const paths = computed(() => findTreePath(majorTree.value, m => m.code == props.major.code) || [])
- const majorPaths = computed(() => paths.value.map((m, idx) => Array(idx).fill('➣ ').join('') + m.name))
- const relatedMajors = computed(() => props.major.parent.children.filter(m => m != props.major))
- const goMajorDetail = (major) => {
- transferTo('/pages/major-library/detail/detail', ['code'], major)
- }
- onMounted(async () => {
- majorTree.value = await dispatchCache(cacheActions.getMajorTree)
- })
- onMounted(async () => {
- const {code} = props.major
- const res = await majorOverview({code})
- detail.value = res.data
- })
- </script>
- <style scoped>
- </style>
|