From 52d15271218fab79ea0cfeac272c86140344a6e7 Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Wed, 16 Sep 2026 12:11:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9B=BD=E9=99=85=E8=BF=9B=E6=B8=AF?= =?UTF-8?q?=E5=8E=9F=E5=A7=8B=E8=88=B1=E5=8D=95=E4=B8=8E=E8=A3=85=E6=9C=BA?= =?UTF-8?q?=E5=8D=95=E6=9C=AA=E9=80=89=E8=88=AA=E7=8F=AD=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E8=AF=B7=E6=B1=82=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 原始舱单、装机单搜索时校验航班号必填,为空提示「请输入航班号」 - 装机单仅在父页面传入 fid 时才初始加载,否则等待手动查询 - 进港舱单、装机单 getData 在 fid 为空时直接清空列表与汇总,不发请求; 修复装机单编辑保存后广播刷新事件,导致未选航班的父页面请求接口 并报「业务异常:请先选择航班」 Co-Authored-By: Claude Fable 5.1 --- .../gjj/activity/IntImpLoadingListActivity.kt | 7 ++++-- .../viewModel/IntArrAirManifestViewModel.kt | 5 ++++ .../viewModel/IntImpLoadingListViewModel.kt | 25 +++++++++++++++++++ .../gjj/viewModel/IntImpManifestViewModel.kt | 19 ++++++++++++++ 4 files changed, 54 insertions(+), 2 deletions(-) diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt index e19eca4..97dd640 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt @@ -68,8 +68,11 @@ class IntImpLoadingListActivity : viewModel.onFlightNoInputComplete() } - // 初始加载数据 - viewModel.refresh() + // 列表/汇总接口必须带航班(fid),仅在父页面已选航班并传入 fid 时才初始加载; + // 否则等用户输入航班号后手动查询,避免后端返回「请先选择航班」 + if (viewModel.fid.isNotEmpty()) { + viewModel.refresh() + } } /** diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt index 315e5be..9e975e2 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt @@ -63,8 +63,13 @@ class IntArrAirManifestViewModel : BasePageViewModel() { /** * 搜索按钮点击 + * 航班号必填,校验通过后再请求列表与汇总(与国际进港舱单页面交互一致) */ fun searchClick() { + if (flightNo.value.isNullOrEmpty()) { + showToast("请输入航班号") + return + } refresh() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt index c687be8..8d7963a 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt @@ -139,6 +139,13 @@ class IntImpLoadingListViewModel : BasePageViewModel(), IOnItemClickListener { fun searchClick() { val fdate = flightDate.value val fno = flightNo.value + + // 校验航班号必填(与国际进港舱单页面交互一致) + if (fno.isNullOrEmpty()) { + showToast("请输入航班号") + return + } + if (!fdate.isNullOrEmpty() && !fno.isNullOrEmpty()) { val key = "$fdate-$fno" if (key != lastQueriedFlight || fid.isEmpty()) { @@ -299,6 +306,12 @@ class IntImpLoadingListViewModel : BasePageViewModel(), IOnItemClickListener { * 查询参数与父页面(国际进港舱单)保持一致:使用FID和FDGP */ override fun getData() { + // 接口必须带航班(fid),未选航班时不请求,直接清空列表与汇总 + if (fid.isEmpty()) { + clearListAndTotal() + return + } + // 构建搜索条件(与父页面一致:fid + fdep + wbNo) val filterParams = mapOf( "fid" to fid.ifEmpty { null }, @@ -332,4 +345,16 @@ class IntImpLoadingListViewModel : BasePageViewModel(), IOnItemClickListener { } } } + + /** + * 无航班信息时清空列表与底部汇总,并结束刷新状态 + */ + private fun clearListAndTotal() { + pageModel.handleDataList(emptyList()) + pageModel.haveMore.postValue(false) + totalCount.value = "0" + totalPc.value = "0" + totalWeight.value = "0" + isAllChecked.value = false + } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt index 9fb9abd..444f961 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt @@ -586,6 +586,13 @@ class IntImpManifestViewModel : BasePageViewModel() { * 通过FID查询列表,而不是直接通过航班号和航班日期 */ override fun getData() { + // 接口必须带航班(fid),未选航班时不请求,直接清空列表与汇总 + // (如子页面装机单修改成功后广播 EVENT_REFRESH,本页尚未查航班也会被触发刷新) + if (fid.isEmpty()) { + clearListAndTotal() + return + } + // 构建搜索条件(使用FID代替fdate/fno) val filterParams = mapOf( "fid" to fid.ifEmpty { null }, @@ -620,6 +627,18 @@ class IntImpManifestViewModel : BasePageViewModel() { } } + /** + * 无航班信息时清空列表与底部汇总,并结束刷新状态 + */ + private fun clearListAndTotal() { + pageModel.handleDataList(emptyList()) + pageModel.haveMore.postValue(false) + totalCount.value = "0" + totalPc.value = "0" + totalWeight.value = "0" + isAllChecked.value = false + } + /** * 加载主单下的分单列表(按需加载,加载完成后自动展开) */