记录:使用日期时间选择器el-date-picker,同时具备默认时间和pickerOptions时,日期弹窗口弹出时确认按钮不可操作问题

451 阅读1分钟

我在使用el-date-picker时,如果添加了pickerOptions,就会导致在一开始点击选择框,日期弹出框弹出时,确认按钮置灰不可操作,如果此时有了默认事件,就意味着我想点进来就只更改时分秒,确认按钮不可操作,只有重新选择起始时间或者起始时间都更改,确认按钮才可操作,下面这种写法可以解决:

HTML
<el-date-picker
  v-model="timeData"
  type="datetimerange"
  range-separator="至"
  start-placeholder="开始日期"
  end-placeholder="结束日期"
  value-format='yyy-MM-dd HH:mm:ss'
  :editable='false'
  :default-time="['00:00:00','23:59:59']"
  :picker-options='pickerOptions'>
</el-date-picker>
data
//日期限制选择7天,禁用7天之后的日期
choiceDate0:'',
pickerOptions:{
  onPick:({maxDate,minDate})=>{
    this.choiceDate0=minDate.getTime();
    if(maxDate){
      this.choiceDate0='';
    }
  },
  disabledData:time=>{
    if(this.choiceDate0){
      const len=6*24*3600*1000;
      const min=this.choiceDate0-len;
      let max=this.choiceDate0+len;
      if(max>new Data()){
        max=new Data();
      }
      return time.getTime()<min ||time.getTime()>max;
    }
    const nowTime=this.$common.dateFormat(new Date());
    const timeArr=nowTime.split('');
    const a=timeArr[0]+'23:59:59';
    const t =this.$common.dateToSecond(a)*1000;
    return time.getTime()>t;
  }
}
mounted
this.getDefaultTime();
method
getDefaultTime(){
  this.timeData=[];
  const todayStart=new Date(new Date(new Date().toLocaleDateString()).getTime());
  lconstet todayEnd=new Date(new Date(new Date().toLocaleDateString()).getTime()+24*60*60*100-1);
  this.timeData[0]=this.$moment(todayStart).format('YYYY-MM-DD HH:mm:ss');
  this.timeData[1]=this.$moment(todayEnd).format('YYYY-MM-DD HH:mm:ss');
}