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,7 +19,8 @@ Page({ | ||
| 19 | noMore: false, // 检测是否有更多数据,true为没有更多数据,false为还有数据 | 19 | noMore: false, // 检测是否有更多数据,true为没有更多数据,false为还有数据 |
| 20 | pageNum: 1, // 当前页数 | 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,8 +297,6 @@ Page({ | ||
| 296 | var th = this; | 297 | var th = this; |
| 297 | // 获取当前时间,同时得到活动结束时间数组 | 298 | // 获取当前时间,同时得到活动结束时间数组 |
| 298 | let newTime = ut.gettimestamp(); | 299 | let newTime = ut.gettimestamp(); |
| 299 | - | ||
| 300 | - | ||
| 301 | var time_arr=[]; | 300 | var time_arr=[]; |
| 302 | 301 | ||
| 303 | for (let j = 0; j < this.data.list.length; j++) { | 302 | for (let j = 0; j < this.data.list.length; j++) { |
| @@ -309,43 +308,66 @@ Page({ | @@ -309,43 +308,66 @@ Page({ | ||
| 309 | // 对结束时间进行处理渲染到页面 | 308 | // 对结束时间进行处理渲染到页面 |
| 310 | for (var i = 0; i < endTimeList.length; i++) { | 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 | // if(th.data.type==0) endTime = o.start_time; | 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,7 +4,7 @@ | ||
| 4 | <block wx:for="{{list}}" wx:for-item="p_item" wx:for-index="p_idx"> | 4 | <block wx:for="{{list}}" wx:for-item="p_item" wx:for-index="p_idx"> |
| 5 | 5 | ||
| 6 | <block wx:for="{{p_item}}"> | 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 | <view class="img-container"> | 8 | <view class="img-container"> |
| 9 | <image class="img-block" src="{{imghost + item.original_img}}" data-val="{{item.original_img}}" | 9 | <image class="img-block" src="{{imghost + item.original_img}}" data-val="{{item.original_img}}" |
| 10 | data-errorimg="list[{{p_idx}}][{{index}}].original_img" binderror="bind_bnerr2" lazy-load="true"></image> | 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,7 +97,7 @@ Page({ | ||
| 97 | 97 | ||
| 98 | onHide: function () { | 98 | onHide: function () { |
| 99 | //--清理定时器-- | 99 | //--清理定时器-- |
| 100 | - clearInterval(this.timer); | 100 | + clearInterval(this.data.timer); |
| 101 | this.setData({ | 101 | this.setData({ |
| 102 | isshow: 0 | 102 | isshow: 0 |
| 103 | }); | 103 | }); |
| @@ -111,15 +111,15 @@ Page({ | @@ -111,15 +111,15 @@ Page({ | ||
| 111 | //----倒计时函数----- | 111 | //----倒计时函数----- |
| 112 | countDown() { | 112 | countDown() { |
| 113 | if (!this.data.goodlist) return false; | 113 | if (!this.data.goodlist) return false; |
| 114 | + if (!this.data.is_timer) return false; | ||
| 115 | + | ||
| 114 | var th = this; | 116 | var th = this; |
| 115 | // 获取当前时间,同时得到活动结束时间数组 | 117 | // 获取当前时间,同时得到活动结束时间数组 |
| 116 | var newTime = ut.gettimestamp(); | 118 | var newTime = ut.gettimestamp(); |
| 117 | var endTimeList = this.data.goodlist; | 119 | var endTimeList = this.data.goodlist; |
| 118 | // 对结束时间进行处理渲染到页面 | 120 | // 对结束时间进行处理渲染到页面 |
| 119 | for (var i = 0; i < endTimeList.length;i++){ | 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 | let query = wx.createSelectorQuery(); | 125 | let query = wx.createSelectorQuery(); |
| @@ -134,6 +134,11 @@ Page({ | @@ -134,6 +134,11 @@ Page({ | ||
| 134 | if (!target) return; | 134 | if (!target) return; |
| 135 | if (!target.id) return; | 135 | if (!target.id) return; |
| 136 | let idx= target.id.replace('kill-item',''); | 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 | // 条件1:当目标顶部距离视口顶部距离小于视口的高度时 | 142 | // 条件1:当目标顶部距离视口顶部距离小于视口的高度时 |
| 138 | // 条件2:当目标底部距离视口顶部距离大于0时 | 143 | // 条件2:当目标底部距离视口顶部距离大于0时 |
| 139 | // 当以上两个条件同时成立时,目标元素在视口中 | 144 | // 当以上两个条件同时成立时,目标元素在视口中 |
pages/activity/seckill_list/seckill_list.js
| @@ -115,6 +115,7 @@ Page({ | @@ -115,6 +115,7 @@ Page({ | ||
| 115 | 115 | ||
| 116 | //----倒计时函数,优化定时器只显示在可视范围内的----- | 116 | //----倒计时函数,优化定时器只显示在可视范围内的----- |
| 117 | countDown() { | 117 | countDown() { |
| 118 | + if (!this.data.goodlist) return false; | ||
| 118 | if (!this.data.is_timer) return false; | 119 | if (!this.data.is_timer) return false; |
| 119 | 120 | ||
| 120 | var th = this; | 121 | var th = this; |
| @@ -124,14 +125,11 @@ Page({ | @@ -124,14 +125,11 @@ Page({ | ||
| 124 | if (endTimeList == null) return null | 125 | if (endTimeList == null) return null |
| 125 | // 对结束时间进行处理渲染到页面 | 126 | // 对结束时间进行处理渲染到页面 |
| 126 | for (var i = 0; i < endTimeList.length; i++) { | 127 | for (var i = 0; i < endTimeList.length; i++) { |
| 128 | + var oo = endTimeList[i]; | ||
| 129 | + if(!oo) continue; | ||
| 127 | 130 | ||
| 128 | if (!this.data.is_timer) break; | 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 | let query = wx.createSelectorQuery(); | 134 | let query = wx.createSelectorQuery(); |
| 137 | // 获取目标元素,并获取目标元素的信息 | 135 | // 获取目标元素,并获取目标元素的信息 |
| @@ -146,6 +144,11 @@ Page({ | @@ -146,6 +144,11 @@ Page({ | ||
| 146 | if (!target.id) return; | 144 | if (!target.id) return; |
| 147 | 145 | ||
| 148 | let idx= target.id.replace('kill-item',''); | 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 | // 条件1:当目标顶部距离视口顶部距离小于视口的高度时 | 152 | // 条件1:当目标顶部距离视口顶部距离小于视口的高度时 |
| 150 | // 条件2:当目标底部距离视口顶部距离大于0时 | 153 | // 条件2:当目标底部距离视口顶部距离大于0时 |
| 151 | // 当以上两个条件同时成立时,目标元素在视口中 | 154 | // 当以上两个条件同时成立时,目标元素在视口中 |
| @@ -187,8 +190,6 @@ Page({ | @@ -187,8 +190,6 @@ Page({ | ||
| 187 | } | 190 | } |
| 188 | }); | 191 | }); |
| 189 | 192 | ||
| 190 | - | ||
| 191 | - | ||
| 192 | } | 193 | } |
| 193 | }, | 194 | }, |
| 194 | 195 |