From 2664cc7c6913bcfce40b4ba77a41ba884ae81820 Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Tue, 16 Dec 2025 15:58:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=80=E5=A7=8B=E7=BB=84=E8=A3=85=20?= =?UTF-8?q?opt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_base/bean/AssembleWaybillBean.kt | 5 + .../gjc/holder/AssembleWaybillViewHolder.kt | 4 +- .../assemble/IntExpAssembleStartActivity.kt | 3 + .../viewModel/IntExpAssembleStartViewModel.kt | 32 ++++- .../src/main/res/drawable/ic_red_checkbox.png | Bin 0 -> 1149 bytes .../activity_int_exp_assemble_start.xml | 3 +- .../main/res/layout/item_assemble_waybill.xml | 110 ++++++++++-------- 7 files changed, 104 insertions(+), 53 deletions(-) create mode 100644 module_gjc/src/main/res/drawable/ic_red_checkbox.png 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 0000000000000000000000000000000000000000..3c25723201810c58700c1be03c458a62931b905b GIT binary patch literal 1149 zcmV-@1cLjCP)8A5o7-f@*KVru*Vk@TE*v|NUA5Y?R z>CSxeKW6}+ya3F(0%}yipPL^SuQykB#NX@h&n{lCuX-2nZExeariQlFDgXn{)UH21 zo8H_SiQe=V{acv9pZ7Ky!#J+7a0Cds21AQ}EDnHGMmPrEP31@yAmkz^xpPu!*A@eS zI7G5~+C)X#1O{_3SCM>@BpU$bNvW@DT!fzd6aT@nLAtVEECBNCKYaj%IT@bA=(3S)M^P85u#|#U?1JW}@?MedhrSEUmEDbfLRzfrY z9(Yi0$g3&^jc8RnmBuIlHlf^S%JpqFiB_vwQ8#W10br#qRlzKPmRG+s-HYkWy))@MhN@r|K&z{N z>~@#?$6uF+ho`&4<5SlG!$&~+d{v+V2;Dc5bCVy;e|`A*GMxNh*99xVR|P77ojG0% zCu!lcW*%L+T2%n8mH(W10K{sYyA37)S}T8_`IPtmx!Yg@Ah)FKsucPwWFAwwQ%wNm zCMQ@l+81WgYH9L?@zPo^se!kXsMrp0dDm{MMITgws%YndPW8=p@Aj0gD6fi<^n zra;)rJl-Y%Qtx5DB+Y@arFj(qjj6E|LT&SX*Z&@Sn^eGfK(|w)*a2+L%F%YVl_n1)u#C*-<$$8S{gHY4FR{jW80hGE8n1IkA z)HLtArBwikE?EWS0|KTAevQp*H0?FQx3$j#C|v~@#Wca^Y9SB5x$;NDEC4!7R{=R& z3on2*s-P->!0MyL3xEM1tqRcW!dLokOb`H7!1sObf)8_))sN8{1V9o?GBP3KHxJQj zHAe`E0ze)T`u0=CG!Y5r(Hjkb!6{#JF}`-NKrB?syh#8^41^Y+37EIq5Sb9k0LX1A zOR4d>i4ZMI%%gn~04{6>f|$2j5Var{17I#D<{O?ZZV5`BxzT`@rI7`INqJAOB4i~H zMcbOe92lqMnLBr`YyeIG5D-N*Akwv$I+C-bai^;o0GH5#I6OXyW^-?(GF)HkQ4+jh zn%K)PUQ4X_SVM6D!wG<4LttRS!T^W_=EmXr8GDdx_HU-wFz$4&3cyXm5fc^$|GiBD zbK`LRjOCgdQ4K&1GfU<;16V?>rE7Av{09I4|Nrk^aSH$d00v1!K~w_(W+Z-}MrZdR P00000NkvXXu0mjf2o(Ou literal 0 HcmV?d00001 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"> - - + + - - + + - - + + + + + + + + + + + + - -