123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- <template>
- <uv-cell v-for="[root, groups] in groupedMajors" :title="root.name"
- :value="`${groups.length}个专业`" is-link title-style="font-size:14px" class="-mx-20"
- @click="showGroups=groups,showRoot=root,$refs.popup.open()"/>
- <uv-popup ref="popup" mode="center" :safe-area-inset-bottom="false" close-on-click-overlay closeable round="12">
- <view style="width: 90vw">
- <view class="fx-row fx-cen-cen text-main text-lg h-[50px]">{{ showRoot.name }}</view>
- <view class="px-30 pb-30 fx-row flex-wrap gap-10">
- <college-major-tag v-for="m in showGroups" :major="m"/>
- </view>
- </view>
- </uv-popup>
- </template>
- <script>
- import CollegeMajorTag from "@/pages/college-library/components/college-major-tag.vue";
- import InjectAISingleDataMixin from "@/pages/ie/entry-single-result/components/InjectAISingleDataMixin";
- import {findTreeNode} from "@/utils/tree-helper";
- import {groupByObjectKey} from "@/utils";
- export default {
- name: "college-grouped-major",
- components: {CollegeMajorTag},
- mixins: [InjectAISingleDataMixin],
- data() {
- return {
- show: false,
- showGroups: [],
- showRoot: {}
- }
- },
- computed: {
- groupedMajors() {
- if (!this.detail.professions?.length) return {}
- if (!this.majorTree.length) return {}
- return groupByObjectKey(this.detail.professions,
- p => findTreeNode(this.majorTree, m => m.code == p.code).root)
- }
- }
- }
- </script>
- <style scoped>
- </style>
|