import React, { useEffect, useState } from 'react' import { Radio } from '../components' import { getSlotTypeYear } from '../utils/utils' import type { PanelBase } from '../interface' import { SlotType } from '../interface' export default function Year({ visible, value, onChange }: PanelBase) { const [ready, setReady] = useState(false); const [innerValue, setInnerValue] = useState(''); const [type, setType] = useState(getSlotTypeYear(value)); const [range0, setRange0] = useState('2022'); const [range1, setRange1] = useState('2023'); useEffect(() => { let newValue = undefined; if (type === SlotType.ALL) { newValue = '*'; } else if (type === SlotType.NO_SPEC) { newValue = undefined; } else if (type === SlotType.RANGE) { newValue = `${range0}-${range1}`; } if (newValue !== value) { setInnerValue(newValue) if (ready) onChange(newValue || '') } }, [type, range0, range1]) useEffect(() => { if (value === undefined || value === '') { if (!ready) setReady(true) setType(SlotType.NO_SPEC) return; } if (value === innerValue) { if (!ready) setReady(true) return; } setInnerValue(value); if (value === '*') { setType(SlotType.ALL) } else if (value === '') { setType(SlotType.NO_SPEC) } else if (value.indexOf('-') > -1) { setType(SlotType.RANGE) const ss = value.split('-') setRange0(ss[0]) setRange1(ss[1]) } if (!ready) setReady(true) }, [value]) return (
setType(SlotType.NO_SPEC)} />
setType(SlotType.ALL)} />
setType(SlotType.RANGE)} />
setRange0(e.target.value)} />
到
setRange1(e.target.value)} />
) };