schools.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <!-- 学院列表 -->
  2. <template>
  3. <view class="school">
  4. <u-navbar back-text="" title="" back-icon-color="#FFFFFF" :background="{ background: '#3D5D4C' }" :border-bottom="false"></u-navbar>
  5. <z-paging ref="paging" v-model="schoolList" @query="queryList">
  6. <!-- 搜索 -->
  7. <view class="school-search" slot="top">
  8. <u-search class="school-search-input" placeholder="请输入关键词" v-model="keyword" shape="square"
  9. input-align="center" :show-action="false" bg-color="#ffffff" height="70" @search="keywordChange"/>
  10. </view>
  11. <view class="school-list">
  12. <view class="school-list-item" v-for="(item, index) in schoolList" :key="index" @click="recordBrowseTotal(item)">
  13. <view class="school-list-item-left">
  14. <view class="image">
  15. <u-image :src="item.schoolLogoUrl" width="112" height="112" border-radius="10" mode="aspectFill">
  16. <view slot="error">
  17. <u-image src="../../static/img/default-school.png" width="122" height="112" border-radius="10" mode="aspectFill"/>
  18. </view>
  19. </u-image>
  20. </view>
  21. <view class="title">
  22. <view class="name">{{ item.schoolName }}</view>
  23. <view class="grade">
  24. <!-- <view class="icon">
  25. <u-icon class="icon-img" name="star-fill" color="#EF651F" /> {{item.count}}
  26. </view> -->
  27. <view>{{ `${item.count}个专业 · ${getSchoolTypeName(item.schoolNature) || '-'} ` }}</view>
  28. </view>
  29. </view>
  30. </view>
  31. <view class="school-list-item-right">
  32. <u-icon name="arrow-right" color="#d2d3d5"/>
  33. </view>
  34. </view>
  35. </view>
  36. </z-paging>
  37. <u-toast ref="uToast" />
  38. </view>
  39. </template>
  40. <script>
  41. export default {
  42. name: 'Schools',
  43. data() {
  44. return {
  45. // 搜索关键词
  46. keyword: '',
  47. // 学校列表
  48. schoolList: [],
  49. // 学校性质列表
  50. schoolTypeList: [],
  51. // 分页
  52. page: {
  53. pageNum: 1,
  54. pageSize: 10
  55. }
  56. }
  57. },
  58. onShow() {
  59. this.getSchoolTypeList()
  60. },
  61. methods: {
  62. /**
  63. * 获取列表
  64. * @param { Number } pageNum 当前页数
  65. * @param { Number } pageSize 分页大小
  66. * @param { String } schoolName 搜索关键词
  67. */
  68. getList(pageNum, pageSize, schoolName) {
  69. this.$u.api.school.getSchoolList({
  70. pageNum: pageNum,
  71. pageSize: pageSize,
  72. schoolName: schoolName
  73. }).then(res => {
  74. if (res.code === 200) {
  75. this.$refs.paging.complete(res.rows)
  76. } else {
  77. this.$refs.uToast.show({
  78. title: res.msg,
  79. type: 'error'
  80. })
  81. this.$refs.paging.complete(false)
  82. }
  83. }).catch(() => {
  84. this.$refs.uToast.show({
  85. title: '系统异常!',
  86. type: 'error'
  87. })
  88. this.$refs.paging.complete(false)
  89. })
  90. },
  91. /**
  92. * 获取学校性质字典
  93. */
  94. getSchoolTypeList() {
  95. this.$u.api.getDictdataUrl({
  96. key: 'school_nature'
  97. }).then(res => {
  98. if (res.code === 200) {
  99. this.schoolTypeList = res.data
  100. }
  101. })
  102. },
  103. /**
  104. * 通过字典值去获取名称
  105. * @param { String } val 字典text值
  106. */
  107. getSchoolTypeName(val) {
  108. let name
  109. this.schoolTypeList.forEach(item => {
  110. if (Number(item.text) === Number(val)) {
  111. name = item.label
  112. }
  113. })
  114. return name
  115. },
  116. /**
  117. * @param { Number } pageNo
  118. * @param { Number } pageSize
  119. */
  120. queryList(pageNo, pageSize) {
  121. this.getList(pageNo, pageSize, this.keyword)
  122. },
  123. /**
  124. * 关键词搜索回车触发
  125. */
  126. keywordChange() {
  127. this.$refs.paging.reload(true)
  128. this.getList(1, 10, this.keyword)
  129. },
  130. /**
  131. * 跳转到指定页面
  132. * @param { String } url 指定页面的路径
  133. * @param { Object } params 跳转携带参数
  134. */
  135. jumpPage(url, params) {
  136. this.$u.route({
  137. url: url,
  138. params: params
  139. })
  140. },
  141. /**
  142. * 学校关注度统计
  143. * @param {Object} item
  144. */
  145. recordBrowseTotal(item) {
  146. const query = {
  147. platform: '1', // 平台:1-H5 2-APP 3-小程序 4-PC端
  148. pages: location.href,//页面路径
  149. btnName: '查看学院详情',//按钮名称
  150. btnEvent: '1',//按钮事件: 1-点击 2-长按 3-滑动
  151. ipAddress: '',//IP地址
  152. typeName: '学校关注度',//类型名称 例:学校关注度 、适应性考试等
  153. typeCode: 'XXGZD',// 类型编码 例:类型名称首字母缩写(XXGZD)
  154. categoryName: item.schoolName,//类别名称 例:XX学校,SS考试
  155. }
  156. this.$u.api.postAnalysis(query).then(res => {
  157. this.jumpPage('/pages/schoolDetails/schoolDetails', { schoolId: item.id })
  158. })
  159. }
  160. }
  161. }
  162. </script>
  163. <style lang="scss" scoped>
  164. @import './schools.scss';
  165. </style>