要实现的效果就是禁用当前月份以后的日期,并实现动态选择月份,最多只能选择12个月

先看实现效果

禁用当前月份以后的日期

 动态实现选择最多12个月的区间

 实现过程:

我们查找ant的api,可以找到禁用日期的disabledDate和选择第一个就会触发的函数calendarChange

body代码:

  <a-col :xl="6" :lg="12" :md="12" :sm="24" :xs="24">
        <a-form-item label="统计周期">
          <a-range-picker
            picker="month"
            style="margin-left: 20px"
            :disabled-date="disabledStartDateMonth"
            @change="changeMonth"
            @calendarChange="changeMonth2"
            v-model:value="selectedRange"
          />
        </a-form-item>
      </a-col>

js代码:

禁用日期的函数

const time = ref(new Date());  // 获取当前日期

  let time1 = ref('1999-09');  // 给time1一个初始值 ,主要是用来接收我点了时间选择框的第一个值的时候

  // 日期限制
  const disabledStartDateMonth = (cur) => {  // cur可以打印一下,可以看见是时间列表
    var t = time.value; 
    if (time1.value == '1999-09') {  // 判断初始值有没有变化,没有变化则没有选择日期,就只做限制大于今天的日期不可选的限制
      if (t >= cur) {  // 今天大于了cur这个时间列表中值,大于了的值就禁用,否则可选
        return false;
      } else {
        return true;
      }
    } else {
      if (time1.value >= cur) {  // 初始值变化了,就用time1去跟时间列表做比较
        return false;
      } else {
        return true;
      }
    }
  };

计算12个月区间的函数:

const changeMonth2 = (date, dateString) => { // 自带的两个值
    console.log(date, dateString); // 打印结果可以看到dateString是我们需要的,它是一个数组的表现形式
    if (time1.value != dateString[0]) { //我们要取的是选择的第一个时间,判断我们的初始值是否跟他相等,不相等说明是重新赋值
      time1.value = dateString[0];
      time1.value = new Date(time1.value).setFullYear( // 这一段的主要是把选择的一个时间往后加一年,就是选择12月的关键所在,先取出年份+1,再设置年份给我们的time1这个变量
        new Date(time1.value).getFullYear() + 1
      );
      console.log(time1.value);// 打印这里可以看到我们得到是一个毫秒数的时间
      let time2 = new Date().getTime();// 获取当前时间的毫秒数
      if (time1.value > time2) {  // 我们加上一年的时间也不能比当前时间大,所以要做一个判断,如果比当前时间大,就等于当前时间
        time1.value = time2;
      }
      time1.value = new Date(time1.value); // 再把它转换为正常的时间格式
    }
    disabledStartDateMonth();  // 再次触发禁用时间,来做只能选择12个月的限制
    // time.value = dateString[0];
    // disabledStartDateMonth();
    // if (t.value.length == 0) {
    // }
  };

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