schools.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <!-- 学院列表 -->
  2. <template>
  3. <view class="school">
  4. <z-paging ref="paging" v-model="schoolList" @query="queryList">
  5. <!-- 搜索 -->
  6. <view class="school-search" slot="top">
  7. <u-search class="school-search-input" placeholder="请输入关键词" v-model="keyword" shape="square"
  8. input-align="center" :show-action="false" bg-color="#ffffff" height="70" @search="keywordChange"/>
  9. </view>
  10. <view class="school-list">
  11. <view class="school-list-item" v-for="(item, index) in schoolList" :key="index" @click="jumpPage('/pages/schoolDetails/schoolDetails', {
  12. schoolId: item.id
  13. })">
  14. <view class="school-list-item-left">
  15. <view class="image">
  16. <image :src="item.schoolLogoUrl" mode=""></image>
  17. </view>
  18. <view class="title">
  19. <view class="name">{{ item.schoolName }}</view>
  20. <view class="grade">
  21. <!-- <view class="icon">
  22. <u-icon class="icon-img" name="star-fill" color="#EF651F" /> {{item.count}}
  23. </view> -->
  24. <view>{{ `${item.count}个专业 · ${getSchoolTypeName(item.schoolNature)} ` }}</view>
  25. </view>
  26. </view>
  27. </view>
  28. <view class="school-list-item-right">
  29. <u-icon name="arrow-right" />
  30. </view>
  31. </view>
  32. </view>
  33. </z-paging>
  34. </view>
  35. </template>
  36. <script>
  37. export default {
  38. name: 'Schools',
  39. data() {
  40. return {
  41. // 搜索关键词
  42. keyword: '',
  43. // 学校列表
  44. schoolList: [],
  45. // 学校性质列表
  46. schoolTypeList: [],
  47. // 分页
  48. page: {
  49. pageNum: 1,
  50. pageSize: 10
  51. }
  52. }
  53. },
  54. onShow() {
  55. this.getSchoolTypeList()
  56. },
  57. methods: {
  58. /**
  59. * 获取列表
  60. * @param { Number } pageNum 当前页数
  61. * @param { Number } pageSize 分页大小
  62. * @param { String } schoolName 搜索关键词
  63. */
  64. getList(pageNum, pageSize, schoolName) {
  65. this.$u.api.school.getSchoolList({
  66. pageNum: pageNum,
  67. pageSize: pageSize,
  68. schoolName: schoolName
  69. }).then(res => {
  70. if (res.code === 200) {
  71. this.$refs.paging.complete(res.rows)
  72. }
  73. })
  74. },
  75. /**
  76. * 获取学校性质字典
  77. */
  78. getSchoolTypeList() {
  79. this.$u.api.getDictdataUrl({
  80. key: 'school_nature'
  81. }).then(res => {
  82. if (res.code === 200) {
  83. this.schoolTypeList = res.data
  84. }
  85. })
  86. },
  87. /**
  88. * 通过字典值去获取名称
  89. * @param { String } val 字典text值
  90. */
  91. getSchoolTypeName(val) {
  92. let name
  93. this.schoolTypeList.forEach(item => {
  94. if (Number(item.text) === Number(val)) {
  95. name = item.label
  96. }
  97. })
  98. return name
  99. },
  100. /**
  101. * @param { Number } pageNo
  102. * @param { Number } pageSize
  103. */
  104. queryList(pageNo, pageSize) {
  105. this.getList(pageNo, pageSize, this.keyword)
  106. },
  107. /**
  108. * 关键词搜索回车触发
  109. */
  110. keywordChange() {
  111. this.getList(1, 10, this.keyword)
  112. },
  113. /**
  114. * 跳转到指定页面
  115. * @param { String } url 指定页面的路径
  116. * @param { Object } params 跳转携带参数
  117. */
  118. jumpPage(url, params) {
  119. this.$u.route({
  120. url: url,
  121. params: params
  122. })
  123. }
  124. }
  125. }
  126. </script>
  127. <style lang="scss" scoped>
  128. @import './schools.scss';
  129. </style>