diff --git a/app/src/main/java/com/lukouguoji/aerologic/ui/fragment/HomeFragment.kt b/app/src/main/java/com/lukouguoji/aerologic/ui/fragment/HomeFragment.kt
index c987cdc..4a8d487 100644
--- a/app/src/main/java/com/lukouguoji/aerologic/ui/fragment/HomeFragment.kt
+++ b/app/src/main/java/com/lukouguoji/aerologic/ui/fragment/HomeFragment.kt
@@ -825,16 +825,16 @@ class HomeFragment : Fragment() {
)
list.add(
RightMenu(
- Constant.AuthName.IntArrAirManifest,
+ Constant.AuthName.IntImpManifest,
R.mipmap.img_bwjx,
- "原始舱单"
+ "进港舱单"
)
)
list.add(
RightMenu(
- Constant.AuthName.IntImpManifest,
+ Constant.AuthName.IntArrAirManifest,
R.mipmap.img_bwjx,
- "进港舱单"
+ "原始舱单"
)
)
list.add(
diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/GjjManifestAddActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/GjjManifestAddActivity.kt
index e126413..e2f9424 100644
--- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/GjjManifestAddActivity.kt
+++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/GjjManifestAddActivity.kt
@@ -2,8 +2,8 @@ package com.lukouguoji.gjj.activity
import android.content.Context
import android.content.Intent
-import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
+import android.text.InputType
import com.lukouguoji.gjj.R
import com.lukouguoji.gjj.databinding.ActivityGjjManifestAddBinding
import com.lukouguoji.gjj.viewModel.GjjManifestAddViewModel
@@ -23,6 +23,14 @@ class GjjManifestAddActivity :
override fun initOnCreate(savedInstanceState: Bundle?) {
binding.viewModel = viewModel
binding.flightNoInput.et.setUpperCaseAlphanumericFilter()
+
+ // 件数只允许输入整数
+ binding.waybillNumInput.inputType = InputType.TYPE_CLASS_NUMBER
+ binding.actualNumInput.inputType = InputType.TYPE_CLASS_NUMBER
+ // 重量允许输入小数
+ binding.actualWeightInput.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL
+ binding.billingWeightInput.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL
+
viewModel.initOnCreated(intent)
// 动态设置标题(必须在 initOnCreated 之后,pageType 已从 Intent 解析)
diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/GjjManifestAddViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/GjjManifestAddViewModel.kt
index db5aa35..2609fec 100644
--- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/GjjManifestAddViewModel.kt
+++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/GjjManifestAddViewModel.kt
@@ -12,6 +12,7 @@ import com.lukouguoji.module_base.common.DetailsPageType
import com.lukouguoji.module_base.http.net.NetApply
import com.lukouguoji.module_base.impl.FlowBus
import com.lukouguoji.module_base.ktx.finish
+import com.lukouguoji.module_base.ktx.formatDate
import com.lukouguoji.module_base.ktx.launchCollect
import com.lukouguoji.module_base.ktx.launchLoadingCollect
import com.lukouguoji.module_base.ktx.noNull
@@ -20,6 +21,7 @@ import com.lukouguoji.module_base.ktx.toRequestBody
import com.lukouguoji.module_base.ktx.verifyNullOrEmpty
import com.lukouguoji.module_base.util.DictUtils
import dev.utils.app.info.KeyValue
+import dev.utils.common.DateUtils
import kotlinx.coroutines.launch
class GjjManifestAddViewModel : BaseViewModel() {
@@ -33,8 +35,8 @@ class GjjManifestAddViewModel : BaseViewModel() {
// 航班ID
var fid: String = ""
- // 航班日期
- val flightDate = MutableLiveData("")
+ // 航班日期(新增模式默认今天)
+ val flightDate = MutableLiveData(DateUtils.getCurrentTime().formatDate())
// 航班号
val flightNo = MutableLiveData("")
@@ -173,6 +175,12 @@ class GjjManifestAddViewModel : BaseViewModel() {
}
DictUtils.getBusinessTypeList(addAll = false) {
businessTypeList.postValue(it)
+ // 新增模式下默认选中"普通货物运输"
+ if (pageType.value == DetailsPageType.Add && businessType.value.isNullOrEmpty()) {
+ it.find { b -> b.key.contains("普通货物运输") }?.let { b ->
+ businessType.postValue(b.value)
+ }
+ }
}
DictUtils.getShouYunPackageTypeList {
packageTypeList.postValue(listOf(KeyValue("", "")) + it)
@@ -273,11 +281,37 @@ class GjjManifestAddViewModel : BaseViewModel() {
waybillType.value = manifest.awbType
}
+ /**
+ * 校验运单号格式
+ * 规则:纯数字,固定11位,后8位中前7位 mod 7 == 最后一位
+ */
+ 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
+ }
+ // 后8位:前7位 mod 7 == 最后一位
+ val last8 = wbNo.substring(3) // 后8位
+ 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(view: View) {
if ((waybillNo.value.verifyNullOrEmpty("请输入运单号")
+ || verifyWaybillNo(waybillNo.value)
|| agent.value.verifyNullOrEmpty("请选择代理")
|| waybillNum.value.verifyNullOrEmpty("请输入运单件数")
|| actualNum.value.verifyNullOrEmpty("请输入实到数量")
diff --git a/module_gjj/src/main/res/layout/activity_gjj_manifest_add.xml b/module_gjj/src/main/res/layout/activity_gjj_manifest_add.xml
index 0fce01a..01d6855 100644
--- a/module_gjj/src/main/res/layout/activity_gjj_manifest_add.xml
+++ b/module_gjj/src/main/res/layout/activity_gjj_manifest_add.xml
@@ -193,6 +193,7 @@
android:orientation="horizontal">