From dcb335ecdf8ccec35924e9fdd9fc2eb8e7fc684c Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Thu, 27 Aug 2026 15:30:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20ULD=E6=96=B0=E5=A2=9E=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E5=A2=9E=E5=8A=A0=E6=9D=A5=E6=BA=90=E3=80=81?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E6=97=B6=E9=97=B4=E3=80=81=E6=89=80=E5=9C=A8?= =?UTF-8?q?=E6=B8=AF=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 编辑表单新增来源(空运/陆运)、入库时间、所在港(默认HFE)三个字段 - 列表项同步显示来源、所在港、位置、入库时间,去掉备注展示并收窄首列 - PadDataLayoutNew 新增 DATETIME 类型,支持年月日时分秒选择 Co-Authored-By: Claude Opus 4.6 --- .../page/uld/edit/UldEditViewModel.kt | 13 ++- app/src/main/res/layout/activity_uld_edit.xml | 43 ++++++++++ app/src/main/res/layout/item_uld_list.xml | 82 +++++++++++++++++-- .../lukouguoji/module_base/bean/ULDBean.kt | 8 ++ .../ui/weight/data/layout/PadDataLayout.kt | 3 +- .../ui/weight/data/layout/PadDataLayoutNew.kt | 17 +++- 6 files changed, 153 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/lukouguoji/aerologic/page/uld/edit/UldEditViewModel.kt b/app/src/main/java/com/lukouguoji/aerologic/page/uld/edit/UldEditViewModel.kt index afed20b..e3f38a9 100644 --- a/app/src/main/java/com/lukouguoji/aerologic/page/uld/edit/UldEditViewModel.kt +++ b/app/src/main/java/com/lukouguoji/aerologic/page/uld/edit/UldEditViewModel.kt @@ -30,6 +30,14 @@ class UldEditViewModel : BaseViewModel() { ) ) + // 来源下拉列表 + val sourceList = MutableLiveData>( + listOf( + KeyValue("空运", "空运"), + KeyValue("陆运", "陆运"), + ) + ) + // 所属航司下拉列表(数据源:POST /typeCode/intCarrier) val carrierList = MutableLiveData>(emptyList()) @@ -40,7 +48,8 @@ class UldEditViewModel : BaseViewModel() { else if (modify) DetailsPageType.Modify else DetailsPageType.Details if (id.isEmpty()) { - // 新增:直接加载航司列表 + // 新增:所在港默认 HFE,直接加载航司列表 + uldBean.value = ULDBean(nowPort = "HFE") loadCarrierList(null) } else { getData() @@ -79,7 +88,7 @@ class UldEditViewModel : BaseViewModel() { }) { onSuccess = { showToast(it.msg.noNull(if (isAdd) "新增成功" else "修改成功")) - if (isAdd) uldBean.value = ULDBean() else getData() + if (isAdd) uldBean.value = ULDBean(nowPort = "HFE") else getData() } } } diff --git a/app/src/main/res/layout/activity_uld_edit.xml b/app/src/main/res/layout/activity_uld_edit.xml index 8460770..910db0b 100644 --- a/app/src/main/res/layout/activity_uld_edit.xml +++ b/app/src/main/res/layout/activity_uld_edit.xml @@ -121,6 +121,49 @@ + + + + + + + + + + + + completeSpace="@{4}" /> - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/ULDBean.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/ULDBean.kt index b690fbe..bd66acf 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/bean/ULDBean.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/ULDBean.kt @@ -19,6 +19,14 @@ data class ULDBean( var status: String = "", // 备注 var remark: String = "", + // 来源(空运、陆运) + var source: String = "", + // 入库时间 yyyy-MM-dd HH:mm:ss + var inStoreTime: String = "", + // 所在港 + var nowPort: String = "", + // 位置信息 + var nowPosition: String = "", ){ val checked = ObservableBoolean(false) diff --git a/module_base/src/main/java/com/lukouguoji/module_base/ui/weight/data/layout/PadDataLayout.kt b/module_base/src/main/java/com/lukouguoji/module_base/ui/weight/data/layout/PadDataLayout.kt index 4d9a996..53ca9e3 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/ui/weight/data/layout/PadDataLayout.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/ui/weight/data/layout/PadDataLayout.kt @@ -211,7 +211,7 @@ class PadDataLayout : FrameLayout { setOnClickListener(null) } - DataLayoutType.DATE -> { + DataLayoutType.DATE, DataLayoutType.DATETIME -> { tv.visibility = VISIBLE et.visibility = GONE spinner.visibility = GONE @@ -258,4 +258,5 @@ enum class DataLayoutType { INPUT, // 文本 SPINNER, // 下拉选择 DATE, // 日期 + DATETIME, // 日期时间(yyyy-MM-dd HH:mm:ss) } diff --git a/module_base/src/main/java/com/lukouguoji/module_base/ui/weight/data/layout/PadDataLayoutNew.kt b/module_base/src/main/java/com/lukouguoji/module_base/ui/weight/data/layout/PadDataLayoutNew.kt index 54ac9e7..09ed48d 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/ui/weight/data/layout/PadDataLayoutNew.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/ui/weight/data/layout/PadDataLayoutNew.kt @@ -25,6 +25,7 @@ import com.lukouguoji.module_base.adapter.visible import com.lukouguoji.module_base.interfaces.IOnFocusChangeListener import com.lukouguoji.module_base.interfaces.IOnSpinnerSelected import com.lukouguoji.module_base.ktx.formatDate +import com.lukouguoji.module_base.ktx.formatDateTime import com.lukouguoji.module_base.ktx.getActivity import com.lukouguoji.module_base.ktx.loge import com.lukouguoji.module_base.util.Common @@ -182,6 +183,18 @@ class PadDataLayoutNew : FrameLayout { } } + // 选择日期时间(yyyy-MM-dd HH:mm:ss) + private val dateTimeClick: (v: View) -> Unit = { + if (enable) { + Common.onYearMonthDayTime(context.getActivity(), value) { year, month, day, hour, minute, second -> + val calendar = Calendar.getInstance() + calendar.set(year, month - 1, day, hour, minute, second) + value = calendar.time.formatDateTime() + refreshCallBack?.invoke() + } + } + } + init { initView() } @@ -252,7 +265,7 @@ class PadDataLayoutNew : FrameLayout { setOnClickListener(null) } - DataLayoutType.DATE -> { + DataLayoutType.DATE, DataLayoutType.DATETIME -> { tv.visibility = VISIBLE et.visibility = GONE spinner.visibility = GONE @@ -263,7 +276,7 @@ class PadDataLayoutNew : FrameLayout { iv.layoutParams.width = dp20 iv.layoutParams.height = dp20 - setOnClickListener(dateClick) + setOnClickListener(if (type == DataLayoutType.DATETIME) dateTimeClick else dateClick) } } }