From 8c774ef3a355d3cce6e2d59e7744b6dfc5aea53d Mon Sep 17 00:00:00 2001 From: YANGJIANKUAN Date: Mon, 9 Mar 2026 11:48:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=9B=BD=E9=99=85=E8=BF=9B?= =?UTF-8?q?=E6=B8=AF=E8=88=B1=E5=8D=95=E5=88=97=E8=A1=A8=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E9=80=9A=E8=BF=87FID=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- .../gjj/viewModel/IntImpManifestViewModel.kt | 61 +++++++++++++++++-- 1 file changed, 57 insertions(+), 4 deletions(-) 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 1eda806..30d8cc0 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 @@ -130,9 +130,62 @@ class IntImpManifestViewModel : BasePageViewModel() { /** * 搜索按钮点击 + * 先查询航班信息获取FID,再刷新列表 */ fun searchClick() { - refresh() + val fdate = flightDate.value + val fno = flightNo.value + if (!fdate.isNullOrEmpty() && !fno.isNullOrEmpty()) { + val key = "$fdate-$fno" + if (key != lastQueriedFlight || fid.isEmpty()) { + // 先查询航班信息获取FID + lastQueriedFlight = key + launchLoadingCollect({ + NetApply.api.getGjFlightBean( + mapOf( + "fdate" to fdate, + "fno" to fno, + "ieFlag" to "I", + ).toRequestBody() + ) + }) { + onSuccess = { + if (it.verifySuccess() && it.data != null) { + val flight = it.data!! + fid = flight.fid.noNull() + fdep.value = flight.fdest.noNull() + val list = mutableListOf( + KeyValue(flight.fdep.noNull(), flight.fdep.noNull()), + ) + if (!flight.jtz.isNullOrEmpty()) { + list.add(KeyValue(flight.jtz.noNull(), flight.jtz.noNull())) + } + sendAddressList.value = list + sendAddress.value = flight.fdep.noNull() + } else { + fid = "" + fdep.value = "" + sendAddressList.value = emptyList() + sendAddress.value = "" + showToast(it.msg.noNull("获取航班信息失败")) + } + refresh() + } + onFailed = { _, _ -> + fid = "" + fdep.value = "" + sendAddressList.value = emptyList() + sendAddress.value = "" + refresh() + } + } + } else { + refresh() + } + } else { + fid = "" + refresh() + } } /** @@ -274,12 +327,12 @@ class IntImpManifestViewModel : BasePageViewModel() { /** * 获取数据(重写BasePageViewModel) + * 通过FID查询列表,而不是直接通过航班号和航班日期 */ override fun getData() { - // 构建搜索条件 + // 构建搜索条件(使用FID代替fdate/fno) val filterParams = mapOf( - "fdate" to flightDate.value?.ifEmpty { null }, - "fno" to flightNo.value?.ifEmpty { null }, + "fid" to fid.ifEmpty { null }, "sendAddress" to sendAddress.value?.ifEmpty { null }, "fdep" to fdep.value?.ifEmpty { null }, "wbNo" to waybillNo.value?.ifEmpty { null }