因element-plus的el-date-picker
组件移除了picker-options
属性,使用disabled-date
来进行对日期时间范围的禁用启用效果。不过仅使用disabled-date
属性是不能实现动态日期范围的禁用的(即根据开始时间,确定结束时间的可选范围)。还需结合calendar-change
事件来确定开始选中的日期进行判断。代码如下:
<el-date-picker
v-model="dateValue"
type="datetimerange"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
format="YYYY-MM-DD HH:mm:ss"
:disabled-date="disableDate"
@calendar-change="cakebdarChange"
/>
const dateValue = ref<[Date | null, Date | null]>([null, null]);
// start_time: 用于接收开始时间的时间戳
let start_time = 0;
const cakebdarChange = ([start]: [Date, Date]) => {
start_time = start.getTime();
};
// 这里示例的选择时间范围为一年
const time_scope = 3600 * 1000 * 24 * 365;
const disableDate = (time: Date) => {
const is_disable = start_time
? time.getTime() < start_time - time_scope || time.getTime() > start_time + time_scope
: false;
return time.getTime() > Date.now() || is_disable;
};