|
|
@@ -47,9 +47,15 @@
|
|
|
:value="item[d.prop]" :title-only="d.titleOnly"
|
|
|
@click="handleRuleClick(d, item)"/>
|
|
|
</view>
|
|
|
- <view v-if="mode=='plan'" class="mt-20 flex justify-between items-center">
|
|
|
- <ie-button>加入志愿表</ie-button>
|
|
|
- <ie-button>测录取概率</ie-button>
|
|
|
+ <view v-if="mode=='plan'" class="mt-20 flex justify-between items-center gap-30">
|
|
|
+ <view class="h-80 flex-1 border border-solid border-primary rounded-full text-primary
|
|
|
+ text-30 flex justify-center items-center" @click="handleAddVoluntary(item)">
|
|
|
+ 加入志愿表
|
|
|
+ </view>
|
|
|
+ <view class="h-80 flex-1 bg-gradient-to-r from-primary-500 to-primary rounded-full text-white
|
|
|
+ text-30 flex justify-center items-center" @click="handleRateVoluntary(item)">
|
|
|
+ 测录取概率
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
@@ -60,8 +66,13 @@
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import _ from 'lodash';
|
|
|
-import {HistoryMode, IPlanEnrollDescriptor, IPlanEnrollHistory} from "@/types/university";
|
|
|
+import {HistoryMode, IPlanEnrollDescriptor, IPlanEnrollHistory, University, UniversityDetail} from "@/types/university";
|
|
|
import PlanEnrollDescriptor from "@/pagesOther/pages/university/detail/components/plus/plan-enroll-descriptor.vue";
|
|
|
+import {UNIVERSITY_DETAIL} from "@/types/injectionSymbols";
|
|
|
+import {addVoluntary} from "@/api/modules/voluntary";
|
|
|
+import {SelectedUniversityMajor} from "@/types/voluntary";
|
|
|
+import {useTransferPage} from "@/hooks/useTransferPage";
|
|
|
+import {routes} from "@/common/routes";
|
|
|
|
|
|
|
|
|
const props = withDefaults(defineProps<{
|
|
|
@@ -73,6 +84,9 @@ const props = withDefaults(defineProps<{
|
|
|
})
|
|
|
const emits = defineEmits(['rule'])
|
|
|
|
|
|
+const {transferTo} = useTransferPage()
|
|
|
+const detail = inject(UNIVERSITY_DETAIL, ref({} as UniversityDetail))
|
|
|
+const baseInfo = computed<University>(() => detail.value.baseInfo)
|
|
|
const paging = ref<ZPagingInstance>()
|
|
|
const isCultural = ref(false) // 河南文化类遗留结构
|
|
|
const tag = computed(() => isCultural.value && '') // examMajorName 河南文化类遗留结构
|
|
|
@@ -117,6 +131,7 @@ const handleGroupChange = () => {
|
|
|
}
|
|
|
|
|
|
const handleQuery = () => {
|
|
|
+ // console.log('plan enroll list: query', props.mode, queryParams.value)
|
|
|
// 到这里时listOfLevel应该已经动态计算完毕了
|
|
|
// onSearch, results结构都是多余的,这里只是为了实验z-paging的虚拟列表
|
|
|
paging.value?.completeByNoMore(listOfGroup.value, true)
|
|
|
@@ -126,8 +141,30 @@ const handleRuleClick = (descriptor: IPlanEnrollDescriptor, history: IPlanEnroll
|
|
|
if (descriptor.titleOnly) emits('rule', history.totalRule)
|
|
|
}
|
|
|
|
|
|
-watch(props.list, async (list) => {
|
|
|
- console.log('plan enroll list: watch', list)
|
|
|
+const handleAddVoluntary = async (item: IPlanEnrollHistory) => {
|
|
|
+ const {code} = baseInfo.value
|
|
|
+ const {majorCode} = item
|
|
|
+ if (!majorCode) return uni.$ie.showError('缺少专业编码')
|
|
|
+ await addVoluntary({universityId: code, majorId: majorCode})
|
|
|
+}
|
|
|
+
|
|
|
+const handleRateVoluntary = (item: IPlanEnrollHistory) => {
|
|
|
+ if (!item.majorCode) return uni.$ie.showError('缺少专业编码')
|
|
|
+ const selected: SelectedUniversityMajor = {
|
|
|
+ universityId: baseInfo.value.code,
|
|
|
+ universityLogo: baseInfo.value.logo,
|
|
|
+ universityName: baseInfo.value.name,
|
|
|
+ majorId: item.majorCode,
|
|
|
+ majorName: item.majorName,
|
|
|
+ majorGroup: item.majorGroup,
|
|
|
+ majorAncestors: '', // 测算部分这个字段不重要
|
|
|
+ info: baseInfo.value
|
|
|
+ }
|
|
|
+ transferTo(routes.voluntaryIndex, {bigData: {selected}})
|
|
|
+}
|
|
|
+
|
|
|
+watch(() => props.list, async (list) => {
|
|
|
+ // console.log('plan enroll list: watch', props.mode, list)
|
|
|
if (list.length) {
|
|
|
queryParams.value.year = years.value[0].value
|
|
|
queryParams.value.level = levels.value[0].value
|
|
|
@@ -137,6 +174,8 @@ watch(props.list, async (list) => {
|
|
|
}, {immediate: true})
|
|
|
</script>
|
|
|
|
|
|
-<style scoped>
|
|
|
-
|
|
|
+<style scoped lang="scss">
|
|
|
+::v-deep .uv-button-wrapper {
|
|
|
+ flex: 1
|
|
|
+}
|
|
|
</style>
|