feat: 国际出港查询详情 opt
This commit is contained in:
@@ -446,7 +446,7 @@ interface Api {
|
||||
* 参数: maWbId (Long)
|
||||
*/
|
||||
@POST("IntExpSearch/detail")
|
||||
suspend fun getGjcQueryDetails(@Body data: RequestBody): BaseResultBean<Map<String, Any>>
|
||||
suspend fun getGjcQueryDetails(@Query("maWbId") maWbId: Long): BaseResultBean<Map<String, Any>>
|
||||
|
||||
/**
|
||||
* 国际出港板箱过磅-分页搜索
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@android:color/white" />
|
||||
<corners
|
||||
android:bottomLeftRadius="8dp"
|
||||
android:bottomRightRadius="8dp" />
|
||||
</shape>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@android:color/white" />
|
||||
<corners
|
||||
android:topLeftRadius="8dp"
|
||||
android:topRightRadius="8dp" />
|
||||
</shape>
|
||||
@@ -10,7 +10,6 @@ import com.lukouguoji.module_base.common.Constant
|
||||
import com.lukouguoji.module_base.http.net.NetApply
|
||||
import com.lukouguoji.module_base.ktx.launchLoadingCollect
|
||||
import com.lukouguoji.module_base.ktx.showToast
|
||||
import com.lukouguoji.module_base.ktx.toRequestBody
|
||||
|
||||
/**
|
||||
* 国际出港查询详情-ViewModel
|
||||
@@ -26,6 +25,15 @@ class GjcQueryDetailsViewModel : BaseViewModel() {
|
||||
// ==================== 详情数据 ====================
|
||||
val detailData = MutableLiveData<Map<String, Any>>(emptyMap())
|
||||
|
||||
// 运单信息 (maWb)
|
||||
val maWbData = MutableLiveData<Map<String, Any>>(emptyMap())
|
||||
|
||||
// 仓库列表 (warehouseList)
|
||||
val warehouseList = MutableLiveData<List<Map<String, Any>>>(emptyList())
|
||||
|
||||
// 库位列表 (storageUseList)
|
||||
val storageUseList = MutableLiveData<List<Map<String, Any>>>(emptyList())
|
||||
|
||||
// ==================== Fragment列表 ====================
|
||||
val fragmentList by lazy {
|
||||
listOf(
|
||||
@@ -60,11 +68,53 @@ class GjcQueryDetailsViewModel : BaseViewModel() {
|
||||
return
|
||||
}
|
||||
|
||||
val params = mapOf("maWbId" to maWbId.toLongOrNull()).toRequestBody()
|
||||
val maWbIdValue = maWbId.toLongOrNull()
|
||||
if (maWbIdValue == null) {
|
||||
showToast("运单ID格式错误")
|
||||
return
|
||||
}
|
||||
|
||||
launchLoadingCollect({ NetApply.api.getGjcQueryDetails(params) }) {
|
||||
launchLoadingCollect({ NetApply.api.getGjcQueryDetails(maWbIdValue) }) {
|
||||
onSuccess = { result ->
|
||||
detailData.value = result.data ?: emptyMap()
|
||||
val data = result.data ?: emptyMap()
|
||||
detailData.value = data
|
||||
|
||||
// 解析 maWb 对象
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val maWb = data["maWb"] as? Map<String, Any> ?: emptyMap()
|
||||
|
||||
// 解析 maWbM 对象 (包含海关报文等信息)
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val maWbM = data["maWbM"] as? Map<String, Any> ?: emptyMap()
|
||||
|
||||
// 合并 maWb 和 maWbM 的数据,并添加组合字段
|
||||
val mergedData = mutableMapOf<String, Any>()
|
||||
mergedData.putAll(maWb)
|
||||
mergedData.putAll(maWbM)
|
||||
|
||||
// 添加组合字段: wbNo = prefix + no
|
||||
val prefix = maWb["prefix"] as? String ?: ""
|
||||
val no = maWb["no"] as? String ?: ""
|
||||
if (prefix.isNotEmpty() || no.isNotEmpty()) {
|
||||
mergedData["wbNo"] = "$prefix-$no"
|
||||
}
|
||||
|
||||
// 字段映射: cmdStatus -> customsCommand
|
||||
maWbM["cmdStatus"]?.let {
|
||||
mergedData["customsCommand"] = it
|
||||
}
|
||||
|
||||
maWbData.value = mergedData
|
||||
|
||||
// 解析 warehouseList 列表
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val whList = data["warehouseList"] as? List<Map<String, Any>> ?: emptyList()
|
||||
warehouseList.value = whList
|
||||
|
||||
// 解析 storageUseList 列表
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val suList = data["storageUseList"] as? List<Map<String, Any>> ?: emptyList()
|
||||
storageUseList.value = suList
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
|
||||
<import type="android.view.View" />
|
||||
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="com.lukouguoji.gjc.viewModel.GjcQueryDetailsViewModel" />
|
||||
@@ -22,14 +24,15 @@
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:background="@color/white"
|
||||
android:layout_marginHorizontal="15dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:background="@drawable/bg_white_radius_top_8"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<!-- Tab1: 运单信息 -->
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:onClick="@{()->viewModel.onTabClick(0)}"
|
||||
android:orientation="vertical">
|
||||
@@ -40,6 +43,7 @@
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:text="运单信息"
|
||||
android:textStyle="bold"
|
||||
android:textColor="@{viewModel.currentTab == 0 ? @color/colorPrimary : @color/text_gray}"
|
||||
android:textSize="16sp" />
|
||||
|
||||
@@ -53,9 +57,8 @@
|
||||
|
||||
<!-- Tab2: 仓库信息 -->
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:onClick="@{()->viewModel.onTabClick(1)}"
|
||||
android:orientation="vertical">
|
||||
@@ -65,6 +68,7 @@
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:textStyle="bold"
|
||||
android:text="仓库信息"
|
||||
android:textColor="@{viewModel.currentTab == 1 ? @color/colorPrimary : @color/text_gray}"
|
||||
android:textSize="16sp" />
|
||||
@@ -78,9 +82,8 @@
|
||||
|
||||
<!-- Tab3: 库位信息 -->
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:onClick="@{()->viewModel.onTabClick(2)}"
|
||||
android:orientation="vertical">
|
||||
@@ -90,6 +93,7 @@
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:textStyle="bold"
|
||||
android:text="库位信息"
|
||||
android:textColor="@{viewModel.currentTab == 2 ? @color/colorPrimary : @color/text_gray}"
|
||||
android:textSize="16sp" />
|
||||
@@ -103,6 +107,12 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.google.android.material.divider.MaterialDivider
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginHorizontal="15dp"
|
||||
android:background="@color/color_f2" />
|
||||
|
||||
<!-- ViewPager2 -->
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/vp"
|
||||
|
||||
@@ -19,13 +19,14 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="15dp">
|
||||
android:paddingHorizontal="15dp"
|
||||
android:paddingBottom="15dp">
|
||||
|
||||
<!-- 运单信息卡片 -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/bg_white_radius_8"
|
||||
android:background="@drawable/bg_white_radius_bottom_8"
|
||||
android:orientation="vertical"
|
||||
android:padding="15dp">
|
||||
|
||||
@@ -43,7 +44,7 @@
|
||||
title='@{"运单号"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("wbNo")}' />
|
||||
value='@{(String)viewModel.maWbData.get("wbNo")}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -53,7 +54,7 @@
|
||||
title='@{"代理人"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("agentName")}' />
|
||||
value='@{(String)viewModel.maWbData.get("agentName")}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -63,7 +64,7 @@
|
||||
title='@{"特码"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("spCode")}' />
|
||||
value='@{(String)viewModel.maWbData.get("spCode")}' />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -82,7 +83,7 @@
|
||||
title='@{"运单件数"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{String.valueOf(viewModel.detailData.get("pc"))}' />
|
||||
value='@{String.valueOf(viewModel.maWbData.get("pc"))}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -92,7 +93,7 @@
|
||||
title='@{"运单重量"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{String.valueOf(viewModel.detailData.get("weight"))}' />
|
||||
value='@{String.valueOf(viewModel.maWbData.get("weight"))}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -102,7 +103,7 @@
|
||||
title='@{"体积"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{String.valueOf(viewModel.detailData.get("volume"))}' />
|
||||
value='@{String.valueOf(viewModel.maWbData.get("volume"))}' />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -121,7 +122,7 @@
|
||||
title='@{"包装类型"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("packageType")}' />
|
||||
value='@{(String)viewModel.maWbData.get("packageType")}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -131,7 +132,7 @@
|
||||
title='@{"运单类型"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("awbName")}' />
|
||||
value='@{(String)viewModel.maWbData.get("awbName")}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -141,7 +142,7 @@
|
||||
title='@{"业务类型"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("businessName")}' />
|
||||
value='@{(String)viewModel.maWbData.get("businessName")}' />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -159,7 +160,7 @@
|
||||
title='@{"品名(英)"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("goods")}' />
|
||||
value='@{(String)viewModel.maWbData.get("goods")}' />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -177,7 +178,7 @@
|
||||
title='@{"品名(中)"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("goodsCn")}' />
|
||||
value='@{(String)viewModel.maWbData.get("goodsCn")}' />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -196,7 +197,7 @@
|
||||
title='@{"海关指令"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("customsCommand")}' />
|
||||
value='@{(String)viewModel.maWbData.get("customsCommand")}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -206,7 +207,7 @@
|
||||
title='@{"预配舱单"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("mftStatus")}' />
|
||||
value='@{(String)viewModel.maWbData.get("mftStatus")}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -216,7 +217,7 @@
|
||||
title='@{"运抵报告"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("arrivalStatus")}' />
|
||||
value='@{(String)viewModel.maWbData.get("arrivalStatus")}' />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -235,7 +236,7 @@
|
||||
title='@{"装载舱单"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("loadStatus")}' />
|
||||
value='@{(String)viewModel.maWbData.get("loadStatus")}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -245,7 +246,7 @@
|
||||
title='@{"理货报告"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("tallyStatus")}' />
|
||||
value='@{(String)viewModel.maWbData.get("tallyStatus")}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -255,7 +256,7 @@
|
||||
title='@{"入库时间"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("opDate")}' />
|
||||
value='@{(String)viewModel.maWbData.get("opDate")}' />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -274,7 +275,7 @@
|
||||
title='@{"省直辖市"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("proName")}' />
|
||||
value='@{(String)viewModel.maWbData.get("proName")}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -284,7 +285,7 @@
|
||||
title='@{"地级市"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("cityName")}' />
|
||||
value='@{(String)viewModel.maWbData.get("cityName")}' />
|
||||
|
||||
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
|
||||
android:layout_width="0dp"
|
||||
@@ -294,7 +295,7 @@
|
||||
title='@{"行政区"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("areaName")}' />
|
||||
value='@{(String)viewModel.maWbData.get("areaName")}' />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -308,7 +309,7 @@
|
||||
title='@{"备注"}'
|
||||
titleLength="@{5}"
|
||||
type="@{DataLayoutType.INPUT}"
|
||||
value='@{(String)viewModel.detailData.get("remark")}' />
|
||||
value='@{(String)viewModel.maWbData.get("remark")}' />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user