diff --git a/src/components/CronPicker/index.module.less b/src/components/CronPicker/index.module.less index 3cb3111..d62184e 100644 --- a/src/components/CronPicker/index.module.less +++ b/src/components/CronPicker/index.module.less @@ -15,7 +15,6 @@ } .formItem label { - width: 70px; // 增加标签宽度 margin-right: 16px; // 增加右边距 font-size: 14px; color: #333; diff --git a/src/components/CronPicker/index.tsx b/src/components/CronPicker/index.tsx index 2614a0f..27d6718 100644 --- a/src/components/CronPicker/index.tsx +++ b/src/components/CronPicker/index.tsx @@ -52,7 +52,7 @@ const CronPicker: React.FC = ({ value, onChange, style, classNa const [minutesInterval, setMinutesInterval] = useState(5); const [hourType, setHourType] = useState<'every' | 'at'>('at'); const [hourlyAt, setHourlyAt] = useState(12); - const [dailyType, setDailyType] = useState<'every' | 'weekday' | 'specific'>('every'); + const [dailyType, setDailyType] = useState<'every' | 'weekday' | 'specific' | 'week'>('every'); const [specificDay, setSpecificDay] = useState(1); const [selectedWeekdays, setSelectedWeekdays] = useState(['MON']); const [selectedMonths, setSelectedMonths] = useState(['1']); @@ -103,6 +103,10 @@ const CronPicker: React.FC = ({ value, onChange, style, classNa dom = specificDay.toString(); dow = '?'; } + else if (dailyType === 'week') { + dom = '?'; + dow = selectedWeekdays.length > 0 ? selectedWeekdays.join(',') : '*'; + } const mon = selectedMonths.length < 12 ? selectedMonths.join(',') : '*'; const newCron = `${sec} ${min} ${hour} ${dom} ${mon} ${dow}`; @@ -162,6 +166,16 @@ const CronPicker: React.FC = ({ value, onChange, style, classNa setSpecificDay(dayNum); } } + else if (dayOfMonth === '?' && dayOfWeek !== '?' && dayOfWeek !== 'MON-FRI') { + setDailyType('week'); + if (dayOfWeek.includes(',') || dayOfWeek.includes('-')) { + // 简化处理,实际可以更精确解析 + setSelectedWeekdays(dayOfWeek.split(/[-,]/)); + } + else if (dayOfWeek !== '*') { + setSelectedWeekdays([dayOfWeek]); + } + } // 解析星期部分 if (dayOfWeek !== '?' && dayOfWeek !== '*') { @@ -272,7 +286,7 @@ const CronPicker: React.FC = ({ value, onChange, style, classNa }; const handleDailyTypeChange = (value: string) => { - setDailyType(value as 'every' | 'weekday' | 'specific'); + setDailyType(value as 'every' | 'weekday' | 'specific' | 'week'); }; return ( @@ -341,29 +355,32 @@ const CronPicker: React.FC = ({ value, onChange, style, classNa /> + 指定星期 - -
- {['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'].map(day => ( - - ))} -
-
+ {dailyType === 'week' && ( + +
+ {['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'].map(day => ( + + ))} +
+
+ )} {PRESETS.map(p => (