iview 日期时间选择器动态限制可选范围
引用:原作者地址
因为本身自己的代码使用了 eslint 插件,因此在原来的基础上又规范了一下。
<date-picker type="datetimerange"
ref="date"
format="yyyy-MM-dd HH:mm:ss"
placeholder="选择日期"
:options="dateOption"
@click.native="nativeClick" >
</date-picker>
注:
-
如果需要绑定其他数据的吧,可以使用v-model,这样可以获取到数据,进而可以使用echarts组件等等进行图表展示。
-
如果想要绑定change事件, 则可以使用 @on-change
data () {
dateOption: {},
}
methods:{
nativeDateClick() {
const target = (this.$refs.date).$refs.pickerPanel;
const { from, to } = target.rangeState;
target.handlePickClick = (() => {
const selecting = target.rangeState;
const from1 = target.rangeState.from;
if (from1 && selecting) {
this.dateOption = {
disabledDate(value) {
return disabledDate_start_end_native(value, from1);
},
};
}
});
if (from && !to) {
this.dateOption = {
disabledDate(value) {
return disabledDate_start_end_native(value, from);
},
};
} else {
this.dateOption = {
disabledDate(value) {
return value && (value.valueOf() > Date.now() - 86400000);
},
};
}
},
}
// 动态限制日期时间选择器的可选范围
function disabledDate_start_end_native(value, from) {
const startTime = new Date(from);
const endTime = new Date(from);
startTime.setDate(from.getDate() - 30);
endTime.setDate(from.getDate() + 30);
return !(value >= startTime && value <= endTime) || (value && (value.valueOf() > Date.now() - 86400000));
}
bug记录,也希望可以帮助到大家。