ai-list.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <z-paging ref="paging" v-model="list" @query="handleQuery">
  3. <view class="p-20 fx-col gap-20">
  4. <ai-list-item v-for="item in list" :item="item" @delete="handleDelete"/>
  5. </view>
  6. </z-paging>
  7. </template>
  8. <script>
  9. import MxConst from "@/common/MxConst";
  10. import {getVoluntaryList} from "@/api/webApi/ie-voluntary";
  11. import {universityDetail} from "@/api/webApi/collegemajor";
  12. import AiListItem from "@/pages/ie/entry-ai-list/components/ai-list-item.vue";
  13. import {useCacheStore} from "@/hooks/useCacheStore";
  14. export default {
  15. name: "ai-list",
  16. components: {AiListItem},
  17. data() {
  18. return {
  19. type: MxConst.enum.ai.voluntaryType.ai,
  20. list: []
  21. }
  22. },
  23. setup() {
  24. const {dispatchCache} = useCacheStore()
  25. return {
  26. dispatchCache
  27. }
  28. },
  29. methods: {
  30. _mock(rows) {
  31. rows.forEach(r => {
  32. r.details?.forEach(async u => {
  33. // fill university info by need.
  34. if (!u.university?.name && u.university?.code) {
  35. const payload = {code: u.university.code}
  36. const {data} = await this.dispatchCache(universityDetail, payload)
  37. u.university = data.baseInfo
  38. }
  39. })
  40. })
  41. },
  42. handleQuery(pageNum, pageSize) {
  43. const {type} = this
  44. getVoluntaryList({type, pageNum, pageSize}).then(res => {
  45. this._mock(res.rows)
  46. this.$refs.paging.completeByTotal(res.rows, res.total)
  47. }).catch(e => this.$refs.paging.complete(false))
  48. },
  49. handleDelete(item) {
  50. this.$refs.paging.reload()
  51. }
  52. }
  53. }
  54. </script>
  55. <style scoped>
  56. </style>