From 338cffc633b72aa90917109a25348444fdfd93be Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Tue, 19 May 2026 11:45:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=87=BA=E6=B8=AF=E8=A3=85=E8=BD=BD?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E9=87=8D=E7=BD=AE=E6=94=B9=E4=B8=BA=E5=BC=B9?= =?UTF-8?q?=E6=A1=86=E9=80=89=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 参照出港运抵页面交互,「状态重置」按钮不再直接调接口, 而是先弹出居中弹框,让用户在下拉框选择「正常 / 未申报」后 点击「保存」再调接口;选「未申报」时请求体不带 restStatus。 Co-Authored-By: Claude Opus 4.6 --- .../gjc/dialog/IntExpLoadResetDialogModel.kt | 48 ++++++++++ .../gjc/viewModel/IntExpLoadViewModel.kt | 27 ++++-- .../res/layout/dialog_int_exp_load_reset.xml | 87 +++++++++++++++++++ 3 files changed, 153 insertions(+), 9 deletions(-) create mode 100644 module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpLoadResetDialogModel.kt create mode 100644 module_gjc/src/main/res/layout/dialog_int_exp_load_reset.xml diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpLoadResetDialogModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpLoadResetDialogModel.kt new file mode 100644 index 0000000..e49ce6c --- /dev/null +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpLoadResetDialogModel.kt @@ -0,0 +1,48 @@ +package com.lukouguoji.gjc.dialog + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.lukouguoji.gjc.R +import com.lukouguoji.gjc.databinding.DialogIntExpLoadResetBinding +import com.lukouguoji.module_base.base.BaseDialogModel +import com.lukouguoji.module_base.ktx.verifyNullOrEmpty +import dev.utils.app.info.KeyValue + +/** + * 国际出港装载 - 状态重置对话框 + */ +class IntExpLoadResetDialogModel( + private val callback: (IntExpLoadResetDialogModel) -> Unit +) : BaseDialogModel(DIALOG_TYPE_CENTER) { + + val resetStatusList = MutableLiveData>() + val selectedResetStatus = MutableLiveData("") + var resetStatusCode: String? = null + + override fun layoutId(): Int = R.layout.dialog_int_exp_load_reset + + override fun onDialogCreated(context: Context) { + binding.model = this + initResetStatusList() + selectedResetStatus.observeForever { value -> + resetStatusCode = when (value) { + "01" -> "01" + "02" -> null + else -> null + } + } + } + + private fun initResetStatusList() { + resetStatusList.value = listOf( + KeyValue("正常", "01"), + KeyValue("未申报", "02") + ) + } + + fun onSaveClick() { + if (selectedResetStatus.value.verifyNullOrEmpty("请选择重置状态")) return + dismiss() + callback(this) + } +} diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt index cf73e50..0683fa1 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import com.lukouguoji.gjc.R import com.lukouguoji.gjc.dialog.IntExpLoadDeleteDialogModel +import com.lukouguoji.gjc.dialog.IntExpLoadResetDialogModel import com.lukouguoji.gjc.holder.IntExpLoadViewHolder import com.lukouguoji.module_base.base.BasePageViewModel import com.lukouguoji.module_base.bean.GjcCheckInPage @@ -84,7 +85,7 @@ class IntExpLoadViewModel : BasePageViewModel() { } /** - * 状态重置 (批量操作) + * 状态重置 (批量操作) — 弹框选状态后调接口 */ fun resetDeclare() { val list = pageModel.rv?.commonAdapter()?.items as? List ?: return @@ -95,18 +96,26 @@ class IntExpLoadViewModel : BasePageViewModel() { return } - val param = GjcDeclareParam(loadList = selectedItems) - val requestData = param.toRequestBody() + val dialog = IntExpLoadResetDialogModel { dialogModel -> + val params = mutableMapOf( + "loadList" to selectedItems + ) + if (dialogModel.resetStatusCode != null) { + params["restStatus"] = dialogModel.resetStatusCode + } + val requestData = params.toRequestBody() - launchLoadingCollect({ NetApply.api.resetDeclare(requestData) }) { - onSuccess = { - showToast("状态重置成功") - viewModelScope.launch { - FlowBus.with(ConstantEvent.EVENT_REFRESH).emit("refresh") + launchLoadingCollect({ NetApply.api.resetDeclare(requestData) }) { + onSuccess = { + showToast("状态重置成功") + viewModelScope.launch { + FlowBus.with(ConstantEvent.EVENT_REFRESH).emit("refresh") + } + refresh() } - refresh() } } + dialog.show() } /** diff --git a/module_gjc/src/main/res/layout/dialog_int_exp_load_reset.xml b/module_gjc/src/main/res/layout/dialog_int_exp_load_reset.xml new file mode 100644 index 0000000..d17a181 --- /dev/null +++ b/module_gjc/src/main/res/layout/dialog_int_exp_load_reset.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +