index-card-college.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <template>
  2. <index-card simple title="院校排名" more-text="查看全部" @more="handleMore">
  3. <el-row :gutter="12">
  4. <el-col :span="8">
  5. <div class="width100 college-rank-a rd8">
  6. <div class="f-red f18 bold" style="letter-spacing: 3px">校友会排行榜</div>
  7. <index-card-content :list="listA" :gutter="0" :line-size="1">
  8. <template #default="{item, index}">
  9. <index-college-item :rank="index+1" :university="item" />
  10. </template>
  11. </index-card-content>
  12. </div>
  13. </el-col>
  14. <el-col :span="8">
  15. <div class="width100 college-rank-b rd8">
  16. <div class="f-red f18 bold" style="letter-spacing: 3px">软科排行榜</div>
  17. <index-card-content :list="listB" :gutter="0" :line-size="1">
  18. <template #default="{item, index}">
  19. <index-college-item :rank="index+1" :university="item" />
  20. </template>
  21. </index-card-content>
  22. </div>
  23. </el-col>
  24. <el-col :span="8">
  25. <div class="width100 college-rank-c rd8">
  26. <div class="f-red f18 bold" style="letter-spacing: 3px">QS排行榜</div>
  27. <index-card-content :list="listC" :gutter="0" :line-size="1">
  28. <template #default="{item, index}">
  29. <index-college-item :rank="index+1" :university="item" />
  30. </template>
  31. </index-card-content>
  32. </div>
  33. </el-col>
  34. </el-row>
  35. </index-card>
  36. </template>
  37. <script>
  38. import IndexCard from '@/views/index/components/index-card'
  39. import IndexCardContent from '@/views/index/components/index-card-content'
  40. import IndexImageItem from '@/views/index/components/index-image-item'
  41. import transferMixin from '@/components/mx-transfer-mixin'
  42. import loginCheckMixin from '@/views/index/blocks/index-login-interceptor-mixin'
  43. import {universitiesRankingNoToken} from '@/api/webApi/career-course'
  44. import MxConst from "@/common/MxConst";
  45. import IndexCollegeItem from "@/views/index/components/index-college-item.vue";
  46. export default {
  47. mixins: [transferMixin, loginCheckMixin],
  48. name: 'index-card-college',
  49. components: {IndexCollegeItem, IndexImageItem, IndexCardContent, IndexCard},
  50. data() {
  51. return {
  52. morePath: '/new-gaokao/three/UniversitiesColleges',
  53. listA: [],
  54. listB: [],
  55. listC: [],
  56. lineSize: 1,
  57. queryParams: {
  58. year: MxConst.currentYear,
  59. pageNum: 1,
  60. pageSize: 5,
  61. }
  62. }
  63. },
  64. mounted() {
  65. this.getList({type: '校友会'}, 'listA')
  66. this.getList({type: '软科'}, 'listB')
  67. this.getList({type: 'QS'}, 'listC')
  68. },
  69. methods: {
  70. getList(param, target) {
  71. universitiesRankingNoToken({
  72. ...this.queryParams,
  73. ...param
  74. }).then(res => {
  75. this[target] = res.rows.map((item, idx) => {
  76. const path = '/career/plan/UniversityDetail'
  77. const u = item["universities"] || {}
  78. const nextParams = {
  79. code: u.code,
  80. }
  81. return {
  82. title: u.name,
  83. src: u.logo,
  84. hits: u.hits,
  85. desc: u.location + ' ' + u.type,
  86. path: path,
  87. nextData: nextParams,
  88. rowClass: 'mt12'
  89. }
  90. })
  91. })
  92. },
  93. async handleMore() {
  94. await this.loginCheck()
  95. this.transferTo(this.morePath)
  96. }
  97. }
  98. }
  99. </script>
  100. <style scoped>
  101. .college-rank-a {
  102. background: url('~@/assets/images/index/login/college-rank-a.png') no-repeat;
  103. background-size: cover;
  104. padding: 12px 20px;
  105. }
  106. .college-rank-b {
  107. background: url('~@/assets/images/index/login/college-rank-b.png') no-repeat;
  108. background-size: cover;
  109. padding: 12px 20px;
  110. }
  111. .college-rank-c {
  112. background: url('~@/assets/images/index/login/college-rank-c.png') no-repeat;
  113. background-size: cover;
  114. padding: 12px 20px;
  115. }
  116. </style>