Commit cabe13681a5fa8467620ad32595bb9344b845c17

Authored by yvan.ni
1 parent 7aaba81c

签到的优化,

packageA/pages/checkin/checkin.js
@@ -12,6 +12,9 @@ Page({ @@ -12,6 +12,9 @@ Page({
12 day: '', 12 day: '',
13 weekArr: ['日', '一', '二', '三', '四', '五', '六'], 13 weekArr: ['日', '一', '二', '三', '四', '五', '六'],
14 dateArr: [], 14 dateArr: [],
  15 + n_dateArr:[], //本月的日期
  16 + s_dateArr:[], //上月的日期
  17 +
15 firstDay: '', 18 firstDay: '',
16 lastDay: '', 19 lastDay: '',
17 param: null, 20 param: null,
@@ -52,10 +55,8 @@ Page({ @@ -52,10 +55,8 @@ Page({
52 this.setDate(); 55 this.setDate();
53 var res = wx.getSystemInfoSync(); 56 var res = wx.getSystemInfoSync();
54 this.setData({ 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,14 +104,12 @@ Page({
103 }); 104 });
104 }, 105 },
105 106
106 -  
107 // 点击"我的积分"和"去购物"进行跳转 107 // 点击"我的积分"和"去购物"进行跳转
108 goto(e) { 108 goto(e) {
109 let url = e.target.dataset.url; 109 let url = e.target.dataset.url;
110 app.goto(url); 110 app.goto(url);
111 }, 111 },
112 112
113 -  
114 // 点击显示签到规则 113 // 点击显示签到规则
115 showRules() { 114 showRules() {
116 if(this.data.isShowRules) { 115 if(this.data.isShowRules) {
@@ -127,34 +126,87 @@ Page({ @@ -127,34 +126,87 @@ Page({
127 126
128 // 加载签到记录 127 // 加载签到记录
129 loadCheckedRecord() { 128 loadCheckedRecord() {
130 - let newDateArr = this.data.dateArr; 129 + let newDateArr=[];
131 let list; 130 let list;
132 let bqlist; 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 if(this.data.res.qddaylist) { 146 if(this.data.res.qddaylist) {
134 list = this.data.res.qddaylist.split(','); 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 if(this.data.res.curbqdaynum) { 160 if(this.data.res.curbqdaynum) {
140 bqlist = this.data.res.curbqdaynum.split(','); 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 this.setData({ 171 this.setData({
147 dateArr: newDateArr 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 checkInToday() { 200 checkInToday() {
153 const self = this; 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 app.request.promisePost('/api/weshop/qdrecord/saveQd', { 210 app.request.promisePost('/api/weshop/qdrecord/saveQd', {
159 data: { 211 data: {
160 store_id: app.globalData.setting.stoid, 212 store_id: app.globalData.setting.stoid,
@@ -163,8 +215,16 @@ Page({ @@ -163,8 +215,16 @@ Page({
163 }).then(res => { 215 }).then(res => {
164 // 改变签到状态,由false置为true 216 // 改变签到状态,由false置为true
165 // let newDateArr = self.data.dateArr; 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 self.loadQd(function() { 228 self.loadQd(function() {
169 wx.showToast({ 229 wx.showToast({
170 title: self.data.res.qdintro, 230 title: self.data.res.qdintro,
@@ -198,20 +258,23 @@ Page({ @@ -198,20 +258,23 @@ Page({
198 } 258 }
199 }).then(res => { 259 }).then(res => {
200 // 改变签到状态,由false置为true 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 for(let item of bqlist) { 266 for(let item of bqlist) {
206 var date = new Date(item); 267 var date = new Date(item);
207 list.push(date.getDate()); 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 self.setData({ 275 self.setData({
212 dateArr: self.data.dateArr 276 dateArr: self.data.dateArr
213 - });  
214 - 277 + });
215 self.loadQd(function() { 278 self.loadQd(function() {
216 self.data.flag = true; 279 self.data.flag = true;
217 wx.showToast({ 280 wx.showToast({
@@ -227,10 +290,6 @@ Page({ @@ -227,10 +290,6 @@ Page({
227 } 290 }
228 }, 291 },
229 292
230 -  
231 -  
232 -  
233 -  
234 getDate: function() { //获取当月日期 293 getDate: function() { //获取当月日期
235 var mydate = new Date(); 294 var mydate = new Date();
236 var year = mydate.getFullYear(); 295 var year = mydate.getFullYear();
@@ -240,7 +299,7 @@ Page({ @@ -240,7 +299,7 @@ Page({
240 this.data.month = months; 299 this.data.month = months;
241 this.data.day = mydate.getDate(); //获取当月日期: 1~31 300 this.data.day = mydate.getDate(); //获取当月日期: 1~31
242 var fist = new Date(year, month, 1); 301 var fist = new Date(year, month, 1);
243 - this.data.firstDay = fist.getDay(); //获取当月第一天 302 + this.data.firstDay = fist.getDay(); //获取当月第一天
244 var last = new Date(year, months, 0); //0表示当月最后一天 303 var last = new Date(year, months, 0); //0表示当月最后一天
245 this.data.lastDay = last.getDate(); //获取当月最后一天 304 this.data.lastDay = last.getDate(); //获取当月最后一天
246 305
@@ -249,22 +308,43 @@ Page({ @@ -249,22 +308,43 @@ Page({
249 month: this.data.month, 308 month: this.data.month,
250 day: this.data.day, 309 day: this.data.day,
251 firstDay: this.data.firstDay, 310 firstDay: this.data.firstDay,
252 - lastDay: this.data.lastDay 311 + lastDay: this.data.lastDay,
  312 + fist:fist
253 }) 313 })
254 console.log("今天:" + this.data.day); 314 console.log("今天:" + this.data.day);
255 }, 315 },
256 316
257 setDate: function() { 317 setDate: function() {
258 var day; 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,31 +8,31 @@
8 </view> 8 </view>
9 9
10 <view class="list flex"> 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 <view class="circle">+{{res.cday1}}</view> 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 </view> 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 <view class="circle">+{{res.daynum}}</view> 16 <view class="circle">+{{res.daynum}}</view>
17 <view class="fs26">今日</view> 17 <view class="fs26">今日</view>
18 </view> 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 <view class="circle">+{{res.tdayc1}}</view> 20 <view class="circle">+{{res.tdayc1}}</view>
21 <view class="fs26">明日</view> 21 <view class="fs26">明日</view>
22 </view> 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 <view class="circle">+{{res.tdayc2}}</view> 24 <view class="circle">+{{res.tdayc2}}</view>
25 <view class="fs26">{{myUtil.setDate(year, res.sday3, 2)}}日</view> 25 <view class="fs26">{{myUtil.setDate(year, res.sday3, 2)}}日</view>
26 </view> 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 <view class="circle">+{{res.tdayc3}}</view> 28 <view class="circle">+{{res.tdayc3}}</view>
29 <view class="fs26">{{myUtil.setDate(year, res.sday3, 3)}}日</view> 29 <view class="fs26">{{myUtil.setDate(year, res.sday3, 3)}}日</view>
30 </view> 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 <view class="circle">+{{res.tdayc4}}</view> 32 <view class="circle">+{{res.tdayc4}}</view>
33 <view class="fs26">{{myUtil.setDate(year, res.sday3, 4)}}日</view> 33 <view class="fs26">{{myUtil.setDate(year, res.sday3, 4)}}日</view>
34 </view> 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 <view class="circle">+{{res.tdayc5}}</view> 36 <view class="circle">+{{res.tdayc5}}</view>
37 <view class="fs26">{{myUtil.setDate(year, res.sday3, 5)}}日</view> 37 <view class="fs26">{{myUtil.setDate(year, res.sday3, 5)}}日</view>
38 </view> 38 </view>
@@ -40,12 +40,12 @@ @@ -40,12 +40,12 @@
40 40
41 <view class="btn-container"> 41 <view class="btn-container">
42 <view class="btn" bindtap="checkInToday" wx:if="{{isLogin}}"> 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 </view> 44 </view>
45 <view class="btn" bindtap="isLogin" wx:else> 45 <view class="btn" bindtap="isLogin" wx:else>
46 <text class="iconfont icon-rili"></text>签到请登录 46 <text class="iconfont icon-rili"></text>签到请登录
47 </view> 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 </view> 49 </view>
50 50
51 51
@@ -60,7 +60,8 @@ @@ -60,7 +60,8 @@
60 <view class="calendar-wrapper"> 60 <view class="calendar-wrapper">
61 <view class="calendar-title"> 61 <view class="calendar-title">
62 <view>{{year}}年{{month}}月</view> 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 </view> 65 </view>
65 <view class="calendar"> 66 <view class="calendar">
66 <!-- <view class="selectDate"> --> 67 <!-- <view class="selectDate"> -->
@@ -77,7 +78,7 @@ @@ -77,7 +78,7 @@
77 <view class="date"> 78 <view class="date">
78 <block wx:for="{{dateArr}}" wx:for-index="index" wx:for-item="item" wx:key="key"> 79 <block wx:for="{{dateArr}}" wx:for-index="index" wx:for-item="item" wx:key="key">
79 <!-- <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="{{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 <view class="day">{{item.num}}</view> 82 <view class="day">{{item.num}}</view>
82 </view> 83 </view>
83 </block> 84 </block>
packageA/pages/checkin/checkin.wxs
1 var myUtil = { 1 var myUtil = {
2 - setDate: function(year, startDate, num) { 2 + setDate_is_act: function(year, startDate, num,qdlist) {
3 var date = getDate(year + '-' + startDate); 3 var date = getDate(year + '-' + startDate);
4 date.setDate(date.getDate() + num); 4 date.setDate(date.getDate() + num);
5 date = getDate(date).getDate(); 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 module.exports = { 22 module.exports = {
19 setDate: myUtil.setDate, 23 setDate: myUtil.setDate,
  24 + setDate_is_act: myUtil.setDate_is_act,
20 }; 25 };
21 \ No newline at end of file 26 \ No newline at end of file