element plus 日期限制在7天长度 只能选当天及之后,不能跨月选择

引入dayjs ,方便获取时间戳

先获取点击第一次时间: 当日历所选的日期更改时触发calendar-change事件,保存到变量中

                 <el-date-picker
                      v-model="dete"
                      type="daterange"
                      range-separator="⇀"
                      start-placeholder="开始日期"
                      end-placeholder="结束日期"
                      format="YYYY-MM-DD"
                      value-format="YYYY-MM-DD"
                      size="large"
                      :disabled-date="disabledDate"  // 限制可选日期 禁用不可选日期
                      @calendar-change="calendarChange"   // 获取选中日期
                    />




const calendarChange = (val: any) => {
  firstChooseDate.value = val[0].getTime(); //点击第一次选中日期
  if (val[1]) firstChooseDate.value = ""; // 选中后清空
};

计算不可选日期并限制:

const disabledDate= (time: Date) => {
  if (firstChooseDate.value) {
    const one = 6 * 24 * 3600 * 1000;
     const lastTime = dayjs(firstChooseDate.value).endOf("month").valueOf() ; // 选中日期当月最后一天
     const firstTime = dayjs(firstChooseDate.value).startOf("month").valueOf();// 选中日期当月第一天
    // 当前日期 - one = 7天之前
    const minTime = firstChooseDate.value - one;
    // 当前日期 + one = 7天之后
    const maxTime = firstChooseDate.value + one;
    // 7天之前大于昨天天
    let startTime =
      minTime > Date.now() - 8.64e7 ? minTime : Date.now() - 8.64e7; // 对比获取可选最小日期
      startTime = startTime > firstTime? startTime: firstTime // 对比可选最小日期 和当月第一天
    let endTime = maxTime > lastTime ? lastTime : maxTime; //可选最大日期
    return time.getTime() > endTime || time.getTime() < startTime;
  } else {
    return time.getTime() < Date.now() - 8.64e7; // 弹窗打开时限制 不可选当天前日期
  }
};

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值