feat: 出库交接

This commit is contained in:
2025-12-04 17:17:01 +08:00
parent 22adce2964
commit 7f7ffcccac
6 changed files with 289 additions and 153 deletions

View File

@@ -1,5 +1,7 @@
package com.lukouguoji.module_base.bean package com.lukouguoji.module_base.bean
import androidx.databinding.ObservableBoolean
/** /**
* 国际出港板箱过磅-ULD使用记录Bean * 国际出港板箱过磅-ULD使用记录Bean
* 对应API: IntExpWeighting/pageQuery * 对应API: IntExpWeighting/pageQuery
@@ -54,6 +56,11 @@ class GjcUldUseBean {
// ========== 出港组装页面扩展字段 ========== // ========== 出港组装页面扩展字段 ==========
var isExpanded: Boolean = false // 展开状态 var isExpanded: Boolean = false // 展开状态
var isSelected: Boolean = false // 选中状态 val checked: ObservableBoolean = ObservableBoolean(false) // 选中状态(Observable)
var waybillDetails: MutableList<GjcWarehouse>? = null // 运单明细缓存 var waybillDetails: MutableList<GjcWarehouse>? = null // 运单明细缓存
// 兼容原有代码的isSelected属性
var isSelected: Boolean
get() = checked.get()
set(value) = checked.set(value)
} }

View File

@@ -29,6 +29,11 @@ class IntExpOutHandoverActivity :
setBackArrow("出库交接") setBackArrow("出库交接")
binding.viewModel = viewModel binding.viewModel = viewModel
// 观察全选状态,更新图标透明度
viewModel.isAllChecked.observe(this) { isAllChecked ->
binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f
}
// 绑定分页 // 绑定分页
viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this) viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)

View File

@@ -16,5 +16,14 @@ class IntExpOutHandoverViewHolder(view: View) :
binding.bean = bean binding.bean = bean
binding.position = position binding.position = position
binding.executePendingBindings() binding.executePendingBindings()
// 添加图标点击事件 - 切换选择状态
binding.ivIcon.setOnClickListener {
// 反转checked状态
bean.checked.set(!bean.checked.get())
// 立即更新UI图片自动切换
binding.executePendingBindings()
}
} }
} }

View File

@@ -42,7 +42,7 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
// 监听全选状态,自动更新所有列表项 // 监听全选状态,自动更新所有列表项
isAllChecked.observeForever { checked -> isAllChecked.observeForever { checked ->
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcUldUseBean> ?: return@observeForever val list = pageModel.rv?.commonAdapter()?.items as? List<GjcUldUseBean> ?: return@observeForever
list.forEach { it.isSelected = checked } list.forEach { it.checked.set(checked) }
pageModel.rv?.commonAdapter()?.notifyDataSetChanged() pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
} }
} }
@@ -58,6 +58,20 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
refresh() refresh()
} }
/**
* 全选按钮点击 (切换全选状态)
*/
fun checkAllClick() {
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcUldUseBean> ?: return
// 切换全选状态
val shouldCheckAll = !isAllChecked.value!!
list.forEach { it.checked.set(shouldCheckAll) }
isAllChecked.value = shouldCheckAll
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
}
/** /**
* 扫码ULD * 扫码ULD
*/ */

View File

@@ -115,16 +115,30 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:paddingHorizontal="15dp"> android:paddingHorizontal="15dp">
<!-- 全选CheckBox --> <!-- 全选按钮 -->
<CheckBox <LinearLayout
android:id="@+id/cb_select_all"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:checked="@={viewModel.isAllChecked}" android:gravity="center_vertical"
android:text="全选" android:orientation="horizontal"
android:textColor="@color/white" android:onClick="@{()-> viewModel.checkAllClick()}">
android:textSize="18sp" />
<ImageView
android:id="@+id/checkIcon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="5dp"
android:src="@drawable/img_check_all" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
<!-- 统计信息 --> <!-- 统计信息 -->
<LinearLayout <LinearLayout

View File

