Table每一条数据中使用DatePicker时如何添加时间范围限制

目录

普通表单的时间范围设置

表格中每条数据的时间范围设置


普通表单的时间范围设置

不存在多条数据(一般表单)的情况下直接添加时间范围限制即可,不会存在使用同一全局变量导致时间限制覆盖的问题(一条数据的限制同时影响其他数据造成混乱)。

当 RangePicker 无法满足业务需求时,可以使用两个 DatePicker 实现类似的功能。

  • 通过设置 disabledDate 方法,来约束开始和结束日期。
  • 通过 open openChange 来优化交互。

具体实现参考ant design官网:Ant Design Vue

表格中每条数据的时间范围设置

 由于需求需要每条数据单独设置时间限制,所以不能使用全局变量,在使用disabledDate方法时需要将该行数据record一并传入::disabled-date="(e) => disabledStartDate(e, record)"

<template slot="experimentPlanStartTime" slot-scope="text, record">
    <div :style="{ display: 'flex', alignItems: 'center' }">
        <div :style="{ color: 'red' }">*</div>
        <div>
            <a-date-picker 
                :value="text" 
                :disabled-date="(e) => disabledStartDate(e, record)" 
                @change="(date, dateString) => onChangeStart(date, dateString, record)"
            />
        </div> 
    </div>
</template>

<template slot="experimentPlanEndTime" slot-scope="text, record">
    <div :style="{ display: 'flex', alignItems: 'center' }">
        <div :style="{ color: 'red' }">*</div>
        <div>
            <a-date-picker 
                :value="text" 
                :disabled-date="(e) => disabledEndDate(e, record)" 
                @change="(date, dateString) => onChangeEnd(date, dateString, record)"/>
            </div> 
        </div>
</template>
methods:{
    onChangeStart(date, dateString, record) {
        this.$set(record, "experimentPlanStartTime", dateString);//设置选择的日期到该条数据的experimentPlanStartTime属性
    },
    disabledStartDate(startValue,record) {
        const endValue =  moment(record.experimentPlanEndTime,'YYYY-MM-DD');//将字符串转换为    moment(统一格式方便后续比较)
        if (!startValue || !endValue) {
            return false;
        }
        return startValue.valueOf() > endValue.valueOf();
    },
    onChangeEnd(date, dateString, record) {
        this.$set(record, "experimentPlanEndTime", dateString);
    },
    disabledEndDate(endValue,record) {
        const startValue =  moment(record.experimentPlanStartTime,'YYYY-MM-DD');
        if (!endValue || !startValue) {
            return false;
        }
        return startValue.valueOf() > endValue.valueOf();
    },
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值