日期選擇組件封裝,限制時間范圍

父組件

<template v-if="time === 5">
      <div v-if="v_hostname_selected === 'all'">
            <rangeDataPicker ref='child' :period=period  :pickerOptions=pickerOptions @getperiod=getperiod></rangeDataPicker>
          </div>
          <div v-if="v_hostname_selected !== 'all'">
            <rangeDataPicker ref='child' :period=period ></rangeDataPicker>
          </div>
</template>
<script>

</script>
export default{
  data(){
    return{
      pickerOptions:{
        onPick(time){
          if (!time.maxDate) {
            let timeRange = 30*24*60*60*1000  // 30天
            _minTime = time.minDate.getTime() - timeRange // 最小時間
            _maxTime = time.minDate.getTime() + timeRange // 最大時間
          } else {
            _minTime = _maxTime = null
          }
        },
        disabledDate(time) {
          if(_minTime && _maxTime){
            return time.getTime() < _minTime || time.getTime() > _maxTime
          }
        }
      },
    }
  },
}


子組件

<template>
  <el-date-picker 
    class="select-box"
    @change="changeperiod"
    :picker-options="pickerOptions"
    v-model="periodvalue"
    value-format='yyyy-MM-dd HH:mm:ss'
    type="datetimerange"
>
  </el-date-picker>
</template>
<script>
export default {
  name: 'range-data-picker',
  props:{
    period:Array,
    pickerOptions:{
      type:Object,
      required: false,
      default:()=>{
        return{
          onPick(){
          },
          disabledDate() {
            return null
          }
        }
      },
    },
  },
  data(){
    return{
      periodvalue:this.period
    }
  },
  watch:{
    period:function(newValue){
      this.periodvalue = newValue
    }
  },
  methods:{
    changeperiod(){
      this.$emit('getperiod',this.periodvalue)
    },
  }
}
</script>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容