From a52259f9518cfb6355d69564814f51ca67234a10 Mon Sep 17 00:00:00 2001 From: YANGJIANKUAN Date: Sat, 17 Jan 2026 21:05:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9B=BD=E9=99=85=E5=87=BA=E6=B8=AF=20?= =?UTF-8?q?=E5=87=BA=E6=B8=AF=E8=AE=A1=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lukouguoji/module_base/http/net/Api.kt | 15 +++++ .../viewModel/GjcWeighingStartViewModel.kt | 66 ++++++++++++++++++- .../layout/activity_gjc_weighing_start.xml | 1 + 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt index 3a5fb3c..b62da5e 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt @@ -897,6 +897,21 @@ interface Api { @POST("IntExpCheckIn/pageQueryTotal") suspend fun getGjcWeighingStatistics(@Body data: RequestBody): BaseResultBean + /** + * 国际出港待计重-运单号模糊查询(用于自动补全) + * 接口路径: /IntExpCheckIn/queryWbNoList + */ + @POST("IntExpCheckIn/queryWbNoList") + suspend fun getIntExpCheckInWbNoList(@Body data: RequestBody): BaseResultBean> + + /** + * 国际出港待计重-根据11位具体运单号查询运单信息 + * 接口路径: /IntExpCheckIn/queryWbByNo + * @param wbNo 11位运单号 + */ + @POST("IntExpCheckIn/queryWbByNo") + suspend fun getIntExpCheckInWbByNo(@Query("wbNo") wbNo: String): BaseResultBean + /** * 国际出港待计重-开始计重-根据wbId查询详情 * 接口路径: /IntExpCheckIn/queryWbById diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingStartViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingStartViewModel.kt index 3c8c23c..06f10e9 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingStartViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingStartViewModel.kt @@ -36,12 +36,15 @@ import java.util.Date */ class GjcWeighingStartViewModel : BaseViewModel() { - // 运单ID(从列表页传入) + // 运单ID(从列表页传入,或通过运单号查询获得) var maWbId: Long = 0 // 运单数据Bean val maWbBean = MutableLiveData(GjcMaWb()) + // 用于防止重复查询的标记 + private var lastQueriedWbNo: String = "" + // 航班日期(格式化为字符串用于DataBinding) val flightDate = MutableLiveData(DateUtils.getCurrentTime().formatDate()) @@ -185,6 +188,67 @@ class GjcWeighingStartViewModel : BaseViewModel() { } } + /** + * 运单号输入完成时调用(添加模式专用) + * 当用户输入完整运单号后,自动根据运单号查询并填充表单 + */ + fun onWaybillNoInputComplete() { + val wbNo = maWbBean.value?.wbNo ?: "" + + // 验证运单号是否为空 + if (wbNo.isEmpty()) { + return + } + + // 防止重复查询 + if (wbNo == lastQueriedWbNo) { + return + } + + // 验证运单号长度(11位) + if (wbNo.length != 11) { + showToast("请输入完整的11位运单号") + return + } + + // 更新查询标记 + lastQueriedWbNo = wbNo + + // 直接根据运单号查询运单详情 + launchLoadingCollect({ NetApply.api.getIntExpCheckInWbByNo(wbNo) }) { + onSuccess = { result -> + val data = result.data + if (data != null) { + // 保存 maWbId + maWbId = data.maWbId ?: 0 + + // 更新整个 maWbBean + maWbBean.value = data + + // 更新航班日期字符串 + flightDate.value = data.fdate?.formatDate() ?: "" + + // 更新备注 + pageRemark.value = data.remark + + // 加载实时计重数据(如果 maWbId 有效) + if (maWbId > 0) { + loadRealTimeRecord() + } + } else { + showToast("未找到该运单信息") + // 清空查询标记,允许重新查询 + lastQueriedWbNo = "" + } + } + onFailed = { code, msg -> + showToast("查询失败: $msg") + // 清空查询标记,允许重新查询 + lastQueriedWbNo = "" + } + } + } + /** * 航班日期点击 */ diff --git a/module_gjc/src/main/res/layout/activity_gjc_weighing_start.xml b/module_gjc/src/main/res/layout/activity_gjc_weighing_start.xml index 09c81b7..9c2a888 100644 --- a/module_gjc/src/main/res/layout/activity_gjc_weighing_start.xml +++ b/module_gjc/src/main/res/layout/activity_gjc_weighing_start.xml @@ -64,6 +64,7 @@