【vue】elementui组件,el-date-picker时间选择器,限制季度选择要求

效果要求:在某一季度有禁止选择下一季度时间要求,左边有四个季度选项

好咯,来下一步操作 

 上代码

<template>
    <div>
        <el-date-picker size="large" v-model="value2" type="daterange" :picker-options="pickerOptions" 
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
    </div>
</template>

 

export default{
    data(){
		return{
			pickerOptions: {
				shortcuts:[
					{
						text:"第一季度",
						onClick(picker) {
							var time = new Date()
							var year = time.getFullYear()
							var startTime = new Date(year,time.getMonth()-1,1)
							var endTime = new Date(year,time.getMonth()+2,0)
							var start = startTime.getTime()
							var end = endTime.getTime()
							picker.$emit('pick', [start, end]);
						}
					},
					{
						text:"第二季度",
						onClick(picker) {
							var time = new Date()
							var year = time.getFullYear()
							var startTime = new Date(year,time.getMonth()+2,1)
							var endTime = new Date(year,time.getMonth()+5,0)
							var start = startTime.getTime()
							var end = endTime.getTime()
							picker.$emit('pick', [start, end]);
						}
					},
					{
						text:"第三季度",
						onClick(picker) {
							var time = new Date()
							var year = time.getFullYear()
							var startTime = new Date(year,time.getMonth()+5,1)
							var endTime = new Date(year,time.getMonth()+8,0)
							var start = startTime.getTime()
							var end = endTime.getTime()
							picker.$emit('pick', [start, end]);
						}
					},
					{
						text:"第四季度",
						onClick(picker) {
							var time = new Date()
							var year = time.getFullYear()
							var startTime = new Date(year,time.getMonth()+8,1)
							var endTime = new Date(year,time.getMonth()+11,0)
							var start = startTime.getTime()
							var end = endTime.getTime()
							picker.$emit('pick', [start, end]);
						}
					}
				],
				onPick:({maxDate,minDate})=>{
					const month = minDate.getMonth()+1;
					var time = new Date()
					var year = time.getFullYear()
						
					if(1 <= month && month < 4){
						console.log("第一季度");
						var startTime = new Date(year,time.getMonth()-1,1);//一月份
						var endTime = new Date(year,time.getMonth()+2,0);//三月份
						this.start = startTime.getTime()
						this.end = endTime.getTime()
						// console.log(new Date(this.start));
					}else if(4 <= month && month < 7){
						console.log("第二季度");
						var startTime = new Date(year,time.getMonth()+2,1);//四月份
					    var endTime = new Date(year,time.getMonth()+5,0);//六月份
						this.start = startTime.getTime()
						this.end = endTime.getTime()
						// console.log(new Date(this.start));
						// console.log(new Date(this.end));
					}else if(7 <= month && month < 10){
						console.log("第三季度");
						var startTime = new Date(year,time.getMonth()+5,1);//七月份
						var endTime = new Date(year,time.getMonth()+8,0);//九月份
						this.start = startTime.getTime()
						this.end = endTime.getTime()
						// console.log(new Date(this.start));
						// console.log(new Date(this.end));
					}else {
						console.log("第四季度");
						var startTime = new Date(year,time.getMonth()+8,1);//十月份
						var endTime = new Date(year,time.getMonth()+11,0);//十二月份
						this.start = startTime.getTime()
						this.end = endTime.getTime()
						// console.log(new Date(this.start));
						// console.log(new Date(this.end));
					}
						
					if(maxDate){
						this.start = ""
						this.end = ""
					}
				},
				disabledDate:time=>{
					if(!!this.start && !!this.end){
						return time.getTime() < this.start || time.getTime() > this.end ;
					}
				}
			},
			value2: []
		}
	}
}

总结:

好吧,代码有点臃肿,没有优化,写的比较死板。要是符合你们的需求,可以自己优化哦

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值