在选择范围的时候,1.只选择一个时间点,2.然后点击其他地方,时间选择弹框关闭,3.再次点击时间选择器,弹框内容时间范围限制还在
<el-select v-model="dataparams.value" placeholder="请选择" @change="chiosTy">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<div v-if="dataparams.value === '0'" class="block">
<el-date-picker
v-model="dataparams.datelist"
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions1"
/>
</div>
pickerOptions1: {
onPick: ({ maxDate, minDate }) => {
// 把选择的第一个日期赋值给一个变量。
this.choiceDate = minDate.getTime()
// 如何你选择了两个日期了,就把那个变量置空
if (maxDate) this.choiceDate = ''
},
disabledDate: (time) => {
// 如何选择了一个日期
if (this.choiceDate) {
// 7天的时间戳
const one = 7 * 24 * 3600 * 1000
// 当前日期 - one = 7天之前
const minTime = this.choiceDate - one
// 当前日期 + one = 7天之后
const maxTime = this.choiceDate + one
return (
time.getTime() < minTime ||
time.getTime() > maxTime ||
// 限制不能选择今天及以后
time.getTime() > Date.now()
)
} else {
this.choiceDate = ''
// 如果没有选择日期,就要限制不能选择今天及以后
return time.getTime() > Date.now()
}
}
},
虽然第一次只选择一个时间点,二次进入的时候,也可以情况时间范围限制