@@ -24,29 +24,14 @@
android:padding="15dp" android:padding="15dp"
android:gravity="center_vertical"> android:gravity="center_vertical">
<!--择框和飞机图标 --> <!--中图标 (飞机图标,根据选择状态切换图片) -->
<LinearLayout <ImageView
android:layout_width="wrap_content" android:id="@+id/iv_icon"
android:layout_height="match_parent" android:layout_width="40dp"
android:gravity="center" android:layout_height="40dp"
android:orientation="horizontal"> android:layout_gravity="center"
loadImage="@{bean.checked.get() ? @drawable/img_plane_s : @drawable/img_plane}"
<!-- 选择框 --> android:src="@drawable/img_plane" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:checked="@{bean.isSelected}"
android:clickable="false"
android:focusable="false" />
<!-- 飞机图标 -->
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/img_plane" />
</LinearLayout>
<!-- ULD信息区域 --> <!-- ULD信息区域 -->
<LinearLayout <LinearLayout
@@ -63,80 +48,131 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <!-- ULD编号 -->
android:layout_width="wrap_content" <LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text='@{"ULD编号 "}' android:layout_weight="1.5"
android:textColor="@color/text_normal" android:gravity="center_vertical"
android:textSize="16sp" /> android:orientation="horizontal">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{bean.uld}" completeSpace="@{5}"
android:textColor="@color/colorPrimary" android:text="ULD编号"
android:textSize="16sp" android:textColor="@color/text_normal"
android:textStyle="bold" /> android:textSize="16sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp" android:text="@{bean.uld}"
android:text='@{"架子车号 "}' android:textColor="@color/colorPrimary"
android:textColor="@color/text_normal" android:textSize="16sp"
android:textSize="16sp" /> android:textStyle="bold" />
<TextView </LinearLayout>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{String.valueOf(bean.carId)}"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView <!-- 架子车号 -->
android:layout_width="wrap_content" <LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp" android:layout_weight="1"
android:text='@{"总重 "}' android:gravity="center_vertical"
android:textColor="@color/text_normal" android:orientation="horizontal">
android:textSize="16sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{String.valueOf((int)bean.totalWeight)}" completeSpace="@{5}"
android:textColor="@color/text_normal" android:text="架子车号:"
android:textSize="16sp" /> android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp" android:text="@{String.valueOf(bean.carId)}"
android:text='@{"装机重量 "}' android:textColor="@color/text_normal"
android:textColor="@color/text_normal" android:textSize="16sp" />
android:textSize="16sp" />
<TextView </LinearLayout>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{String.valueOf((int)bean.netWeight)}"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView <!-- 总重 -->
android:layout_width="wrap_content" <LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp" android:layout_weight="1"
android:text='@{"货重 "}' android:gravity="center_vertical"
android:textColor="@color/text_normal" android:orientation="horizontal">
android:textSize="16sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{3}"
android:text="总重:"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{String.valueOf((int)bean.totalWeight)}"
android:textColor="@color/text_normal"
android:textSize="16sp" />
</LinearLayout>
<!-- 装机重量 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{String.valueOf((int)bean.cargoWeight)}" android:layout_weight="1"
android:textColor="@color/text_normal" android:gravity="center_vertical"
android:textSize="16sp" /> android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{5}"
android:text="装机重量:"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{String.valueOf((int)bean.netWeight)}"
android:textColor="@color/text_normal"
android:textSize="16sp" />
</LinearLayout>
<!-- 货重 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{3}"
android:text="货重:"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{String.valueOf((int)bean.cargoWeight)}"
android:textColor="@color/text_normal"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout> </LinearLayout>
@@ -148,79 +184,130 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <!-- 航班日期 -->
android:layout_width="wrap_content" <LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text='@{"航班日期 "}' android:layout_weight="1.5"
android:textColor="@color/text_normal" android:gravity="center_vertical"
android:textSize="16sp" /> android:orientation="horizontal">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{bean.fdate}" completeSpace="@{5}"
android:textColor="@color/text_normal" android:text="航班日期:"
android:textSize="16sp" /> android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp" android:text="@{bean.fdate}"
android:text='@{"航班号 "}' android:textColor="@color/text_normal"
android:textColor="@color/text_normal" android:textSize="16sp" />
android:textSize="16sp" />
<TextView </LinearLayout>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.fno}"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView <!-- 航班号 -->
android:layout_width="wrap_content" <LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp" android:layout_weight="1"
android:text='@{"目的港 "}' android:gravity="center_vertical"
android:textColor="@color/text_normal" android:orientation="horizontal">
android:textSize="16sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{bean.fdest}" completeSpace="@{4}"
android:textColor="@color/text_normal" android:text="航班号:"
android:textSize="16sp" /> android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp" android:text="@{bean.fno}"
android:text='@{"交接人 "}' android:textColor="@color/text_normal"
android:textColor="@color/text_normal" android:textSize="16sp" />
android:textSize="16sp" />
<TextView </LinearLayout>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.hoUserName}"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView <!-- 目的港 -->
android:layout_width="wrap_content" <LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp" android:layout_weight="1"
android:text='@{"交接时间 "}' android:gravity="center_vertical"
android:textColor="@color/text_normal" android:orientation="horizontal">
android:textSize="16sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{4}"
android:text="目的港:"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.fdest}"
android:textColor="@color/text_normal"
android:textSize="16sp" />
</LinearLayout>
<!-- 交接人 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{bean.hoDate}" android:layout_weight="1"
android:textColor="@color/text_normal" android:gravity="center_vertical"
android:textSize="16sp" /> android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{4}"
android:text="交接人:"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.hoUserName}"
android:textColor="@color/text_normal"
android:textSize="16sp" />
</LinearLayout>
<!-- 交接时间 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{5}"
android:text="交接时间:"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.hoDate}"
android:textColor="@color/text_normal"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout> </LinearLayout>