feat: 国际进港提取记录费用修改页面及列表侧滑菜单

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-13 15:13:45 +08:00
parent 6278d9738d
commit 5ccb971c61
9 changed files with 711 additions and 246 deletions

View File

@@ -0,0 +1,37 @@
package com.lukouguoji.gjj.activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import com.google.gson.Gson
import com.lukouguoji.gjj.R
import com.lukouguoji.gjj.databinding.ActivityIntImpPickUpChargeEditBinding
import com.lukouguoji.gjj.viewModel.IntImpPickUpChargeEditViewModel
import com.lukouguoji.module_base.base.BaseBindingActivity
import com.lukouguoji.module_base.bean.IntImpPickUpRecordBean
import com.lukouguoji.module_base.common.Constant
/**
* 国际进港-费用修改
*/
class IntImpPickUpChargeEditActivity :
BaseBindingActivity<ActivityIntImpPickUpChargeEditBinding, IntImpPickUpChargeEditViewModel>() {
override fun layoutId() = R.layout.activity_int_imp_pick_up_charge_edit
override fun viewModelClass() = IntImpPickUpChargeEditViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("国际进港费用修改")
binding.viewModel = viewModel
viewModel.initOnCreated(intent)
}
companion object {
@JvmStatic
fun start(context: Context, bean: IntImpPickUpRecordBean) {
val starter = Intent(context, IntImpPickUpChargeEditActivity::class.java)
.putExtra(Constant.Key.DATA, Gson().toJson(bean))
context.startActivity(starter)
}
}
}

View File

@@ -13,6 +13,8 @@ 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.interfaces.IOnItemClickListener
import com.lukouguoji.module_base.ktx.addOnItemClickListener
import com.lukouguoji.module_base.ktx.commonAdapter
import com.lukouguoji.module_base.ktx.showToast
import com.lukouguoji.module_base.model.ConfirmDialogModel
@@ -41,6 +43,20 @@ class IntImpPickUpRecordActivity :
// 绑定分页
viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)
// 设置列表项点击回调(侧滑修改按钮)
binding.rv.addOnItemClickListener(object : IOnItemClickListener {
override fun onItemClick(position: Int, type: Int) {
when (type) {
2000 -> {
// 侧滑修改操作
val list = viewModel.pageModel.rv?.commonAdapter()?.items as? List<*> ?: return
val bean = list.getOrNull(position) as? IntImpPickUpRecordBean ?: return
IntImpPickUpChargeEditActivity.start(this@IntImpPickUpRecordActivity, bean)
}
}
}
})
// 监听刷新事件
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
viewModel.refresh()

View File

@@ -25,8 +25,14 @@ class IntImpPickUpRecordViewHolder(view: View) :
}
// 列表项点击进入提取详情
itemView.setOnClickListener {
binding.ll.setOnClickListener {
IntImpPickUpRecordDetailsActivity.start(itemView.context, bean)
}
// 侧滑菜单 - 修改按钮
binding.btnEdit.setOnClickListener {
binding.swipeMenu.quickClose()
clickListener?.onItemClick(position, 2000) // type=2000表示修改操作
}
}
}

View File

@@ -0,0 +1,89 @@
package com.lukouguoji.gjj.viewModel
import android.content.Intent
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import com.google.gson.Gson
import com.lukouguoji.module_base.base.BaseViewModel
import com.lukouguoji.module_base.bean.IntImpPickUpRecordBean
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.launchLoadingCollect
import com.lukouguoji.module_base.ktx.showToast
import com.lukouguoji.module_base.ktx.toRequestBody
import kotlinx.coroutines.launch
/**
* 国际进港费用修改 ViewModel
*/
class IntImpPickUpChargeEditViewModel : BaseViewModel() {
val dataBean = MutableLiveData(IntImpPickUpRecordBean())
// 可编辑费用字段(String 用于双向绑定)
val tranChargeStr = MutableLiveData("") // 信息费
val whsChargeStr = MutableLiveData("") // 仓储费
val drawBillChargeStr = MutableLiveData("") // 抽单费
val efrChargeStr = MutableLiveData("") // 冷藏费
val svlChargeStr = MutableLiveData("") // 铲车费
val tallyChargeStr = MutableLiveData("") // 理货费
fun initOnCreated(intent: Intent) {
val jsonData = intent.getStringExtra(Constant.Key.DATA) ?: ""
if (jsonData.isNotEmpty()) {
try {
val bean = Gson().fromJson(jsonData, IntImpPickUpRecordBean::class.java)
dataBean.value = bean
// 初始化可编辑费用字段
tranChargeStr.value = if (bean.tranCharge != 0.0) bean.tranCharge.toString() else ""
whsChargeStr.value = if (bean.whsCharge != 0.0) bean.whsCharge.toString() else ""
drawBillChargeStr.value = if (bean.drawBillCharge != 0.0) bean.drawBillCharge.toString() else ""
efrChargeStr.value = if (bean.efrCharge != 0.0) bean.efrCharge.toString() else ""
svlChargeStr.value = if (bean.svlCharge != 0.0) bean.svlCharge.toString() else ""
tallyChargeStr.value = if (bean.tallyCharge != 0.0) bean.tallyCharge.toString() else ""
} catch (e: Exception) {
showToast("数据解析失败")
getTopActivity().finish()
}
} else {
showToast("未接收到数据")
getTopActivity().finish()
}
}
/**
* 保存修改
*/
fun submit() {
val bean = dataBean.value ?: return
// 同步可编辑费用字段回 bean
bean.tranCharge = tranChargeStr.value?.toDoubleOrNull() ?: 0.0
bean.whsCharge = whsChargeStr.value?.toDoubleOrNull() ?: 0.0
bean.drawBillCharge = drawBillChargeStr.value?.toDoubleOrNull() ?: 0.0
bean.efrCharge = efrChargeStr.value?.toDoubleOrNull() ?: 0.0
bean.svlCharge = svlChargeStr.value?.toDoubleOrNull() ?: 0.0
bean.tallyCharge = tallyChargeStr.value?.toDoubleOrNull() ?: 0.0
launchLoadingCollect({
NetApply.api.modifyIntImpPickUpCharge(bean.toRequestBody())
}) {
onSuccess = {
showToast("修改成功")
viewModelScope.launch {
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).emit("refresh")
}
getTopActivity().finish()
}
}
}
/**
* 取消
*/
fun cancel() {
getTopActivity().finish()
}
}