element el-time-picker 两边任意时段都设置可选, 如何取消自带的禁用功能 ?

结束时间选了20:00 ,开始时间不能选择20:00以后的,同理,开始时间选择了20:00,则结束时间不能选择20:00以前的数据。

我们现在的需要是需要取消这个限制,不管选择几点,两边都能选

请问各位大佬们如何取消这个限制。
image.png

阅读 4.7k
3 个回答
新手上路,请多包涵

你的需求和它这个组件的开始 结束逻辑不符合。

不要时间范围就行了,把is-range去掉。

首先找到源码文件 date-picker/src/picker/time-picker.js,在 props 中加个 acrossTime

然后看 date-picker/src/picker.vue 文件的 showPicker 方法,
this.pickerVisible = this.picker.visible = true 后面加上 this.picker.acrossTime = this.acrossTime

再看 date-picker/src/panel/time-range.vue 文件,在 data 里加上 acrossTime 默认 false
btnDisabled 方法中判断 acrossTimetrue 时直接返回 falseacrossTimefalse 时走原来的逻辑。

handleConfirm 方法中 acrossTimefalse 时再走 this.minDate = limitTimeRange(this.minDate, minSelectableRange, this.format)this.maxDate = limitTimeRange(this.maxDate, maxSelectableRange, this.format)

isValidValue 方法中 acrossTimetrue 时不去判断 timeWithinRange(this.minDate, this.$refs.minSpinner.selectableRange) &&timeWithinRange(this.maxDate,this.$refs.maxSpinner.selectableRange)

接下来看 date-picker/src/panel/time-range.vue 中的 getRangeHoursgetRangeMinutes。传参加上this.acrossTime

getRangeHours 方法中 acrossTimetruedisabledHours = []
getRangeMinutes中:
image.png

最后使用时

<el-time-picker
      is-range
      acrossTime
      v-model="valueTimePicker"
      range-separator="至"
      start-placeholder="开始时间"
      end-placeholder="结束时间"
      placeholder="选择时间范围">
  </el-time-picker>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题