Commit cabe13681a5fa8467620ad32595bb9344b845c17

Authored by yvan.ni
1 parent 7aaba81c

签到的优化,

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
... ...