schools.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <template>
  2. <view>
  3. <!-- <u-empty text="此功能正在建设中" margin-top="400" src="/static/img/empty.png"></u-empty> -->
  4. <u-search height="80" class="top-search" placeholder="快速搜索学院" v-model="keyword" @search="search" @custom="search" @clear="search"></u-search>
  5. <!-- <u-cell-group title="教育基地">
  6. <u-cell-item
  7. @click="schoolClick(item)"
  8. v-for="(item,index) in schoolList"
  9. :key='item.id'
  10. :label='item.number+"个专业 | "+item.schoolNature|verifySchoolNatureFilter'
  11. :title="item.schoolName">
  12. <image class="cell-icon" :src="item.schoolLogoUrl" slot="icon" mode=""></image>
  13. </u-cell-item>
  14. </u-cell-group> -->
  15. <mescroll-uni ref="mescrollRef" @init="mescrollInit" top="150" @down="downCallback" :up="upOption" @up="upCallback" @emptyclick="emptyClick">
  16. <view class="school-item u-flex u-row-between" @click="schoolClick(item)" v-for="(item,index) in schoolList" :key='item.id' >
  17. <view class=" u-flex">
  18. <image class="school-item-img" :src="item.schoolLogoUrl" mode="scaleToFill"></image>
  19. <view class="school-item-info" style="display: inline-block;">
  20. <view class="up">
  21. {{item.schoolName}}
  22. </view>
  23. <view class="down">
  24. <!-- {{item.count}}个专业 | -->
  25. {{item.schoolNature|verifySchoolNatureFilter}}
  26. </view>
  27. </view>
  28. </view>
  29. <view class="arrow">
  30. <u-icon name="arrow-right" color="#969799" size="28"></u-icon>
  31. </view>
  32. </view>
  33. </mescroll-uni>
  34. </view>
  35. </template>
  36. <script>
  37. import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
  38. // import mock from "../../static/js/mock.js";
  39. export default{
  40. mixins: [MescrollMixin], // 使用mixin (在main.js注册全局组件)
  41. data(){
  42. return{
  43. keyword:'',
  44. schoolList:[],
  45. upOption:{
  46. // page: {
  47. // size: 10 // 每页数据的数量
  48. // },
  49. // auto:false,
  50. // use:false,
  51. noMoreSize: 4, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5
  52. empty:{
  53. tip: '~ 暂无数据 ~', // 提示
  54. // btnText: '去看看'
  55. }
  56. },
  57. }
  58. },
  59. onLoad(){
  60. },
  61. onShow(){
  62. },
  63. filters:{
  64. verifySchoolNatureFilter(value){
  65. if (value == 1) {
  66. return '公办';
  67. }else if(value == 2){
  68. return '民办';
  69. }
  70. }
  71. },
  72. methods:{
  73. search(value){
  74. console.log('value',value);
  75. this.mescroll.resetUpScroll();
  76. },
  77. /*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
  78. upCallback(page) {
  79. // console.log('page',page)
  80. //联网加载数据
  81. let params ={
  82. schoolName:this.keyword,
  83. pageNum:page.num,
  84. pageSize:page.size
  85. }
  86. this.$u.api.getSchoolList(params).then(curPageData=>{
  87. // console.log('curPageData',curPageData)
  88. //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
  89. this.mescroll.endSuccess(curPageData.rows.length);
  90. //设置列表数据
  91. if(page.num == 1) this.schoolList = []; //如果是第一页需手动制空列表
  92. this.schoolList=this.schoolList.concat(curPageData.rows); //追加新数据
  93. }).catch((err)=>{
  94. uni.showToast({
  95. title:'链接失败'
  96. });
  97. console.log('err',err)
  98. //联网失败, 结束加载
  99. this.mescroll.endErr();
  100. })
  101. },
  102. schoolClick(item){
  103. console.log('schoolClick item',item);
  104. let analysisParams ={
  105. platform:'1',//平台:1-H5 2-APP 3-小程序 4-PC端
  106. pages:location.href,//页面路径
  107. btnName:'',//按钮名称
  108. btnEvent:'1',//按钮事件: 1-点击 2-长按 3-滑动
  109. ipAddress:'',//IP地址
  110. typeName:'学校关注度',//类型名称 例:学校关注度 、适应性考试等
  111. typeCode:'',//类型编码 例:类型名称首字母缩写(XXGZD)
  112. categoryName:item.schoolName,//类别名称 例:XX学校,SS考试
  113. };
  114. uni.request({
  115. url:'/apis/cityjson?ie=utf-8',
  116. method:'GET',
  117. success: (res) => {
  118. // console.log('this',this);
  119. const reg = /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/;
  120. let ip = reg.exec(res.data);
  121. analysisParams.ipAddress = ip[0];
  122. console.log('analysisParams',analysisParams);
  123. }
  124. });
  125. this.$u.api.postAnalysis(analysisParams).then(res=>{
  126. console.log('res',res);
  127. if(res.code == 200){
  128. }else{
  129. uni.showToast({
  130. icon:'none',
  131. title:res.msg
  132. })
  133. }
  134. location.href = item.schoolUrl
  135. });
  136. }
  137. }
  138. }
  139. </script>
  140. <style lang="scss" scoped>
  141. .top-search{padding: 24rpx;}
  142. .cell-icon{width: 100rpx;height: 100rpx;margin-right: 24rpx;}
  143. .school-item{padding: 24rpx 24rpx;border-bottom: 1px solid #ddd;}
  144. .school-item .up{font-size: 30rpx;margin-bottom: 10rpx;}
  145. .school-item .down{color: #ababab;}
  146. .school-item-img{width: 100rpx;height: 100rpx;margin-right: 24rpx;}
  147. // @import './schools.scss'
  148. </style>