根据不同的次数,遍历数组
后台系统方法:
medTime:['12:00','15:30']
const [medsTimeList, setMedsTimeList] = useState<NUM_OF_MES[]>([])
function handleChange(name: string, value: any) {
if (name === 'medDayFrequency') {
//用药次数
obj[name] = value
//根据次数选择用药时间
const newAry = medsTimeListAryFn(value)
setMedsTimeList(newAry)
}
setFormData(obj)
}
//用药次数处理
const medsTimeListAryFn = (end) => {
let arr = numToArray(1, end)
const column = arr.map((v: number) => ({
hour: '',
minutes: '',
}))
return column
}
//返回有长度的空数组
export const numToArray = (start = 0, end = 10) => {
let arr: any = []
for (var i = start; i <= end; i++) {
arr.push(i)
}
return arr
}
判断时间不相同且上一时间大于下一时间2小时,可直接对比时间'12:00'>'10:00'
if (!medDayFrequency) {
message.warning('请选择用药次数')
return false
} else {
if (medsTimeList?.length === 0) {
message.warning('请选择用药时间')
return false
} else if (medsTimeList.some((v) => !v.hour || !v.minutes)) {
message.warning('有用药时间未填写')
return false
} else {
let num: string = ''
for (let i = 0; i < medsTimeList.length; i++) {
const hour = medsTimeList[i].hour,
minutes = medsTimeList[i].minutes,
value = hour + ':' + minutes
if (i === 0) {
num = value
} else {
const chaHour = Number(hour) - 2,
lastHour = chaHour < 10 ? '0' + chaHour : '' + chaHour,
lastValue = lastHour + ':' + minutes
if (lastValue <= num) {
message.warning(`第${i + 1}次的用药时间需大于第${i}次两小时`)
return false
} else {
num = value
}
}
}
}
小程序uni-app方法:
medTime:['12:00','15:30']
watch: {
'model.medDayFrequency': {
deep: true,
immediate: true,
handler: function (newV) {
let newArr = []
let diffV
let timeLength = this.model.medTime.length
if (newV == timeLength) return
if (newV > timeLength) {
diffV = newV - timeLength
for (let i = 0; i < diffV; i++) {
newArr.push('')
}
newArr = this.model.medTime.concat(newArr)
} else {
diffV = timeLength - newV
newArr = this.model.medTime.splice(0, timeLength - diffV)
}
this.model.medTime = newArr
},
},
},