Ant Design Vue 中 DatePicker动态限制Time框

需求:限制结束时间在开始时间之后,包括时分;

设计思路:判断各个不同的时间来return出需要的限制条件;

我资历尚浅,有啥不对的地方请大家多多指教。

 

{
  field: 'startTime',
  component: 'DatePicker',
  label: '开启时间',
  colProps: {
    span: 24,
  },
  componentProps: () => {
    return {
      style: {
        width: '100%',
      },
      format: 'YYYY-MM-DD HH:mm',
      valueFormat: 'YYYY-MM-DD HH:mm:ss',
      showTime: { format: 'HH: mm' },
    };
  },
  required: true,
},
{
  field: 'endTime',
  component: 'DatePicker',
  label: '关闭时间',
  required: true,
  colProps: {
    span: 24,
  },
  componentProps: ({ formModel }) => {
    return {
      showCount: true,
      showTime: { format: 'HH: mm' },
      disabled: !formModel['startTime'],
      format: 'YYYY-MM-DD HH:mm',
      valueFormat: 'YYYY-MM-DD HH:mm:ss',
      disabledDate: (current) => {
        return current && current < moment(formModel['startTime']).subtract(0, 'days'); //当天之后的不可选,不包括当天
      },
      disabledTime: () => {
        //如果开始时间小于结束时间的天时(不为同一天)
        if (
          Number(formModel['startTime'].split(' ')[0].split('-')[2]) <
          Number(formModel['endTime'].split(' ')[0].split('-')[2])
        ) {
          return {
            disabledHours: () => [],
            disabledMinutes: () => [],
          };
          //如果开始时间的天等于结束时间的天时(为同一天)
        } else {
          //如果开始时间的时等于结束时间的时(选择同一天同一时)
          if (
            formModel['startTime'].split(' ')[1].split(':')[0] ===
            formModel['endTime'].split(' ')[1].split(':')[0]
          ) {
            return {
              disabledHours: () =>
                range(0, 24).splice(0, formModel['startTime'].split(' ')[1].split(':')[0]),
              disabledMinutes: () =>
                range(0, 60).splice(
                  0,
                  formModel['startTime'].split(' ')[1].split(':')[1] * 1 + 1,
                ),
            };
          } else {
            //(同一天不同时)
            return {
              disabledHours: () =>
                range(0, 24).splice(0, formModel['startTime'].split(' ')[1].split(':')[0]),
              disabledMinutes: () => [],
            };
          }
        }
      },
      style: {
        width: '100%',
      },
    };
  },
},

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值