list-1.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. <!-- 分类 -->
  2. <template>
  3. <view class="list">
  4. <view class="tabList">
  5. <view class="">
  6. <text :class="{'active':tabIndex == 0}" @click="setIndex(0)">足球</text>
  7. <text :class="{'active':tabIndex == 1}" @click="setIndex(1)">篮球</text>
  8. </view>
  9. <view class="index-time-type flex">
  10. <view class="index-time-type-i flex-center" :class="timeIndex==0?'index-time-type-li':''"
  11. @click="getTimeIndex(0)">
  12. <view>今日</view>
  13. </view>
  14. <view class="index-time-type-i flex-center" :class="index==timeIndex?'index-time-type-li':''"
  15. @click="getTimeIndex(index)" v-for="(item,index) in dateTime" v-if="index!=0" :key="index">
  16. <view>{{item.data}}</view>
  17. <view>{{item.time}}</view>
  18. </view>
  19. </view>
  20. </view>
  21. <view class="list-li" v-for="(item,index) in list.data" :key="index"
  22. @click="$navigateTo(tabIndex == 0?'../competition/detail?id=' + item.sourceid:'../competition/basketballDetail?id=' + item.sourceid)">
  23. <view class="list-li-title">
  24. {{item.competition}}
  25. <text>{{item.match_time}}</text>
  26. </view>
  27. <view class="list-li-content flex-center">
  28. <view class="list-li-content-i flex">
  29. <text class="text-clamp">{{item.home_team_name}}</text>
  30. <image :src="item.home_team_logo" mode=""></image>
  31. </view>
  32. <view class="list-li-content-VS">{{item.home_scores}}-{{item.away_scores}}</view>
  33. <view class="list-li-content-i flex">
  34. <image :src="item.away_team_logo" mode=""></image>
  35. <text class="text-clamp">{{item.away_team_name}}</text>
  36. </view>
  37. </view>
  38. <!-- 0 未开始 2 已结束 -->
  39. <view class="list-status" :class="{'start':item.status_type == 0}">
  40. {{item.status_type == 0?'预约':item.status_str}}
  41. </view>
  42. </view>
  43. </view>
  44. </template>
  45. <script>
  46. export default {
  47. data() {
  48. return {
  49. page: 1,
  50. tabIndex: 0,
  51. list: {},
  52. dateTime: [],
  53. timeIndex: 0,
  54. liveList: []
  55. }
  56. },
  57. mounted() {
  58. this.get6Days()
  59. this.getList(1)
  60. },
  61. methods: {
  62. // 切换
  63. setIndex(index) {
  64. this.tabIndex = index
  65. this.page = 1
  66. this.getList(index + 1)
  67. uni.pageScrollTo({
  68. scrollTop: 0
  69. })
  70. },
  71. getTimeIndex(i) {
  72. this.timeIndex = i
  73. this.page = 1
  74. this.list = {}
  75. this.getList(this.tabIndex)
  76. },
  77. /* */
  78. get6Days() { //type==1前,2后
  79. //获取系统当前时间
  80. var now = new Date();
  81. var nowTime = now.getTime();
  82. var oneDayTime = 24 * 60 * 60 * 1000;
  83. let arr = []
  84. for (var i = 0; i < 6; i++) {
  85. //显示周一
  86. var ShowTime = nowTime + i * oneDayTime;
  87. // var ShowTime = nowTime + (i+1)*oneDayTime ;
  88. //初始化日期时间
  89. var myDate = new Date(ShowTime);
  90. var year = myDate.getFullYear();
  91. var month = myDate.getMonth() + 1;
  92. var date = myDate.getDate();
  93. var str = "星期" + "日一二三四五六".charAt(myDate.getDay());
  94. arr.push({
  95. data: month + "/" + date.toString().padStart(2, '0'),
  96. time: str,
  97. day: year + '-' + month + '-' + date
  98. })
  99. }
  100. this.dateTime = arr
  101. },
  102. getList(index) {
  103. // 赛事/赛程
  104. let data = {
  105. page: this.page,
  106. match_type: index,
  107. date: this.dateTime[this.timeIndex].day
  108. }
  109. this.$u.post('/api/hot_match/schedule', data).then(res => {
  110. if (this.page == 1) {
  111. this.list = res
  112. } else {
  113. this.list.data = [...this.list.data, ...res.data]
  114. }
  115. console.log(res);
  116. if (this.list.data.length < res.total) {
  117. this.page++
  118. }
  119. })
  120. }
  121. }
  122. }
  123. </script>
  124. <style lang="scss" scoped>
  125. .index-time-type {
  126. color: #999;
  127. margin: 20rpx 0;
  128. padding: 0 24rpx;
  129. font-size: 24rpx;
  130. text-align: center;
  131. .index-time-type-li {
  132. color: #87390E;
  133. background-color: #FFF1E0;
  134. }
  135. .index-time-type-i {
  136. width: 104rpx;
  137. height: 86rpx;
  138. }
  139. }
  140. .list {
  141. // height: 40vh;
  142. padding: 0 24rpx;
  143. padding-bottom: 200rpx;
  144. position: relative;
  145. // margin-top: 22vh;
  146. margin-top: 200rpx !important;
  147. }
  148. .list-li {
  149. overflow: hidden;
  150. padding: 0 24rpx;
  151. margin-bottom: 20rpx;
  152. text-align: center;
  153. border-radius: 12rpx;
  154. background-color: white;
  155. .list-li-title {
  156. color: #959DB0;
  157. font-size: 24rpx;
  158. position: relative;
  159. padding: 16rpx 0 12rpx 0;
  160. text {
  161. position: absolute;
  162. left: 0;
  163. }
  164. }
  165. .list-li-content {
  166. flex-wrap: nowrap;
  167. image {
  168. width: 44rpx;
  169. height: 44rpx;
  170. margin: 0 6rpx;
  171. }
  172. }
  173. .list-li-content-i {
  174. flex: 1;
  175. color: #333;
  176. font-size: 28rpx;
  177. text {
  178. max-width: 79px;
  179. }
  180. }
  181. .list-li-content-VS {
  182. color: #87390E;
  183. padding: 0 48rpx;
  184. font-size: 36rpx;
  185. font-weight: bold;
  186. }
  187. .list-status {
  188. color: #999;
  189. width: 136rpx;
  190. font-size: 24rpx;
  191. margin: 12rpx auto;
  192. padding: 8rpx 32rpx;
  193. border-radius: 40rpx;
  194. background-color: #F1F1F1;
  195. }
  196. .start {
  197. color: #87390E;
  198. background-color: #FFDFAB;
  199. }
  200. }
  201. .tabList {
  202. position: fixed;
  203. top: 82rpx;
  204. left: 0;
  205. right: 0;
  206. z-index: 99;
  207. padding: 20rpx 0;
  208. // margin: 10rpx 0;
  209. text-align: center;
  210. background-color: #F3F3F7;
  211. text {
  212. color: #666;
  213. width: 100rpx;
  214. height: 44rpx;
  215. font-size: 28rpx;
  216. padding: 8rpx 22rpx;
  217. border-radius: 4rpx;
  218. }
  219. .active {
  220. color: #FFF;
  221. background: linear-gradient(90deg, #FFDFAB 0%, #E3AC72 100%);
  222. }
  223. }
  224. </style>