fix: 国际进港舱单新增/编辑页航程不再随始发站目的站联动
航程改为仅由航班信息决定:航班查询成功取航班起始站-目的站, 编辑模式取舱单 fdep-fdest,从列表页带入时取传入的航班始发/目的站; 用户手动修改始发站、目的站时航程保持不变 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,6 @@ package com.lukouguoji.gjj.viewModel
|
||||
|
||||
import android.content.Intent
|
||||
import android.view.View
|
||||
import androidx.lifecycle.MediatorLiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
@@ -103,10 +102,12 @@ class GjjManifestAddViewModel : BaseViewModel(), IOnItemClickListener {
|
||||
fid = flight.fid.noNull()
|
||||
departure.value = flight.fdep.noNull()
|
||||
destination.value = flight.fdest.noNull()
|
||||
range.value = flight.getHangCheng()
|
||||
} else {
|
||||
fid = ""
|
||||
departure.value = ""
|
||||
destination.value = ""
|
||||
range.value = ""
|
||||
showToast(it.msg.noNull("获取航班信息失败"))
|
||||
}
|
||||
}
|
||||
@@ -114,6 +115,7 @@ class GjjManifestAddViewModel : BaseViewModel(), IOnItemClickListener {
|
||||
fid = ""
|
||||
departure.value = ""
|
||||
destination.value = ""
|
||||
range.value = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -142,15 +144,15 @@ class GjjManifestAddViewModel : BaseViewModel(), IOnItemClickListener {
|
||||
// 目的港
|
||||
val destination = MutableLiveData("")
|
||||
|
||||
// 航程(自动拼接:始发站-目的站)
|
||||
val range = MediatorLiveData<String>().apply {
|
||||
val update = {
|
||||
val dep = departure.value ?: ""
|
||||
val dest = destination.value ?: ""
|
||||
value = if (dep.isNotEmpty() || dest.isNotEmpty()) "$dep-$dest" else ""
|
||||
}
|
||||
addSource(departure) { update() }
|
||||
addSource(destination) { update() }
|
||||
// 航程(航班起始站-航班目的站,仅随航班信息变化,不随用户修改始发站/目的站联动)
|
||||
val range = MutableLiveData("")
|
||||
|
||||
/**
|
||||
* 按航班起始站/目的站拼接航程,起始站为空时返回空
|
||||
*/
|
||||
private fun buildRange(fdep: String?, fdest: String?): String {
|
||||
if (fdep.isNullOrEmpty()) return ""
|
||||
return "$fdep-${fdest ?: ""}"
|
||||
}
|
||||
|
||||
// 品名(中)
|
||||
@@ -204,6 +206,8 @@ class GjjManifestAddViewModel : BaseViewModel(), IOnItemClickListener {
|
||||
fid = intent.getStringExtra(Constant.Key.ID).noNull()
|
||||
departure.value = intent.getStringExtra(Constant.Key.DEPARTURE).noNull()
|
||||
destination.value = intent.getStringExtra(Constant.Key.DESTINATION).noNull()
|
||||
// 列表页传入的是航班的始发站/目的站,用于初始化航程
|
||||
range.value = buildRange(departure.value, destination.value)
|
||||
|
||||
// 回填航班日期和航班号(从列表页传入)
|
||||
val passedFlightDate = intent.getStringExtra("flightDate").noNull()
|
||||
@@ -317,6 +321,7 @@ class GjjManifestAddViewModel : BaseViewModel(), IOnItemClickListener {
|
||||
billingWeight.value = manifest.cashWeight.toString()
|
||||
departure.value = manifest.origin
|
||||
destination.value = manifest.dest
|
||||
range.value = buildRange(manifest.fdep, manifest.fdest)
|
||||
goodsNameCn.value = manifest.goodsCn
|
||||
goodsNameEn.value = manifest.goods
|
||||
unNumber.value = manifest.unNumber
|
||||
@@ -362,6 +367,7 @@ class GjjManifestAddViewModel : BaseViewModel(), IOnItemClickListener {
|
||||
actualWeight.value = manifest.weight.toString()
|
||||
departure.value = manifest.origin
|
||||
destination.value = manifest.dest
|
||||
range.value = buildRange(manifest.fdep, manifest.fdest)
|
||||
goodsNameCn.value = manifest.goodsCn
|
||||
goodsNameEn.value = manifest.goods
|
||||
unNumber.value = manifest.unNumber
|
||||
|
||||
Reference in New Issue
Block a user