From ea833611025a1beefe6e1d7b12ddacefe1ea0489 Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Wed, 9 Sep 2026 10:12:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9B=BD=E9=99=85=E8=BF=9B=E5=87=BA?= =?UTF-8?q?=E6=B8=AF=205=20=E4=B8=AA=E5=88=97=E8=A1=A8=E9=A1=B5=E4=BE=A7?= =?UTF-8?q?=E6=BB=91=E6=96=B0=E5=A2=9E=E6=B5=B7=E5=85=B3=E5=9B=9E=E6=89=A7?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原始舱单、进港理货、出港运抵、出港装载、出港理货主单卡片 新增侧滑「回执」按钮,调用各模块 getResponse 接口后跳转 module_base 共用的只读回执页。请求同时传 prefix、no 与 wbNo,回执优先取 data、为空再取 msg,兼容后端实际返回; 回执为空时提示「暂无海关回执」不跳转。 Co-Authored-By: Claude Opus 4.6 --- .../lukouguoji/module_base/common/Constant.kt | 3 ++ .../lukouguoji/module_base/http/net/Api.kt | 8 +++ .../module_base/ktx/CustomsResponseKtx.kt | 53 +++++++++++++++++++ .../page/customs/CustomsResponseActivity.kt | 46 ++++++++++++++++ .../src/main/release/AndroidManifest.xml | 7 +++ .../res/layout/activity_customs_response.xml | 35 ++++++++++++ .../gjc/holder/IntExpArriveViewHolder.kt | 7 +++ .../gjc/holder/IntExpLoadViewHolder.kt | 7 +++ .../gjc/holder/IntExpTallyViewHolder.kt | 7 +++ .../gjc/viewModel/IntExpArriveViewModel.kt | 13 +++++ .../gjc/viewModel/IntExpLoadViewModel.kt | 13 +++++ .../gjc/viewModel/IntExpTallyViewModel.kt | 13 +++++ .../main/res/layout/item_int_exp_arrive.xml | 23 ++++++++ .../src/main/res/layout/item_int_exp_load.xml | 41 ++++++++++++-- .../main/res/layout/item_int_exp_tally.xml | 23 ++++++++ .../gjj/holder/IntArrAirManifestViewHolder.kt | 7 +++ .../gjj/holder/IntImpTallyViewHolder.kt | 7 +++ .../viewModel/IntArrAirManifestViewModel.kt | 22 ++++++-- .../gjj/viewModel/IntImpTallyViewModel.kt | 13 +++++ .../res/layout/item_int_arr_air_manifest.xml | 23 ++++++++ .../main/res/layout/item_int_imp_tally.xml | 23 ++++++++ 21 files changed, 384 insertions(+), 10 deletions(-) create mode 100644 module_base/src/main/java/com/lukouguoji/module_base/ktx/CustomsResponseKtx.kt create mode 100644 module_base/src/main/java/com/lukouguoji/module_base/ui/page/customs/CustomsResponseActivity.kt create mode 100644 module_base/src/main/res/layout/activity_customs_response.xml diff --git a/module_base/src/main/java/com/lukouguoji/module_base/common/Constant.kt b/module_base/src/main/java/com/lukouguoji/module_base/common/Constant.kt index 4344557..5f8e47f 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/common/Constant.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/common/Constant.kt @@ -346,6 +346,9 @@ interface Constant { // 数据 const val DATA = "data" + + // 页面标题 + const val TITLE = "title" const val POSITION = "position" // 单号 diff --git a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt index 5b2c620..bd40a8e 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt @@ -148,6 +148,14 @@ interface Api { @POST suspend fun singleStringPost(@Url url: String): BaseResultBean + /** + * 获取海关回执(国际进港原始舱单/进港理货/出港运抵/出港装载/出港理货 共用) + * url:XXX/getResponse,body 传 prefix、no 与拼接的 wbNo(后端实测按 prefix + no 匹配), + * 回执文本实测在 msg 字段、data 为 null,取值见 CustomsResponseKtx.showCustomsResponse + */ + @POST + suspend fun getCustomsResponse(@Url url: String, @Body data: RequestBody): BaseResultBean + @GET suspend fun anyGetForId(@Url url: String, @Query("id") id: String): BaseResultBean diff --git a/module_base/src/main/java/com/lukouguoji/module_base/ktx/CustomsResponseKtx.kt b/module_base/src/main/java/com/lukouguoji/module_base/ktx/CustomsResponseKtx.kt new file mode 100644 index 0000000..f520687 --- /dev/null +++ b/module_base/src/main/java/com/lukouguoji/module_base/ktx/CustomsResponseKtx.kt @@ -0,0 +1,53 @@ +package com.lukouguoji.module_base.ktx + +import com.lukouguoji.module_base.base.BaseViewModel +import com.lukouguoji.module_base.http.net.NetApply +import com.lukouguoji.module_base.ui.page.customs.CustomsResponseActivity + +/** + * 海关回执接口地址(各页面对应各自模块的 getResponse) + */ +object CustomsResponseUrl { + const val INT_IMP_AIR_MANIFEST = "IntImpAirManifest/getResponse" // 国际进港原始舱单 + const val INT_IMP_TALLY = "IntImpTally/getResponse" // 国际进港理货 + const val INT_EXP_ARRIVE = "IntExpArrive/getResponse" // 国际出港运抵 + const val INT_EXP_LOAD = "IntExpLoad/getResponse" // 国际出港装载 + const val INT_EXP_TALLY = "IntExpTally/getResponse" // 国际出港理货 +} + +/** + * 列表项侧滑「回执」按钮的 onItemClick type + * 现有取值为 0/1/2、101~103、1000~3000 及 view id,9001 与之均不冲突 + */ +const val ITEM_CLICK_TYPE_CUSTOMS_RESPONSE = 9001 + +/** + * 查询海关回执并跳转只读详情页 + * - 带 Loading 调用 [url],本期只查主单,不传 hno + * - 请求体同时传 prefix、no 与拼接后的 wbNo:测试环境实测后端按 prefix + no 匹配, + * 只传 wbNo 会查不到(与文档「运单号必填」描述不一致) + * - 回执文本实测放在 msg 字段(data 恒为 null),这里优先取 data、为空再取 msg,兼容两种返回 + * - 回执为空时提示「暂无海关回执」,不跳转 + * - 接口失败由 launchLoadingCollect 默认 Toast 错误信息 + */ +fun BaseViewModel.showCustomsResponse(url: String, prefix: String?, no: String?, title: String) { + if (prefix.isNullOrEmpty() || no.isNullOrEmpty()) { + showToast("运单号为空") + return + } + val params = mapOf( + "wbNo" to prefix + no, + "prefix" to prefix, + "no" to no + ).toRequestBody() + launchLoadingCollect({ NetApply.api.getCustomsResponse(url, params) }) { + onSuccess = { result -> + val content = result.data?.ifEmpty { null } ?: result.msg ?: "" + if (content.isEmpty()) { + showToast("暂无海关回执") + } else { + CustomsResponseActivity.start(getTopActivity(), title, content) + } + } + } +} diff --git a/module_base/src/main/java/com/lukouguoji/module_base/ui/page/customs/CustomsResponseActivity.kt b/module_base/src/main/java/com/lukouguoji/module_base/ui/page/customs/CustomsResponseActivity.kt new file mode 100644 index 0000000..a75db41 --- /dev/null +++ b/module_base/src/main/java/com/lukouguoji/module_base/ui/page/customs/CustomsResponseActivity.kt @@ -0,0 +1,46 @@ +package com.lukouguoji.module_base.ui.page.customs + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import com.lukouguoji.module_base.R +import com.lukouguoji.module_base.base.BaseBindingActivity +import com.lukouguoji.module_base.common.Constant +import com.lukouguoji.module_base.databinding.ActivityCustomsResponseBinding +import com.lukouguoji.module_base.impl.EmptyViewModel + +/** + * 海关回执详情页(只读) + * 回执文本由 Intent 传入,页面内不调接口;UI 参照国际进港电报详情页 + */ +class CustomsResponseActivity : + BaseBindingActivity() { + + override fun layoutId() = R.layout.activity_customs_response + + override fun viewModelClass() = EmptyViewModel::class.java + + override fun initOnCreate(savedInstanceState: Bundle?) { + setBackArrow(intent.getStringExtra(Constant.Key.TITLE) ?: "海关回执") + + binding.etContent.apply { + setText(intent.getStringExtra(Constant.Key.DATA) ?: "") + // 只读:不可输入、无光标,但仍可长按选择复制 + keyListener = null + isFocusable = false + isFocusableInTouchMode = false + isCursorVisible = false + } + } + + companion object { + @JvmStatic + fun start(context: Context, title: String, content: String) { + context.startActivity( + Intent(context, CustomsResponseActivity::class.java) + .putExtra(Constant.Key.TITLE, title) + .putExtra(Constant.Key.DATA, content) + ) + } + } +} diff --git a/module_base/src/main/release/AndroidManifest.xml b/module_base/src/main/release/AndroidManifest.xml index 8201453..211c6c2 100644 --- a/module_base/src/main/release/AndroidManifest.xml +++ b/module_base/src/main/release/AndroidManifest.xml @@ -34,6 +34,13 @@ android:exported="false" android:screenOrientation="userLandscape" /> + + + + + + + + + + + + + + + + + + diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpArriveViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpArriveViewHolder.kt index 6c2750a..a40f876 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpArriveViewHolder.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpArriveViewHolder.kt @@ -9,6 +9,7 @@ import com.lukouguoji.module_base.common.ConstantEvent import com.lukouguoji.module_base.impl.FlowBus import com.lukouguoji.module_base.bean.GjcMaWb import com.lukouguoji.module_base.ktx.refresh +import com.lukouguoji.module_base.ktx.ITEM_CLICK_TYPE_CUSTOMS_RESPONSE /** * 国际出港-出港运抵 列表项ViewHolder @@ -22,6 +23,12 @@ class IntExpArriveViewHolder(view: View) : binding.position = position binding.executePendingBindings() + // 侧滑菜单 - 回执按钮(关闭侧滑后分发到 ViewModel) + binding.btnResponse.setOnClickListener { + binding.swipeMenu.quickClose() + clickListener?.onItemClick(position, ITEM_CLICK_TYPE_CUSTOMS_RESPONSE) + } + // 添加图标点击事件 - 切换选择状态 binding.ivIcon.setOnClickListener { bean.checked.set(!bean.checked.get()) diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpLoadViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpLoadViewHolder.kt index 70394a7..0cfea42 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpLoadViewHolder.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpLoadViewHolder.kt @@ -6,6 +6,7 @@ import com.lukouguoji.module_base.base.BaseViewHolder import com.lukouguoji.module_base.common.ConstantEvent import com.lukouguoji.module_base.impl.FlowBus import com.lukouguoji.module_base.bean.GjcExportLoad +import com.lukouguoji.module_base.ktx.ITEM_CLICK_TYPE_CUSTOMS_RESPONSE /** * 国际出港-出港装载 列表项ViewHolder @@ -19,6 +20,12 @@ class IntExpLoadViewHolder(view: View) : binding.position = position binding.executePendingBindings() + // 侧滑菜单 - 回执按钮(关闭侧滑后分发到 ViewModel) + binding.btnResponse.setOnClickListener { + binding.swipeMenu.quickClose() + clickListener?.onItemClick(position, ITEM_CLICK_TYPE_CUSTOMS_RESPONSE) + } + // 添加图标点击事件 - 切换选择状态 binding.ivIcon.setOnClickListener { // 反转checked状态 diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt index 2a818a9..4b00e3f 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt @@ -9,6 +9,7 @@ import com.lukouguoji.module_base.common.ConstantEvent import com.lukouguoji.module_base.impl.FlowBus import com.lukouguoji.module_base.bean.GjcMaWb import com.lukouguoji.module_base.ktx.refresh +import com.lukouguoji.module_base.ktx.ITEM_CLICK_TYPE_CUSTOMS_RESPONSE /** * 国际出港-出港理货 ViewHolder @@ -22,6 +23,12 @@ class IntExpTallyViewHolder(view: View) : binding.position = position binding.executePendingBindings() + // 侧滑菜单 - 回执按钮(关闭侧滑后分发到 ViewModel) + binding.btnResponse.setOnClickListener { + binding.swipeMenu.quickClose() + clickListener?.onItemClick(position, ITEM_CLICK_TYPE_CUSTOMS_RESPONSE) + } + // 图标点击切换选择状态(主单和分单独立,互不干扰) binding.ivIcon.setOnClickListener { bean.checked.set(!bean.checked.get()) diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt index 66a9aa6..f60cd4d 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt @@ -15,6 +15,9 @@ 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.commonAdapter +import com.lukouguoji.module_base.ktx.CustomsResponseUrl +import com.lukouguoji.module_base.ktx.ITEM_CLICK_TYPE_CUSTOMS_RESPONSE +import com.lukouguoji.module_base.ktx.showCustomsResponse import com.lukouguoji.module_base.ktx.launchCollect import com.lukouguoji.module_base.ktx.launchLoadingCollect import com.lukouguoji.module_base.ktx.showToast @@ -344,4 +347,14 @@ class IntExpArriveViewModel : BasePageViewModel() { } } } + + /** + * 列表项点击分发:侧滑「回执」按钮 → 查询海关回执并跳转只读详情页 + */ + override fun onItemClick(position: Int, type: Int) { + val bean = pageModel.rv?.commonAdapter()?.getItem(position) as? GjcMaWb ?: return + if (type == ITEM_CLICK_TYPE_CUSTOMS_RESPONSE) { + showCustomsResponse(CustomsResponseUrl.INT_EXP_ARRIVE, bean.prefix, bean.no, "出港运抵回执") + } + } } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt index 86de3b7..00f9ef3 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt @@ -15,6 +15,9 @@ 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.commonAdapter +import com.lukouguoji.module_base.ktx.CustomsResponseUrl +import com.lukouguoji.module_base.ktx.ITEM_CLICK_TYPE_CUSTOMS_RESPONSE +import com.lukouguoji.module_base.ktx.showCustomsResponse import com.lukouguoji.module_base.ktx.launchCollect import com.lukouguoji.module_base.ktx.launchLoadingCollect import com.lukouguoji.module_base.ktx.noNull @@ -310,4 +313,14 @@ class IntExpLoadViewModel : BasePageViewModel() { } } } + + /** + * 列表项点击分发:侧滑「回执」按钮 → 查询海关回执并跳转只读详情页 + */ + override fun onItemClick(position: Int, type: Int) { + val bean = pageModel.rv?.commonAdapter()?.getItem(position) as? GjcExportLoad ?: return + if (type == ITEM_CLICK_TYPE_CUSTOMS_RESPONSE) { + showCustomsResponse(CustomsResponseUrl.INT_EXP_LOAD, bean.prefix, bean.no, "出港装载回执") + } + } } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt index ef80613..18dbfb6 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt @@ -16,6 +16,9 @@ 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.commonAdapter +import com.lukouguoji.module_base.ktx.CustomsResponseUrl +import com.lukouguoji.module_base.ktx.ITEM_CLICK_TYPE_CUSTOMS_RESPONSE +import com.lukouguoji.module_base.ktx.showCustomsResponse import com.lukouguoji.module_base.ktx.launchCollect import com.lukouguoji.module_base.ktx.launchLoadingCollect import com.lukouguoji.module_base.ktx.showToast @@ -386,4 +389,14 @@ class IntExpTallyViewModel : BasePageViewModel() { } } } + + /** + * 列表项点击分发:侧滑「回执」按钮 → 查询海关回执并跳转只读详情页 + */ + override fun onItemClick(position: Int, type: Int) { + val bean = pageModel.rv?.commonAdapter()?.getItem(position) as? GjcMaWb ?: return + if (type == ITEM_CLICK_TYPE_CUSTOMS_RESPONSE) { + showCustomsResponse(CustomsResponseUrl.INT_EXP_TALLY, bean.prefix, bean.no, "出港理货回执") + } + } } diff --git a/module_gjc/src/main/res/layout/item_int_exp_arrive.xml b/module_gjc/src/main/res/layout/item_int_exp_arrive.xml index 35f8a54..78290b7 100644 --- a/module_gjc/src/main/res/layout/item_int_exp_arrive.xml +++ b/module_gjc/src/main/res/layout/item_int_exp_arrive.xml @@ -22,6 +22,12 @@ android:layout_marginTop="10dp" android:orientation="vertical"> + + + + + + + + + + + + + + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + diff --git a/module_gjc/src/main/res/layout/item_int_exp_tally.xml b/module_gjc/src/main/res/layout/item_int_exp_tally.xml index f4a1415..1074075 100644 --- a/module_gjc/src/main/res/layout/item_int_exp_tally.xml +++ b/module_gjc/src/main/res/layout/item_int_exp_tally.xml @@ -7,6 +7,12 @@ + + + @@ -83,6 +89,23 @@ android:scaleType="center" android:src="@mipmap/img_down" /> + + + + + + + + + + diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntArrAirManifestViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntArrAirManifestViewHolder.kt index 2373de1..93efcac 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntArrAirManifestViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntArrAirManifestViewHolder.kt @@ -9,6 +9,7 @@ import com.lukouguoji.module_base.common.ConstantEvent import com.lukouguoji.module_base.impl.FlowBus import com.lukouguoji.module_base.bean.GjjAirManifest import com.lukouguoji.module_base.ktx.refresh +import com.lukouguoji.module_base.ktx.ITEM_CLICK_TYPE_CUSTOMS_RESPONSE /** * 国际进港原始舱单 ViewHolder @@ -25,6 +26,12 @@ class IntArrAirManifestViewHolder(view: View) : binding.position = position binding.executePendingBindings() + // 侧滑菜单 - 回执按钮(关闭侧滑后分发到 ViewModel) + binding.btnResponse.setOnClickListener { + binding.swipeMenu.quickClose() + clickListener?.onItemClick(position, ITEM_CLICK_TYPE_CUSTOMS_RESPONSE) + } + // 整卡点击 - 跳转详情页 notifyItemClick(position, binding.ll) diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpTallyViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpTallyViewHolder.kt index 9a3414c..9d09943 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpTallyViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpTallyViewHolder.kt @@ -13,6 +13,7 @@ import com.google.gson.Gson import com.lukouguoji.module_base.http.net.NetApply import com.lukouguoji.module_base.ktx.launchCollect import com.lukouguoji.module_base.ktx.refresh +import com.lukouguoji.module_base.ktx.ITEM_CLICK_TYPE_CUSTOMS_RESPONSE import com.lukouguoji.module_base.ktx.toRequestBody /** @@ -27,6 +28,12 @@ class IntImpTallyViewHolder(view: View) : binding.position = position binding.executePendingBindings() + // 侧滑菜单 - 回执按钮(关闭侧滑后分发到 ViewModel) + binding.btnResponse.setOnClickListener { + binding.swipeMenu.quickClose() + clickListener?.onItemClick(position, ITEM_CLICK_TYPE_CUSTOMS_RESPONSE) + } + // 选中图标点击 - 切换选择状态(独立选择,不联动分单) binding.ivIcon.setOnClickListener { bean.checked.set(!bean.checked.get()) diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt index b5d8de2..315e5be 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt @@ -16,6 +16,9 @@ import com.lukouguoji.gjj.dialog.IntImpTallyResetDialogModel import com.lukouguoji.module_base.http.net.NetApply import com.lukouguoji.module_base.impl.FlowBus import com.lukouguoji.module_base.ktx.commonAdapter +import com.lukouguoji.module_base.ktx.CustomsResponseUrl +import com.lukouguoji.module_base.ktx.ITEM_CLICK_TYPE_CUSTOMS_RESPONSE +import com.lukouguoji.module_base.ktx.showCustomsResponse import com.lukouguoji.module_base.ktx.launchCollect import com.lukouguoji.module_base.ktx.launchLoadingCollect import com.lukouguoji.module_base.ktx.showToast @@ -293,10 +296,19 @@ class IntArrAirManifestViewModel : BasePageViewModel() { // 获取主单数据 val manifest = airManifest.maWb ?: return - // 跳转到详情页 - com.lukouguoji.gjj.activity.IntArrAirManifestDetailsActivity.start( - getTopActivity(), - manifest - ) + when (type) { + // 侧滑「回执」按钮:查询海关回执并跳转只读详情页 + ITEM_CLICK_TYPE_CUSTOMS_RESPONSE -> showCustomsResponse( + CustomsResponseUrl.INT_IMP_AIR_MANIFEST, + manifest.prefix, + manifest.no, + "原始舱单回执" + ) + // 整卡点击(type 为 view id):跳转到详情页 + else -> com.lukouguoji.gjj.activity.IntArrAirManifestDetailsActivity.start( + getTopActivity(), + manifest + ) + } } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpTallyViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpTallyViewModel.kt index 618cdf3..9bc1d9d 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpTallyViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpTallyViewModel.kt @@ -16,6 +16,9 @@ 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.commonAdapter +import com.lukouguoji.module_base.ktx.CustomsResponseUrl +import com.lukouguoji.module_base.ktx.ITEM_CLICK_TYPE_CUSTOMS_RESPONSE +import com.lukouguoji.module_base.ktx.showCustomsResponse import com.lukouguoji.module_base.ktx.launchCollect import com.lukouguoji.module_base.ktx.launchLoadingCollect import com.lukouguoji.module_base.ktx.showToast @@ -289,4 +292,14 @@ class IntImpTallyViewModel : BasePageViewModel() { } } } + + /** + * 列表项点击分发:侧滑「回执」按钮 → 查询海关回执并跳转只读详情页 + */ + override fun onItemClick(position: Int, type: Int) { + val bean = pageModel.rv?.commonAdapter()?.getItem(position) as? GjjImportTally ?: return + if (type == ITEM_CLICK_TYPE_CUSTOMS_RESPONSE) { + showCustomsResponse(CustomsResponseUrl.INT_IMP_TALLY, bean.prefix, bean.no, "进港理货回执") + } + } } diff --git a/module_gjj/src/main/res/layout/item_int_arr_air_manifest.xml b/module_gjj/src/main/res/layout/item_int_arr_air_manifest.xml index f804299..cf65cec 100644 --- a/module_gjj/src/main/res/layout/item_int_arr_air_manifest.xml +++ b/module_gjj/src/main/res/layout/item_int_arr_air_manifest.xml @@ -27,6 +27,12 @@ android:layout_marginVertical="5dp" android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + +