checkin.js 8.11 KB
// packageA//pages/checkin/checkin.js
const app = getApp();
let self;
Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		year: '',
		month: '',
		day: '',
		weekArr: ['日', '一', '二', '三', '四', '五', '六'],
		dateArr: [],
		n_dateArr:[],  //本月的日期
		s_dateArr:[],  //上月的日期
		
		firstDay: '',
		lastDay: '',
		param: null,
		clockNum: 3,
		
		res: null,
		isShowRules: false,
		isCheckIn: false,
		checkInDays: 0,			//连续签到天数
		integral: 0,				//积分
		checkInNums: 0,		  //补签次数
		isCheckInDay: '',
		
		flag: true,
		isLogin: false,
		
	},
	
	loadQd(callback) {
		app.request.get('/api/weshop/qdrecord/getUser/'+ app.globalData.setting.stoid + '/' + app.globalData.user_id, {
		  success: function (res) {
			    if(res.data.code==0){
					if(callback) callback();
					self.setData({
						res: res.data.data
					});
					self.loadCheckedRecord();
				}else{
					wx.showToast({
					  title: "网络繁忙,请重试",
					  icon: 'none',
					  duration: 2000
					})
				}
		  },
		});
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function(options) {
		console.log('执行onload');
		self = this;
		this.getDate();
		this.setDate();
		var res = wx.getSystemInfoSync();
		this.setData({
			param: res.windowHeight / 12,			
		})
		
		// 判断会员是否授权登录,
		// 没有登录则跳转到登录页,
		// 已登录则设置已登录状态,请求加载签到数据
		this.isLogin().then(function() {
			self.setData({
				isLogin: true
			});
			self.loadQd();
		});
		
		
	},
	
	onShow() {
		if(app.globalData.userInfo instanceof Object) {
			if(this.data.isLogin) {
				return;
			} else {
				this.setData({
					isLogin: true
				});
				this.loadQd();
			};
		}
	},
	
	onHide() {
		console.log('执行onHide');
	},
	
	// 是否登录
	isLogin() {
		return new Promise(function(resolve, reject) {
			let user_info = getApp().globalData.userInfo;
			if (user_info == null || user_info.mobile == undefined || user_info.mobile == "" || user_info.mobile == null) {
				wx.navigateTo({
					url: '/pages/togoin/togoin',
				})
				return false;
			} else {
				resolve();
			};
		});
	},

	// 点击"我的积分"和"去购物"进行跳转
	goto(e) {
		let url = e.target.dataset.url;
		app.goto(url);
	},
	
	// 点击显示签到规则
	showRules() {
		if(this.data.isShowRules) {
			this.setData({
				isShowRules: false
			});
		} else {
			this.setData({
				isShowRules: true
			});
		}
	},
	
	
	// 加载签到记录
	loadCheckedRecord() {
        let newDateArr=[]; 
		let list;
		let bqlist;
		//--判断什么日子是签到的,上个月的--
		if(this.data.res && this.data.res.qdsdaylist) {
			list = this.data.res.qdsdaylist.split(',');
			for(var i in this.data.s_dateArr){
				var item=this.data.s_dateArr[i];
				if(this.check_is_qd(item,list)){
					item.isCheckIn = true;
				}else{
					item.isCheckIn = false;
				}
			}
		}	
		newDateArr=newDateArr.concat(this.data.s_dateArr);			
		//--判断什么日子是签到的,这个月的--
		if(this.data.res && this.data.res.qddaylist) {
			list = this.data.res.qddaylist.split(',');
			for(var i in this.data.n_dateArr){
				var item=this.data.n_dateArr[i];
				if(this.check_is_qd(item,list)){
					item.isCheckIn = true;
				}else{
					item.isCheckIn = false;
				}
			}
		}
		newDateArr=newDateArr.concat(this.data.n_dateArr);
	
		//--判断什么日子是要补签的--
		if(this.data.res && this.data.res.curbqdaynum) {
			bqlist = this.data.res.curbqdaynum.split(',');
			for(var i in newDateArr){
				var item=newDateArr[i];
				if(this.check_is_bq(item,bqlist)){
					item.isBq = true;
				}else{
					item.isBq = false;
				}
			}			
		}
		this.setData({
			dateArr: newDateArr
		});
	},
	
	
	//判断是不是同一个日期,签到的
	check_is_qd(item,bqlist){
		for(var i in bqlist){		
			var c_item=JSON.parse(JSON.stringify(item));
			if(c_item.num<10) c_item.num="0"+c_item.num;			
			if(c_item.num==bqlist[i]){
				return true;
			}
		}
		return false;
	},
	
	//判断是不是同一个日期,补签到的
    check_is_bq(item,bqlist){
		for(var i in bqlist){
			if(item.date==bqlist[i]){
				return true;
			}
		}
		return false;
	},

	// 点击签到
	checkInToday() {
		const self = this;
		// 获取今天的签到状态
		//let isCheckInToday = this.data.dateArr[this.data.day-1].isCheckIn;
		var ck=this.data.day;
		if(parseInt(ck)<10) ck="0"+ck;	 
		var isCheckInToday=this.data.res.qddaylist.indexOf(ck); 
		
		// 如果还没签到, 可以点击签到
		if(isCheckInToday==-1) {
			app.request.promisePost('/api/weshop/qdrecord/saveQd', {
				data: {
					store_id: app.globalData.setting.stoid,
					user_id: app.globalData.user_id,
				}
			}).then(res => {
				// 改变签到状态,由false置为true
				// let newDateArr = self.data.dateArr;
				// newDateArr[self.data.day-1].isCheckIn = true;	
							
				for(var i in self.data.dateArr) {
					self.data.dateArr[i].isCheckIn=false;
					self.data.dateArr[i].isBq=false;
				}						
				self.setData({
					dateArr: self.data.dateArr
				});				
							
				self.loadQd(function() {
					wx.showToast({
					  title: self.data.res.qdintro,
					  icon: 'none',
					  duration: 1500,
						success: function() {
	
						}
					});
				});
					
			})
		}
	},
	

	// 补签
	reCheckIn() {
		var self = this;
		// var i = 0;
		console.log('补签~');
		if(this.data.flag) {
			this.data.flag = false;
			app.request.promisePost('/api/weshop/qdrecord/saveBQd', {
				data: {
					store_id: app.globalData.setting.stoid,
					user_id: app.globalData.user_id,
					daynum: self.data.res.getBQIntegral1,
					bqnum: self.data.res.getbqnum2,
					bqintegral: self.data.res.getBQIntegral,
				}
			}).then(res => {
				// 改变签到状态,由false置为true
			    // let newDateArr = self.data.dateArr;
			    // newDateArr[self.data.day-1].isCheckIn = true;
					//var bqlist = self.data.res.curbqdaynum.split(',').sort();
					//var list = [];
					/*--
					for(let item of bqlist) {
						var date = new Date(item);
						list.push(date.getDate());
					}--*/					
												
					for(var i in self.data.dateArr) {
						self.data.dateArr[i].isCheckIn=false;
						self.data.dateArr[i].isBq=false;
					}						
					self.setData({
						dateArr: self.data.dateArr
					});					
					self.loadQd(function() {
						self.data.flag = true;
							wx.showToast({
								title: '补签成功',
								icon: 'success',
								duration: 1500,
								success: function() {
									
								}
							});
					});
			})
		}
	},
	
	getDate: function() { //获取当月日期
		var mydate = new Date();
		var year = mydate.getFullYear();
		var month = mydate.getMonth();  			//0~11: 一月至十二月
		var months = month + 1;         			//1~12:一月至十二月
		this.data.year = year;
		this.data.month = months;
		this.data.day = mydate.getDate(); 		//获取当月日期: 1~31
		var fist = new Date(year, month, 1);
		this.data.firstDay = fist.getDay();		//获取当月第一天		
		var last = new Date(year, months, 0); //0表示当月最后一天
		this.data.lastDay = last.getDate();   //获取当月最后一天

		this.setData({
			year: this.data.year,
			month: this.data.month,
			day: this.data.day,
			firstDay: this.data.firstDay,
			lastDay: this.data.lastDay,
			fist:fist
		})
		console.log("今天:" + this.data.day);
	},
	
	setDate: function() {
		var day;
		for(var i=0;i<this.data.firstDay;i++){
			//获取前几天的时间数组
			var arr_d=this.getNextDate(this.data.fist,i-this.data.firstDay)
			day = {num: arr_d[1],date:arr_d[0]};
			this.data.s_dateArr.push(day);
		}
			
		for (var i = 1; i < this.data.lastDay + 1; i++) {			
			var date=this.data.month+"";
			if(this.data.month<10) date="0"+date;	
			if(i<10) {
				date=date+"-0"+i;
			}else{
				date=date+"-"+i;
			}			
			day = {num: i,date:date};
			this.data.n_dateArr.push(day);
		}
	},
	
	//获取相隔是多少天的日期
    getNextDate(date,day) {  
	  var dd = date;
	  dd.setDate(dd.getDate() + day);
	  //var y = dd.getFullYear();
	  var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1;
	  var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
	  //return y + "-" + m + "-" + d;
	  return [m + "-" + d,dd.getDate()];
	}
	
})