diff --git a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt index 27bbef5..bad9704 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt @@ -811,6 +811,13 @@ interface Api { @POST("IntExpMove/move") suspend fun submitIntExpMove(@Body data: RequestBody): BaseResultBean + /** + * 国际出港库位操作-清仓 + * 接口路径: /IntExpStorageUse/updateClear + */ + @POST("IntExpStorageUse/updateClear") + suspend fun clearIntExpStorage(@Body data: RequestBody): BaseResultBean + /** * 国际出港仓库-分页查询 * 接口路径: /IntExpStorageUse/pageQuery diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpStorageUseActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpStorageUseActivity.kt index f876f58..6854b63 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpStorageUseActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpStorageUseActivity.kt @@ -6,12 +6,15 @@ import android.os.Bundle import com.alibaba.android.arouter.facade.annotation.Route import com.lukouguoji.gjc.R import com.lukouguoji.gjc.databinding.ActivityIntExpStorageUseBinding +import com.lukouguoji.gjc.dialog.IntExpMoveClearDialogModel import com.lukouguoji.gjc.viewModel.IntExpStorageUseViewModel import com.lukouguoji.module_base.base.BaseBindingActivity import com.lukouguoji.module_base.common.Constant import com.lukouguoji.module_base.common.ConstantEvent import com.lukouguoji.module_base.impl.FlowBus import com.lukouguoji.module_base.impl.observe +import com.lukouguoji.module_base.ktx.commonAdapter +import com.lukouguoji.module_base.ktx.showToast import com.lukouguoji.module_base.router.ARouterConstants /** @@ -27,6 +30,7 @@ class IntExpStorageUseActivity : override fun initOnCreate(savedInstanceState: Bundle?) { setBackArrow("国际出港仓库") binding.viewModel = viewModel + binding.activity = this // 观察全选状态,更新图标透明度 viewModel.isAllChecked.observe(this) { isAllChecked -> @@ -45,6 +49,27 @@ class IntExpStorageUseActivity : viewModel.refresh() } + /** + * 显示清仓操作对话框 + */ + fun showClearDialog() { + val list = viewModel.pageModel.rv?.commonAdapter()?.items as? List<*> ?: return + val selectedItems = list.filterIsInstance() + .filter { it.isSelected } + + if (selectedItems.isEmpty()) { + showToast("请至少选择一条运单") + return + } + + // 显示清仓对话框 + IntExpMoveClearDialogModel { dialog -> + // 用户点击保存后,执行清仓操作 + val clearNormal = dialog.clearNormal.value ?: "" + viewModel.performClear(clearNormal) + }.show(this) + } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == Constant.RequestCode.WAYBILL && resultCode == Activity.RESULT_OK) { diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpMoveClearDialogModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpMoveClearDialogModel.kt new file mode 100644 index 0000000..8af9afa --- /dev/null +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpMoveClearDialogModel.kt @@ -0,0 +1,47 @@ +package com.lukouguoji.gjc.dialog + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.lukouguoji.gjc.R +import com.lukouguoji.gjc.databinding.DialogIntExpMoveClearBinding +import com.lukouguoji.module_base.base.BaseDialogModel +import com.lukouguoji.module_base.ktx.verifyNullOrEmpty +import dev.utils.app.info.KeyValue + +/** + * 国际出港移库 - 清仓操作对话框 + */ +class IntExpMoveClearDialogModel( + private val callback: (IntExpMoveClearDialogModel) -> Unit +) : BaseDialogModel(DIALOG_TYPE_CENTER) { + + // 清仓正常(存储的是 code:"0" 或 "1") + val clearNormal = MutableLiveData("") + + // 清仓正常选项列表 + val clearNormalList = MutableLiveData>().apply { + value = listOf( + KeyValue("是", "1"), + KeyValue("否", "0") + ) + } + + override fun layoutId(): Int { + return R.layout.dialog_int_exp_move_clear + } + + override fun onDialogCreated(context: Context) { + binding.model = this + } + + /** + * 保存按钮点击 + */ + fun onSaveClick() { + if (clearNormal.value.verifyNullOrEmpty("请选择清仓正常")) { + return + } + dismiss() + callback(this) + } +} diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/page/move/IntExpMoveActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/page/move/IntExpMoveActivity.kt index 1a918b3..7c00fa3 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/page/move/IntExpMoveActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/page/move/IntExpMoveActivity.kt @@ -8,6 +8,7 @@ import androidx.appcompat.app.AlertDialog import com.alibaba.android.arouter.facade.annotation.Route import com.lukouguoji.gjc.R import com.lukouguoji.gjc.databinding.ActivityIntExpMoveBinding +import com.lukouguoji.gjc.dialog.IntExpMoveClearDialogModel import com.lukouguoji.gjc.viewModel.IntExpMoveViewModel import com.lukouguoji.module_base.base.BaseBindingActivity import com.lukouguoji.module_base.common.Constant @@ -55,6 +56,11 @@ class IntExpMoveActivity : BaseBindingActivity + // 用户点击保存后,执行清仓操作 + val clearNormal = dialog.clearNormal.value ?: "" + viewModel.performClear(clearNormal) + }.show(this) + } + /** * 扫码回调 */ diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpStorageUseViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpStorageUseViewModel.kt index 4247b30..a73eeee 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpStorageUseViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpStorageUseViewModel.kt @@ -1,20 +1,25 @@ package com.lukouguoji.gjc.viewModel import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.viewModelScope import com.lukouguoji.gjc.R import com.lukouguoji.gjc.holder.IntExpStorageUseViewHolder import com.lukouguoji.module_base.base.BasePageViewModel import com.lukouguoji.module_base.bean.GjcMaWb import com.lukouguoji.module_base.common.Constant +import com.lukouguoji.module_base.common.ConstantEvent import com.lukouguoji.module_base.http.net.NetApply +import com.lukouguoji.module_base.impl.FlowBus import com.lukouguoji.module_base.ktx.commonAdapter import com.lukouguoji.module_base.ktx.formatDate import com.lukouguoji.module_base.ktx.launchCollect import com.lukouguoji.module_base.ktx.launchLoadingCollect +import com.lukouguoji.module_base.ktx.noNull import com.lukouguoji.module_base.ktx.showToast import com.lukouguoji.module_base.ktx.toRequestBody import com.lukouguoji.module_base.model.ScanModel import dev.utils.app.info.KeyValue +import kotlinx.coroutines.launch import java.util.Date /** @@ -117,19 +122,43 @@ class IntExpStorageUseViewModel : BasePageViewModel() { } /** - * 清仓操作 + * 清仓操作(在Activity中调用,会显示对话框) */ fun clearStorage() { + // 由Activity显示对话框 + } + + /** + * 执行清仓操作 + * @param clearNormal 清仓正常("0"或"1") + */ + fun performClear(clearNormal: String) { val list = pageModel.rv?.commonAdapter()?.items as? List ?: return val selectedItems = list.filter { it.isSelected } if (selectedItems.isEmpty()) { - showToast("请选择要清仓的运单") + showToast("请至少选择一条运单") return } - // TODO: 实现清仓接口调用 - showToast("清仓功能待实现") + // 构建请求参数 + val params = mapOf( + "clearNormal" to clearNormal, + "maWbList" to selectedItems + ).toRequestBody() + + launchLoadingCollect({ NetApply.api.clearIntExpStorage(params) }) { + onSuccess = { + showToast("清仓成功") + viewModelScope.launch { + FlowBus.with(ConstantEvent.EVENT_REFRESH).emit("refresh") + } + refresh() // 刷新列表 + } + onFailed = { _, msg -> + showToast(msg.noNull("清仓失败")) + } + } } /** diff --git a/module_gjc/src/main/res/layout/activity_int_exp_move.xml b/module_gjc/src/main/res/layout/activity_int_exp_move.xml index 95b066c..1f1b440 100644 --- a/module_gjc/src/main/res/layout/activity_int_exp_move.xml +++ b/module_gjc/src/main/res/layout/activity_int_exp_move.xml @@ -194,6 +194,13 @@ android:textStyle="bold" /> + + + + + diff --git a/module_gjc/src/main/res/layout/dialog_int_exp_move_clear.xml b/module_gjc/src/main/res/layout/dialog_int_exp_move_clear.xml new file mode 100644 index 0000000..213c10a --- /dev/null +++ b/module_gjc/src/main/res/layout/dialog_int_exp_move_clear.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +