diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2057275..52688d9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -515,6 +515,13 @@
android:exported="false"
android:screenOrientation="userLandscape" />
+
+
+
>
+ /**
+ * 国际进港查询-修改运单
+ * 接口路径: /IntImpSearch/modifyMaWb
+ */
+ @POST("IntImpSearch/modifyMaWb")
+ suspend fun modifyIntImpMaWb(@Body data: RequestBody): BaseResultBean
+
/**
* 国际出港待计重-分页搜索
* 接口路径: /IntExpCheckIn/pageQuery
diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpQueryDetailsActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpQueryDetailsActivity.kt
index 06fe6aa..adde4d2 100644
--- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpQueryDetailsActivity.kt
+++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpQueryDetailsActivity.kt
@@ -9,7 +9,6 @@ import com.lukouguoji.gjj.databinding.ActivityIntImpQueryDetailsBinding
import com.lukouguoji.gjj.viewModel.IntImpQueryDetailsViewModel
import com.lukouguoji.module_base.base.BaseBindingActivity
import com.lukouguoji.module_base.base.CustomVP2Adapter
-import com.lukouguoji.module_base.common.Constant
import com.lukouguoji.module_base.router.ARouterConstants
/**
@@ -49,9 +48,10 @@ class IntImpQueryDetailsActivity :
companion object {
@JvmStatic
- fun start(context: Context, maWbId: Long?) {
+ fun start(context: Context, prefix: String?, no: String?) {
val starter = Intent(context, IntImpQueryDetailsActivity::class.java)
- .putExtra(Constant.Key.ID, maWbId?.toString() ?: "")
+ .putExtra("prefix", prefix ?: "")
+ .putExtra("no", no ?: "")
context.startActivity(starter)
}
}
diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpQueryEditActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpQueryEditActivity.kt
new file mode 100644
index 0000000..4c066b0
--- /dev/null
+++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpQueryEditActivity.kt
@@ -0,0 +1,37 @@
+package com.lukouguoji.gjj.activity
+
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+import com.lukouguoji.gjj.R
+import com.lukouguoji.gjj.databinding.ActivityIntImpQueryEditBinding
+import com.lukouguoji.gjj.viewModel.IntImpQueryEditViewModel
+import com.lukouguoji.module_base.base.BaseBindingActivity
+
+/**
+ * 国际进港运单修改页面
+ */
+class IntImpQueryEditActivity :
+ BaseBindingActivity() {
+
+ override fun layoutId() = R.layout.activity_int_imp_query_edit
+
+ override fun viewModelClass() = IntImpQueryEditViewModel::class.java
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ setBackArrow("国际进港运单修改")
+ binding.viewModel = viewModel
+ viewModel.initOnCreated(intent)
+ }
+
+ companion object {
+ @JvmStatic
+ fun start(context: Context, maWbId: Long?, prefix: String?, no: String?) {
+ val starter = Intent(context, IntImpQueryEditActivity::class.java)
+ .putExtra("maWbId", maWbId ?: 0L)
+ .putExtra("prefix", prefix ?: "")
+ .putExtra("no", no ?: "")
+ context.startActivity(starter)
+ }
+ }
+}
diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpQueryViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpQueryViewHolder.kt
index a290038..5c618c7 100644
--- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpQueryViewHolder.kt
+++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpQueryViewHolder.kt
@@ -18,5 +18,11 @@ class IntImpQueryViewHolder(view: View) :
// 注册整行点击事件
notifyItemClick(position, binding.ll)
+
+ // 侧滑菜单 - 修改按钮
+ binding.btnEdit.setOnClickListener {
+ binding.swipeMenu.quickClose()
+ clickListener?.onItemClick(position, 2000) // type=2000表示修改操作
+ }
}
}
diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpQueryDetailsViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpQueryDetailsViewModel.kt
index 5d528c4..05f7480 100644
--- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpQueryDetailsViewModel.kt
+++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpQueryDetailsViewModel.kt
@@ -6,7 +6,6 @@ import com.lukouguoji.gjj.fragment.IntImpQueryStorageFragment
import com.lukouguoji.gjj.fragment.IntImpQueryWarehouseFragment
import com.lukouguoji.gjj.fragment.IntImpQueryWaybillFragment
import com.lukouguoji.module_base.base.BaseViewModel
-import com.lukouguoji.module_base.common.Constant
import com.lukouguoji.module_base.http.net.NetApply
import com.lukouguoji.module_base.ktx.launchLoadingCollect
import com.lukouguoji.module_base.ktx.showToast
@@ -18,7 +17,8 @@ import com.lukouguoji.module_base.ktx.toRequestBody
class IntImpQueryDetailsViewModel : BaseViewModel() {
// ==================== 基础数据 ====================
- var maWbId: String = "" // 运单主键ID
+ var prefix: String = "" // 运单号前缀
+ var no: String = "" // 运单号主体
// ==================== Tab管理 ====================
val currentTab = MutableLiveData(0) // 当前Tab索引 (0/1/2)
@@ -50,7 +50,8 @@ class IntImpQueryDetailsViewModel : BaseViewModel() {
* 初始化(从Intent获取maWbId)
*/
fun initOnCreated(intent: Intent) {
- maWbId = intent.getStringExtra(Constant.Key.ID) ?: ""
+ prefix = intent.getStringExtra("prefix") ?: ""
+ no = intent.getStringExtra("no") ?: ""
}
/**
@@ -64,18 +65,12 @@ class IntImpQueryDetailsViewModel : BaseViewModel() {
* 加载详情数据
*/
fun loadDetails() {
- if (maWbId.isEmpty()) {
- showToast("运单ID为空")
+ if (prefix.isEmpty() || no.isEmpty()) {
+ showToast("运单号参数为空")
return
}
- val maWbIdValue = maWbId.toLongOrNull()
- if (maWbIdValue == null) {
- showToast("运单ID格式错误")
- return
- }
-
- val params = mapOf("maWbId" to maWbIdValue).toRequestBody()
+ val params = mapOf("prefix" to prefix, "no" to no).toRequestBody()
launchLoadingCollect({ NetApply.api.getIntImpQueryDetails(params) }) {
onSuccess = { result ->
diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpQueryEditViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpQueryEditViewModel.kt
new file mode 100644
index 0000000..356204a
--- /dev/null
+++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpQueryEditViewModel.kt
@@ -0,0 +1,368 @@
+package com.lukouguoji.gjj.viewModel
+
+import android.content.Intent
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.viewModelScope
+import com.google.gson.Gson
+import com.lukouguoji.module_base.base.BaseViewModel
+import com.lukouguoji.module_base.bean.IntImpQueryEditBean
+import com.lukouguoji.module_base.common.ConstantEvent
+import com.lukouguoji.module_base.http.net.NetApply
+import com.lukouguoji.module_base.impl.FlowBus
+import com.lukouguoji.module_base.ktx.launchCollect
+import com.lukouguoji.module_base.ktx.launchLoadingCollect
+import com.lukouguoji.module_base.ktx.showToast
+import com.lukouguoji.module_base.ktx.toRequestBody
+import dev.utils.app.info.KeyValue
+import kotlinx.coroutines.launch
+
+/**
+ * 国际进港运单修改 ViewModel
+ */
+class IntImpQueryEditViewModel : BaseViewModel() {
+
+ // 数据Bean
+ val dataBean = MutableLiveData(IntImpQueryEditBean())
+
+ // 运单标识
+ var maWbId: Long = 0
+ var prefix: String = ""
+ var no: String = ""
+
+ // ==================== 下拉列表 ====================
+ val agentList = MutableLiveData>(emptyList())
+ val spCodeList = MutableLiveData>(emptyList())
+ val packageTypeList = MutableLiveData>(emptyList())
+ val waybillTypeList = MutableLiveData>(emptyList())
+ val lockStateList = MutableLiveData(
+ listOf(
+ KeyValue("未锁", "0"),
+ KeyValue("锁定", "1")
+ )
+ )
+
+ /**
+ * 初始化数据
+ */
+ fun initOnCreated(intent: Intent) {
+ maWbId = intent.getLongExtra("maWbId", 0L)
+ prefix = intent.getStringExtra("prefix") ?: ""
+ no = intent.getStringExtra("no") ?: ""
+
+ if (prefix.isEmpty() || no.isEmpty()) {
+ showToast("运单号参数为空")
+ getTopActivity().finish()
+ return
+ }
+
+ // 加载下拉列表
+ loadAgentList()
+ loadSpCodeList()
+ loadPackageTypeList()
+ loadWaybillTypeList()
+
+ // 加载详情
+ loadDetails()
+ }
+
+ /**
+ * 加载代理人下拉列表
+ */
+ private fun loadAgentList() {
+ launchCollect({ NetApply.api.getIntImpAgentList() }) {
+ onSuccess = { result ->
+ val list = result.data?.mapNotNull { bean ->
+ if (bean.name != null && bean.code != null) {
+ KeyValue(bean.name, bean.code)
+ } else null
+ } ?: emptyList()
+ agentList.value = list
+ // 详情已加载时匹配代理人
+ matchAgent()
+ }
+ }
+ }
+
+ /**
+ * 加载特码下拉列表
+ * flag=1(国际), ieFlag=I(进港)
+ */
+ private fun loadSpCodeList() {
+ launchCollect({ NetApply.api.getSpecialCodeList(1, "I", "") }) {
+ onSuccess = { result ->
+ val list = result.data?.mapNotNull { bean ->
+ if (bean.name != null && bean.code != null) {
+ KeyValue(bean.name, bean.code)
+ } else null
+ } ?: emptyList()
+ spCodeList.value = list
+ matchSpCode()
+ }
+ }
+ }
+
+ /**
+ * 加载包装类型下拉列表(国际进港专用)
+ */
+ private fun loadPackageTypeList() {
+ launchCollect({ NetApply.api.getGjjPackTypeList() }) {
+ onSuccess = { result ->
+ val list = result.data?.mapNotNull { bean ->
+ if (bean.packageName.isNotEmpty()) {
+ KeyValue(bean.packageName, bean.packageName)
+ } else null
+ } ?: emptyList()
+ packageTypeList.value = list
+ matchPackageType()
+ }
+ }
+ }
+
+ /**
+ * 加载运单类型下拉列表
+ * type=II(国际进港)
+ */
+ private fun loadWaybillTypeList() {
+ launchCollect({ NetApply.api.getWaybillTypeList("II") }) {
+ onSuccess = { result ->
+ val list = result.data?.mapNotNull { bean ->
+ if (bean.name != null && bean.code != null) {
+ KeyValue(bean.name, bean.code)
+ } else null
+ } ?: emptyList()
+ waybillTypeList.value = list
+ matchWaybillType()
+ }
+ }
+ }
+
+ /**
+ * 加载运单详情数据
+ */
+ private fun loadDetails() {
+ val params = mapOf("prefix" to prefix, "no" to no).toRequestBody()
+
+ launchLoadingCollect({ NetApply.api.getIntImpQueryDetails(params) }) {
+ onSuccess = { result ->
+ val data = result.data ?: emptyMap()
+
+ // 提取 maWb 对象
+ val maWb = data["maWb"] as? Map ?: emptyMap()
+ // 提取 maWbM 对象
+ val maWbM = data["maWbM"] as? Map ?: emptyMap()
+ // 提取 warehouseList(用于计算入库件数和入库重量)
+ val warehouseList = data["warehouseList"] as? List