calendar.js 7.5 KB

1
  1. "use strict";const e=require("./util.js"),t=require("../../../../common/vendor.js"),a=require("./i18n/index.js"),{t:i}=t.initVueI18n(a.messages),s={components:{calendarItem:()=>"./calendar-item.js",timePicker:()=>"./time-picker.js"},props:{date:{type:String,default:""},defTime:{type:[String,Object],default:""},selectableTimes:{type:[Object],default:()=>({})},selected:{type:Array,default:()=>[]},lunar:{type:Boolean,default:!1},startDate:{type:String,default:""},endDate:{type:String,default:""},range:{type:Boolean,default:!1},typeHasTime:{type:Boolean,default:!1},insert:{type:Boolean,default:!0},showMonth:{type:Boolean,default:!0},clearDate:{type:Boolean,default:!0},left:{type:Boolean,default:!0},right:{type:Boolean,default:!0},checkHover:{type:Boolean,default:!0},hideSecond:{type:[Boolean],default:!1},pleStatus:{type:Object,default:()=>({before:"",after:"",data:[],fulldate:""})}},data:()=>({show:!1,weeks:[],calendar:{},nowDate:"",aniMaskShow:!1,firstEnter:!0,time:"",timeRange:{startTime:"",endTime:""},tempSingleDate:"",tempRange:{before:"",after:""}}),watch:{date:{immediate:!0,handler(e,t){this.range||(this.tempSingleDate=e,setTimeout((()=>{this.init(e)}),100))}},defTime:{immediate:!0,handler(e,t){this.range?(this.timeRange.startTime=e.start,this.timeRange.endTime=e.end):this.time=e}},startDate(e){this.cale.resetSatrtDate(e),this.cale.setDate(this.nowDate.fullDate),this.weeks=this.cale.weeks},endDate(e){this.cale.resetEndDate(e),this.cale.setDate(this.nowDate.fullDate),this.weeks=this.cale.weeks},selected(e){this.cale.setSelectInfo(this.nowDate.fullDate,e),this.weeks=this.cale.weeks},pleStatus:{immediate:!0,handler(e,t){const{before:a,after:i,fulldate:s,which:n}=e;this.tempRange.before=a,this.tempRange.after=i,setTimeout((()=>{if(s)if(this.cale.setHoverMultiple(s),a&&i){if(this.cale.lastHover=!0,this.rangeWithinMonth(i,a))return;this.setDate(a)}else this.cale.setMultiple(s),this.setDate(this.nowDate.fullDate),this.calendar.fullDate="",this.cale.lastHover=!1;else this.cale.setDefaultMultiple(a,i),"left"===n?(this.setDate(a),this.weeks=this.cale.weeks):(this.setDate(i),this.weeks=this.cale.weeks),this.cale.lastHover=!0}),16)}}},computed:{reactStartTime(){return(this.range?this.tempRange.before:this.calendar.fullDate)===this.startDate?this.selectableTimes.start:""},reactEndTime(){return(this.range?this.tempRange.after:this.calendar.fullDate)===this.endDate?this.selectableTimes.end:""},selectDateText:()=>i("uni-datetime-picker.selectDate"),startDateText(){return this.startPlaceholder||i("uni-datetime-picker.startDate")},endDateText(){return this.endPlaceholder||i("uni-datetime-picker.endDate")},okText:()=>i("uni-datetime-picker.ok"),monText:()=>i("uni-calender.MON"),TUEText:()=>i("uni-calender.TUE"),WEDText:()=>i("uni-calender.WED"),THUText:()=>i("uni-calender.THU"),FRIText:()=>i("uni-calender.FRI"),SATText:()=>i("uni-calender.SAT"),SUNText:()=>i("uni-calender.SUN")},created(){this.cale=new e.Calendar({selected:this.selected,startDate:this.startDate,endDate:this.endDate,range:this.range}),this.init(this.date)},methods:{leaveCale(){this.firstEnter=!0},handleMouse(e){if(e.disable)return;if(this.cale.lastHover)return;let{before:t,after:a}=this.cale.multipleStatus;t&&(this.calendar=e,this.cale.setHoverMultiple(this.calendar.fullDate),this.weeks=this.cale.weeks,this.firstEnter&&(this.$emit("firstEnterCale",this.cale.multipleStatus),this.firstEnter=!1))},rangeWithinMonth(e,t){const[a,i]=e.split("-"),[s,n]=t.split("-");return a===s&&i===n},clean(){this.close()},clearCalender(){this.range?(this.timeRange.startTime="",this.timeRange.endTime="",this.tempRange.before="",this.tempRange.after="",this.cale.multipleStatus.before="",this.cale.multipleStatus.after="",this.cale.multipleStatus.data=[],this.cale.lastHover=!1):(this.time="",this.tempSingleDate=""),this.calendar.fullDate="",this.setDate()},bindDateChange(e){const t=e.detail.value+"-1";this.init(t)},init(e){this.cale.setDate(e),this.weeks=this.cale.weeks,this.nowDate=this.calendar=this.cale.getInfo(e)},open(){this.clearDate&&!this.insert&&(this.cale.cleanMultipleStatus(),this.init(this.date)),this.show=!0,this.$nextTick((()=>{setTimeout((()=>{this.aniMaskShow=!0}),50)}))},close(){this.aniMaskShow=!1,this.$nextTick((()=>{setTimeout((()=>{this.show=!1,this.$emit("close")}),300)}))},confirm(){this.setEmit("confirm"),this.close()},change(){this.insert&&this.setEmit("change")},monthSwitch(){let{year:e,month:t}=this.nowDate;this.$emit("monthSwitch",{year:e,month:Number(t)})},setEmit(e){let{year:t,month:a,date:i,fullDate:s,lunar:n,extraInfo:l}=this.calendar;this.$emit(e,{range:this.cale.multipleStatus,year:t,month:a,date:i,time:this.time,timeRange:this.timeRange,fulldate:s,lunar:n,extraInfo:l||{}})},choiceDate(e){e.disable||(this.calendar=e,this.calendar.userChecked=!0,this.cale.setMultiple(this.calendar.fullDate,!0),this.weeks=this.cale.weeks,this.tempSingleDate=this.calendar.fullDate,this.tempRange.before=this.cale.multipleStatus.before,this.tempRange.after=this.cale.multipleStatus.after,this.change())},backtoday(){let e=this.cale.getDate(new Date).fullDate;this.init(e),this.change()},dateCompare:(e,t)=>(e=new Date(e.replace("-","/").replace("-","/")))<=(t=new Date(t.replace("-","/").replace("-","/"))),pre(){const e=this.cale.getDate(this.nowDate.fullDate,-1,"month").fullDate;this.setDate(e),this.monthSwitch()},next(){const e=this.cale.getDate(this.nowDate.fullDate,1,"month").fullDate;this.setDate(e),this.monthSwitch()},setDate(e){this.cale.setDate(e),this.weeks=this.cale.weeks,this.nowDate=this.cale.getInfo(e)}}};if(!Array){(t.resolveComponent("calendar-item")+t.resolveComponent("time-picker")+t.resolveComponent("uni-icons"))()}Math;const n=t._export_sfc(s,[["render",function(e,a,i,s,n,l){return t.e({a:!i.insert&&n.show},!i.insert&&n.show?{b:n.aniMaskShow?1:"",c:t.o(((...e)=>l.clean&&l.clean(...e)))}:{},{d:i.insert||n.show},i.insert||n.show?t.e({e:i.left},i.left?{f:t.o(((...e)=>l.pre&&l.pre(...e)))}:{},{g:t.t((n.nowDate.year||"")+" 年 "+(n.nowDate.month||"")+" 月"),h:i.date,i:t.o(((...e)=>l.bindDateChange&&l.bindDateChange(...e))),j:i.right},i.right?{k:t.o(((...e)=>l.next&&l.next(...e)))}:{},{l:!i.insert},i.insert?{}:{m:t.o(((...e)=>l.clean&&l.clean(...e)))},{n:i.insert?"":1,o:i.showMonth},i.showMonth?{p:t.t(n.nowDate.month)}:{},{q:t.t(l.SUNText),r:t.t(l.monText),s:t.t(l.TUEText),t:t.t(l.WEDText),v:t.t(l.THUText),w:t.t(l.FRIText),x:t.t(l.SATText),y:t.f(n.weeks,((e,a,s)=>({a:t.f(e,((e,a,r)=>({a:t.o(l.choiceDate,a),b:t.o(l.handleMouse,a),c:"49cfb25b-0-"+s+"-"+r,d:t.p({weeks:e,calendar:n.calendar,selected:i.selected,lunar:i.lunar,checkHover:i.range}),e:a}))),b:a}))),z:!i.insert&&!i.range&&i.typeHasTime},i.insert||i.range||!i.typeHasTime?{}:{A:t.t(n.tempSingleDate?n.tempSingleDate:l.selectDateText),B:t.o((e=>n.time=e)),C:t.p({type:"time",start:l.reactStartTime,end:l.reactEndTime,disabled:!n.tempSingleDate,border:!1,"hide-second":i.hideSecond,modelValue:n.time})},{D:!i.insert&&i.range&&i.typeHasTime},!i.insert&&i.range&&i.typeHasTime?{E:t.t(n.tempRange.before?n.tempRange.before:l.startDateText),F:t.o((e=>n.timeRange.startTime=e)),G:t.p({type:"time",start:l.reactStartTime,border:!1,"hide-second":i.hideSecond,disabled:!n.tempRange.before,modelValue:n.timeRange.startTime}),H:t.p({type:"arrowthinright",color:"#999"}),I:t.t(n.tempRange.after?n.tempRange.after:l.endDateText),J:t.o((e=>n.timeRange.endTime=e)),K:t.p({type:"time",end:l.reactEndTime,border:!1,"hide-second":i.hideSecond,disabled:!n.tempRange.after,modelValue:n.timeRange.endTime})}:{},{L:!i.insert},i.insert?{}:{M:t.o(((...e)=>l.confirm&&l.confirm(...e)))},{N:i.insert?"":1,O:n.aniMaskShow?1:"",P:n.aniMaskShow?1:""}):{},{Q:t.o(((...e)=>l.leaveCale&&l.leaveCale(...e)))})}]]);wx.createComponent(n);