week-calendar.js 4.99 KB
import util from '../../../utils/util';
import App from '../../../utils/api';
Component({
	properties:{
		seller:Object,
		//选中日期
		date:{
			type:String,
			value:util.unixtoTime(new Date()/1000,'YYYY-MM-DD'),
		}
	},
	data:{
		hidecalendar:true
	},
	attached(){
		this.setData({
			showYearMonth:this.getshowmonth(this.data.date)
		})
		this.hasNowInToday();
		this.getweeklist();
		this.getdaylist();
		this.getFullDate();
	},
	ready(){
		
	},
	methods:{
		//判断是否过了今天时段,并设置date
		hasNowInToday(){
			let daily=this.data.seller.daily
			let maxDur='';
			Object.keys(daily).forEach(k=>{
				let dur=daily[k].split('-')
				if(dur[1]>maxDur){
          maxDur=dur[1]
				}
			})
      let nowDur=util.unixtoTime(new Date()/1000,'HH:II')
			let nowDate=this.data.date
			if(nowDur>maxDur){
        nowDate=util.unixtoTime(new Date()/1000+86400,'YYYY-MM-DD')
				this.setData({
					date:nowDate
				})
			}
			//console.log('hasNowInToday',maxDur)
      this.triggerEvent('selectdate',{date:nowDate,action:'defalut'})
    },
		//获取当前选中日期年月
		getshowmonth(selecteddate){
			let datearr=selecteddate.split('-');
			return{
				showyear:Number(datearr[0]),
				showmonth:Number(datearr[1]),
			}
		},
		//获得周列表
		getweeklist(){
			let week=['日','一','二','三','四','五','六'];
			let weeklist=[];
			for(let i=0;i<week.length;i++){
				weeklist.push({
					weekfont:week[i],
					weeknum:i
				})
			}
			this.setData({
				weeklist:weeklist,
			})
		},
		//获取日期列表
		getdaylist(){
			//选中时间时间戳
			let selectedtime=Number(util.timetouUnix(this.data.date+' 00:00:00'));
			//选中日期星期几
			let selectedweek=new Date(this.data.date).getDay();
			//今天日期
			let today=util.unixtoTime(new Date()/1000,'YYYY-MM-DD');
			console.log('selectedweek',selectedweek)
			let daylist=[{list:[]},{list:[]}];
			//用于月历点击的时候判断是否改变周历列表
			this.datelist={};
			for(let i=0;i<14;i++){
				let thistimestamp=selectedtime+(i-selectedweek)*86400;
				let thisdate=new Date(thistimestamp*1000);
				let thisdayobj={
					year:thisdate.getFullYear(),
					month:thisdate.getMonth()+1,
					day:thisdate.getDate(),
					week:thisdate.getDay(),
					date:util.unixtoTime(thistimestamp,'YYYY-MM-DD'),
					overdate:thistimestamp<=(new Date()/1000)-86400 ? true : false,         //日期是否过期
					istoday:false
				}
				//是否是今天
				if(today==thisdayobj.date){
					thisdayobj.istoday=true;
					thisdayobj.mark='今'
				}
				if(util.unixtoTime(new Date()/1000+86400,'YYYY-MM-DD')==thisdayobj.date){
					thisdayobj.mark='明'
				}
				thisdayobj.isselected=this.data.date==thisdayobj.date ? true : false;
		//日期是否选中
				daylist[Math.floor(i/7)].list.push(thisdayobj);
				this.datelist[thisdayobj.date]=Math.floor(i/7)+'-'+(i-Math.floor(i/7)*7)
			}
			this.setData({
				daylist:daylist
			})
			console.log(daylist,this.datelist)
		},
		//获取满房日期
		getFullDate(){
			let parmdata={
				sid:this.data.seller.id,
				type:'week',
				date:this.data.daylist[0].list[0].date
			}
			App.Customer.GetHouseFullDate(parmdata).then((json)=>{
				console.log(json)
				if(json.ret==200){
					if(json.data && json.data.length>0){
						this.markFullHouse(json.data);
					}
				}
			})
		},
		//标记满房
		markFullHouse(fullHouseDate){
			let daylist=this.data.daylist;
			daylist.forEach((v,i)=>{
				v.list.forEach((r,n)=>{
					fullHouseDate.forEach((r1,n1)=>{
						if(r1==r.date){
							r.mark='满'
						}
					})
				})
			})
			this.setData({
				daylist:daylist
			})
		},
		//选择日期
		selectdate(e){
			let _target=e.currentTarget.dataset;
			this.changedatestyle(_target.date);
			this.triggerEvent('selectdate',{date:_target.date,action:'click'});
			this.setData({
				date:_target.date,
				showYearMonth:this.getshowmonth(_target.date)
			})
		},
		//日历组件---通知事件
		tellselectdate(e){
			console.log(e)
			let _target=e.detail;
			this.triggerEvent('selectdate',{date:_target.date,action:'click'});
			this.setData({
				date:_target.date,
				showYearMonth:this.getshowmonth(_target.date),
				hidecalendar:true
			})
			if(_target.date in this.datelist){
				this.changedatestyle(_target.date)
			}else{
				this.getdaylist();
				this.getFullDate();
			}
		},
		//修改日期列表
		changedatestyle(selecteddate){
			let daylist=this.data.daylist;
			let prevsingle,previndex,cursingle,curindex;
			daylist.forEach((v,i)=>{
				v.list.forEach((r,n)=>{
					if(r.isselected){
						prevsingle=i;
						previndex=n;
						let prevkey='daylist['+prevsingle+'].list['+previndex+'].isselected';
						this.setData({
							[prevkey]:false,
						})
					}
					if(r.date==selecteddate){
						cursingle=i;
						curindex=n;
					}
				})
			})
			let currentkey='daylist['+cursingle+'].list['+curindex+'].isselected';
			this.setData({
				[currentkey]:true
			})
		},
		clickmore(){
			this.setData({
				hidecalendar:false
			})
		},
		closecalendar(){
			this.setData({
				hidecalendar:true
			})
		}
	}
})