Commit 2f1e718b777cdba5fed2181ddb636035e7dd680d
1 parent
e5519737
团购列表的定时器显示的优化
Showing
4 changed files
with
74 additions
and
46 deletions
packageC/pages/group_list/group_list.js
| ... | ... | @@ -19,7 +19,8 @@ Page({ |
| 19 | 19 | noMore: false, // 检测是否有更多数据,true为没有更多数据,false为还有数据 |
| 20 | 20 | pageNum: 1, // 当前页数 |
| 21 | 21 | |
| 22 | - time_arr:[] | |
| 22 | + time_arr:[], | |
| 23 | + timer: null, | |
| 23 | 24 | }, |
| 24 | 25 | |
| 25 | 26 | /** |
| ... | ... | @@ -296,8 +297,6 @@ Page({ |
| 296 | 297 | var th = this; |
| 297 | 298 | // 获取当前时间,同时得到活动结束时间数组 |
| 298 | 299 | let newTime = ut.gettimestamp(); |
| 299 | - | |
| 300 | - | |
| 301 | 300 | var time_arr=[]; |
| 302 | 301 | |
| 303 | 302 | for (let j = 0; j < this.data.list.length; j++) { |
| ... | ... | @@ -309,43 +308,66 @@ Page({ |
| 309 | 308 | // 对结束时间进行处理渲染到页面 |
| 310 | 309 | for (var i = 0; i < endTimeList.length; i++) { |
| 311 | 310 | |
| 312 | - var o = endTimeList[i]; | |
| 313 | - var endTime = this.data.type == 1 ? o.end_time : o.start_time; | |
| 311 | + | |
| 314 | 312 | // if(th.data.type==0) endTime = o.start_time; |
| 315 | - let obj = null; | |
| 316 | - // 如果活动未结束,对时间进行处理 | |
| 317 | - if (endTime - newTime > 0) { | |
| 318 | - let time = (endTime - newTime); | |
| 319 | - // 获取天、时、分、秒 | |
| 320 | - let day = parseInt(time / (60 * 60 * 24)); | |
| 321 | - let hou = parseInt(time % (60 * 60 * 24) / 3600); | |
| 322 | - let min = parseInt(time % (60 * 60 * 24) % 3600 / 60); | |
| 323 | - let sec = parseInt(time % (60 * 60 * 24) % 3600 % 60); | |
| 324 | - obj = { | |
| 325 | - day: this.timeFormat(day), | |
| 326 | - hou: this.timeFormat(hou), | |
| 327 | - min: this.timeFormat(min), | |
| 328 | - sec: this.timeFormat(sec), | |
| 329 | - hide: 1 | |
| 330 | - } | |
| 331 | - } else { | |
| 332 | - //活动已结束,全部设置为'00' | |
| 333 | - obj = {day: '00', hou: '00', min: '00', sec: '00'} | |
| 334 | - } | |
| 335 | - //var txt = "goodlist[" + i + "].djs"; | |
| 336 | - //th.setData({[txt]: obj}); | |
| 337 | 313 | |
| 338 | - var e={djs:obj}; | |
| 339 | - arr_new.push(e); | |
| 340 | 314 | |
| 315 | + // 创建查询对象 | |
| 316 | + let query = wx.createSelectorQuery(); | |
| 317 | + // 获取目标元素,并获取目标元素的信息 | |
| 318 | + query.select("#l_item_"+j+"_"+i).boundingClientRect(); | |
| 319 | + // 获取视口,并获取视口信息 | |
| 320 | + query.selectViewport().boundingClientRect(); | |
| 321 | + //-- 执行查询,元素要在显示中的才显示定时器 -- | |
| 322 | + query.exec(([target, view]) => { | |
| 323 | + | |
| 324 | + if (!th.data.is_timer) return; | |
| 325 | + if (!target) return; | |
| 326 | + if (!target.id) return; | |
| 327 | + | |
| 328 | + let idx_str= target.id.replace('l_item_',''); | |
| 329 | + idx_str=idx_str.split('_'); | |
| 330 | + | |
| 331 | + var o = this.data.list[idx_str[0]][idx_str[1]]; | |
| 332 | + var endTime = this.data.type == 1 ? o.end_time : o.start_time; | |
| 333 | + | |
| 334 | + // 条件1:当目标顶部距离视口顶部距离小于视口的高度时 | |
| 335 | + // 条件2:当目标底部距离视口顶部距离大于0时 | |
| 336 | + // 当以上两个条件同时成立时,目标元素在视口中 | |
| 337 | + if (target.top < view.height && target.bottom > 0) { | |
| 338 | + | |
| 339 | + let obj = null; | |
| 340 | + // 如果活动未结束,对时间进行处理 | |
| 341 | + if (endTime - newTime > 0) { | |
| 342 | + let time = (endTime - newTime); | |
| 343 | + // 获取天、时、分、秒 | |
| 344 | + let day = parseInt(time / (60 * 60 * 24)); | |
| 345 | + let hou = parseInt(time % (60 * 60 * 24) / 3600); | |
| 346 | + let min = parseInt(time % (60 * 60 * 24) % 3600 / 60); | |
| 347 | + let sec = parseInt(time % (60 * 60 * 24) % 3600 % 60); | |
| 348 | + obj = { | |
| 349 | + day: this.timeFormat(day), | |
| 350 | + hou: this.timeFormat(hou), | |
| 351 | + min: this.timeFormat(min), | |
| 352 | + sec: this.timeFormat(sec), | |
| 353 | + hide: 1 | |
| 354 | + } | |
| 355 | + } else { | |
| 356 | + //活动已结束,全部设置为'00' | |
| 357 | + obj = {day: '00', hou: '00', min: '00', sec: '00'} | |
| 358 | + } | |
| 359 | + | |
| 360 | + var txt = "time_arr[" + idx_str[0] + "][" + idx_str[1] + "].djs"; | |
| 361 | + th.setData({[txt]: obj}); | |
| 362 | + } | |
| 363 | + }); | |
| 364 | + //var e={djs:obj}; | |
| 365 | + //arr_new.push(e); | |
| 341 | 366 | } |
| 342 | 367 | |
| 343 | - time_arr.push(arr_new); | |
| 344 | - | |
| 345 | - | |
| 368 | + //time_arr.push(arr_new); | |
| 346 | 369 | } |
| 347 | - | |
| 348 | - this.setData({time_arr:time_arr}); | |
| 370 | + //this.setData({time_arr:time_arr}); | |
| 349 | 371 | |
| 350 | 372 | }, |
| 351 | 373 | ... | ... |
packageC/pages/group_list/group_list.wxml
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <block wx:for="{{list}}" wx:for-item="p_item" wx:for-index="p_idx"> |
| 5 | 5 | |
| 6 | 6 | <block wx:for="{{p_item}}"> |
| 7 | - <view class="list-item" bindtap="goto" data-pidx="{{p_idx}}" data-index="{{index}}" > | |
| 7 | + <view id="l_item_{{p_idx}}_{{index}}" class="list-item" bindtap="goto" data-pidx="{{p_idx}}" data-index="{{index}}" > | |
| 8 | 8 | <view class="img-container"> |
| 9 | 9 | <image class="img-block" src="{{imghost + item.original_img}}" data-val="{{item.original_img}}" |
| 10 | 10 | data-errorimg="list[{{p_idx}}][{{index}}].original_img" binderror="bind_bnerr2" lazy-load="true"></image> | ... | ... |
pages/activity/pind_list/pind_list.js
| ... | ... | @@ -97,7 +97,7 @@ Page({ |
| 97 | 97 | |
| 98 | 98 | onHide: function () { |
| 99 | 99 | //--清理定时器-- |
| 100 | - clearInterval(this.timer); | |
| 100 | + clearInterval(this.data.timer); | |
| 101 | 101 | this.setData({ |
| 102 | 102 | isshow: 0 |
| 103 | 103 | }); |
| ... | ... | @@ -111,15 +111,15 @@ Page({ |
| 111 | 111 | //----倒计时函数----- |
| 112 | 112 | countDown() { |
| 113 | 113 | if (!this.data.goodlist) return false; |
| 114 | + if (!this.data.is_timer) return false; | |
| 115 | + | |
| 114 | 116 | var th = this; |
| 115 | 117 | // 获取当前时间,同时得到活动结束时间数组 |
| 116 | 118 | var newTime = ut.gettimestamp(); |
| 117 | 119 | var endTimeList = this.data.goodlist; |
| 118 | 120 | // 对结束时间进行处理渲染到页面 |
| 119 | 121 | for (var i = 0; i < endTimeList.length;i++){ |
| 120 | - var o = endTimeList[i]; | |
| 121 | - var endTime = o.end_time; | |
| 122 | - if(th.data.type==0) endTime = o.start_time; | |
| 122 | + | |
| 123 | 123 | |
| 124 | 124 | // 创建查询对象 |
| 125 | 125 | let query = wx.createSelectorQuery(); |
| ... | ... | @@ -134,6 +134,11 @@ Page({ |
| 134 | 134 | if (!target) return; |
| 135 | 135 | if (!target.id) return; |
| 136 | 136 | let idx= target.id.replace('kill-item',''); |
| 137 | + | |
| 138 | + var o = endTimeList[idx]; | |
| 139 | + var endTime = o.end_time; | |
| 140 | + if(th.data.type==0) endTime = o.start_time; | |
| 141 | + | |
| 137 | 142 | // 条件1:当目标顶部距离视口顶部距离小于视口的高度时 |
| 138 | 143 | // 条件2:当目标底部距离视口顶部距离大于0时 |
| 139 | 144 | // 当以上两个条件同时成立时,目标元素在视口中 | ... | ... |
pages/activity/seckill_list/seckill_list.js
| ... | ... | @@ -115,6 +115,7 @@ Page({ |
| 115 | 115 | |
| 116 | 116 | //----倒计时函数,优化定时器只显示在可视范围内的----- |
| 117 | 117 | countDown() { |
| 118 | + if (!this.data.goodlist) return false; | |
| 118 | 119 | if (!this.data.is_timer) return false; |
| 119 | 120 | |
| 120 | 121 | var th = this; |
| ... | ... | @@ -124,14 +125,11 @@ Page({ |
| 124 | 125 | if (endTimeList == null) return null |
| 125 | 126 | // 对结束时间进行处理渲染到页面 |
| 126 | 127 | for (var i = 0; i < endTimeList.length; i++) { |
| 128 | + var oo = endTimeList[i]; | |
| 129 | + if(!oo) continue; | |
| 127 | 130 | |
| 128 | 131 | if (!this.data.is_timer) break; |
| 129 | 132 | |
| 130 | - var o = endTimeList[i]; | |
| 131 | - if(!o) continue; | |
| 132 | - var endTime = o.end_time; | |
| 133 | - if (th.data.type == 0) endTime = o.start_time; | |
| 134 | - | |
| 135 | 133 | // 创建查询对象 |
| 136 | 134 | let query = wx.createSelectorQuery(); |
| 137 | 135 | // 获取目标元素,并获取目标元素的信息 |
| ... | ... | @@ -146,6 +144,11 @@ Page({ |
| 146 | 144 | if (!target.id) return; |
| 147 | 145 | |
| 148 | 146 | let idx= target.id.replace('kill-item',''); |
| 147 | + var o=endTimeList[idx]; | |
| 148 | + var endTime = o.end_time; | |
| 149 | + if (th.data.type == 0) endTime = o.start_time; | |
| 150 | + | |
| 151 | + | |
| 149 | 152 | // 条件1:当目标顶部距离视口顶部距离小于视口的高度时 |
| 150 | 153 | // 条件2:当目标底部距离视口顶部距离大于0时 |
| 151 | 154 | // 当以上两个条件同时成立时,目标元素在视口中 |
| ... | ... | @@ -187,8 +190,6 @@ Page({ |
| 187 | 190 | } |
| 188 | 191 | }); |
| 189 | 192 | |
| 190 | - | |
| 191 | - | |
| 192 | 193 | } |
| 193 | 194 | }, |
| 194 | 195 | ... | ... |