Commit cabe13681a5fa8467620ad32595bb9344b845c17
1 parent
7aaba81c
签到的优化,
Showing
3 changed files
with
147 additions
and
61 deletions
packageA/pages/checkin/checkin.js
... | ... | @@ -12,6 +12,9 @@ Page({ |
12 | 12 | day: '', |
13 | 13 | weekArr: ['日', '一', '二', '三', '四', '五', '六'], |
14 | 14 | dateArr: [], |
15 | + n_dateArr:[], //本月的日期 | |
16 | + s_dateArr:[], //上月的日期 | |
17 | + | |
15 | 18 | firstDay: '', |
16 | 19 | lastDay: '', |
17 | 20 | param: null, |
... | ... | @@ -52,10 +55,8 @@ Page({ |
52 | 55 | this.setDate(); |
53 | 56 | var res = wx.getSystemInfoSync(); |
54 | 57 | this.setData({ |
55 | - param: res.windowHeight / 12, | |
56 | - | |
58 | + param: res.windowHeight / 12, | |
57 | 59 | }) |
58 | - | |
59 | 60 | |
60 | 61 | // 判断会员是否授权登录, |
61 | 62 | // 没有登录则跳转到登录页, |
... | ... | @@ -103,14 +104,12 @@ Page({ |
103 | 104 | }); |
104 | 105 | }, |
105 | 106 | |
106 | - | |
107 | 107 | // 点击"我的积分"和"去购物"进行跳转 |
108 | 108 | goto(e) { |
109 | 109 | let url = e.target.dataset.url; |
110 | 110 | app.goto(url); |
111 | 111 | }, |
112 | 112 | |
113 | - | |
114 | 113 | // 点击显示签到规则 |
115 | 114 | showRules() { |
116 | 115 | if(this.data.isShowRules) { |
... | ... | @@ -127,34 +126,87 @@ Page({ |
127 | 126 | |
128 | 127 | // 加载签到记录 |
129 | 128 | loadCheckedRecord() { |
130 | - let newDateArr = this.data.dateArr; | |
129 | + let newDateArr=[]; | |
131 | 130 | let list; |
132 | 131 | let bqlist; |
132 | + //--判断什么日子是签到的,上个月的-- | |
133 | + if(this.data.res.qdsdaylist) { | |
134 | + list = this.data.res.qdsdaylist.split(','); | |
135 | + for(var i in this.data.s_dateArr){ | |
136 | + var item=this.data.s_dateArr[i]; | |
137 | + if(this.check_is_qd(item,list)){ | |
138 | + item.isCheckIn = true; | |
139 | + }else{ | |
140 | + item.isCheckIn = false; | |
141 | + } | |
142 | + } | |
143 | + } | |
144 | + newDateArr=newDateArr.concat(this.data.s_dateArr); | |
145 | + //--判断什么日子是签到的,这个月的-- | |
133 | 146 | if(this.data.res.qddaylist) { |
134 | 147 | list = this.data.res.qddaylist.split(','); |
135 | - for(let item of list) { | |
136 | - newDateArr[item-1].isCheckIn = true; | |
137 | - }; | |
148 | + for(var i in this.data.n_dateArr){ | |
149 | + var item=this.data.n_dateArr[i]; | |
150 | + if(this.check_is_qd(item,list)){ | |
151 | + item.isCheckIn = true; | |
152 | + }else{ | |
153 | + item.isCheckIn = false; | |
154 | + } | |
155 | + } | |
138 | 156 | } |
157 | + newDateArr=newDateArr.concat(this.data.n_dateArr); | |
158 | + | |
159 | + //--判断什么日子是要补签的-- | |
139 | 160 | if(this.data.res.curbqdaynum) { |
140 | 161 | bqlist = this.data.res.curbqdaynum.split(','); |
141 | - for(let item of bqlist) { | |
142 | - var date = new Date(item); | |
143 | - newDateArr[date.getDate()-1].isBq = true; | |
144 | - } | |
162 | + for(var i in newDateArr){ | |
163 | + var item=newDateArr[i]; | |
164 | + if(this.check_is_bq(item,bqlist)){ | |
165 | + item.isBq = true; | |
166 | + }else{ | |
167 | + item.isBq = false; | |
168 | + } | |
169 | + } | |
145 | 170 | } |
146 | 171 | this.setData({ |
147 | 172 | dateArr: newDateArr |
148 | 173 | }); |
149 | 174 | }, |
150 | 175 | |
176 | + | |
177 | + //判断是不是同一个日期,签到的 | |
178 | + check_is_qd(item,bqlist){ | |
179 | + for(var i in bqlist){ | |
180 | + var c_item=JSON.parse(JSON.stringify(item)); | |
181 | + if(c_item.num<10) c_item.num="0"+c_item.num; | |
182 | + if(c_item.num==bqlist[i]){ | |
183 | + return true; | |
184 | + } | |
185 | + } | |
186 | + return false; | |
187 | + }, | |
188 | + | |
189 | + //判断是不是同一个日期,补签到的 | |
190 | + check_is_bq(item,bqlist){ | |
191 | + for(var i in bqlist){ | |
192 | + if(item.date==bqlist[i]){ | |
193 | + return true; | |
194 | + } | |
195 | + } | |
196 | + return false; | |
197 | + }, | |
198 | + | |
151 | 199 | // 点击签到 |
152 | 200 | checkInToday() { |
153 | 201 | const self = this; |
154 | 202 | // 获取今天的签到状态 |
155 | - let isCheckInToday = this.data.dateArr[this.data.day-1].isCheckIn; | |
203 | + //let isCheckInToday = this.data.dateArr[this.data.day-1].isCheckIn; | |
204 | + var ck=this.data.day; | |
205 | + if(parseInt(ck)<10) ck="0"+ck; | |
206 | + var isCheckInToday=this.data.res.qddaylist.indexOf(ck); | |
207 | + | |
156 | 208 | // 如果还没签到, 可以点击签到 |
157 | - if(!isCheckInToday) { | |
209 | + if(isCheckInToday==-1) { | |
158 | 210 | app.request.promisePost('/api/weshop/qdrecord/saveQd', { |
159 | 211 | data: { |
160 | 212 | store_id: app.globalData.setting.stoid, |
... | ... | @@ -163,8 +215,16 @@ Page({ |
163 | 215 | }).then(res => { |
164 | 216 | // 改变签到状态,由false置为true |
165 | 217 | // let newDateArr = self.data.dateArr; |
166 | - // newDateArr[self.data.day-1].isCheckIn = true; | |
167 | - | |
218 | + // newDateArr[self.data.day-1].isCheckIn = true; | |
219 | + | |
220 | + for(var i in self.data.dateArr) { | |
221 | + self.data.dateArr[i].isCheckIn=false; | |
222 | + self.data.dateArr[i].isBq=false; | |
223 | + } | |
224 | + self.setData({ | |
225 | + dateArr: self.data.dateArr | |
226 | + }); | |
227 | + | |
168 | 228 | self.loadQd(function() { |
169 | 229 | wx.showToast({ |
170 | 230 | title: self.data.res.qdintro, |
... | ... | @@ -198,20 +258,23 @@ Page({ |
198 | 258 | } |
199 | 259 | }).then(res => { |
200 | 260 | // 改变签到状态,由false置为true |
201 | - // let newDateArr = self.data.dateArr; | |
202 | - // newDateArr[self.data.day-1].isCheckIn = true; | |
203 | - var bqlist = self.data.res.curbqdaynum.split(',').sort(); | |
204 | - var list = []; | |
261 | + // let newDateArr = self.data.dateArr; | |
262 | + // newDateArr[self.data.day-1].isCheckIn = true; | |
263 | + //var bqlist = self.data.res.curbqdaynum.split(',').sort(); | |
264 | + //var list = []; | |
265 | + /*-- | |
205 | 266 | for(let item of bqlist) { |
206 | 267 | var date = new Date(item); |
207 | 268 | list.push(date.getDate()); |
208 | - } | |
209 | - | |
210 | - self.data.dateArr[list[0]-1].isBq = false; | |
269 | + }--*/ | |
270 | + | |
271 | + for(var i in self.data.dateArr) { | |
272 | + self.data.dateArr[i].isCheckIn=false; | |
273 | + self.data.dateArr[i].isBq=false; | |
274 | + } | |
211 | 275 | self.setData({ |
212 | 276 | dateArr: self.data.dateArr |
213 | - }); | |
214 | - | |
277 | + }); | |
215 | 278 | self.loadQd(function() { |
216 | 279 | self.data.flag = true; |
217 | 280 | wx.showToast({ |
... | ... | @@ -227,10 +290,6 @@ Page({ |
227 | 290 | } |
228 | 291 | }, |
229 | 292 | |
230 | - | |
231 | - | |
232 | - | |
233 | - | |
234 | 293 | getDate: function() { //获取当月日期 |
235 | 294 | var mydate = new Date(); |
236 | 295 | var year = mydate.getFullYear(); |
... | ... | @@ -240,7 +299,7 @@ Page({ |
240 | 299 | this.data.month = months; |
241 | 300 | this.data.day = mydate.getDate(); //获取当月日期: 1~31 |
242 | 301 | var fist = new Date(year, month, 1); |
243 | - this.data.firstDay = fist.getDay(); //获取当月第一天 | |
302 | + this.data.firstDay = fist.getDay(); //获取当月第一天 | |
244 | 303 | var last = new Date(year, months, 0); //0表示当月最后一天 |
245 | 304 | this.data.lastDay = last.getDate(); //获取当月最后一天 |
246 | 305 | |
... | ... | @@ -249,22 +308,43 @@ Page({ |
249 | 308 | month: this.data.month, |
250 | 309 | day: this.data.day, |
251 | 310 | firstDay: this.data.firstDay, |
252 | - lastDay: this.data.lastDay | |
311 | + lastDay: this.data.lastDay, | |
312 | + fist:fist | |
253 | 313 | }) |
254 | 314 | console.log("今天:" + this.data.day); |
255 | 315 | }, |
256 | 316 | |
257 | 317 | setDate: function() { |
258 | 318 | var day; |
259 | - for (var i = 1; i < this.data.lastDay + 1; i++) { | |
260 | - day = { | |
261 | - num: i, | |
262 | - }; | |
263 | - this.data.dateArr.push(day); | |
319 | + for(var i=0;i<this.data.firstDay;i++){ | |
320 | + //获取前几天的时间数组 | |
321 | + var arr_d=this.getNextDate(this.data.fist,i-this.data.firstDay) | |
322 | + day = {num: arr_d[1],date:arr_d[0]}; | |
323 | + this.data.s_dateArr.push(day); | |
324 | + } | |
325 | + | |
326 | + for (var i = 1; i < this.data.lastDay + 1; i++) { | |
327 | + var date=this.data.month+""; | |
328 | + if(this.data.month<10) date="0"+date; | |
329 | + if(i<10) { | |
330 | + date=date+"-0"+i; | |
331 | + }else{ | |
332 | + date=date+"-"+i; | |
333 | + } | |
334 | + day = {num: i,date:date}; | |
335 | + this.data.n_dateArr.push(day); | |
264 | 336 | } |
265 | - this.setData({ | |
266 | - dateArr: this.data.dateArr, | |
267 | - }); | |
268 | 337 | }, |
269 | 338 | |
339 | + //获取相隔是多少天的日期 | |
340 | + getNextDate(date,day) { | |
341 | + var dd = date; | |
342 | + dd.setDate(dd.getDate() + day); | |
343 | + //var y = dd.getFullYear(); | |
344 | + var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1; | |
345 | + var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); | |
346 | + //return y + "-" + m + "-" + d; | |
347 | + return [m + "-" + d,dd.getDate()]; | |
348 | + } | |
349 | + | |
270 | 350 | }) | ... | ... |
packageA/pages/checkin/checkin.wxml
... | ... | @@ -8,31 +8,31 @@ |
8 | 8 | </view> |
9 | 9 | |
10 | 10 | <view class="list flex"> |
11 | - <view class="list-item {{dateArr[myUtil.setDate(year, res.sday2, 0)-1].isCheckIn ? 'active':''}}"> | |
11 | + <view class="list-item active}}"> | |
12 | 12 | <view class="circle">+{{res.cday1}}</view> |
13 | - <view class="fs26">{{myUtil.setDate(year, res.sday2, 0)}}日</view> | |
13 | + <view class="fs26">{{res.sday2}}</view> | |
14 | 14 | </view> |
15 | - <view class="list-item {{dateArr[myUtil.setDate(year, res.sday3, 0)-1].isCheckIn ? 'active':''}}"> | |
15 | + <view class="list-item {{myUtil.setDate_is_act(year, res.sday3, 0,res.qddaylist)? 'active':''}}"> | |
16 | 16 | <view class="circle">+{{res.daynum}}</view> |
17 | 17 | <view class="fs26">今日</view> |
18 | 18 | </view> |
19 | - <view class="list-item {{dateArr[myUtil.setDate(year, res.sday3, 1)-1].isCheckIn ? 'active':''}}"> | |
19 | + <view class="list-item {{myUtil.setDate_is_act(year, res.sday3, 1,res.qddaylist)? 'active':''}}"> | |
20 | 20 | <view class="circle">+{{res.tdayc1}}</view> |
21 | 21 | <view class="fs26">明日</view> |
22 | 22 | </view> |
23 | - <view class="list-item {{dateArr[myUtil.setDate(year, res.sday3, 2)-1].isCheckIn ? 'active':''}}"> | |
23 | + <view class="list-item {{myUtil.setDate_is_act(year, res.sday3, 2,res.qddaylist)? 'active':''}}"> | |
24 | 24 | <view class="circle">+{{res.tdayc2}}</view> |
25 | 25 | <view class="fs26">{{myUtil.setDate(year, res.sday3, 2)}}日</view> |
26 | 26 | </view> |
27 | - <view class="list-item {{dateArr[myUtil.setDate(year, res.sday3, 3)-1].isCheckIn ? 'active':''}}"> | |
27 | + <view class="list-item {{myUtil.setDate_is_act(year, res.sday3, 3,res.qddaylist)? 'active':''}}"> | |
28 | 28 | <view class="circle">+{{res.tdayc3}}</view> |
29 | 29 | <view class="fs26">{{myUtil.setDate(year, res.sday3, 3)}}日</view> |
30 | 30 | </view> |
31 | - <view class="list-item {{dateArr[myUtil.setDate(year, res.sday3, 4)-1].isCheckIn ? 'active':''}}"> | |
31 | + <view class="list-item {{myUtil.setDate_is_act(year, res.sday3, 4,res.qddaylist)? 'active':''}}"> | |
32 | 32 | <view class="circle">+{{res.tdayc4}}</view> |
33 | 33 | <view class="fs26">{{myUtil.setDate(year, res.sday3, 4)}}日</view> |
34 | 34 | </view> |
35 | - <view class="list-item {{dateArr[myUtil.setDate(year, res.sday3, 5)-1].isCheckIn ? 'active':''}}"> | |
35 | + <view class="list-item {{myUtil.setDate_is_act(year, res.sday3, 5,res.qddaylist)? 'active':''}}"> | |
36 | 36 | <view class="circle">+{{res.tdayc5}}</view> |
37 | 37 | <view class="fs26">{{myUtil.setDate(year, res.sday3, 5)}}日</view> |
38 | 38 | </view> |
... | ... | @@ -40,12 +40,12 @@ |
40 | 40 | |
41 | 41 | <view class="btn-container"> |
42 | 42 | <view class="btn" bindtap="checkInToday" wx:if="{{isLogin}}"> |
43 | - <text class="iconfont icon-rili"></text>{{!dateArr[day-1].isCheckIn ? '立即签到':'今日已签到'}} | |
43 | + <text class="iconfont icon-rili"></text>{{!myUtil.setDate_is_act(year, res.sday3, 0,res.qddaylist) ? '立即签到':'今日已签到'}} | |
44 | 44 | </view> |
45 | 45 | <view class="btn" bindtap="isLogin" wx:else> |
46 | 46 | <text class="iconfont icon-rili"></text>签到请登录 |
47 | 47 | </view> |
48 | - <view class="btn" wx:if="{{res.curbqdaynum}}" bindtap="reCheckIn"><text class="iconfont icon-buqian"></text>补签(-10分)</view> | |
48 | + <view class="btn" wx:if="{{res.curbqdaynum}}" bindtap="reCheckIn"><text class="iconfont icon-buqian"></text>补签(-{{res.getBQIntegral}}分)</view> | |
49 | 49 | </view> |
50 | 50 | |
51 | 51 | |
... | ... | @@ -60,7 +60,8 @@ |
60 | 60 | <view class="calendar-wrapper"> |
61 | 61 | <view class="calendar-title"> |
62 | 62 | <view>{{year}}年{{month}}月</view> |
63 | - <view class="fs24" style="color:#999;font-weight:bold">补签卡:{{res.getkbqnum}}</view> | |
63 | + <!-- 有补签,才要补签卡 --> | |
64 | + <view wx:if="{{res.curbqdaynum}}" class="fs24" style="color:#999;font-weight:bold">补签卡:{{res.getkbqnum}}</view> | |
64 | 65 | </view> |
65 | 66 | <view class="calendar"> |
66 | 67 | <!-- <view class="selectDate"> --> |
... | ... | @@ -77,7 +78,7 @@ |
77 | 78 | <view class="date"> |
78 | 79 | <block wx:for="{{dateArr}}" wx:for-index="index" wx:for-item="item" wx:key="key"> |
79 | 80 | <!-- <view style="{{index ==0?'margin-left:calc(100%/7 * ' + firstDay + ');':''}}width:calc(100%/7);line-height:80rpx;" class="{{index+1==day?'today':''}} {{index+1==day&&isClock?'clockOn':''}}" ><view class="day">{{item}}</view></view> --> |
80 | - <view style="{{index ==0?'margin-left:calc(100%/7 * ' + firstDay + ');':''}}width:calc(100%/7);line-height:80rpx;" class="{{item.isCheckIn ? 'active':''}} {{res.curbqdaynum&&item.isBq ? 'bq':''}}" bindtap="clickDay" data-day="{{item.num}}"> | |
81 | + <view style="{{index ==0?'margin-left:calc(100%/7 * 0);':''}}width:calc(100%/7);line-height:80rpx;" class="{{item.isCheckIn ? 'active':''}} {{res.curbqdaynum&&item.isBq ? 'bq':''}}" bindtap="clickDay" data-day="{{item.num}}"> | |
81 | 82 | <view class="day">{{item.num}}</view> |
82 | 83 | </view> |
83 | 84 | </block> | ... | ... |
packageA/pages/checkin/checkin.wxs
1 | 1 | var myUtil = { |
2 | - setDate: function(year, startDate, num) { | |
2 | + setDate_is_act: function(year, startDate, num,qdlist) { | |
3 | 3 | var date = getDate(year + '-' + startDate); |
4 | 4 | date.setDate(date.getDate() + num); |
5 | 5 | date = getDate(date).getDate(); |
6 | - return date; | |
6 | + if(date<10) date="0"+date; | |
7 | + if(!qdlist) return false; | |
8 | + if(qdlist.indexOf(date)!=-1){ | |
9 | + return true | |
10 | + } | |
11 | + return false; | |
7 | 12 | }, |
8 | 13 | |
9 | - // dateDiff: function(firstDate,secondDate) { | |
10 | - // var firstDate = new Date(firstDate); | |
11 | - // var secondDate = new Date(secondDate); | |
12 | - // var diff = Math.abs(firstDate.getTime() - secondDate.getTime()); | |
13 | - // var result = parseInt(diff / (1000 * 60 * 60 * 24)); | |
14 | - // return result; | |
15 | - // }, | |
14 | + setDate:function(year, startDate, num){ | |
15 | + var date = getDate(year + '-' + startDate); | |
16 | + date.setDate(date.getDate() + num); | |
17 | + date = getDate(date).getDate(); | |
18 | + return date; | |
19 | + } | |
16 | 20 | }; |
17 | 21 | |
18 | 22 | module.exports = { |
19 | 23 | setDate: myUtil.setDate, |
24 | + setDate_is_act: myUtil.setDate_is_act, | |
20 | 25 | }; |
21 | 26 | \ No newline at end of file | ... | ... |