业务需求,时间范围选择器默认时间昨天到前一个月,无法选择超过今天的日期;时间范围可以用picker-options来实现,默认时间的话在mounted生命周期里处理一下就行。
问题:用时间搜索的时候需要传开始-结束时间,我们的选择器是yyyy-mm-dd的,但是传接口的时候要传yyyy-MM-dd hh:mm:ss的,意思就是要传参数的话需要2022-01-01 00:00:00跟2022-01-30 23:59:59。我在el-date-picker加上:default-time="[‘00:00:00’, ‘23:59:59’]",选择时间是可以达到上述的条件,但是却无法选择当天的时间了,原因:pickerOptions属性只能选择此刻及之前的时间。当你选择当天时,default-time会默认结束时间为’23:59:59’,你的结束时间属于之后的时间范围,与 pickerOptions属性冲突。因此无法点击确认按钮。
解决方法:在main里加上
// 日期格式化
Date.prototype.Format = function (format) { //js中没有format方法,需要自己挂载
var args = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"S": this.getMilliseconds()
};
if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (this.getFullYear() + "").substring(4 - RegExp.$1.length));
for (var i in args) {
var n = args[i];
if (new RegExp("(" + i + ")").test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? n : ("00" + n).substring(("" + n).length));
}
return format;
};
你的:picker-options=“pickerOptions”
pickerOptions: {
disabledDate(time) {
let current_time = new Date().Format("yyyy-MM-dd") + " 23:59:59";
let t = new Date(current_time.replace(/-/g, "/")).getTime(); //此处转换-为/是为了兼容ie,ie在转换时间戳时不支持2022-01-07格式
return time.getTime() > t;
},
},