schools.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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" color="#d2d3d5"/>
  30. </view>
  31. </view>
  32. </view>
  33. </z-paging>
  34. <u-toast ref="uToast" />
  35. </view>
  36. </template>
  37. <script>
  38. export default {
  39. name: 'Schools',
  40. data() {
  41. return {
  42. // 搜索关键词
  43. keyword: '',
  44. // 学校列表
  45. schoolList: [],
  46. // 学校性质列表
  47. schoolTypeList: [],
  48. // 分页
  49. page: {
  50. pageNum: 1,
  51. pageSize: 10
  52. }
  53. }
  54. },
  55. onShow() {
  56. this.getSchoolTypeList()
  57. },
  58. methods: {
  59. /**
  60. * 获取列表
  61. * @param { Number } pageNum 当前页数
  62. * @param { Number } pageSize 分页大小
  63. * @param { String } schoolName 搜索关键词
  64. */
  65. getList(pageNum, pageSize, schoolName) {
  66. this.$u.api.school.getSchoolList({
  67. pageNum: pageNum,
  68. pageSize: pageSize,
  69. schoolName: schoolName
  70. }).then(res => {
  71. if (res.code === 200) {
  72. this.$refs.paging.complete(res.rows)
  73. } else {
  74. this.$refs.uToast.show({
  75. title: res.msg,
  76. type: 'error'
  77. })
  78. this.$refs.paging.complete([])
  79. }
  80. }).catch(() => {
  81. this.$refs.uToast.show({
  82. title: '系统异常!',
  83. type: 'error'
  84. })
  85. this.$refs.paging.complete([])
  86. })
  87. },
  88. /**
  89. * 获取学校性质字典
  90. */
  91. getSchoolTypeList() {
  92. this.$u.api.getDictdataUrl({
  93. key: 'school_nature'
  94. }).then(res => {
  95. if (res.code === 200) {
  96. this.schoolTypeList = res.data
  97. }
  98. })
  99. },
  100. /**
  101. * 通过字典值去获取名称
  102. * @param { String } val 字典text值
  103. */
  104. getSchoolTypeName(val) {
  105. let name
  106. this.schoolTypeList.forEach(item => {
  107. if (Number(item.text) === Number(val)) {
  108. name = item.label
  109. }
  110. })
  111. return name
  112. },
  113. /**
  114. * @param { Number } pageNo
  115. * @param { Number } pageSize
  116. */
  117. queryList(pageNo, pageSize) {
  118. this.getList(pageNo, pageSize, this.keyword)
  119. },
  120. /**
  121. * 关键词搜索回车触发
  122. */
  123. keywordChange() {
  124. this.getList(1, 10, this.keyword)
  125. },
  126. /**
  127. * 跳转到指定页面
  128. * @param { String } url 指定页面的路径
  129. * @param { Object } params 跳转携带参数
  130. */
  131. jumpPage(url, params) {
  132. this.$u.route({
  133. url: url,
  134. params: params
  135. })
  136. }
  137. }
  138. }
  139. </script>
  140. <style lang="scss" scoped>
  141. @import './schools.scss';
  142. </style>