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:
@@ -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)
|
||||
} ?: ""
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
|
||||
6
module_base/src/main/res/drawable/bg_phone_fab_amber.xml
Normal file
6
module_base/src/main/res/drawable/bg_phone_fab_amber.xml
Normal 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>
|
||||
6
module_base/src/main/res/drawable/bg_phone_fab_green.xml
Normal file
6
module_base/src/main/res/drawable/bg_phone_fab_green.xml
Normal 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>
|
||||
@@ -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>
|
||||
7
module_base/src/main/res/drawable/bg_phone_tag_amber.xml
Normal file
7
module_base/src/main/res/drawable/bg_phone_tag_amber.xml
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user