2
This commit is contained in:
2026-01-02 09:19:03 +08:00
parent 2fdae6b04d
commit a9c2e7d967

View File

@ -283,7 +283,8 @@ export default function App() {
// 切换功能时重置全局变量但保留新的mode // 切换功能时重置全局变量但保留新的mode
resetGlobalState({ resetMode: false }); resetGlobalState({ resetMode: false });
setMode(m); setMode(m);
setIsExpectedDeliveryDateLocked(m === 'adjust'); setIsExpectedDeliveryDateLocked(false);
setLockedExpectedDeliveryDateTs(null);
setModeSelectionVisible(false); setModeSelectionVisible(false);
}; };
@ -370,6 +371,7 @@ export default function App() {
const expectedDeliveryDateField: any = await deliveryTable.getField(DELIVERY_EXPECTED_DATE_FIELD_ID); const expectedDeliveryDateField: any = await deliveryTable.getField(DELIVERY_EXPECTED_DATE_FIELD_ID);
const nodeDetailsVal = await nodeDetailsField.getValue(deliveryRecordId); const nodeDetailsVal = await nodeDetailsField.getValue(deliveryRecordId);
let expectedDeliveryTsFromField: number | null = null;
try { try {
const expectedDeliveryVal = await expectedDeliveryDateField.getValue(deliveryRecordId); const expectedDeliveryVal = await expectedDeliveryDateField.getValue(deliveryRecordId);
let ts: number | null = null; let ts: number | null = null;
@ -384,8 +386,7 @@ export default function App() {
if (!isNaN(parsed.getTime())) ts = parsed.getTime(); if (!isNaN(parsed.getTime())) ts = parsed.getTime();
} }
} }
setLockedExpectedDeliveryDateTs(ts); expectedDeliveryTsFromField = ts;
setIsExpectedDeliveryDateLocked(true);
} catch {} } catch {}
// 读取record_ids文本字段并保留原始文本用于原样写回 // 读取record_ids文本字段并保留原始文本用于原样写回
try { try {
@ -467,19 +468,23 @@ export default function App() {
if (snapshot.timelineAdjustments) setTimelineAdjustments(snapshot.timelineAdjustments); 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; const snapLockedFlag = snapshot?.isExpectedDeliveryDateLocked;
if (typeof snapLockedFlag === 'boolean') { const snapLockedTs = snapshot?.lockedExpectedDeliveryDateTs;
setIsExpectedDeliveryDateLocked(snapLockedFlag); const shouldLock = snapLockedFlag === true || (snapLockedFlag === undefined && snapLockedTs !== undefined && snapLockedTs !== null);
} else if (hasLockedTs) { if (shouldLock) {
setIsExpectedDeliveryDateLocked(true); 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) { if (snapshot.expectedDateTimestamp) {
@ -624,19 +629,15 @@ export default function App() {
if (snapshot.timelineAdjustments) setTimelineAdjustments(snapshot.timelineAdjustments); 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; const snapLockedFlag = snapshot?.isExpectedDeliveryDateLocked;
if (typeof snapLockedFlag === 'boolean') { const snapLockedTs = snapshot?.lockedExpectedDeliveryDateTs;
setIsExpectedDeliveryDateLocked(snapLockedFlag); const shouldLock = snapLockedFlag === true || (snapLockedFlag === undefined && snapLockedTs !== undefined && snapLockedTs !== null);
} else if (hasLockedTs) { if (shouldLock && typeof snapLockedTs === 'number' && Number.isFinite(snapLockedTs)) {
setLockedExpectedDeliveryDateTs(snapLockedTs);
setIsExpectedDeliveryDateLocked(true); setIsExpectedDeliveryDateLocked(true);
} else {
setLockedExpectedDeliveryDateTs(null);
setIsExpectedDeliveryDateLocked(false);
} }
} }
if (snapshot.expectedDateTimestamp) { if (snapshot.expectedDateTimestamp) {
@ -1087,18 +1088,15 @@ export default function App() {
setTimelineVisible(true); 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; const snapLockedFlag = (globalSnapshotData as any)?.isExpectedDeliveryDateLocked;
if (typeof snapLockedFlag === 'boolean') { const snapLockedTs = (globalSnapshotData as any)?.lockedExpectedDeliveryDateTs;
setIsExpectedDeliveryDateLocked(snapLockedFlag); const shouldLock = snapLockedFlag === true || (snapLockedFlag === undefined && snapLockedTs !== undefined && snapLockedTs !== null);
} else if (snapLockedTs !== undefined && snapLockedTs !== null) { if (shouldLock && typeof snapLockedTs === 'number' && Number.isFinite(snapLockedTs)) {
setLockedExpectedDeliveryDateTs(snapLockedTs);
setIsExpectedDeliveryDateLocked(true); setIsExpectedDeliveryDateLocked(true);
} else {
setLockedExpectedDeliveryDateTs(null);
setIsExpectedDeliveryDateLocked(false);
} }
} }
@ -3540,8 +3538,14 @@ export default function App() {
setSelectedLabels(s.selectedLabels || {}); setSelectedLabels(s.selectedLabels || {});
setTimelineAdjustments(s.timelineAdjustments || {}); setTimelineAdjustments(s.timelineAdjustments || {});
setBaseBufferDays(s.baseBufferDays ?? 14); setBaseBufferDays(s.baseBufferDays ?? 14);
setLockedExpectedDeliveryDateTs(s.lockedExpectedDeliveryDateTs ?? null); const shouldLock = s.isExpectedDeliveryDateLocked === true || (s.isExpectedDeliveryDateLocked === undefined && s.lockedExpectedDeliveryDateTs !== null && s.lockedExpectedDeliveryDateTs !== undefined);
setIsExpectedDeliveryDateLocked(!!s.isExpectedDeliveryDateLocked); if (shouldLock && typeof s.lockedExpectedDeliveryDateTs === 'number' && Number.isFinite(s.lockedExpectedDeliveryDateTs)) {
setLockedExpectedDeliveryDateTs(s.lockedExpectedDeliveryDateTs);
setIsExpectedDeliveryDateLocked(true);
} else {
setLockedExpectedDeliveryDateTs(null);
setIsExpectedDeliveryDateLocked(false);
}
setActualCompletionDates(s.actualCompletionDates || {}); setActualCompletionDates(s.actualCompletionDates || {});
setCompletionDateAdjustment(s.completionDateAdjustment || 0); setCompletionDateAdjustment(s.completionDateAdjustment || 0);
setHasAppliedSuggestedBuffer(!!s.hasAppliedSuggestedBuffer && s.hasAppliedSuggestedBuffer); setHasAppliedSuggestedBuffer(!!s.hasAppliedSuggestedBuffer && s.hasAppliedSuggestedBuffer);
@ -5356,7 +5360,8 @@ export default function App() {
<Select value={mode} onChange={(v) => { <Select value={mode} onChange={(v) => {
const next = v as any; const next = v as any;
setMode(next); setMode(next);
setIsExpectedDeliveryDateLocked(next === 'adjust'); setIsExpectedDeliveryDateLocked(false);
setLockedExpectedDeliveryDateTs(null);
}} }}
optionList={[ optionList={[
{ value: 'generate', label: '生成流程日期' }, { value: 'generate', label: '生成流程日期' },