diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/AssembleWaybillBean.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/AssembleWaybillBean.kt index 74f2ae3..7d6564a 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/bean/AssembleWaybillBean.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/AssembleWaybillBean.kt @@ -1,5 +1,7 @@ package com.lukouguoji.module_base.bean +import androidx.databinding.ObservableBoolean + /** * 运单列表Bean(右侧运单列表) */ @@ -15,4 +17,7 @@ class AssembleWaybillBean { val fLightInfo: String get() = "$fno/${fdate.replace("-", "")}" + // ========== UI扩展字段 ========== + val isSelected: ObservableBoolean = ObservableBoolean(false) // 选中状态 + } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/AssembleWaybillViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/AssembleWaybillViewHolder.kt index 3b847fb..786e216 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/AssembleWaybillViewHolder.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/AssembleWaybillViewHolder.kt @@ -16,9 +16,9 @@ class AssembleWaybillViewHolder(view: View) : binding.bean = bean binding.position = position - // 点击运单 + // 点击整行触发选择事件(单选模式,通过回调处理) itemView.setOnClickListener { - clickListener?.onItemClick(position, 0) + clickListener?.onItemClick(position, 1) // type=1表示运单列表点击 } binding.executePendingBindings() diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/page/assemble/IntExpAssembleStartActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/page/assemble/IntExpAssembleStartActivity.kt index 75e4dd5..e5c1a93 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/page/assemble/IntExpAssembleStartActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/page/assemble/IntExpAssembleStartActivity.kt @@ -92,6 +92,8 @@ class IntExpAssembleStartActivity : ) binding.rvWaybillList.layoutManager = LinearLayoutManager(this) binding.rvWaybillList.adapter = waybillAdapter + // 添加点击监听器 + binding.rvWaybillList.addOnItemClickListener(this) } /** @@ -117,6 +119,7 @@ class IntExpAssembleStartActivity : override fun onItemClick(position: Int, type: Int) { when (type) { 0 -> viewModel.onPositionItemClick(position) // 组装位置点击 + 1 -> viewModel.onWaybillItemClick(position) // 运单列表点击 else -> {} } } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpAssembleStartViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpAssembleStartViewModel.kt index d9daa44..fc42603 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpAssembleStartViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpAssembleStartViewModel.kt @@ -100,6 +100,36 @@ class IntExpAssembleStartViewModel : BaseViewModel() { assemblePositionList.value = list } + /** + * 运单点击(单选切换) + */ + fun onWaybillItemClick(position: Int) { + val list = waybillList.value ?: return + + // 取消所有运单的选中状态 + list.forEach { it.isSelected.set(false) } + + // 选中当前运单 + if (position in list.indices) { + val selectedWaybill = list[position] + selectedWaybill.isSelected.set(true) + + // 同步运单信息到表单 + waybillInfo.value = WaybillInfoBean().apply { + waybillNo = selectedWaybill.waybillNo + waybillPieces = selectedWaybill.pieces + waybillWeight = selectedWaybill.weight + // 保留当前的组装件数、组装重量、组装人 + assembleCount = waybillInfo.value?.assembleCount ?: "" + assembleWeight = waybillInfo.value?.assembleWeight ?: "" + operator = waybillInfo.value?.operator ?: "" + } + } + + // 刷新列表 + waybillList.value = list + } + /** * 扫码运单 */ @@ -126,7 +156,7 @@ class IntExpAssembleStartViewModel : BaseViewModel() { val warehouseList = result.data ?: mutableListOf() val waybillBeanList = warehouseList.map { warehouse -> AssembleWaybillBean().apply { - waybillNo = warehouse.no + waybillNo = warehouse.wbNo pieces = warehouse.pc.toString() weight = String.format("%.1f", warehouse.weight) flight = warehouse.flight diff --git a/module_gjc/src/main/res/drawable/ic_red_checkbox.png b/module_gjc/src/main/res/drawable/ic_red_checkbox.png new file mode 100644 index 0000000..3c25723 Binary files /dev/null and b/module_gjc/src/main/res/drawable/ic_red_checkbox.png differ diff --git a/module_gjc/src/main/res/layout/activity_int_exp_assemble_start.xml b/module_gjc/src/main/res/layout/activity_int_exp_assemble_start.xml index a49e7ba..825f644 100644 --- a/module_gjc/src/main/res/layout/activity_int_exp_assemble_start.xml +++ b/module_gjc/src/main/res/layout/activity_int_exp_assemble_start.xml @@ -163,7 +163,7 @@ android:orientation="horizontal" android:paddingHorizontal="8dp"> - + - + @@ -16,58 +17,71 @@ + android:layout_height="36dp" + android:orientation="vertical"> - - + android:background="@color/white" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingHorizontal="8dp" + android:paddingVertical="4dp"> - - + + - - + + - - + + + + + + + + + + + + - -