AllUniversity.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <template>
  2. <div v-loading="loading">
  3. <filter-form :filter="filter_form" multiple></filter-form>
  4. <mx-search-group justify="end" v-model="collegeName" @search="clickSuffix">
  5. <p>共 <span class="f-primary">{{ pageForm.total }}</span> 条</p>
  6. </mx-search-group>
  7. <el-row class="mt10 ">
  8. <div v-if="pageForm.total > 0">
  9. <div class="list-wrap pl30">
  10. <div class="fx-row ai-cen mb30" v-for="item in collegeList">
  11. <div class="img">
  12. <img style="width: 100%;height: 100%" :src="item.logo" alt="">
  13. </div>
  14. <div class="info ml20">
  15. <div class="college_name pointer f-333 f20 mb5" @click="toDetail(item)">{{ item.name }}</div>
  16. <div class="tags" v-if="item.features">
  17. <span class="mr5 el-tag el-tag--info el-tag--plain"
  18. v-for="feature in item.features.split(',')">{{ feature }}</span>
  19. </div>
  20. <div class="college-desc mt5 f14 f-666">
  21. <p>
  22. {{ `${item.location} ${item.cityName} ${item.type} / ${item.natureTypeCN} / ${item.managerType} ` }}</p>
  23. </div>
  24. </div>
  25. <div class="heat f12 f-666">
  26. <p>排名</p>
  27. <p class="mt3">{{ `第${item.ranking}名 / 综合指数${item.comScore}` }}</p>
  28. </div>
  29. <div class="heat f12 f-666">
  30. <p>热度</p>
  31. <p class="mt3">{{ (item.hits / 10000).toFixed(1) }}万</p>
  32. </div>
  33. </div>
  34. </div>
  35. <pagination class="mt10" :total="pageForm.total" :autoScroll="false" @pagination="onChangePage"
  36. :page.sync="pageForm.pageNum"
  37. :limit.sync="pageForm.pageSize"
  38. ></pagination>
  39. </div>
  40. <evaluation-empty v-else shadow title="暂无数据"></evaluation-empty>
  41. </el-row>
  42. </div>
  43. </template>
  44. <script>
  45. import FilterForm from '@/views/career/components/FilterForm'
  46. import { selectUniversityList } from '@/api/webApi/career-course'
  47. import MxSearchGroup from '@/components/MxSearch/mx-search-group'
  48. import transferMixin from '@/components/mx-transfer-mixin'
  49. export default {
  50. mixins: [transferMixin],
  51. components: { MxSearchGroup, FilterForm },
  52. data() {
  53. return {
  54. filter_form: {
  55. location: [],
  56. natureTypeCN: [],
  57. type: [],
  58. level: [],
  59. features: [],
  60. name: ''
  61. },
  62. loading: false,
  63. collegeName: '',
  64. pageForm: {
  65. pageSize: 10,
  66. pageNum: 1,
  67. total: 0
  68. },
  69. filter_list: {},
  70. collegeList: []
  71. }
  72. },
  73. watch: {
  74. filter_form: {
  75. immediate: true,
  76. deep: true,
  77. handler(val) {
  78. this.getUniversityList()
  79. }
  80. }
  81. },
  82. methods: {
  83. toDetail(item) {
  84. this.transferTo('/career/plan/UniversityDetail', { code: item.code })
  85. },
  86. onChangePage(page) {
  87. this.pageForm.pageSize = page.limit
  88. this.pageForm.pageNum = page.page
  89. this.getUniversityList()
  90. },
  91. clickSuffix() {
  92. this.filter_form.name = this.collegeName
  93. },
  94. formatFilterForm() {
  95. const result = {}
  96. Object.keys(this.filter_form).forEach(key => result[key] = this.filter_form[key].toString())
  97. return result
  98. },
  99. getUniversityList() {
  100. this.loading = true
  101. // console.log(params)
  102. selectUniversityList({
  103. ...this.formatFilterForm(),
  104. pageNum: this.pageForm.pageNum,
  105. pageSize: this.pageForm.pageSize
  106. }).then(res => {
  107. this.pageForm.total = res.total
  108. this.collegeList = res.rows
  109. }).finally(() => {
  110. this.loading = false
  111. })
  112. }
  113. }
  114. }
  115. </script>
  116. <style lang="scss" scoped>
  117. .heat {
  118. width: 200px;
  119. height: 72px;
  120. padding-top: 22px;
  121. color: #666;
  122. }
  123. .info {
  124. width: 400px;
  125. }
  126. .img {
  127. flex-shrink: 0;
  128. width: 72px;
  129. height: 72px;
  130. }
  131. .tags {
  132. .el-tag {
  133. height: 16px;
  134. line-height: 16px;
  135. font-size: 12px;
  136. color: #909399;
  137. }
  138. }
  139. </style>