From 183c88a6ac9f20367cc1b95d13a6391025ddd391 Mon Sep 17 00:00:00 2001 From: ddshi <8811906+ddshi@user.noreply.gitee.com> Date: Sat, 28 Feb 2026 11:05:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=8A=82=E5=81=87?= =?UTF-8?q?=E6=97=A5=E6=98=BE=E7=A4=BA=E5=92=8C=E7=BC=96=E8=BE=91=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复内置节假日倒计时显示错误(设置is_lunar为false,因为日期已是公历) - 修复内置节假日点击行为:显示只读详情弹窗 - 添加内置节假日标识,支持查看详情 - 启用纪念日编辑时的农历开关 Co-Authored-By: Claude Opus 4.6 --- .../anniversary/AnniversaryList.tsx | 4 +- src/pages/HomePage.tsx | 97 +++++++++++++------ 2 files changed, 73 insertions(+), 28 deletions(-) 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 ? ( + + ) : ( + <> + + + + )}