问题描述
时间选择器组件,禁用之前的时间。
目前的方案:拿到用户选择的时间,然后调用 disabledDateTime 修改禁用的范围,但是不工作。
<a-date-picker
format="YYYY-MM-DD HH:mm:ss"
:disabled-date="disabledDate"
:disabled-time="disabledDateTime"
:show-time="{ defaultValue: moment('00:00:00', 'HH:mm:ss') }"
@change="dateChange"
/>
import moment from "moment";
export default {
name: "Test",
methods: {
moment,
range(start, end) {
const result = [];
for (let i = start; i < end; i++) {
result.push(i);
}
return result;
},
disabledDate(current) {
return current && current <= moment().subtract(1, "days").endOf("day");
},
disabledDateTime(type) {
let disabledTime = {
disabledHours: () => this.range(0, 24).splice(4, 20),
disabledMinutes: () => this.range(30, 60),
disabledSeconds: () => [],
};
switch (type) {
case "day":
disabledTime = {
disabledHours: () => [],
disabledMinutes: () => [],
disabledSeconds: () => [],
};
break;
default:
break;
}
console.log("disabledTime");
console.log(disabledTime);
return disabledTime;
},
/*
* 拿到用户选择的时间,然后调用 disabledDateTime 修改禁用的范围
*/
dateChange(date, dateStr) {
console.log(date);
console.log((date - moment()) / (1000 * 60 * 60));
console.log(dateStr);
const diffHour = (date - moment()) / 3600000;
if (diffHour >= 24) {
console.log("时分秒不限制");
this.$nextTick(() => {
this.disabledDateTime("day");
});
} else if (1 <= diffHour && diffHour < 24) {
console.log("限制时");
} else if (1 / 60 <= diffHour && diffHour < 1) {
console.log("限制时、分");
} else if (diffHour < 1 / 60) {
console.log("限制时、分、秒");
} else {
console.log("其他");
}
},
},
};
期望:根据用户的选择禁用时间,比如今天12月24日12点30分,用户选择12月25日,所有时间都可选,用户选择选择了12月24日12点,分数禁用 0--30,秒不禁用。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…