2
2
This commit is contained in:
72
src/App.tsx
72
src/App.tsx
@ -589,16 +589,13 @@ export default function App() {
|
|||||||
setTimelineLoading(true);
|
setTimelineLoading(true);
|
||||||
try {
|
try {
|
||||||
const deliveryTable = await bitable.base.getTable(DELIVERY_RECORD_TABLE_ID);
|
const deliveryTable = await bitable.base.getTable(DELIVERY_RECORD_TABLE_ID);
|
||||||
const nodeDetailsField: any = await deliveryTable.getField(DELIVERY_NODE_DETAILS_FIELD_ID);
|
const deliveryRecord: any = await deliveryTable.getRecordById(deliveryRecordId);
|
||||||
const recordIdsField: any = await deliveryTable.getField(DELIVERY_RECORD_IDS_FIELD_ID);
|
const deliveryFields: any = deliveryRecord?.fields || {};
|
||||||
const snapshotField: any = await deliveryTable.getField(DELIVERY_SNAPSHOT_JSON_FIELD_ID);
|
|
||||||
const startTimeField: any = await deliveryTable.getField(DELIVERY_START_TIME_FIELD_ID);
|
|
||||||
const expectedDeliveryDateField: any = await deliveryTable.getField(DELIVERY_EXPECTED_DATE_FIELD_ID);
|
|
||||||
|
|
||||||
const nodeDetailsVal = await nodeDetailsField.getValue(deliveryRecordId);
|
const nodeDetailsVal = deliveryFields?.[DELIVERY_NODE_DETAILS_FIELD_ID];
|
||||||
let expectedDeliveryTsFromField: number | null = null;
|
let expectedDeliveryTsFromField: number | null = null;
|
||||||
try {
|
try {
|
||||||
const expectedDeliveryVal = await expectedDeliveryDateField.getValue(deliveryRecordId);
|
const expectedDeliveryVal = deliveryFields?.[DELIVERY_EXPECTED_DATE_FIELD_ID];
|
||||||
let ts: number | null = null;
|
let ts: number | null = null;
|
||||||
if (typeof expectedDeliveryVal === 'number') {
|
if (typeof expectedDeliveryVal === 'number') {
|
||||||
ts = expectedDeliveryVal;
|
ts = expectedDeliveryVal;
|
||||||
@ -615,7 +612,7 @@ export default function App() {
|
|||||||
} catch {}
|
} catch {}
|
||||||
// 读取record_ids文本字段并保留原始文本(用于原样写回)
|
// 读取record_ids文本字段并保留原始文本(用于原样写回)
|
||||||
try {
|
try {
|
||||||
const recordIdsTextVal = await recordIdsField.getValue(deliveryRecordId);
|
const recordIdsTextVal = deliveryFields?.[DELIVERY_RECORD_IDS_FIELD_ID];
|
||||||
const raw = extractText(recordIdsTextVal);
|
const raw = extractText(recordIdsTextVal);
|
||||||
if (raw && raw.trim() !== '') {
|
if (raw && raw.trim() !== '') {
|
||||||
setRestoredRecordIdsText(raw.trim());
|
setRestoredRecordIdsText(raw.trim());
|
||||||
@ -637,7 +634,7 @@ export default function App() {
|
|||||||
|
|
||||||
// 优先使用货期记录表中的快照字段进行一键还原(新方案)
|
// 优先使用货期记录表中的快照字段进行一键还原(新方案)
|
||||||
try {
|
try {
|
||||||
const deliverySnapVal = await snapshotField.getValue(deliveryRecordId);
|
const deliverySnapVal = deliveryFields?.[DELIVERY_SNAPSHOT_JSON_FIELD_ID];
|
||||||
let deliverySnapStr: string | null = null;
|
let deliverySnapStr: string | null = null;
|
||||||
if (typeof deliverySnapVal === 'string') {
|
if (typeof deliverySnapVal === 'string') {
|
||||||
deliverySnapStr = deliverySnapVal;
|
deliverySnapStr = deliverySnapVal;
|
||||||
@ -736,7 +733,7 @@ export default function App() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!startTimeRestored) {
|
if (!startTimeRestored) {
|
||||||
const startTimeValue = await startTimeField.getValue(deliveryRecordId);
|
const startTimeValue = deliveryFields?.[DELIVERY_START_TIME_FIELD_ID];
|
||||||
if (startTimeValue) {
|
if (startTimeValue) {
|
||||||
let extractedStartTime: Date | null = null;
|
let extractedStartTime: Date | null = null;
|
||||||
if (typeof startTimeValue === 'number') {
|
if (typeof startTimeValue === 'number') {
|
||||||
@ -889,7 +886,7 @@ export default function App() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!startTimeRestored) {
|
if (!startTimeRestored) {
|
||||||
const startTimeValue = await startTimeField.getValue(deliveryRecordId);
|
const startTimeValue = deliveryFields?.[DELIVERY_START_TIME_FIELD_ID];
|
||||||
if (startTimeValue) {
|
if (startTimeValue) {
|
||||||
let extractedStartTime: Date | null = null;
|
let extractedStartTime: Date | null = null;
|
||||||
if (typeof startTimeValue === 'number') {
|
if (typeof startTimeValue === 'number') {
|
||||||
@ -1036,7 +1033,7 @@ export default function App() {
|
|||||||
|
|
||||||
// 如果快照中没有起始时间信息,则从当前选中的货期记录中获取
|
// 如果快照中没有起始时间信息,则从当前选中的货期记录中获取
|
||||||
if (!startTimeRestored) {
|
if (!startTimeRestored) {
|
||||||
const startTimeValue = await startTimeField.getValue(deliveryRecordId);
|
const startTimeValue = deliveryFields?.[DELIVERY_START_TIME_FIELD_ID];
|
||||||
if (startTimeValue) {
|
if (startTimeValue) {
|
||||||
let extractedStartTime: Date | null = null;
|
let extractedStartTime: Date | null = null;
|
||||||
if (typeof startTimeValue === 'number') {
|
if (typeof startTimeValue === 'number') {
|
||||||
@ -1430,7 +1427,7 @@ export default function App() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 如果没有快照恢复起始时间,则从当前货期记录中获取起始时间
|
// 如果没有快照恢复起始时间,则从当前货期记录中获取起始时间
|
||||||
const startTimeValue = await startTimeField.getValue(deliveryRecordId);
|
const startTimeValue = deliveryFields?.[DELIVERY_START_TIME_FIELD_ID];
|
||||||
if (startTimeValue) {
|
if (startTimeValue) {
|
||||||
let extractedStartTime: Date | null = null;
|
let extractedStartTime: Date | null = null;
|
||||||
if (typeof startTimeValue === 'number') {
|
if (typeof startTimeValue === 'number') {
|
||||||
@ -1502,6 +1499,7 @@ export default function App() {
|
|||||||
const OMS_BOARD_TABLE_ID = 'tbl7j8bCpUbFmGuk'; // OMS看板表ID
|
const OMS_BOARD_TABLE_ID = 'tbl7j8bCpUbFmGuk'; // OMS看板表ID
|
||||||
const OMS_PLAN_TEXT_FIELD_ID = 'fldH0jPZE0'; // OMS看板:货期计划(文本结构)
|
const OMS_PLAN_TEXT_FIELD_ID = 'fldH0jPZE0'; // OMS看板:货期计划(文本结构)
|
||||||
const OMS_PLAN_VERSION_FIELD_ID = 'fldwlIUf4z'; // OMS看板:计划版本(公式数字)
|
const OMS_PLAN_VERSION_FIELD_ID = 'fldwlIUf4z'; // OMS看板:计划版本(公式数字)
|
||||||
|
const OMS_DELIVERY_RECORD_ID_FIELD_ID = 'fldjEIP9yC'; // OMS看板:货期记录表record_id
|
||||||
|
|
||||||
// 已移除中国法定节假日相关常量和配置
|
// 已移除中国法定节假日相关常量和配置
|
||||||
|
|
||||||
@ -2044,6 +2042,15 @@ export default function App() {
|
|||||||
initializeData();
|
initializeData();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
const getDeliveryRecordIdFromOmsRecord = async (omsRecordId: string): Promise<string | null> => {
|
||||||
|
if (!omsRecordId) return null;
|
||||||
|
const omsTable = await bitable.base.getTable(OMS_BOARD_TABLE_ID);
|
||||||
|
const omsRecord = await omsTable.getRecordById(omsRecordId);
|
||||||
|
const raw = omsRecord?.fields?.[OMS_DELIVERY_RECORD_ID_FIELD_ID];
|
||||||
|
const text = extractText(raw)?.trim();
|
||||||
|
return text ? text : null;
|
||||||
|
};
|
||||||
|
|
||||||
// 初始化起始时间:从货期记录表获取,新记录则使用当前时间
|
// 初始化起始时间:从货期记录表获取,新记录则使用当前时间
|
||||||
const initializeStartTime = async () => {
|
const initializeStartTime = async () => {
|
||||||
try {
|
try {
|
||||||
@ -2074,8 +2081,30 @@ export default function App() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (recordId && tableId === OMS_BOARD_TABLE_ID) {
|
} else if (recordId && tableId === OMS_BOARD_TABLE_ID) {
|
||||||
// 从OMS看板匹配对应的货期记录后,尝试获取其起始时间
|
// 从OMS看板读取货期记录ID后,尝试获取其起始时间
|
||||||
try {
|
try {
|
||||||
|
const deliveryRecordId = await getDeliveryRecordIdFromOmsRecord(recordId);
|
||||||
|
if (deliveryRecordId) {
|
||||||
|
const deliveryTable = await bitable.base.getTable(DELIVERY_RECORD_TABLE_ID);
|
||||||
|
const deliveryRecord: any = await deliveryTable.getRecordById(deliveryRecordId);
|
||||||
|
const startTimeValue = deliveryRecord?.fields?.[DELIVERY_START_TIME_FIELD_ID];
|
||||||
|
if (startTimeValue) {
|
||||||
|
let extractedStartTime: Date | null = null;
|
||||||
|
if (typeof startTimeValue === 'number') {
|
||||||
|
extractedStartTime = new Date(startTimeValue);
|
||||||
|
} else if (Array.isArray(startTimeValue) && startTimeValue.length > 0) {
|
||||||
|
const timestamp = startTimeValue[0];
|
||||||
|
if (typeof timestamp === 'number') extractedStartTime = new Date(timestamp);
|
||||||
|
}
|
||||||
|
if (extractedStartTime && !isNaN(extractedStartTime.getTime())) {
|
||||||
|
setStartTime(extractedStartTime);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// 原始逻辑:从OMS看板用“货期计划 + 计划版本”匹配货期记录(已停用)
|
||||||
const omsTable = await bitable.base.getTable(OMS_BOARD_TABLE_ID);
|
const omsTable = await bitable.base.getTable(OMS_BOARD_TABLE_ID);
|
||||||
const planTextField: any = await omsTable.getField(OMS_PLAN_TEXT_FIELD_ID);
|
const planTextField: any = await omsTable.getField(OMS_PLAN_TEXT_FIELD_ID);
|
||||||
const planVersionField: any = await omsTable.getField(OMS_PLAN_VERSION_FIELD_ID);
|
const planVersionField: any = await omsTable.getField(OMS_PLAN_VERSION_FIELD_ID);
|
||||||
@ -2118,6 +2147,7 @@ export default function App() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn('从OMS看板匹配起始时间失败,使用当前时间:', e);
|
console.warn('从OMS看板匹配起始时间失败,使用当前时间:', e);
|
||||||
}
|
}
|
||||||
@ -5725,7 +5755,18 @@ export default function App() {
|
|||||||
setSelectedDeliveryRecordId(recordId);
|
setSelectedDeliveryRecordId(recordId);
|
||||||
await loadProcessDataFromDeliveryRecord(recordId);
|
await loadProcessDataFromDeliveryRecord(recordId);
|
||||||
} else if (tableId === OMS_BOARD_TABLE_ID) {
|
} else if (tableId === OMS_BOARD_TABLE_ID) {
|
||||||
// 支持在OMS看板选中记录后读取:通过货期计划 + 计划版本匹配货期记录
|
const matchedDeliveryRecordId = await getDeliveryRecordIdFromOmsRecord(recordId);
|
||||||
|
if (!matchedDeliveryRecordId) {
|
||||||
|
if (bitable.ui.showToast) {
|
||||||
|
await bitable.ui.showToast({ toastType: ToastType.warning, message: 'OMS看板记录缺少货期记录ID(fldjEIP9yC)' });
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setSelectedDeliveryRecordId(matchedDeliveryRecordId);
|
||||||
|
await loadProcessDataFromDeliveryRecord(matchedDeliveryRecordId);
|
||||||
|
|
||||||
|
/*
|
||||||
|
// 原始逻辑:从OMS看板用“货期计划 + 计划版本”匹配货期记录(已停用)
|
||||||
const omsTable = await bitable.base.getTable(OMS_BOARD_TABLE_ID);
|
const omsTable = await bitable.base.getTable(OMS_BOARD_TABLE_ID);
|
||||||
const omsRecord = await omsTable.getRecordById(recordId);
|
const omsRecord = await omsTable.getRecordById(recordId);
|
||||||
const planTextRaw = omsRecord?.fields?.[OMS_PLAN_TEXT_FIELD_ID];
|
const planTextRaw = omsRecord?.fields?.[OMS_PLAN_TEXT_FIELD_ID];
|
||||||
@ -5762,6 +5803,7 @@ export default function App() {
|
|||||||
}
|
}
|
||||||
setSelectedDeliveryRecordId(matchedDeliveryRecordId);
|
setSelectedDeliveryRecordId(matchedDeliveryRecordId);
|
||||||
await loadProcessDataFromDeliveryRecord(matchedDeliveryRecordId);
|
await loadProcessDataFromDeliveryRecord(matchedDeliveryRecordId);
|
||||||
|
*/
|
||||||
} else {
|
} else {
|
||||||
if (bitable.ui.showToast) {
|
if (bitable.ui.showToast) {
|
||||||
await bitable.ui.showToast({ toastType: ToastType.warning, message: '请在货期记录或OMS看板表中选择记录' });
|
await bitable.ui.showToast({ toastType: ToastType.warning, message: '请在货期记录或OMS看板表中选择记录' });
|
||||||
|
|||||||
Reference in New Issue
Block a user