feat: 完成出港运抵页面5.5寸手机端适配

- 主列表新增待运抵/已运抵 Tab(客户端按申报状态拆分)+ 卡片长按浮层(补充/重置/回执)
- 新增分单明细页:复用主列表已加载数据,零新增请求
- 新增回执内容只读页
- 新增补充信息页:参照 Pad 端收发货人信息批量应用模式(后端接口暂缺,已登记问题清单)
- 手机首页「国际」Tab 增加「出港运抵」入口
- 修复两个平台坑:RecyclerView 内 GONE 不塌陷高度;Serializable Intent 传递
  遇 @Transient 字段反序列化为 null 导致的崩溃
- 登记后端接口缺口 2 项(#19~#20)至问题清单

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-30 11:44:51 +08:00
parent 1eb288a703
commit ef8e7cfacb
37 changed files with 2825 additions and 775 deletions

View File

@@ -1,6 +1,7 @@
package com.lukouguoji.module_base.bean
import androidx.databinding.ObservableBoolean
import java.io.Serializable
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
@@ -122,12 +123,31 @@ data class GjcMaWb(
val checked: ObservableBoolean = ObservableBoolean(false) // 选中状态
@Transient
val showMore: ObservableBoolean = ObservableBoolean(false) // 展开状态
@Transient
val actionMenuVisible: ObservableBoolean = ObservableBoolean(false) // 5.5寸手机版:卡片长按操作浮层显隐
// 兼容现有API的isSelected属性
var isSelected: Boolean
get() = checked.get()
set(value) = checked.set(value)
/**
* 5.5寸手机版是否处于「待运抵」Tab申报状态为空
* 接口无按申报状态区分的查询参数Tab 由客户端对已加载数据拆分。
*/
val isPending: Boolean
get() = declareStatus.isNullOrEmpty()
/**
* 5.5寸手机版申报状态三色标签的着色分类01=绿/W=靛蓝/其余非空=琥珀)。
*/
val declareTagColor: String
get() = when (declareStatus) {
"01" -> "green"
"W" -> "indigo"
else -> if (declareStatus.isNullOrEmpty()) "" else "amber"
}
// ==================== 状态转换扩展属性 ====================
/**
* 计重状态中文
@@ -277,15 +297,36 @@ data class GjcHaWb(
var tallyOpId: String? = null, // 理货操作人ID
var declareCount: Long? = null, // 申报次数
var activeId: Long? = null // 活动ID
) {
) : Serializable {
// ==================== UI扩展字段 ====================
@Transient
val checked: ObservableBoolean = ObservableBoolean(false) // 选中状态
@Transient
val actionMenuVisible: ObservableBoolean = ObservableBoolean(false) // 5.5寸手机版:卡片长按操作浮层显隐
// 兼容现有API的isSelected属性
var isSelected: Boolean
get() = checked.get()
set(value) = checked.set(value)
/**
* 5.5寸手机版申报状态三色标签的着色分类01=绿/W=靛蓝/其余非空=琥珀)。
* 与 GjcMaWb.declareTagColor 同源逻辑,作用于分单自身的 arrivalStatus。
*/
val haWbTagColor: String
get() = when (arrivalStatus) {
"01" -> "green"
"W" -> "indigo"
else -> if (arrivalStatus.isNullOrEmpty()) "" else "amber"
}
/**
* 5.5寸手机版「回执」页:运抵操作时间(格式化)。
*/
val arrivalOpDateText: String
get() = arrivalOpDate?.let {
SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(it)
} ?: ""
}
/**

View File

@@ -851,6 +851,16 @@ interface Api {
@POST("IntExpArrive/deleteDeclare")
suspend fun deleteArriveDeclare(@Body data: RequestBody): BaseResultBean<Boolean>
/**
* 国际出港运抵-分单补充收发货人信息5.5寸手机版新增)
*
* 后端暂无此接口api-doc 搜索 IntExpArrive、HaWb 均无匹配),路径为参照 Pad 端国际进港
* IntImpAirManifest/complete 命名习惯拟定的建议值,见 documents/后端接口对接问题清单.xlsx。
* 请求体为分单数组,仅需 haWbId 与收发货人相关字段。
*/
@POST("IntExpArrive/haWb/supplement")
suspend fun supplementArriveHaWb(@Body data: RequestBody): BaseResultBean<Any>
/**
* 国际出港移库-分页查询
* 接口路径: /IntExpMove/pageQuery

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 手机版圆形操作按钮:琥珀色(出港运抵卡片长按菜单「重置」) -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#F59E0B" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 手机版圆形操作按钮:翠绿色(出港运抵卡片长按菜单「回执」) -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#10B981" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 手机版圆形操作按钮:紫色(出港运抵卡片长按菜单「补充」) -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#A855F7" />
</shape>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 手机版状态标签:琥珀底(出港运抵申报状态 E与 bg_phone_tag_green/indigo/gray 同属状态标签家族 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/phone_tag_amber_bg" />
<corners android:radius="6dp" />
</shape>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 手机版状态标签:靛蓝底(出港运抵申报状态 W与 bg_phone_tag_green/orange/gray 同属状态标签家族 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/phone_tag_indigo_bg" />
<corners android:radius="6dp" />
</shape>

View File

@@ -75,5 +75,9 @@
<color name="phone_tag_orange_text">#EA580C</color>
<color name="phone_danger_bg">#FEE2E2</color> <!-- 危险操作按钮-浅红底ULD管理批量删除 -->
<color name="phone_danger_text">#DC2626</color>
<color name="phone_tag_indigo_bg">#E0E7FF</color> <!-- 状态标签-靛蓝底(出港运抵申报状态 W -->
<color name="phone_tag_indigo_text">#6366F1</color>
<color name="phone_tag_amber_bg">#FEF3C7</color> <!-- 状态标签-琥珀底(出港运抵申报状态 E -->
<color name="phone_tag_amber_text">#D97706</color>
</resources>