open-college.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <template>
  2. <z-paging ref="paging" v-model="list" @query="handleQuery">
  3. <view class="fx-col p-30 gap-30">
  4. <college-item v-for="i in list" :item="i" class="mx-card" @click="goCollege(i)"/>
  5. </view>
  6. </z-paging>
  7. </template>
  8. <script setup>
  9. import {ref} from 'vue';
  10. import {createPropDefine} from "@/utils";
  11. import {useTransfer} from "@/hooks/useTransfer";
  12. import CollegeItem from "@/pages/college-library/components/college-item.vue";
  13. import {useCacheStore} from "@/hooks/useCacheStore";
  14. import {getUniversityByCode} from "@/api/webApi/collegemajor";
  15. const props = defineProps({
  16. major: createPropDefine({}, Object)
  17. })
  18. const {transferTo} = useTransfer()
  19. const {dispatchCache} = useCacheStore()
  20. const list = ref([])
  21. const paging = ref(null)
  22. const goCollege = (item) => {
  23. transferTo('/pages/college-library/detail/detail', ['code'], item)
  24. }
  25. const handleQuery = (pageNum, pageSize) => {
  26. const payload = {code: props.major.code, pageNum, pageSize}
  27. dispatchCache(getUniversityByCode, payload)
  28. .then(res => paging.value.completeByTotal(res.rows, res.total))
  29. .catch(e => paging.value.complete(false))
  30. }
  31. </script>
  32. <style scoped>
  33. </style>