From a9c2e7d967ed5b785aa78ac26eac263564efc972 Mon Sep 17 00:00:00 2001 From: mairuiming Date: Fri, 2 Jan 2026 09:19:03 +0800 Subject: [PATCH] 2 2 --- src/App.tsx | 83 ++++++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 06cd9a4..5c3fbeb 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -283,7 +283,8 @@ export default function App() { // 切换功能时重置全局变量,但保留新的mode resetGlobalState({ resetMode: false }); setMode(m); - setIsExpectedDeliveryDateLocked(m === 'adjust'); + setIsExpectedDeliveryDateLocked(false); + setLockedExpectedDeliveryDateTs(null); setModeSelectionVisible(false); }; @@ -370,6 +371,7 @@ export default function App() { const expectedDeliveryDateField: any = await deliveryTable.getField(DELIVERY_EXPECTED_DATE_FIELD_ID); const nodeDetailsVal = await nodeDetailsField.getValue(deliveryRecordId); + let expectedDeliveryTsFromField: number | null = null; try { const expectedDeliveryVal = await expectedDeliveryDateField.getValue(deliveryRecordId); let ts: number | null = null; @@ -384,8 +386,7 @@ export default function App() { if (!isNaN(parsed.getTime())) ts = parsed.getTime(); } } - setLockedExpectedDeliveryDateTs(ts); - setIsExpectedDeliveryDateLocked(true); + expectedDeliveryTsFromField = ts; } catch {} // 读取record_ids文本字段并保留原始文本(用于原样写回) try { @@ -467,19 +468,23 @@ export default function App() { if (snapshot.timelineAdjustments) setTimelineAdjustments(snapshot.timelineAdjustments); { - const snapLockedTs = snapshot?.lockedExpectedDeliveryDateTs; - if (snapLockedTs === null) { - setLockedExpectedDeliveryDateTs(null); - } else { - const hasLockedTs = snapLockedTs !== undefined && snapLockedTs !== null; - if (hasLockedTs) setLockedExpectedDeliveryDateTs(snapLockedTs); - } - const hasLockedTs = snapLockedTs !== undefined && snapLockedTs !== null; const snapLockedFlag = snapshot?.isExpectedDeliveryDateLocked; - if (typeof snapLockedFlag === 'boolean') { - setIsExpectedDeliveryDateLocked(snapLockedFlag); - } else if (hasLockedTs) { - setIsExpectedDeliveryDateLocked(true); + const snapLockedTs = snapshot?.lockedExpectedDeliveryDateTs; + const shouldLock = snapLockedFlag === true || (snapLockedFlag === undefined && snapLockedTs !== undefined && snapLockedTs !== null); + if (shouldLock) { + const ts = (typeof snapLockedTs === 'number' && Number.isFinite(snapLockedTs)) + ? snapLockedTs + : expectedDeliveryTsFromField; + if (ts !== null && ts !== undefined) { + setLockedExpectedDeliveryDateTs(ts); + setIsExpectedDeliveryDateLocked(true); + } else { + setLockedExpectedDeliveryDateTs(null); + setIsExpectedDeliveryDateLocked(false); + } + } else { + setLockedExpectedDeliveryDateTs(null); + setIsExpectedDeliveryDateLocked(false); } } if (snapshot.expectedDateTimestamp) { @@ -624,19 +629,15 @@ export default function App() { if (snapshot.timelineAdjustments) setTimelineAdjustments(snapshot.timelineAdjustments); { - const snapLockedTs = snapshot?.lockedExpectedDeliveryDateTs; - if (snapLockedTs === null) { - setLockedExpectedDeliveryDateTs(null); - } else { - const hasLockedTs = snapLockedTs !== undefined && snapLockedTs !== null; - if (hasLockedTs) setLockedExpectedDeliveryDateTs(snapLockedTs); - } - const hasLockedTs = snapLockedTs !== undefined && snapLockedTs !== null; const snapLockedFlag = snapshot?.isExpectedDeliveryDateLocked; - if (typeof snapLockedFlag === 'boolean') { - setIsExpectedDeliveryDateLocked(snapLockedFlag); - } else if (hasLockedTs) { + const snapLockedTs = snapshot?.lockedExpectedDeliveryDateTs; + const shouldLock = snapLockedFlag === true || (snapLockedFlag === undefined && snapLockedTs !== undefined && snapLockedTs !== null); + if (shouldLock && typeof snapLockedTs === 'number' && Number.isFinite(snapLockedTs)) { + setLockedExpectedDeliveryDateTs(snapLockedTs); setIsExpectedDeliveryDateLocked(true); + } else { + setLockedExpectedDeliveryDateTs(null); + setIsExpectedDeliveryDateLocked(false); } } if (snapshot.expectedDateTimestamp) { @@ -1087,18 +1088,15 @@ export default function App() { setTimelineVisible(true); { - const snapLockedTs = (globalSnapshotData as any)?.lockedExpectedDeliveryDateTs; - if (snapLockedTs === null) { - setLockedExpectedDeliveryDateTs(null); - } else { - const hasLockedTs = snapLockedTs !== undefined && snapLockedTs !== null; - if (hasLockedTs) setLockedExpectedDeliveryDateTs(snapLockedTs); - } const snapLockedFlag = (globalSnapshotData as any)?.isExpectedDeliveryDateLocked; - if (typeof snapLockedFlag === 'boolean') { - setIsExpectedDeliveryDateLocked(snapLockedFlag); - } else if (snapLockedTs !== undefined && snapLockedTs !== null) { + const snapLockedTs = (globalSnapshotData as any)?.lockedExpectedDeliveryDateTs; + const shouldLock = snapLockedFlag === true || (snapLockedFlag === undefined && snapLockedTs !== undefined && snapLockedTs !== null); + if (shouldLock && typeof snapLockedTs === 'number' && Number.isFinite(snapLockedTs)) { + setLockedExpectedDeliveryDateTs(snapLockedTs); setIsExpectedDeliveryDateLocked(true); + } else { + setLockedExpectedDeliveryDateTs(null); + setIsExpectedDeliveryDateLocked(false); } } @@ -3540,8 +3538,14 @@ export default function App() { setSelectedLabels(s.selectedLabels || {}); setTimelineAdjustments(s.timelineAdjustments || {}); setBaseBufferDays(s.baseBufferDays ?? 14); - setLockedExpectedDeliveryDateTs(s.lockedExpectedDeliveryDateTs ?? null); - setIsExpectedDeliveryDateLocked(!!s.isExpectedDeliveryDateLocked); + const shouldLock = s.isExpectedDeliveryDateLocked === true || (s.isExpectedDeliveryDateLocked === undefined && s.lockedExpectedDeliveryDateTs !== null && s.lockedExpectedDeliveryDateTs !== undefined); + if (shouldLock && typeof s.lockedExpectedDeliveryDateTs === 'number' && Number.isFinite(s.lockedExpectedDeliveryDateTs)) { + setLockedExpectedDeliveryDateTs(s.lockedExpectedDeliveryDateTs); + setIsExpectedDeliveryDateLocked(true); + } else { + setLockedExpectedDeliveryDateTs(null); + setIsExpectedDeliveryDateLocked(false); + } setActualCompletionDates(s.actualCompletionDates || {}); setCompletionDateAdjustment(s.completionDateAdjustment || 0); setHasAppliedSuggestedBuffer(!!s.hasAppliedSuggestedBuffer && s.hasAppliedSuggestedBuffer); @@ -5356,7 +5360,8 @@ export default function App() {