功能实现-根据不同的次数,遍历数组

137 阅读1分钟

根据不同的次数,遍历数组

image.png

后台系统方法:

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
            },
    },
},