From 3e5f1857212b0b34042b63fb5367e47ba3fdeab7 Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Wed, 1 Apr 2026 18:35:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=84=8F=E5=A4=96?= =?UTF-8?q?=E7=AD=BE=E6=B3=A8=E7=BC=96=E8=BE=91=E9=A1=B5=E8=BF=90=E5=8D=95?= =?UTF-8?q?=E5=8F=B7=E6=A0=A1=E9=AA=8C=E5=8F=8A=E5=AD=97=E6=AE=B5=E6=8B=BC?= =?UTF-8?q?=E5=86=99=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修正 GjjImportManifest 中 dgrContactMame 字段名拼写错误为 dgrContactName - 同步修复 IntArrSupplementInfoViewModel 和布局中对应字段引用 - 意外签注编辑页运单号输入改为纯数字模式,并新增11位格式+校验位验证 - 修改航班日期/航班号输入完成时清空始发站和目的站,避免旧数据残留 - 保存前新增始发站/目的站非空校验 - 布局微调:图片上传区域边距和对齐优化 Co-Authored-By: Claude Opus 4.6 --- .../module_base/bean/GjjImportManifest.kt | 2 +- .../IntImpAccidentVisaEditActivity.kt | 5 ++- .../IntArrSupplementInfoViewModel.kt | 2 +- .../IntImpAccidentVisaEditViewModel.kt | 38 +++++++++++++++++++ .../activity_int_arr_supplement_info.xml | 2 +- .../activity_int_imp_accident_visa_edit.xml | 4 +- 6 files changed, 47 insertions(+), 6 deletions(-) diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjjImportManifest.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjjImportManifest.kt index 67e38da..e6d2361 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjjImportManifest.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjjImportManifest.kt @@ -44,7 +44,7 @@ data class GjjImportManifest( // 目的地 var dest: String = "", // 危险品收货人通讯方式 - var dgrContactMame: String = "", + var dgrContactName: String = "", // 危险品收货人通讯方式 var dgrContactNumber: String = "", // 航班日期 diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpAccidentVisaEditActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpAccidentVisaEditActivity.kt index 78d777f..4e8c8a4 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpAccidentVisaEditActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpAccidentVisaEditActivity.kt @@ -3,6 +3,7 @@ package com.lukouguoji.gjj.activity import android.content.Context import android.content.Intent import android.os.Bundle +import android.text.InputType import com.lukouguoji.gjj.R import com.lukouguoji.gjj.databinding.ActivityIntImpAccidentVisaEditBinding import com.lukouguoji.gjj.viewModel.IntImpAccidentVisaEditViewModel @@ -26,8 +27,8 @@ class IntImpAccidentVisaEditActivity : // 航班号:大写字母+数字 binding.fnoInput.et.setUpperCaseAlphanumericFilter() - // 运单号:大写字母+数字 - binding.wbNoInput.et.setUpperCaseAlphanumericFilter() + // 运单号:纯数字11位 + binding.wbNoInput.et.inputType = InputType.TYPE_CLASS_NUMBER viewModel.rv = binding.rv binding.rv.addOnItemClickListener(viewModel) diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrSupplementInfoViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrSupplementInfoViewModel.kt index 7e6c86d..679a9b3 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrSupplementInfoViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrSupplementInfoViewModel.kt @@ -129,7 +129,7 @@ class IntArrSupplementInfoViewModel : BaseViewModel() { consignorPNum = formBean.consignorPNum, consignorAddress = formBean.consignorAddress, // 危险品信息 - dgrContactMame = formBean.dgrContactMame, + dgrContactName = formBean.dgrContactName, dgrContactNumber = formBean.dgrContactNumber, unNumber = formBean.unNumber ) diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaEditViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaEditViewModel.kt index 035fc9a..16acade 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaEditViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaEditViewModel.kt @@ -173,13 +173,23 @@ class IntImpAccidentVisaEditViewModel : BaseViewModel(), IOnItemClickListener { fun onFlightDateInputComplete() { lastQueriedFlight = "" + clearFlightInfo() queryFlightIfReady() } fun onFlightNoInputComplete() { + lastQueriedFlight = "" + clearFlightInfo() queryFlightIfReady() } + private fun clearFlightInfo() { + val b = dataBean.value ?: GjAccidentVisaEditBean() + b.dep = "" + b.dest = "" + dataBean.value = b + } + private fun queryFlightIfReady() { val bean = dataBean.value ?: return val fdate = bean.fdate @@ -228,11 +238,39 @@ class IntImpAccidentVisaEditViewModel : BaseViewModel(), IOnItemClickListener { // 保存 /////////////////////////////////////////////////////////////////////////// + /** + * 校验运单号格式 + * 规则:纯数字,固定11位,后8位中前7位 mod 7 == 最后一位 + * 返回 true 表示校验失败(有错误) + */ + private fun verifyWaybillNo(wbNo: String?): Boolean { + if (wbNo.isNullOrEmpty()) return false + if (wbNo.length != 11) { + showToast("运单号必须为11位数字") + return true + } + if (!wbNo.all { it.isDigit() }) { + showToast("运单号必须为纯数字") + return true + } + val last8 = wbNo.substring(3) + val first7ofLast8 = last8.substring(0, 7).toLong() + val lastDigit = last8.last().toString().toInt() + if (first7ofLast8 % 7 != lastDigit.toLong()) { + showToast("运单号校验位不正确") + return true + } + return false + } + fun onSaveClick() { val bean = dataBean.value ?: return if (bean.fdate.verifyNullOrEmpty("请输入航班日期")) return if (bean.fno.verifyNullOrEmpty("请输入航班号")) return if (bean.wbNo.verifyNullOrEmpty("请输入运单号")) return + if (verifyWaybillNo(bean.wbNo)) return + if (bean.dep.verifyNullOrEmpty("请先填写航班信息(始发站不能为空)")) return + if (bean.dest.verifyNullOrEmpty("请先填写航班信息(目的站不能为空)")) return (rv?.commonAdapter()?.items ?: emptyList()) .asFlow() diff --git a/module_gjj/src/main/res/layout/activity_int_arr_supplement_info.xml b/module_gjj/src/main/res/layout/activity_int_arr_supplement_info.xml index 594d3da..5f11656 100644 --- a/module_gjj/src/main/res/layout/activity_int_arr_supplement_info.xml +++ b/module_gjj/src/main/res/layout/activity_int_arr_supplement_info.xml @@ -260,7 +260,7 @@ title='@{"名称"}' titleLength="@{5}" type="@{DataLayoutType.INPUT}" - value='@={viewModel.dataBean.dgrContactMame}' /> + value='@={viewModel.dataBean.dgrContactName}' /> + completeSpace="@{6}" />