开始时间、结束时间组件的联动机制
一、组件图示:
二、联动规则:
开始时间(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
}
}
}