From cd0cd89a669104b8a4b2dd775402417a0768609c Mon Sep 17 00:00:00 2001 From: YANGJIANKUAN Date: Sat, 17 Jan 2026 18:10:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9B=BD=E9=99=85=E5=87=BA=E6=B8=AF=20?= =?UTF-8?q?=E5=87=BA=E6=B8=AF=E8=BF=90=E6=8A=B5=20=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E9=87=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dialog/IntExpArriveResetDialogModel.kt | 66 ++++++++++++++ .../gjc/viewModel/IntExpArriveViewModel.kt | 30 +++++-- .../layout/dialog_int_exp_arrive_reset.xml | 87 +++++++++++++++++++ 3 files changed, 176 insertions(+), 7 deletions(-) create mode 100644 module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpArriveResetDialogModel.kt create mode 100644 module_gjc/src/main/res/layout/dialog_int_exp_arrive_reset.xml diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpArriveResetDialogModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpArriveResetDialogModel.kt new file mode 100644 index 0000000..b18ae7c --- /dev/null +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpArriveResetDialogModel.kt @@ -0,0 +1,66 @@ +package com.lukouguoji.gjc.dialog + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.lukouguoji.gjc.R +import com.lukouguoji.gjc.databinding.DialogIntExpArriveResetBinding +import com.lukouguoji.module_base.base.BaseDialogModel +import com.lukouguoji.module_base.ktx.verifyNullOrEmpty +import dev.utils.app.info.KeyValue + +/** + * 国际出港运抵 - 状态重置对话框 + */ +class IntExpArriveResetDialogModel( + private val callback: (IntExpArriveResetDialogModel) -> Unit +) : BaseDialogModel(DIALOG_TYPE_CENTER) { + + // 重置状态列表 + val resetStatusList = MutableLiveData>() + + // 选中的重置状态(存储的是value) + val selectedResetStatus = MutableLiveData("") + + // 重置状态code (传给后端的restStatus参数) + var resetStatusCode: String? = null + + override fun layoutId(): Int { + return R.layout.dialog_int_exp_arrive_reset + } + + override fun onDialogCreated(context: Context) { + binding.model = this + initResetStatusList() + + // 监听选择变化,更新resetStatusCode + selectedResetStatus.observeForever { value -> + resetStatusCode = when (value) { + "01" -> "01" // 正常 + "02" -> null // 未申报 + else -> null + } + } + } + + /** + * 初始化重置状态列表 + */ + private fun initResetStatusList() { + val list = listOf( + KeyValue("正常", "01"), + KeyValue("未申报", "02") + ) + resetStatusList.value = list + } + + /** + * 保存按钮点击 + */ + fun onSaveClick() { + if (selectedResetStatus.value.verifyNullOrEmpty("请选择重置状态")) { + return + } + dismiss() + callback(this) + } +} diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt index a960916..3568cd8 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import com.lukouguoji.gjc.R import com.lukouguoji.gjc.dialog.IntExpArriveDeleteDialogModel +import com.lukouguoji.gjc.dialog.IntExpArriveResetDialogModel import com.lukouguoji.gjc.holder.IntExpArriveViewHolder import com.lukouguoji.module_base.base.BasePageViewModel import com.lukouguoji.module_base.bean.GjcDeclareParam @@ -131,17 +132,32 @@ class IntExpArriveViewModel : BasePageViewModel() { return } - val requestData = mapOf("maWbList" to selectedItems).toRequestBody() + // 创建并显示弹框 + val dialog = IntExpArriveResetDialogModel { dialogModel -> + // 弹框确认后的回调 + val params = mutableMapOf("maWbList" to selectedItems) - launchLoadingCollect({ NetApply.api.resetArriveDeclare(requestData) }) { - onSuccess = { - showToast("状态重置成功") - viewModelScope.launch { - FlowBus.with(ConstantEvent.EVENT_REFRESH).emit("refresh") + // 根据选择添加restStatus参数 + // 选择"正常"时传递 "01",选择"未申报"时不传递此参数 + if (dialogModel.resetStatusCode != null) { + params["restStatus"] = dialogModel.resetStatusCode + } + + val requestData = params.toRequestBody() + + // 调用重置接口 + launchLoadingCollect({ NetApply.api.resetArriveDeclare(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_arrive_reset.xml b/module_gjc/src/main/res/layout/dialog_int_exp_arrive_reset.xml new file mode 100644 index 0000000..f2ff822 --- /dev/null +++ b/module_gjc/src/main/res/layout/dialog_int_exp_arrive_reset.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +