feat: opt 出港组装

This commit is contained in:
2026-01-30 18:28:25 +08:00
parent bad565085a
commit ca20d70e8a
6 changed files with 83 additions and 36 deletions

View File

@@ -65,6 +65,20 @@ class GjcUldUseBean : Serializable {
var loadArea: String = "" // 组装区 var loadArea: String = "" // 组装区
var pc: Long = 0 // 组装件数 var pc: Long = 0 // 组装件数
var fillWeightFlag: String = "" // 回填状态0-未回填1-部分回填2-已回填
// 回填状态文本
val fillWeightFlagText: String
get() = when (fillWeightFlag) {
"0" -> "未回填"
"1" -> "部分回填"
"2" -> "已回填"
else -> ""
}
// 回填状态是否显示绿色(已回填时显示绿色)
val isFillWeightGreen: Boolean
get() = fillWeightFlag == "2"
// ========== 出港组装页面扩展字段 ========== // ========== 出港组装页面扩展字段 ==========
var isExpanded: Boolean = false // 展开状态(旧版保留) var isExpanded: Boolean = false // 展开状态(旧版保留)

View File

@@ -35,6 +35,7 @@ class IntExpAssembleStartActivity :
companion object { companion object {
private const val EXTRA_ULD_NO = "uld" private const val EXTRA_ULD_NO = "uld"
private const val EXTRA_EDIT_MODE = "edit_mode" private const val EXTRA_EDIT_MODE = "edit_mode"
private const val EXTRA_LOAD_AREA = "load_area"
@JvmStatic @JvmStatic
fun start(context: Context) { fun start(context: Context) {
@@ -45,12 +46,14 @@ class IntExpAssembleStartActivity :
/** /**
* 从列表页"修改"模式启动 * 从列表页"修改"模式启动
* @param uldNo ULD编号将被锁定整个页面生命周期内不可编辑 * @param uldNo ULD编号将被锁定整个页面生命周期内不可编辑
* @param loadArea 组装位置(用于自动选中对应的组装位置)
*/ */
@JvmStatic @JvmStatic
fun startForEdit(context: Context, uldNo: String) { fun startForEdit(context: Context, uldNo: String, loadArea: String) {
val starter = Intent(context, IntExpAssembleStartActivity::class.java) val starter = Intent(context, IntExpAssembleStartActivity::class.java)
.putExtra(EXTRA_ULD_NO, uldNo) .putExtra(EXTRA_ULD_NO, uldNo)
.putExtra(EXTRA_EDIT_MODE, true) .putExtra(EXTRA_EDIT_MODE, true)
.putExtra(EXTRA_LOAD_AREA, loadArea)
context.startActivity(starter) context.startActivity(starter)
} }
} }
@@ -97,8 +100,9 @@ class IntExpAssembleStartActivity :
val isEditMode = intent.getBooleanExtra(EXTRA_EDIT_MODE, false) val isEditMode = intent.getBooleanExtra(EXTRA_EDIT_MODE, false)
if (isEditMode) { if (isEditMode) {
val uldNo = intent.getStringExtra(EXTRA_ULD_NO) ?: "" val uldNo = intent.getStringExtra(EXTRA_ULD_NO) ?: ""
val loadArea = intent.getStringExtra(EXTRA_LOAD_AREA) ?: ""
if (uldNo.isNotEmpty()) { if (uldNo.isNotEmpty()) {
viewModel.initFromEditMode(uldNo) viewModel.initFromEditMode(uldNo, loadArea)
} }
} }
} }

View File

@@ -78,6 +78,9 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
// ========== 标记位,避免重复查询 ========== // ========== 标记位,避免重复查询 ==========
private var lastQueriedUldNo = "" private var lastQueriedUldNo = ""
// ========== 修改模式待匹配的组装位置 ==========
private var pendingLoadArea: String = ""
/** /**
* ULD编号锁定状态页面内编辑模式 * ULD编号锁定状态页面内编辑模式
*/ */
@@ -147,12 +150,30 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
} }
}?.toMutableList() ?: mutableListOf() }?.toMutableList() ?: mutableListOf()
assemblePositionList.value = list // 检查是否有待匹配的组装位置(修改模式)
if (pendingLoadArea.isNotEmpty() && list.isNotEmpty()) {
// 保存默认选中的第一项 // 取消所有选中状态
if (list.isNotEmpty()) { list.forEach { it.isSelected = false }
// 查找并选中匹配项
val matchedItem = list.find { it.positionName == pendingLoadArea }
if (matchedItem != null) {
matchedItem.isSelected = true
selectedPosition.value = matchedItem
} else {
// 未找到匹配项,选中第一项
list[0].isSelected = true
selectedPosition.value = list[0]
}
// 清空待匹配标记
pendingLoadArea = ""
// 触发组装信息列表查询
loadAssembledList()
} else if (list.isNotEmpty()) {
// 非修改模式,选中第一项
selectedPosition.value = list[0] selectedPosition.value = list[0]
} }
assemblePositionList.value = list
} }
} }
} }
@@ -1013,13 +1034,19 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
/** /**
* 从列表页"修改"模式初始化 * 从列表页"修改"模式初始化
* @param uldNo ULD编号 * @param uldNo ULD编号
* @param loadArea 组装位置(用于自动选中对应的组装位置)
*/ */
fun initFromEditMode(uldNo: String) { fun initFromEditMode(uldNo: String, loadArea: String = "") {
if (uldNo.isEmpty()) return if (uldNo.isEmpty()) return
// 标记为修改模式(整个页面生命周期内 ULD 编号锁定) // 标记为修改模式(整个页面生命周期内 ULD 编号锁定)
isFromEditMode.value = true isFromEditMode.value = true
// 保存待匹配的组装位置(在组装位置列表加载完成后进行匹配选择)
if (loadArea.isNotEmpty()) {
pendingLoadArea = loadArea
}
// 填充 ULD 编号 // 填充 ULD 编号
uldInfo.value = uldInfo.value?.apply { uldInfo.value = uldInfo.value?.apply {
this.uldNo = uldNo this.uldNo = uldNo

View File

@@ -176,12 +176,14 @@ class IntExpAssembleViewModel : BasePageViewModel() {
/** /**
* 修改单个列表项 - 跳转到开始组装页面(修改模式) * 修改单个列表项 - 跳转到开始组装页面(修改模式)
* ULD 编号将被锁定,整个页面生命周期内不可编辑 * ULD 编号将被锁定,整个页面生命周期内不可编辑
* 同时传递组装位置,用于自动选中对应项
*/ */
private fun onEditItem(position: Int) { private fun onEditItem(position: Int) {
val bean = pageModel.rv?.commonAdapter()?.getItem(position) as? GjcUldUseBean ?: return val bean = pageModel.rv?.commonAdapter()?.getItem(position) as? GjcUldUseBean ?: return
com.lukouguoji.gjc.page.assemble.IntExpAssembleStartActivity.startForEdit( com.lukouguoji.gjc.page.assemble.IntExpAssembleStartActivity.startForEdit(
getTopActivity(), getTopActivity(),
bean.uld bean.uld,
bean.loadArea
) )
} }

View File

@@ -135,7 +135,7 @@
itemLayoutId="@{viewModel.itemLayoutId}" itemLayoutId="@{viewModel.itemLayoutId}"
viewHolder="@{viewModel.itemViewHolder}" viewHolder="@{viewModel.itemViewHolder}"
tools:itemCount="3" tools:itemCount="3"
tools:listitem="@layout/item_int_exp_assemble_uld" /> tools:listitem="@layout/item_int_exp_assemble" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout> </com.scwang.smart.refresh.layout.SmartRefreshLayout>

View File

@@ -92,31 +92,6 @@
</LinearLayout> </LinearLayout>
<!-- 总重 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.8"
android:gravity="center_vertical"
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="@{String.valueOf((int)bean.totalWeight)}"
android:textColor="@color/text_normal"
android:textSize="16sp" />
</LinearLayout>
<!-- 货重 --> <!-- 货重 -->
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
@@ -171,7 +146,7 @@
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="0.8"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
@@ -192,6 +167,31 @@
</LinearLayout> </LinearLayout>
<!-- 回填状态 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
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.fillWeightFlagText}"
android:textColor="@{bean.isFillWeightGreen ? @color/text_green : @color/text_normal}"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout> </LinearLayout>
<!-- 第二行:航班日期、航班号、组装人、组装区、组装时间 --> <!-- 第二行:航班日期、航班号、组装人、组装区、组装时间 -->
@@ -288,7 +288,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
completeSpace="@{4}" completeSpace="@{5}"
android:text="组装区:" android:text="组装区:"
android:textColor="@color/text_normal" android:textColor="@color/text_normal"
android:textSize="16sp" /> android:textSize="16sp" />