diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpTallyResetDialogModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpTallyResetDialogModel.kt new file mode 100644 index 0000000..909cb51 --- /dev/null +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpTallyResetDialogModel.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.DialogIntExpTallyResetBinding +import com.lukouguoji.module_base.base.BaseDialogModel +import com.lukouguoji.module_base.ktx.verifyNullOrEmpty +import dev.utils.app.info.KeyValue + +/** + * 国际出港理货 - 状态重置对话框 + */ +class IntExpTallyResetDialogModel( + private val callback: (IntExpTallyResetDialogModel) -> 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_tally_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 5b7fdd5..5b24bbd 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 @@ -126,9 +126,22 @@ class IntExpArriveViewModel : BasePageViewModel() { */ fun resetDeclareClick() { val list = pageModel.rv?.commonAdapter()?.items as? List ?: return - val selectedItems = list.filter { it.isSelected } - if (selectedItems.isEmpty()) { + // 收集选中的主单 + val selectedMaWbList = list.filter { it.isSelected } + + // 收集选中的分单 + val selectedHaWbList = mutableListOf() + list.forEach { maWb -> + maWb.haWbList?.forEach { haWb -> + if (haWb.isSelected) { + selectedHaWbList.add(haWb) + } + } + } + + // 检查是否有选中项 + if (selectedMaWbList.isEmpty() && selectedHaWbList.isEmpty()) { showToast("请选择要重置的运单") return } @@ -136,7 +149,14 @@ class IntExpArriveViewModel : BasePageViewModel() { // 创建并显示弹框 val dialog = IntExpArriveResetDialogModel { dialogModel -> // 弹框确认后的回调 - val params = mutableMapOf("maWbList" to selectedItems) + // 构建请求参数(区分主单和分单) + val params = mutableMapOf() + if (selectedMaWbList.isNotEmpty()) { + params["maWbList"] = selectedMaWbList + } + if (selectedHaWbList.isNotEmpty()) { + params["haWbList"] = selectedHaWbList + } // 根据选择添加restStatus参数 // 选择"正常"时传递 "01",选择"未申报"时不传递此参数 diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt index 278852b..2f34f53 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt @@ -4,10 +4,12 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import com.lukouguoji.gjc.R import com.lukouguoji.gjc.dialog.IntExpTallyDeleteDialogModel +import com.lukouguoji.gjc.dialog.IntExpTallyResetDialogModel import com.lukouguoji.gjc.holder.IntExpTallyViewHolder import com.lukouguoji.module_base.base.BasePageViewModel import com.lukouguoji.module_base.bean.GjcCheckInPage import com.lukouguoji.module_base.bean.GjcDeclareParam +import com.lukouguoji.module_base.bean.GjcHaWb import com.lukouguoji.module_base.bean.GjcMaWb import com.lukouguoji.module_base.common.Constant import com.lukouguoji.module_base.common.ConstantEvent @@ -134,24 +136,58 @@ class IntExpTallyViewModel : BasePageViewModel() { */ fun resetDeclare() { val list = pageModel.rv?.commonAdapter()?.items as? List ?: return - val selectedItems = list.filter { it.isSelected } - if (selectedItems.isEmpty()) { + // 收集选中的主单 + val selectedMaWbList = list.filter { it.isSelected } + + // 收集选中的分单 + val selectedHaWbList = mutableListOf() + list.forEach { maWb -> + maWb.haWbList?.forEach { haWb -> + if (haWb.isSelected) { + selectedHaWbList.add(haWb) + } + } + } + + // 检查是否有选中项 + if (selectedMaWbList.isEmpty() && selectedHaWbList.isEmpty()) { showToast("请选择要重置的记录") return } - val requestData = selectedItems.toRequestBody() + // 创建并显示弹框 + val dialog = IntExpTallyResetDialogModel { dialogModel -> + // 弹框确认后的回调 + // 构建请求参数(区分主单和分单) + val params = mutableMapOf() + if (selectedMaWbList.isNotEmpty()) { + params["maWbList"] = selectedMaWbList + } + if (selectedHaWbList.isNotEmpty()) { + params["haWbList"] = selectedHaWbList + } - launchLoadingCollect({ NetApply.api.resetTallyDeclare(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.resetTallyDeclare(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_tally_reset.xml b/module_gjc/src/main/res/layout/dialog_int_exp_tally_reset.xml new file mode 100644 index 0000000..9256b5f --- /dev/null +++ b/module_gjc/src/main/res/layout/dialog_int_exp_tally_reset.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +