feat: opt GjcQueryActivity list

This commit is contained in:
2025-12-03 19:56:31 +08:00
parent be0541f522
commit f1abc3ddfc
6 changed files with 163 additions and 139 deletions

View File

@@ -424,7 +424,7 @@ interface Api {
* 接口路径: /IntExpSearch/pageQuery
*/
@POST("IntExpSearch/pageQuery")
suspend fun getGjcQueryList(@Body data: RequestBody): BaseResultBean<PageInfo<GjcMaWb>>
suspend fun getGjcQueryList(@Body data: RequestBody): PageInfo<GjcMaWb>
/**
* 国际出港查询-分页合计统计

View File

@@ -8,7 +8,8 @@ import com.lukouguoji.gjc.R
import com.lukouguoji.gjc.databinding.DialogGjcQueryFilterBinding
import com.lukouguoji.module_base.base.BaseDialogModel
import com.lxj.xpopup.XPopup
import dev.utils.app.ScreenUtils
import com.lxj.xpopup.enums.PopupPosition
import dev.DevUtils
import dev.utils.app.info.KeyValue
/**
@@ -16,6 +17,7 @@ import dev.utils.app.info.KeyValue
*/
class GjcQueryFilterDialogModel(
val spCode: MutableLiveData<String>, // 特码
val flightNo: MutableLiveData<String>, // 航班号
val dest: MutableLiveData<String>, // 目的港
val awbType: MutableLiveData<String>, // 运单类型
val businessType: MutableLiveData<String>, // 业务类型
@@ -45,8 +47,14 @@ class GjcQueryFilterDialogModel(
override fun onBuild(builder: XPopup.Builder) {
super.onBuild(builder)
// 设置抽屉宽度为屏幕宽度的1/3
builder.maxWidth((ScreenUtils.getScreenWidth() / 3.0).toInt())
// 设置从右边弹出
builder.popupPosition(PopupPosition.Right)
// 设置抽屉宽度为 Activity contentView 宽度的1/3横屏长边
val activity = DevUtils.getTopActivity()
val activityWidth = activity.window.decorView.width
builder.maxWidth(activityWidth / 3)
builder.popupWidth(activityWidth / 3)
}
override fun onDialogCreated(context: Context) {
@@ -67,6 +75,7 @@ class GjcQueryFilterDialogModel(
*/
fun onResetClick() {
spCode.value = ""
flightNo.value = ""
dest.value = ""
awbType.value = ""
businessType.value = ""

View File

@@ -52,6 +52,7 @@ class GjcQueryViewModel : BasePageViewModel() {
// ==================== 筛选条件(预留)====================
val spCode = MutableLiveData("") // 特码
val flightNo = MutableLiveData("") // 航班号
val dest = MutableLiveData("") // 目的港
val awbType = MutableLiveData("") // 运单类型
val businessType = MutableLiveData("") // 业务类型
@@ -81,6 +82,7 @@ class GjcQueryViewModel : BasePageViewModel() {
fun filterClick() {
val filterDialog = GjcQueryFilterDialogModel(
spCode = spCode,
flightNo = flightNo,
dest = dest,
awbType = awbType,
businessType = businessType,
@@ -106,6 +108,7 @@ class GjcQueryViewModel : BasePageViewModel() {
"wbNo" to waybillNo.value!!.ifEmpty { null },
// 筛选条件(暂未使用)
"spCode" to spCode.value!!.ifEmpty { null },
"flightNo" to flightNo.value!!.ifEmpty { null },
"dest" to dest.value!!.ifEmpty { null },
"awbType" to awbType.value!!.ifEmpty { null },
"businessType" to businessType.value!!.ifEmpty { null },
@@ -121,6 +124,7 @@ class GjcQueryViewModel : BasePageViewModel() {
"wbNo" to waybillNo.value!!.ifEmpty { null },
// 筛选条件
"spCode" to spCode.value!!.ifEmpty { null },
"flightNo" to flightNo.value!!.ifEmpty { null },
"dest" to dest.value!!.ifEmpty { null },
"awbType" to awbType.value!!.ifEmpty { null },
"businessType" to businessType.value!!.ifEmpty { null },
@@ -131,12 +135,9 @@ class GjcQueryViewModel : BasePageViewModel() {
launchLoadingCollect({
NetApply.api.getGjcQueryList(listParams)
}) {
onSuccess = { result ->
val pageInfo = result.data
if (pageInfo != null) {
// ⚠️ 核心使用toBaseListBean()转换PageInfo为BaseListBean
pageModel.handleListBean(pageInfo.toBaseListBean())
}
onSuccess = { pageInfo ->
// ⚠️ 核心使用toBaseListBean()转换PageInfo为BaseListBean
pageModel.handleListBean(pageInfo.toBaseListBean())
}
}

View File

@@ -18,11 +18,6 @@
android:background="@color/color_f2"
android:orientation="vertical">
<!-- 状态栏 -->
<com.lukouguoji.module_base.ui.weight.StatusView
android:layout_width="wrap_content"
android:layout_height="0dp" />
<!-- 标题栏 -->
<include layout="@layout/title_tool_bar" />

View File

@@ -2,7 +2,7 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="com.lukouguoji.module_base.ui.weight.search.layout.SearchLayoutType" />
<import type="com.lukouguoji.module_base.ui.weight.data.layout.DataLayoutType" />
<variable
name="model"
@@ -15,6 +15,12 @@
android:background="@color/white"
android:orientation="vertical">
<!-- 状态栏占位 -->
<View
android:layout_width="match_parent"
android:layout_height="25dp"
android:background="@color/white" />
<!-- 标题栏 -->
<include layout="@layout/title_tool_bar" />
@@ -31,51 +37,72 @@
android:orientation="vertical">
<!-- 特码 -->
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请输入特码"}'
type="@{SearchLayoutType.INPUT}"
value="@={model.spCode}" />
title='@{"特码"}'
titleLength="@{4}"
type="@{DataLayoutType.INPUT}"
value='@={model.spCode}' />
<!-- 航班号 -->
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请输入航班号"}'
title='@{"航班号"}'
titleLength="@{4}"
type="@{DataLayoutType.INPUT}"
value='@={model.flightNo}' />
<!-- 目的港 -->
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请输入目的港"}'
type="@{SearchLayoutType.INPUT}"
value="@={model.dest}" />
title='@{"目的港"}'
titleLength="@{4}"
type="@{DataLayoutType.INPUT}"
value='@={model.dest}' />
<!-- 运单类型 -->
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请选择运单类型"}'
list="@{model.awbTypeList}"
type="@{SearchLayoutType.SPINNER}"
value="@={model.awbType}" />
title='@{"运单类型"}'
titleLength="@{4}"
type="@{DataLayoutType.SPINNER}"
value='@={model.awbType}' />
<!-- 业务类型 -->
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请选择业务类型"}'
list="@{model.businessTypeList}"
type="@{SearchLayoutType.SPINNER}"
value="@={model.businessType}" />
title='@{"业务类型"}'
titleLength="@{4}"
type="@{DataLayoutType.SPINNER}"
value='@={model.businessType}' />
<!-- 品名(中) -->
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请输入品名"}'
type="@{SearchLayoutType.INPUT}"
value="@={model.goodsCn}" />
title='@{"品名(中)"}'
titleLength="@{4}"
type="@{DataLayoutType.INPUT}"
value='@={model.goodsCn}' />
</LinearLayout>
@@ -103,7 +130,7 @@
android:textColor="@color/text_normal"
android:textSize="16sp" />
<!-- 确认按钮 -->
<!-- 搜索按钮 -->
<TextView
android:layout_width="0dp"
android:layout_height="40dp"
@@ -111,7 +138,7 @@
android:background="@drawable/bg_primary_radius_4"
android:gravity="center"
android:onClick="@{()-> model.onConfirmClick()}"
android:text="确认"
android:text="搜索"
android:textColor="@color/white"
android:textSize="16sp" />

View File

@@ -32,7 +32,7 @@
android:layout_marginLeft="10dp"
android:orientation="vertical">
<!-- 第一行数据:运单号、航班、件数、重量 -->
<!-- 第一行数据:运单号、件数、重量、代理人、入库时间 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content">
@@ -59,32 +59,11 @@
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 航班 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{4}"
android:text="航班:" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.flight}"
tools:text="20240513/MU2026" />
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 件数 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.8"
android:layout_weight="0.7"
android:gravity="center_vertical">
<TextView
@@ -105,7 +84,7 @@
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="0.8"
android:gravity="center_vertical">
<TextView
@@ -122,19 +101,11 @@
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 第二行数据:代理人、特码、目的港、运单类型 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<!-- 代理人 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:layout_weight="1.0"
android:gravity="center_vertical">
<TextView
@@ -151,82 +122,11 @@
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 特码 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{4}"
android:text="特码:" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.spCode}"
tools:text="NOR" />
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 目的港 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.8"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{4}"
android:text="目的港:" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.dest}"
tools:text="PEK" />
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 运单类型 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{5}"
android:text="运单类型:" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{bean.awbName ?? bean.awbType}'
tools:text="国际出港(直航)" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 第三行数据:入库时间、离港时间 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<!-- 入库时间 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="1.3"
android:gravity="center_vertical">
<TextView
@@ -243,11 +143,103 @@
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 第二行数据:航班、目的港、特码、运单类型、离港时间 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<!-- 航班 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{4}"
android:text="航班:" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.flight}"
tools:text="20240513/MU2026" />
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 目的港 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{4}"
android:text="目的港:" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.dest}"
tools:text="PEK" />
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 特码 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{4}"
android:text="特码:" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.spCode}"
tools:text="NOR" />
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 运单类型 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.1"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{5}"
android:text="运单类型:" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{bean.awbName ?? bean.awbType}'
tools:text="国际出港(直航)" />
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- 离港时间 -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="1.3"
android:gravity="center_vertical">
<TextView