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 |