|
@@ -1,11 +1,14 @@
|
|
|
<template>
|
|
<template>
|
|
|
<view class="h-full">
|
|
<view class="h-full">
|
|
|
- <z-paging ref="paging" @query="handleQuery">
|
|
|
|
|
|
|
+ <z-paging ref="paging" v-model="list" @query="handleQuery">
|
|
|
<template #top>
|
|
<template #top>
|
|
|
<college-conditions-picker :options="filter"/>
|
|
<college-conditions-picker :options="filter"/>
|
|
|
<ie-search v-model="queryParams.name" placeholder="输入院校名称" @search="handleSearch"
|
|
<ie-search v-model="queryParams.name" placeholder="输入院校名称" @search="handleSearch"
|
|
|
@clear="handleSearch"/>
|
|
@clear="handleSearch"/>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
+ <view class="p-20 flex flex-col gap-20">
|
|
|
|
|
+ <college-item v-for="i in list" :key="i.code" :item="i" class="mx-card" @click="handleDetail(i)"/>
|
|
|
|
|
+ </view>
|
|
|
</z-paging>
|
|
</z-paging>
|
|
|
</view>
|
|
</view>
|
|
|
</template>
|
|
</template>
|
|
@@ -13,13 +16,23 @@
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
import {useTransferPage} from "@/hooks/useTransferPage";
|
|
import {useTransferPage} from "@/hooks/useTransferPage";
|
|
|
import {getUniversityFilters, universityList} from "@/api/modules/university";
|
|
import {getUniversityFilters, universityList} from "@/api/modules/university";
|
|
|
-import {UniversityQueryDto} from "@/types/university";
|
|
|
|
|
|
|
+import {University, UniversityQueryDto} from "@/types/university";
|
|
|
import {UNIVERSITY_FILTER} from "@/types/injectionSymbols";
|
|
import {UNIVERSITY_FILTER} from "@/types/injectionSymbols";
|
|
|
import CollegeConditionsPicker from "@/pagesOther/pages/university/index/components/plus/college-conditions-picker.vue";
|
|
import CollegeConditionsPicker from "@/pagesOther/pages/university/index/components/plus/college-conditions-picker.vue";
|
|
|
|
|
+import CollegeItem from "@/pagesOther/pages/university/index/components/plus/college-item.vue";
|
|
|
|
|
+
|
|
|
|
|
+const props = withDefaults(defineProps<{
|
|
|
|
|
+ customItemClick: boolean;
|
|
|
|
|
+ extraFilter: Record<string, any>;
|
|
|
|
|
+}>(), {
|
|
|
|
|
+ customItemClick: false,
|
|
|
|
|
+ extraFilter: () => ({})
|
|
|
|
|
+})
|
|
|
|
|
+const emits = defineEmits(['item-click'])
|
|
|
|
|
|
|
|
const {transferTo} = useTransferPage()
|
|
const {transferTo} = useTransferPage()
|
|
|
const paging = ref<ZPagingInstance>()
|
|
const paging = ref<ZPagingInstance>()
|
|
|
-const list = ref([])
|
|
|
|
|
|
|
+const list = ref<University[]>([])
|
|
|
const filter = ref({})
|
|
const filter = ref({})
|
|
|
const queryParams = ref<UniversityQueryDto>({
|
|
const queryParams = ref<UniversityQueryDto>({
|
|
|
name: '',
|
|
name: '',
|
|
@@ -36,12 +49,18 @@ const handleSearch = async () => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const handleQuery = (pageNum: number, pageSize: number) => {
|
|
const handleQuery = (pageNum: number, pageSize: number) => {
|
|
|
- const query = {pageNum, pageSize, ...queryParams.value}
|
|
|
|
|
|
|
+ const query = {pageNum, pageSize, ...props.extraFilter, ...queryParams.value}
|
|
|
universityList(query)
|
|
universityList(query)
|
|
|
.then(res => paging.value?.completeByTotal(res.rows, res.total))
|
|
.then(res => paging.value?.completeByTotal(res.rows, res.total))
|
|
|
.catch(e => paging.value?.complete(false))
|
|
.catch(e => paging.value?.complete(false))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const handleDetail = (college: University) => {
|
|
|
|
|
+ if (props.customItemClick) return emits('item-click', college)
|
|
|
|
|
+ const {code} = college
|
|
|
|
|
+ transferTo('/pages/college-library/detail/detail', {code})
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
provide(UNIVERSITY_FILTER, queryParams)
|
|
provide(UNIVERSITY_FILTER, queryParams)
|
|
|
|
|
|
|
|
watch([
|
|
watch([
|