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

@@ -78,6 +78,9 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
// ========== 标记位,避免重复查询 ==========
private var lastQueriedUldNo = ""
// ========== 修改模式待匹配的组装位置 ==========
private var pendingLoadArea: String = ""
/**
* ULD编号锁定状态页面内编辑模式
*/
@@ -147,12 +150,30 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
}
}?.toMutableList() ?: mutableListOf()
assemblePositionList.value = list
// 保存默认选中的第一项
if (list.isNotEmpty()) {
// 检查是否有待匹配的组装位置(修改模式)
if (pendingLoadArea.isNotEmpty() && 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]
}
assemblePositionList.value = list
}
}
}
@@ -1013,13 +1034,19 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
/**
* 从列表页"修改"模式初始化
* @param uldNo ULD编号
* @param loadArea 组装位置(用于自动选中对应的组装位置)
*/
fun initFromEditMode(uldNo: String) {
fun initFromEditMode(uldNo: String, loadArea: String = "") {
if (uldNo.isEmpty()) return
// 标记为修改模式(整个页面生命周期内 ULD 编号锁定)
isFromEditMode.value = true
// 保存待匹配的组装位置(在组装位置列表加载完成后进行匹配选择)
if (loadArea.isNotEmpty()) {
pendingLoadArea = loadArea
}
// 填充 ULD 编号
uldInfo.value = uldInfo.value?.apply {
this.uldNo = uldNo

View File

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