feat: opt 板箱过磅 auto calc

This commit is contained in:
2025-12-16 14:07:11 +08:00
parent f3056d3807
commit eb1d356bd2
5 changed files with 212 additions and 13 deletions

View File

@@ -505,6 +505,69 @@ dataBean.value = bean
**类型**: `INPUT` / `SPINNER` / `DATE`
**注意**: 使用 PadDataLayout 时,`titleLength` 通常设置为 5
#### PadDataLayoutNew - 输入完成回调
**使用场景**: 当需要在用户完成输入(失去焦点)时触发自动查询或其他操作
**正确用法**: 使用方法引用语法 `viewModel::methodName`
```xml
<!-- 输入完成后自动查询 -->
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:id="@+id/carIdInput"
hint='@{"请输入架子车号"}'
setRefreshCallBack="@{viewModel::onCarIdInputComplete}"
title='@{"架子车号"}'
titleLength="@{5}"
type="@{DataLayoutType.INPUT}"
value='@={viewModel.carId}'
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<!-- 日期选择完成后触发回调 -->
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
setRefreshCallBack="@{viewModel::onFlightDateInputComplete}"
title='@{"航班日期"}'
titleLength="@{5}"
type="@{DataLayoutType.DATE}"
value='@={viewModel.flightDate}'
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
```
**ViewModel 中的实现**:
```kotlin
/**
* 架子车号输入完成时调用
*/
fun onCarIdInputComplete() {
val id = carId.value
if (!id.isNullOrEmpty() && id != lastQueriedCarId) {
lastQueriedCarId = id
queryFlatcarInfo(id)
}
}
/**
* 航班日期选择完成时调用
*/
fun onFlightDateInputComplete() {
// 清除查询标记,以便重新查询
lastQueriedFlight = ""
queryFlightIfReady()
}
```
**关键要点**:
-**正确**: `setRefreshCallBack="@{viewModel::methodName}"` - 使用方法引用
-**错误**: `setRefreshCallBack="@{() -> viewModel.methodName()}"` - Lambda 表达式会导致编译错误
- 回调在输入框失去焦点时触发 (INPUT/SPINNER 类型)
- 回调在日期选择完成后触发 (DATE 类型)
- 适合实现输入完成后的自动查询功能
### 开发检查清单
#### ⚠️ 重要提醒