vue ant 两个日期选择器联动 限制时间跨度最大一年

效果如图:

1、元素代码:

<template>
  <div>
    <a-date-picker
      v-model="searchData.makeTimeBegin"
      :disabled-date="disabledStartDate"
      :show-time="{ defaultValue: moment('00:00', 'HH:mm') }"
      format="YYYY-MM-DD HH:mm"
      type="date"
      valueFormat="YYYY-MM-DD HH:mm"
      placeholder="请选择"
    />
    <div class="margin9"></div>
    <a-date-picker
      v-model="searchData.makeTimeEnd"
      :disabled-date="disabledEndDate"
      :show-time="{ defaultValue: moment('00:00', 'HH:mm:ss') }"
      format="YYYY-MM-DD HH:mm"
      type="date"
      placeholder="请选择"
    />
  </div>
</template>

2、JavaScript部分:

<script>
export default {
  methods: {
    /**
     * @description 是否超过一年
     * @param {Number} st 开始时间戳
     * @param {Number} et 结束时间戳
     * @return {Boolean} true 超过 false 没超
     */
    isOverOneYear (st, et) {
      const diff = Math.abs(st - et)
      if (diff > 1000 * 3600 * 24 * 365) {
        return true
      } else return false
    },

    /**
     * @description 开始时间选择禁用
     * @param {Date} startValue 选择的日期值
     */
    disabledStartDate (startValue) {
      const startTime = new Date(startValue).valueOf()
      const endValue = this.searchData.makeTimeEnd
      if (endValue) {
        const endTime = new Date(endValue).valueOf()
        return this.isOverOneYear(startTime, endTime)
      } else return false
    },
    /**
     * @description 结束时间选择禁用
     * @param {Date} endValue 选择的日期值
     */
    disabledEndDate (endValue) {
      const endTime = new Date(endValue).valueOf()
      const startValue = this.searchData.makeTimeBegin
      if (startValue) {
        const startTime = new Date(startValue).valueOf()
        return this.isOverOneYear(startTime, endTime)
      } else return false
    }
  }
}
</script>

 

posted @ 2022-09-27 15:16  小Ling的博客  阅读(1302)  评论(0编辑  收藏  举报