diff --git a/src/components/anniversary/AnniversaryList.tsx b/src/components/anniversary/AnniversaryList.tsx index 0bf8a78..2512fac 100644 --- a/src/components/anniversary/AnniversaryList.tsx +++ b/src/components/anniversary/AnniversaryList.tsx @@ -139,7 +139,9 @@ export function AnniversaryList({ events, onEventClick, onAddClick }: Anniversar title: h.name, date: h.date.toISOString(), is_holiday: true, - is_lunar: h.isLunar, + // 注意:内置节假日的日期已经是计算后的公历日期, + // 不需要再按农历处理,直接使用公历即可 + is_lunar: false, repeat_type: 'yearly', type: 'anniversary', is_builtin: true, diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index 57568eb..c506442 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -46,6 +46,7 @@ export function HomePage() { const [opened, { open, close }] = useDisclosure(false); const [selectedEvent, setSelectedEvent] = useState(null); const [isEdit, setIsEdit] = useState(false); + const [isBuiltinHoliday, setIsBuiltinHoliday] = useState(false); // 内置节假日只读模式 // Form state const [formType, setFormType] = useState('anniversary'); @@ -71,7 +72,33 @@ export function HomePage() { }; const handleEventClick = (event: Event) => { + // 检查是否是内置节假日(id 以 builtin- 开头) + if (event.id && event.id.startsWith('builtin-')) { + // 内置节假日:显示详情(只读模式) + setSelectedEvent(event); + setIsEdit(false); + setIsBuiltinHoliday(true); + setFormType(event.type); + setFormTitle(event.title); + setFormContent(event.content || ''); + setFormDate(new Date(event.date)); + setFormIsLunar(event.is_lunar); + setFormRepeatType(event.repeat_type); + setFormIsHoliday(event.is_holiday || false); + setFormPriority(event.priority || 'none'); + const eventDate = new Date(event.date); + const hours = eventDate.getHours(); + const minutes = eventDate.getMinutes(); + const hasTime = hours !== 0 || minutes !== 0; + setFormTime(hasTime ? `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}` : ''); + setFormReminderValue('0'); + open(); + return; + } + + // 用户创建的纪念日/提醒:编辑模式 setSelectedEvent(event); + setIsBuiltinHoliday(false); setIsEdit(true); setFormType(event.type); setFormTitle(event.title); @@ -95,6 +122,7 @@ export function HomePage() { const handleAddClick = (type: EventType) => { setSelectedEvent(null); setIsEdit(false); + setIsBuiltinHoliday(false); setFormType(type); setFormTitle(''); setFormContent(''); @@ -418,7 +446,7 @@ export function HomePage() { fontSize: '1rem', }} > - {isEdit ? '编辑事件' : '添加事件'} + {isBuiltinHoliday ? '节假日详情' : (isEdit ? '编辑事件' : '添加事件')} } size="md" @@ -576,20 +604,19 @@ export function HomePage() { - {/* Lunar switch (only for anniversaries, disabled in edit mode) */} + {/* Lunar switch (only for anniversaries) */} {formType === 'anniversary' && ( + 农历日期 } checked={formIsLunar} onChange={(e) => setFormIsLunar(e.currentTarget.checked)} - disabled={isEdit} styles={{ track: { - opacity: isEdit ? 0.5 : 1, + opacity: 1, }, }} /> @@ -701,7 +728,7 @@ export function HomePage() { {/* Actions */} - {isEdit && ( + {isEdit && !isBuiltinHoliday && ( - + {isBuiltinHoliday ? ( + + ) : ( + <> + + + + )}