diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpAssembleStartViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpAssembleStartViewModel.kt index 97cc69a..2d26906 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpAssembleStartViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpAssembleStartViewModel.kt @@ -745,10 +745,15 @@ class IntExpAssembleStartViewModel : BaseViewModel() { reloadUldUseId(uldNo) } - // 添加形式(全新 ULD)时航班可能未从 ULD 查询接口获取,导致组装信息列表查不出; - // 仅在航班为空时用本次操作运单的航班信息兜底补全,ULD 已带航班时保持原值不变。 - if (assembleFlightNo.value.isNullOrEmpty() || assembleFlightDate.value.isNullOrEmpty()) { - if (operationFno.isNotEmpty() && operationFdate.isNotEmpty()) { + // 同步航班信息,保证左侧组装信息列表查询的是本次操作 ULD 所属航班: + // - 装货:装货决定该 ULD 归属哪个航班。若在同一 ULD 上先卸光原航班(如 MU0128)货物、 + // 再装入另一航班(如 MU0205)的货,必须无条件把航班改为本次所装运单的航班, + // 否则 assembleFlightNo 仍停留在旧航班,左侧组装信息列表会继续显示旧航班的 ULD。 + // - 卸货:卸货不改变 ULD 归属航班,沿用原有"仅航班为空时兜底补全"逻辑。 + if (operationFno.isNotEmpty() && operationFdate.isNotEmpty()) { + val shouldUpdateFlight = + isLoad || assembleFlightNo.value.isNullOrEmpty() || assembleFlightDate.value.isNullOrEmpty() + if (shouldUpdateFlight) { assembleFlightNo.value = operationFno // 与 ULD 查询保持一致,只取年月日(去掉时间部分) assembleFlightDate.value =