refactor: 确保舱单编辑页保存时始终传递 no 和 prefix 参数

重构 GjjManifestAddViewModel 的参数构建方式:
- 改用 mutableMapOf 手动处理可选字段,替代 removeEmptyOrNull = true
- 编辑模式下 mfId、no、prefix 单独追加,不受空字符串过滤影响

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-15 14:50:28 +08:00
parent 4117cbb489
commit 1d2b11bfd2

View File

@@ -373,11 +373,10 @@ class GjjManifestAddViewModel : BaseViewModel() {
return return
} }
val params = mapOf( val isModify = pageType.value == DetailsPageType.Modify
"mfId" to if (pageType.value == DetailsPageType.Modify) mfId else null,
val paramsMap = mutableMapOf<String, Any?>(
"fid" to fid, "fid" to fid,
"no" to if (pageType.value == DetailsPageType.Modify) no else null,
"prefix" to if (pageType.value == DetailsPageType.Modify) prefix else null,
"wbNo" to waybillNo.value, "wbNo" to waybillNo.value,
"agentCode" to agent.value, "agentCode" to agent.value,
"spCode" to specialCode.value.let { if (it.isNullOrEmpty()) "NOR" else it }, "spCode" to specialCode.value.let { if (it.isNullOrEmpty()) "NOR" else it },
@@ -386,19 +385,30 @@ class GjjManifestAddViewModel : BaseViewModel() {
"pc" to actualNum.value, "pc" to actualNum.value,
"weight" to actualWeight.value, "weight" to actualWeight.value,
"cashWeight" to billingWeight.value, "cashWeight" to billingWeight.value,
"packageType" to packageType.value,
"origin" to departure.value, "origin" to departure.value,
"dest" to destination.value, "dest" to destination.value,
"goods" to goodsNameEn.value, "goods" to goodsNameEn.value,
"goodsCn" to goodsNameCn.value, "goodsCn" to goodsNameCn.value,
"awbType" to waybillType.value, "awbType" to waybillType.value,
"cargoType" to goodsType.value, )
"unNumber" to unNumber.value,
"remark" to remark.value, // 可选字段:非空时才传
).toRequestBody(removeEmptyOrNull = true) if (!packageType.value.isNullOrEmpty()) paramsMap["packageType"] = packageType.value
if (!goodsType.value.isNullOrEmpty()) paramsMap["cargoType"] = goodsType.value
if (!unNumber.value.isNullOrEmpty()) paramsMap["unNumber"] = unNumber.value
if (!remark.value.isNullOrEmpty()) paramsMap["remark"] = remark.value
// 编辑模式:必须传 mfId、no、prefix不受空字符串过滤影响
if (isModify) {
paramsMap["mfId"] = mfId
paramsMap["no"] = no
paramsMap["prefix"] = prefix
}
val params = paramsMap.toRequestBody()
launchLoadingCollect({ launchLoadingCollect({
if (pageType.value == DetailsPageType.Modify) { if (isModify) {
NetApply.api.gjjManifestUpdate(params) NetApply.api.gjjManifestUpdate(params)
} else { } else {
NetApply.api.gjjManifestInsert(params) NetApply.api.gjjManifestInsert(params)
@@ -406,7 +416,7 @@ class GjjManifestAddViewModel : BaseViewModel() {
}) { }) {
onSuccess = { onSuccess = {
if (it.verifySuccess()) { if (it.verifySuccess()) {
val successMsg = if (pageType.value == DetailsPageType.Modify) "修改成功" else "保存成功" val successMsg = if (isModify) "修改成功" else "保存成功"
showToast(successMsg) showToast(successMsg)
// 发送刷新事件 // 发送刷新事件