import { useState, useEffect } from 'react' const TimeRangePicker = ({ value = '1m', onChange, className = '' }) => { const [timeRange, setTimeRange] = useState(value) const [startDate, setStartDate] = useState('') const [endDate, setEndDate] = useState('') const [showDropdown, setShowDropdown] = useState(false) // 计算日期范围 const calculateDateRange = (range) => { const end = new Date() const start = new Date() if (range === '1m') { start.setMonth(start.getMonth() - 1) } else if (range === '3m') { start.setMonth(start.getMonth() - 3) } else if (range === '1y') { start.setFullYear(start.getFullYear() - 1) } const formatDate = (date) => { return date.toISOString().split('T')[0] } return { start: formatDate(start), end: formatDate(end) } } // 初始化时设置日期范围 useEffect(() => { const range = calculateDateRange(value) setStartDate(range.start) setEndDate(range.end) }, [value]) // 处理时间范围变化 const handleTimeRangeChange = (range) => { const dateRange = calculateDateRange(range) setStartDate(dateRange.start) setEndDate(dateRange.end) setTimeRange(range) if (onChange) { onChange(range, dateRange.start, dateRange.end) } setShowDropdown(false) } // 处理自定义日期范围 const handleCustomRangeApply = () => { if (startDate && endDate) { setTimeRange('custom') if (onChange) { onChange('custom', startDate, endDate) } setShowDropdown(false) } } // 处理开始日期变化 const handleStartDateChange = (e) => { setStartDate(e.target.value) } // 处理结束日期变化 const handleEndDateChange = (e) => { setEndDate(e.target.value) } return (
{showDropdown && (

自定义范围

快捷选项

  • handleTimeRangeChange('1m')} > 近一个月
  • handleTimeRangeChange('3m')} > 近三个月
  • handleTimeRangeChange('1y')} > 近一年
)}
) } export default TimeRangePicker