function range(start, end) {
const result:any[] = [];
// eslint-disable-next-line no-plusplus
for (let i = start; i < end; i++) {
result.push(i);
}
return result;
}
//控制禁用天数
function disabledDate(curr) {
// Can not select days before today and today
//extendProps.subDay 也可以在流程中心——表单编辑设置前多少天不让选择
//控制前1天之前或者30天以后不让选
return (curr && curr < moment().subtract(extendProps.subDay||1,'day').endOf('day'))||(curr && curr > moment().add(30,'day'))
}
//控制禁用小时、分钟、秒数 位置
function disabledDateTime(cur) {
const hour = moment().format('HH');
const min = moment().format('mm');
const ss = moment().format('ss')
if (cur) {
//如果选择时间为当前时间
if (cur.format('YYYY-MM-DD').valueOf() === moment().format('YYYY-MM-DD').valueOf()) {
//如果选择小时位为当前时间小时位
if (cur.format('HH').valueOf() === moment().format('HH').valueOf()) {
//如果选择分钟位为当前时间分钟位
if (cur.format('mm').valueOf() === moment().format('mm').valueOf()) {
//则当前时间之前的 小时位、分钟位、秒位都不能选择
return {
disabledHours: () => range(0, 24).splice(0,Number(hour)),
disabledMinutes: () => range(0, 60).splice(0,Number(min)),
disabledSeconds: () => range(0, 60).splice(0,Number(ss))
}
}
//否则当前时间的小时位、分钟都不能选择、秒位可以任意选择
return {
disabledHours: () => range(0, 24).splice(0,Number(hour)),
disabledMinutes: () => range(0, 60).splice(0,Number(min)),
}
}
//否则当前时间之前的小时位不能选择、分钟位、秒位都可以任意选择
return {
disabledHours: () => range(0, 24).splice(0,Number(hour)),
}
}
//否则小时、分钟、秒位都不禁用
return {
disabledHours: () => [],
disabledMinutes: () => [],
disabledSeconds: () => [],
}
}
return {
disabledHours: () => [],
disabledMinutes: () => [],
disabledSeconds: () => []
}
}
//DatePicker组件:
<DatePicker style={{ width: '100%' }} disabledDate={disabledDate}
disabledTime={disabledDateTime}
disabled={onlyShow} onChange={(_, dateString) => this.onChange(dateString)} showTime/>