feat: opt form
This commit is contained in:
@@ -2,6 +2,7 @@ package com.lukouguoji.gjj.viewModel
|
||||
|
||||
import android.content.Intent
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.google.gson.Gson
|
||||
import com.lukouguoji.module_base.base.BaseViewModel
|
||||
@@ -25,10 +26,27 @@ class IntImpPickUpChargeEditViewModel : BaseViewModel() {
|
||||
// 可编辑费用字段(String 用于双向绑定)
|
||||
val tranChargeStr = MutableLiveData("") // 信息费
|
||||
val whsChargeStr = MutableLiveData("") // 仓储费
|
||||
val drawBillChargeStr = MutableLiveData("") // 抽单费
|
||||
val efrChargeStr = MutableLiveData("") // 冷藏费
|
||||
val svlChargeStr = MutableLiveData("") // 铲车费
|
||||
val drawBillChargeStr = MutableLiveData("") // 文件处理费
|
||||
val svlChargeStr = MutableLiveData("") // 叉车费
|
||||
val tallyChargeStr = MutableLiveData("") // 理货费
|
||||
val precisionChargeStr = MutableLiveData("") // 精密仪器处理费
|
||||
val animalChargeStr = MutableLiveData("") // 活体动物处理费
|
||||
val totalAmountStr = MutableLiveData("") // 总费用(实时计算)
|
||||
|
||||
// 总费用计算观察者
|
||||
private val totalCalculator = Observer<String> { calculateTotal() }
|
||||
|
||||
private fun calculateTotal() {
|
||||
val total = (tranChargeStr.value?.toDoubleOrNull() ?: 0.0) +
|
||||
(whsChargeStr.value?.toDoubleOrNull() ?: 0.0) +
|
||||
(drawBillChargeStr.value?.toDoubleOrNull() ?: 0.0) +
|
||||
(svlChargeStr.value?.toDoubleOrNull() ?: 0.0) +
|
||||
(tallyChargeStr.value?.toDoubleOrNull() ?: 0.0) +
|
||||
(dataBean.value?.optCharge ?: 0.0) +
|
||||
(precisionChargeStr.value?.toDoubleOrNull() ?: 0.0) +
|
||||
(animalChargeStr.value?.toDoubleOrNull() ?: 0.0)
|
||||
totalAmountStr.value = if (total != 0.0) total.toString() else ""
|
||||
}
|
||||
|
||||
fun initOnCreated(intent: Intent) {
|
||||
val jsonData = intent.getStringExtra(Constant.Key.DATA) ?: ""
|
||||
@@ -40,9 +58,22 @@ class IntImpPickUpChargeEditViewModel : BaseViewModel() {
|
||||
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 ""
|
||||
precisionChargeStr.value = if (bean.precisionCharge != 0.0) bean.precisionCharge.toString() else ""
|
||||
animalChargeStr.value = if (bean.animalCharge != 0.0) bean.animalCharge.toString() else ""
|
||||
|
||||
// 注册总费用实时计算
|
||||
tranChargeStr.observeForever(totalCalculator)
|
||||
whsChargeStr.observeForever(totalCalculator)
|
||||
drawBillChargeStr.observeForever(totalCalculator)
|
||||
svlChargeStr.observeForever(totalCalculator)
|
||||
tallyChargeStr.observeForever(totalCalculator)
|
||||
precisionChargeStr.observeForever(totalCalculator)
|
||||
animalChargeStr.observeForever(totalCalculator)
|
||||
|
||||
// 初始计算一次
|
||||
calculateTotal()
|
||||
} catch (e: Exception) {
|
||||
showToast("数据解析失败")
|
||||
getTopActivity().finish()
|
||||
@@ -63,9 +94,11 @@ class IntImpPickUpChargeEditViewModel : BaseViewModel() {
|
||||
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
|
||||
bean.precisionCharge = precisionChargeStr.value?.toDoubleOrNull() ?: 0.0
|
||||
bean.animalCharge = animalChargeStr.value?.toDoubleOrNull() ?: 0.0
|
||||
bean.amount = totalAmountStr.value?.toDoubleOrNull() ?: 0.0
|
||||
|
||||
launchLoadingCollect({
|
||||
NetApply.api.modifyIntImpPickUpCharge(bean.toRequestBody())
|
||||
@@ -86,4 +119,15 @@ class IntImpPickUpChargeEditViewModel : BaseViewModel() {
|
||||
fun cancel() {
|
||||
getTopActivity().finish()
|
||||
}
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
tranChargeStr.removeObserver(totalCalculator)
|
||||
whsChargeStr.removeObserver(totalCalculator)
|
||||
drawBillChargeStr.removeObserver(totalCalculator)
|
||||
svlChargeStr.removeObserver(totalCalculator)
|
||||
tallyChargeStr.removeObserver(totalCalculator)
|
||||
precisionChargeStr.removeObserver(totalCalculator)
|
||||
animalChargeStr.removeObserver(totalCalculator)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user