自定义开始、结束时间组件

开始时间、结束时间组件的联动机制

一、组件图示:

 二、联动规则:

开始时间(startTime)< 结束时间(endTime)
结束时间(endTime)< 当前时间(currentTime)

三、组件功能: 

  • 结束时间组件不能选择开始时间组件选中时间之前的时间,精确到年月日时分秒
  • 开始时间选完点击确定关闭开始时间选择框自动弹出结束时间组件选择框
  • 若已选择了结束时间再次选择开始时间,选择时间大于结束时间则自动同步为结束时间(手动输入同理)

四、组件代码:

import { range } from 'xe-utils'

export function disEndDateTime(paylod) {
  const {
    saveStartTime,
    savEndTime,
    dateDay,
    dateHour,
    dateMin,
    timeHour,
    timeMin,
    timeSec
  } = paylod
  let arraySecond = range(0, 60)
  let arrayMin = range(0, 60)
  let arrayHour = range(0, 24)
  let disDataHour = []
  let disDataMin = []
  let disDataSecond = []

  if (
    saveStartTime.format('YYYYMMDD') == savEndTime.format('YYYYMMDD') &&
    saveStartTime.format('YYYYMMDD') != dateDay
  ) {
    arrayHour.forEach(element => {
      if (element < saveStartTime.hour()) {
        disDataHour.push(element)
      }
    })
    if (saveStartTime.format('YYYYMMDDHH') == savEndTime.format('YYYYMMDDHH')) {
      arrayMin.forEach(element => {
        if (element < saveStartTime.minute()) {
          disDataMin.push(element)
        }
      })
      if (
        saveStartTime.format('YYYYMMDDHHmm') ==
        savEndTime.format('YYYYMMDDHHmm')
      ) {
        arraySecond.forEach(element => {
          if (element < saveStartTime.second()) {
            disDataSecond.push(element)
          }
        })
      }
    }
  }
  if (
    saveStartTime.format('YYYYMMDD') != savEndTime.format('YYYYMMDD') &&
    saveStartTime.format('YYYYMMDD') != dateDay &&
    savEndTime.format('YYYYMMDD') == dateDay
  ) {
    arrayHour.forEach(element => {
      if (element > timeHour) {
        disDataHour.push(element)
      }
    })
    if (dateHour == savEndTime.format('YYYYMMDDHH')) {
      arrayMin.forEach(element => {
        if (element > timeMin) {
          disDataMin.push(element)
        }
      })
      if (dateMin == savEndTime.format('YYYYMMDDHHmm')) {
        arraySecond.forEach(element => {
          if (element < timeSec) {
            disDataSecond.push(element)
          }
        })
      }
    }
  }
  if (saveStartTime.format('YYYYMMDD') == dateDay) {
    arrayHour.forEach(element => {
      if (element < saveStartTime.hour() || element > timeHour) {
        disDataHour.push(element)
      }
    })
    if (
      dateHour == savEndTime.format('YYYYMMDDHH') &&
      dateHour != saveStartTime.format('YYYYMMDDHH')
    ) {
      arrayMin.forEach(element => {
        if (element < saveStartTime.minute()) {
          disDataMin.push(element)
        }
      })
      if (
        saveStartTime.format('YYYYMMDDHHmm') ==
        savEndTime.format('YYYYMMDDHHmm')
      ) {
        arraySecond.forEach(element => {
          if (element < saveStartTime.second()) {
            disDataSecond.push(element)
          }
        })
      }
    } else if (
      dateHour == savEndTime.format('YYYYMMDDHH') &&
      dateHour == saveStartTime.format('YYYYMMDDHH')
    ) {
      arrayMin.forEach(element => {
        if (element < saveStartTime.minute() || element > timeMin) {
          disDataMin.push(element)
        }
      })
      if (
        saveStartTime.format('YYYYMMDDHHmm') ==
          savEndTime.format('YYYYMMDDHHmm') &&
        saveStartTime.format('YYYYMMDDHHmm') != dateMin
      ) {
        disDataSecond = []
        arraySecond.forEach(element => {
          if (element < saveStartTime.second()) {
            disDataSecond.push(element)
          }
        })
      } else if (
        saveStartTime.format('YYYYMMDDHHmm') ==
          savEndTime.format('YYYYMMDDHHmm') &&
        saveStartTime.format('YYYYMMDDHHmm') == dateMin
      ) {
        disDataSecond = []
        arraySecond.forEach(element => {
          if (element < saveStartTime.second() || element > timeMin) {
            disDataSecond.push(element)
          }
        })
      }
    }
  }
  return {
    disabledHours: () => disDataHour,
    disabledMinutes: () => disDataMin,
    disabledSeconds: () => disDataSecond
  }
}
export function disStartDateTime(paylod) {
  const {
    saveStartTime,
    dateDay,
    dateHour,
    dateMin,
    timeHour,
    timeMin,
    timeSec
  } = paylod
  let arraySecond = range(0, 60)
  let arrayMin = range(0, 60)
  let arrayHour = range(0, 24)
  let disDataHour = []
  let disDataMin = []
  let disDataSecond = []
  if (saveStartTime.format('YYYYMMDD') == dateDay) {
    arrayHour.forEach(element => {
      if (element > timeHour) {
        disDataHour.push(element)
      }
    })
    if (saveStartTime.format('YYYYMMDDHH') == dateHour) {
      arrayMin.forEach(element => {
        if (element > timeMin) {
          disDataMin.push(element)
        }
      })
      if (saveStartTime.format('YYYYMMDDHHmm') == dateMin) {
        arraySecond.forEach(element => {
          if (element > timeSec) {
            disDataSecond.push(element)
          }
        })
      }
    }

    return {
      disabledHours: () => disDataHour,
      disabledMinutes: () => disDataMin,
      disabledSeconds: () => disDataSecond
    }
  }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值