|
|
@@ -161,11 +161,20 @@ const JoSearch: React.FC<Props> = ({ defaultInputs, bomCombo, printerCombo, jobT |
|
|
|
|
|
|
|
|
const fetchBomForJo = useCallback(async (jo: JobOrder): Promise<BomCombo | null> => { |
|
|
const fetchBomForJo = useCallback(async (jo: JobOrder): Promise<BomCombo | null> => { |
|
|
try { |
|
|
try { |
|
|
const detailedJo = detailedJos.get(jo.id) || await fetchJoDetailClient(jo.id); |
|
|
|
|
|
const matchingBom = bomCombo.find(bom => { |
|
|
|
|
|
return true; // 临时占位 |
|
|
|
|
|
}); |
|
|
|
|
|
return matchingBom || null; |
|
|
|
|
|
|
|
|
// 若列表的 jo 已有 bomId(之後若 API 有回傳),可直接用 |
|
|
|
|
|
const bomId = (jo as { bomId?: number }).bomId; |
|
|
|
|
|
if (bomId != null) { |
|
|
|
|
|
const matchingBom = bomCombo.find(bom => bom.id === bomId); |
|
|
|
|
|
if (matchingBom) return matchingBom; |
|
|
|
|
|
} |
|
|
|
|
|
// 否則打明細 API,明細會帶 bomId |
|
|
|
|
|
const detailedJo = detailedJos.get(jo.id) ?? await fetchJoDetailClient(jo.id); |
|
|
|
|
|
const detailBomId = (detailedJo as { bomId?: number }).bomId; |
|
|
|
|
|
if (detailBomId != null) { |
|
|
|
|
|
const matchingBom = bomCombo.find(bom => bom.id === detailBomId); |
|
|
|
|
|
if (matchingBom) return matchingBom; |
|
|
|
|
|
} |
|
|
|
|
|
return null; |
|
|
} catch (error) { |
|
|
} catch (error) { |
|
|
console.error("Error fetching BOM for JO:", error); |
|
|
console.error("Error fetching BOM for JO:", error); |
|
|
return null; |
|
|
return null; |
|
|
|