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
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) {
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() {
<Select value={mode} onChange={(v) => {
const next = v as any;
setMode(next);
setIsExpectedDeliveryDateLocked(next === 'adjust');
setIsExpectedDeliveryDateLocked(false);
setLockedExpectedDeliveryDateTs(null);
}}
optionList={[
{ value: 'generate', label: '生成流程日期' },