Compare commits

...

20 Commits

Author SHA1 Message Date
d937ecef77 fix: 出港查询详情仓库/库位分割线右侧未到边
去掉白卡片容器的 paddingEnd,使表头及内容行分割线左右撑满,与进港侧一致

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-20 13:57:53 +08:00
0f118391b5 feat: 修改进入开始组装时只查当前ULD的组装信息
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-20 13:52:20 +08:00
faf7698829 feat: 删除申报/理货申报增加申报状态校验
四个页面删除申报仅允许申报状态为01的记录;
出港理货申报仅允许状态为空的记录;
并修复理货分单申报状态误绑定 arrivalStatus 的问题

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-20 13:46:32 +08:00
f53a15abb5 style: 开始组装运单列表表头改白底并加分割线
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-20 13:01:31 +08:00
eba9b44699 feat: opt item ui 2026-06-20 12:45:47 +08:00
128b7c3e4e style: 国际出港/进港小弹窗统一宽度及取消确定按钮
表单式小弹窗统一为480dp宽,底部按钮统一取消/确定;
分配人员弹窗去掉航班行、分配人下拉改为铺满。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-20 12:44:54 +08:00
3fedef27a7 feat: 国际出港装载列表项加航程及始发站/目的站筛选
列表项改为5列并新增航程(range 为空时回退始发港-目的港拼接);
搜索区参考电报生成接口,填航班日期+号联动查询,始发站可下拉、
目的站自动填充只读,dep/dest 作为筛选传给列表接口。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-20 12:19:51 +08:00
608f1af1f4 feat: 国际出港理货列表项改航程/航班日期/航班号
始发站和目的站合并为航程(range 为空时回退为始发站-目的站拼接),
新增航班日期、航班号栏位,去掉特码。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-20 11:55:09 +08:00
0a0827f516 style: 国际出港页面标题统一加「国际出港」前缀
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-20 11:43:20 +08:00
9f7b2dc27c style: 国际出港/进港列表子列表补全行分割线
为国际出港仓库、国际进港舱单/原始舱单/理货报告/仓库等列表的展开子列表补全内容行分割线;并将进港舱单子列表除选项外各列统一为等宽

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-20 11:34:23 +08:00
aa8920ec55 chore: 文件末尾补全换行并更新本地权限配置
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-20 11:22:36 +08:00
b91b54acbe fix: 开始组装卸货成功后重拉 useId 支持连续卸多票
卸货时 useId 来自 queryUldInfo,但同一 ULD 因 lastQueriedUldNo
防抖不会重新查询,useId 停留在卸首票前的陈旧值;装货修复的
useId==0 守卫又挡住卸货后的重拉,导致卸货成功后 useId 不刷新,
无法连续卸多票。改为按操作类型区分:装货保留 useId==0 守卫,
卸货成功后无条件重拉 getUld 回填最新 useId。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 16:43:39 +08:00
7d5b3b2438 fix: 开始组装新增模式支持连续组装多票
新增模式对全新 ULD 首票装货后,服务端才生成 useId,
而装货/卸货接口返回值不含 useId,未回填导致后续票仍以
useId=null 提交、被当作新 use 处理,无法继续多票。
每次操作成功后重拉 getUld 回填 useId,并在航班为空时
用运单航班兜底刷新组装信息列表。仅在 useId 为 0、航班
为空时生效,修改模式及已过磅 ULD 保持原逻辑不变。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 14:03:25 +08:00
30532386fb style: 国际出港/进港详情仓库库位列表改白底细线分隔
表头底色改为白色,去除内容行斑马纹统一白底,在 tab/表头/内容之间
统一添加浅色细线(@color/line)分隔,出港进港四个 tab 风格一致。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-12 09:59:50 +08:00
721b8c7128 fix: 裁剪首页图标透明留白统一图标视觉大小
出港计重/进港查询/电报解析/进港仓库 4 个图标画布带透明边距,
fitCenter 缩放后比其他图标偏小,裁剪至内容边界使其满幅

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-08 19:39:14 +08:00
8d70d6aaee style: 列表搜索区下拉框 placeholder 字体与输入框统一为 13sp
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-08 19:29:04 +08:00
9ff3bbbefc feat: update claude conf 2026-05-25 14:49:42 +08:00
c826db8718 feat: 板箱过磅已过磅且航班已离港时禁止跳转编辑
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-25 14:45:06 +08:00
0427020bc1 feat: 国际出港/进港子列表展开按钮始终显示并增加空状态占位
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-25 14:18:39 +08:00
8c689d9d65 style: 加大国际出港/进港列表项上下间距与展开按钮尺寸
- 主内容区 padding 由 10dp 改为上下 20dp / 左右 10dp
- 含展开按钮的列表项 iv_show 由 10dp/centerInside 改为 20dp + paddingVertical=2.5dp + marginTop=-20dp + center
- 覆盖 module_gjc 14 个 + module_gjj 14 个列表项布局

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-22 15:50:00 +08:00
103 changed files with 888 additions and 304 deletions

View File

@@ -147,7 +147,9 @@
"Bash(sed -n '60,75p' module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpOutHandoverViewModel.kt)",
"Bash(sed -n '73,100p' module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt)",
"Bash(sed -n '82,115p' module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpStorageUseViewModel.kt)",
"Bash(sed -n '212,240p' module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt)"
"Bash(sed -n '212,240p' module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt)",
"mcp__plugin_claude-mem_mcp-search__search",
"Read(//Users/kid/.claude/**)"
],
"deny": [],
"ask": []

View File

@@ -272,4 +272,4 @@ class LoginActivity : BaseActivity(),
}
}
}
}

View File

@@ -9,6 +9,8 @@ data class GjcCheckInPage(
var fno: String? = null, // 航班号
var wbNo: String? = null, // 运单号
var hno: String? = null, // 分单号
var dep: String? = null, // 始发站
var dest: String? = null, // 目的站
var pageNum: Int = 1, // 页码
var pageSize: Int = 10 // 每页条数
)

View File

@@ -10,6 +10,8 @@ class GjcExportLoad {
var activeId: String = "" // 运单活跃号
var by1: String = "" // 第一承运人
var dep: String = "" // 始发港
var dest: String = "" // 目的港
var range: String = "" // 航程
var fdate: String = "" // 申报航班日期
var fid: String = "" // 航班主键id
var fno: String = "" // 申报航班号
@@ -47,4 +49,14 @@ class GjcExportLoad {
fun getFullWaybillNo(): String {
return if (prefix.isNotEmpty()) "$prefix$no" else no
}
/**
* 航程
* 优先取 range为空时用 始发港-目的港 拼接
*/
val rangeText: String
get() {
if (range.isNotBlank()) return range
return if (dep.isNotEmpty() && dest.isNotEmpty()) "$dep-$dest" else dep + dest
}
}

View File

@@ -167,6 +167,25 @@ data class GjcMaWb(
}
}
/**
* 航程
* 优先取 range为空时用 始发站-目的站 拼接
*/
val rangeText: String
get() {
if (!range.isNullOrBlank()) return range!!
val d1 = dep?.takeIf { it.isNotBlank() } ?: ""
val d2 = dest?.takeIf { it.isNotBlank() } ?: ""
return if (d1.isNotEmpty() && d2.isNotEmpty()) "$d1-$d2" else d1 + d2
}
/**
* 航班日期(格式化)
* 格式: yyyy-MM-dd
*/
val flightDateText: String
get() = fdate?.let { SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(it) } ?: ""
/**
* 清仓正常状态中文
* 0-否1-是

View File

@@ -81,13 +81,15 @@ class PadSearchLayout : LinearLayout {
et.hint = value
tv.hint = value
bindAdapter(spinner, list, hint)
// 下拉占位/选项字体与搜索输入框 hint(13sp) 保持一致
bindAdapter(spinner, list, hint, R.layout.item_spinner_list_13sp)
}
var list = emptyList<KeyValue>()
set(value) {
field = value
bindAdapter(spinner, value, hint)
// 下拉占位/选项字体与搜索输入框 hint(13sp) 保持一致
bindAdapter(spinner, value, hint, R.layout.item_spinner_list_13sp)
onValueSet()
}

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2006 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textSize="13sp" />

View File

@@ -26,7 +26,7 @@ class GjcAssembleAllocateActivity :
override fun viewModelClass() = GjcAssembleAllocateViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("组装分配")
setBackArrow("国际出港组装分配")
binding.viewModel = viewModel

View File

@@ -30,7 +30,7 @@ class GjcAssembleWeightEditActivity :
override fun viewModelClass() = GjcAssembleWeightEditViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("修改组装重量")
setBackArrow("国际出港修改组装重量")
binding.viewModel = viewModel

View File

@@ -26,7 +26,7 @@ class GjcBoxWeighingActivity :
override fun viewModelClass() = GjcBoxWeighingViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("板箱过磅")
setBackArrow("国际出港板箱过磅")
binding.viewModel = viewModel

View File

@@ -22,7 +22,7 @@ class GjcBoxWeighingAddActivity :
override fun viewModelClass() = GjcBoxWeighingAddViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("板箱过磅")
setBackArrow("国际出港板箱过磅")
binding.viewModel = viewModel
viewModel.initOnCreated(this, intent)

View File

@@ -23,7 +23,7 @@ class GjcBoxWeighingDetailsActivity :
override fun viewModelClass() = GjcBoxWeighingDetailsViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("板箱过磅详情")
setBackArrow("国际出港板箱过磅详情")
binding.viewModel = viewModel

View File

@@ -278,7 +278,7 @@ class GjcFuBangActivity : BaseActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_gjc_fu_bang)
setBackArrow("板箱过磅")
setBackArrow("国际出港板箱过磅")
viewModel = ViewModelProvider(this).get(GjcFuBangViewModel::class.java)
initView()

View File

@@ -23,7 +23,7 @@ class GjcHandoverActivity :
override fun viewModelClass() = GjcHandoverViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("货物交接单")
setBackArrow("国际出港货物交接单")
binding.viewModel = viewModel

View File

@@ -69,7 +69,7 @@ class GjcStartReceiveActivity : BaseActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_gjc_start_receive)
setBackArrow("开始收运")
setBackArrow("国际出港开始收运")
initView()
viewModel = ViewModelProvider(this).get(GjcStartReceiveViewModel::class.java)
val dgrObj = JSONObject()

View File

@@ -46,7 +46,7 @@ class GjcWareHouseInfoActivity : BaseActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_gjc_ware_house_info)
setBackArrow("仓库管理详情")
setBackArrow("国际出港仓库管理详情")
initView()
viewModel.queryInfoByIdWareHouse(id)

View File

@@ -26,7 +26,7 @@ class GjcWeighingListActivity :
override fun viewModelClass() = GjcWeighingViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("出港待计重")
setBackArrow("国际出港待计重")
binding.viewModel = viewModel
@@ -42,7 +42,7 @@ class GjcWeighingListActivity :
// 监听刷新事件
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH)
.observe(this) {
viewModel.refresh()

View File

@@ -33,7 +33,7 @@ class GjcWeighingRecordDetailsActivity :
override fun viewModelClass() = GjcWeighingRecordDetailsViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("计重明细")
setBackArrow("国际出港计重明细")
binding.viewModel = viewModel

View File

@@ -26,7 +26,7 @@ class GjcWeighingRecordListActivity :
override fun viewModelClass() = GjcWeighingRecordViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("计重记录")
setBackArrow("国际出港计重记录")
binding.viewModel = viewModel

View File

@@ -30,7 +30,7 @@ class GjcWeighingStartActivity :
override fun viewModelClass() = GjcWeighingStartViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("开始计重")
setBackArrow("国际出港开始计重")
binding.viewModel = viewModel
viewModel.initOnCreated(this, intent)

View File

@@ -35,7 +35,7 @@ class IntExpArriveActivity :
// 注入 ARouter 参数
ARouter.getInstance().inject(this)
setBackArrow("出港运抵")
setBackArrow("国际出港运抵")
binding.viewModel = viewModel
// 如果有传入运单号,自动填充并触发搜索
@@ -52,7 +52,7 @@ class IntExpArriveActivity :
// 监听刷新事件
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
viewModel.refresh()
}

View File

@@ -26,7 +26,7 @@ class IntExpLoadActivity :
override fun viewModelClass() = IntExpLoadViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("出港装载")
setBackArrow("国际出港装载")
binding.viewModel = viewModel
// 绑定分页

View File

@@ -26,7 +26,7 @@ class IntExpOutHandoverActivity :
override fun viewModelClass() = IntExpOutHandoverViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("出库交接")
setBackArrow("国际出港出库交接")
binding.viewModel = viewModel
// 绑定分页
@@ -37,7 +37,7 @@ class IntExpOutHandoverActivity :
// 监听刷新事件
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
viewModel.refresh()
}

View File

@@ -26,7 +26,7 @@ class IntExpTallyActivity :
override fun viewModelClass() = IntExpTallyViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("出港理货")
setBackArrow("国际出港理货")
binding.viewModel = viewModel
// 绑定分页

View File

@@ -7,6 +7,10 @@ import com.lukouguoji.gjc.activity.GjcBoxWeighingDetailsActivity
import com.lukouguoji.gjc.databinding.ItemGjcBoxWeighingBinding
import com.lukouguoji.module_base.base.BaseViewHolder
import com.lukouguoji.module_base.bean.GjcUldUseBean
import com.lukouguoji.module_base.http.net.NetApply
import com.lukouguoji.module_base.ktx.launchCollect
import com.lukouguoji.module_base.ktx.showToast
import com.lukouguoji.module_base.ktx.toRequestBody
/**
* 国际出港板箱过磅列表 ViewHolder
@@ -29,7 +33,24 @@ class GjcBoxWeighingViewHolder(view: View) :
// 整行点击跳转到表单页(带数据回填)
binding.ll.setOnClickListener {
GjcBoxWeighingAddActivity.startForEdit(it.context, bean)
if (bean.wtDate.isEmpty()) {
GjcBoxWeighingAddActivity.startForEdit(it.context, bean)
} else {
val params = mapOf(
"fdate" to bean.fdate,
"fno" to bean.fno,
"countryType" to "1"
).toRequestBody()
launchCollect({ NetApply.api.queryFlightByDateAndNo(params) }) {
onSuccess = { result ->
if (!result.data?.fclose.isNullOrEmpty()) {
showToast("该 ULD 已过磅且航班已离港,不允许重新过磅")
} else {
GjcBoxWeighingAddActivity.startForEdit(it.context, bean)
}
}
}
}
}
// 侧滑“详情”按钮点击跳转到只读详情页

View File

@@ -5,8 +5,8 @@ import com.lukouguoji.gjc.R
import com.lukouguoji.gjc.databinding.ItemIntExpArriveBinding
import com.lukouguoji.module_base.adapter.setCommonAdapter
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.common.ConstantEvent
import com.lukouguoji.module_base.impl.FlowBus
import com.lukouguoji.module_base.bean.GjcMaWb
import com.lukouguoji.module_base.ktx.refresh
@@ -24,20 +24,17 @@ class IntExpArriveViewHolder(view: View) :
// 添加图标点击事件 - 切换选择状态
binding.ivIcon.setOnClickListener {
// 反转checked状态
bean.checked.set(!bean.checked.get())
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")
// 立即更新UI图片自动切换
binding.executePendingBindings()
}
// ========== 展开按钮点击事件 ==========
// 展开按钮点击事件
binding.ivShow.setOnClickListener {
bean.showMore.set(!bean.showMore.get())
}
// ========== 初始化子列表 RecyclerView ==========
// 初始化子列表 RecyclerView
setCommonAdapter(
binding.rvSub,
IntExpArriveSubViewHolder::class.java,
@@ -45,6 +42,22 @@ class IntExpArriveViewHolder(view: View) :
)
// 刷新子列表数据
binding.rvSub.refresh(bean.haWbList ?: emptyList())
val subList = bean.haWbList ?: emptyList()
binding.rvSub.refresh(subList)
updateSubListVisibility(subList.isNotEmpty())
}
private fun updateSubListVisibility(hasData: Boolean) {
if (hasData) {
binding.llHeader.visibility = View.VISIBLE
binding.dividerHeader.visibility = View.VISIBLE
binding.rvSub.visibility = View.VISIBLE
binding.tvEmpty.visibility = View.GONE
} else {
binding.llHeader.visibility = View.GONE
binding.dividerHeader.visibility = View.GONE
binding.rvSub.visibility = View.GONE
binding.tvEmpty.visibility = View.VISIBLE
}
}
}

View File

@@ -24,20 +24,17 @@ class IntExpTallyViewHolder(view: View) :
// 图标点击切换选择状态(主单和分单独立,互不干扰)
binding.ivIcon.setOnClickListener {
// 只切换主单自己的选择状态,不同步到分单
bean.checked.set(!bean.checked.get())
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")
// 刷新UI
binding.executePendingBindings()
}
// ========== 新增:展开按钮点击事件 ==========
// 展开按钮点击事件
binding.ivShow.setOnClickListener {
bean.showMore.set(!bean.showMore.get())
}
// ========== 新增:初始化子列表 RecyclerView ==========
// 初始化子列表 RecyclerView
setCommonAdapter(
binding.rvSub,
IntExpTallySubViewHolder::class.java,
@@ -45,6 +42,22 @@ class IntExpTallyViewHolder(view: View) :
)
// 刷新子列表数据
binding.rvSub.refresh(bean.haWbList ?: emptyList())
val subList = bean.haWbList ?: emptyList()
binding.rvSub.refresh(subList)
updateSubListVisibility(subList.isNotEmpty())
}
private fun updateSubListVisibility(hasData: Boolean) {
if (hasData) {
binding.llHeader.visibility = View.VISIBLE
binding.dividerHeader.visibility = View.VISIBLE
binding.rvSub.visibility = View.VISIBLE
binding.tvEmpty.visibility = View.GONE
} else {
binding.llHeader.visibility = View.GONE
binding.dividerHeader.visibility = View.GONE
binding.rvSub.visibility = View.GONE
binding.tvEmpty.visibility = View.VISIBLE
}
}
}

View File

@@ -23,7 +23,7 @@ class IntExpAssembleActivity :
override fun viewModelClass() = IntExpAssembleViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("出港组装")
setBackArrow("国际出港组装")
binding.viewModel = viewModel
// 初始化组装人下拉列表

View File

@@ -63,7 +63,7 @@ class IntExpAssembleStartActivity :
override fun viewModelClass() = IntExpAssembleStartViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("开始组装")
setBackArrow("国际出港开始组装")
binding.viewModel = viewModel
// 为ULD编号添加大写字母和数字的输入限制

View File

@@ -29,7 +29,7 @@ class IntExpMoveActivity : BaseBindingActivity<ActivityIntExpMoveBinding, IntExp
override fun viewModelClass() = IntExpMoveViewModel::class.java
override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("出港移库")
setBackArrow("国际出港移库")
binding.viewModel = viewModel
binding.activity = this

View File

@@ -95,12 +95,8 @@ class IntExpArriveViewModel : BasePageViewModel() {
val shouldExpand = !isAllExpanded.value!!
isAllExpanded.value = shouldExpand
// 更新所有列表项的 showMore 状态
list.forEach { bean ->
// 只有当有子列表时才设置展开状态
if (!bean.haWbList.isNullOrEmpty()) {
bean.showMore.set(shouldExpand)
}
bean.showMore.set(shouldExpand)
}
// 刷新列表UI
@@ -206,6 +202,14 @@ class IntExpArriveViewModel : BasePageViewModel() {
return
}
// 校验申报状态:只有申报状态为 01 的记录才能删除申报
if (selectedMaWbList.any { it.declareStatus != "01" } ||
selectedHaWbList.any { it.arrivalStatus != "01" }
) {
showToast("只能删除申报状态为01的运单")
return
}
// 从接口获取删除原因列表
launchLoadingCollect({ NetApply.api.getDelReasonList() }) {
onSuccess = { result ->

View File

@@ -456,6 +456,33 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
}
}
/**
* 重新查询 ULD 信息,仅回填最新的 useId 与 ULD 状态。
*
* 用途:以"新增"形式进入页面、对全新 ULD 首次装货时,服务端在首票成功后才生成
* 该 ULD 的 use 记录useId。装货/卸货接口返回值GjcWarehouse不含 useId
* 若不回填,后续票仍以 useId=null 提交,会被服务端当作新的 use 处理,
* 导致无法继续往同一 ULD 组装多票。此处在每次操作成功后回填最新 useId
* 保证多票组装提交到同一 ULD use 记录。
*
* 不在此处刷新航班/组装信息列表,避免与 loadAssembledList 的航班兜底逻辑相互覆盖。
*/
private fun reloadUldUseId(uldNo: String) {
if (uldNo.isEmpty()) return
launchCollect({ NetApply.api.getUldWithConsumeWeight(uldNo) }) {
onSuccess = { result ->
val uldBean = result.data
if (uldBean != null) {
// 仅回填 useId用于后续装货/卸货提交到同一 ULD use 记录),
// 不改动 ULD 状态/耗材重量/航班等其它字段,避免影响表单现有逻辑。
uldInfo.value = uldInfo.value?.apply {
useId = uldBean.useId
}
}
}
}
}
/**
* 卸货按钮点击
*/
@@ -589,6 +616,10 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
// 3. 【修改】区分 wbInfo 构建
val wbInfo: Map<String, Any?>
// 记录本次操作运单的航班信息(用于操作成功后刷新组装信息列表)
var operationFno = ""
var operationFdate = ""
if (isLoad) {
// 装货:从运单列表获取
val currentWaybillList = waybillList.value
@@ -615,6 +646,9 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
selectedWaybill.weight.toDoubleOrNull()
}
operationFno = selectedWaybill.fno
operationFdate = selectedWaybill.fdate
wbInfo = mapOf(
"wbNo" to selectedWaybill.waybillNo,
"pc" to waybillPc,
@@ -631,6 +665,9 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
return
}
operationFno = assembleWaybill.fno
operationFdate = assembleWaybill.fdate
wbInfo = mapOf(
"wbNo" to assembleWaybill.waybillNo,
"pc" to assembleWaybill.pieces.toLongOrNull(), // 运单件数
@@ -665,7 +702,7 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
}) {
onSuccess = { result ->
// 接口成功后才显示成功提示并刷新列表
handleOperationSuccess(operationName, isLoad, uldNo, assembleCount, assembleWeight)
handleOperationSuccess(operationName, isLoad, uldNo, operationFno, operationFdate)
}
onFailed = { code, message ->
showToast("${operationName}失败: $message")
@@ -680,8 +717,8 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
operationName: String,
isLoad: Boolean,
uldNo: String,
assembleCount: String,
assembleWeight: String
operationFno: String,
operationFdate: String
) {
showToast("${operationName}成功")
@@ -693,6 +730,32 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
// 清空表单(在刷新数据前清空,避免刷新时的状态冲突)
clearForm()
// 回填最新 useId关键用于后续装货/卸货提交到同一 ULD use 记录):
// - 装货:以"新增"形式进入、对全新 ULD 首票装货时,服务端在首票成功后才生成
// 该 ULD 的 use 记录,而接口返回值不含 useId不回填则后续票以 useId=null 提交、
// 被当作新 use 处理,无法继续多票。仅在本地 useId 尚未生成(为 0时回填
// "修改"模式及已过磅 ULD 本就带 useId保持原逻辑不变。
// - 卸货:从组装信息列表选票卸货,同一 ULD 因 lastQueriedUldNo 防抖不会重新查询 ULD
// useId 会停留在卸首票前的陈旧值,故卸货成功后无条件重拉,保证可连续卸多票。
if (isLoad) {
if ((uldInfo.value?.useId ?: 0L) == 0L) {
reloadUldUseId(uldNo)
}
} else {
reloadUldUseId(uldNo)
}
// 添加形式(全新 ULD时航班可能未从 ULD 查询接口获取,导致组装信息列表查不出;
// 仅在航班为空时用本次操作运单的航班信息兜底补全ULD 已带航班时保持原值不变。
if (assembleFlightNo.value.isNullOrEmpty() || assembleFlightDate.value.isNullOrEmpty()) {
if (operationFno.isNotEmpty() && operationFdate.isNotEmpty()) {
assembleFlightNo.value = operationFno
// 与 ULD 查询保持一致,只取年月日(去掉时间部分)
assembleFlightDate.value =
if (operationFdate.contains(" ")) operationFdate.split(" ")[0] else operationFdate
}
}
// 清除防抖标记,强制刷新组装信息列表
lastQueriedAssembledParams = ""
loadAssembledList()
@@ -1059,6 +1122,11 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
this.uldNo = uldNo
}
// 将 ULD 编号填充到左上角 ULD 列表筛选框,使组装信息列表只查询该 ULD。
// loadAssembledList() 会读取 uldSearchText 作为 uld 查询参数,因此只显示这一个 ULD 的组装信息。
// 用户可手动清空该筛选框后重新查询,即可查看该航班的全部组装信息。
uldSearchText.value = uldNo
// 更新防抖标记,确保查询能触发
lastQueriedUldNo = ""

View File

@@ -17,6 +17,7 @@ import com.lukouguoji.module_base.impl.FlowBus
import com.lukouguoji.module_base.ktx.commonAdapter
import com.lukouguoji.module_base.ktx.launchCollect
import com.lukouguoji.module_base.ktx.launchLoadingCollect
import com.lukouguoji.module_base.ktx.noNull
import com.lukouguoji.module_base.ktx.showToast
import com.lukouguoji.module_base.ktx.toRequestBody
import com.lukouguoji.module_base.model.ScanModel
@@ -34,6 +35,77 @@ class IntExpLoadViewModel : BasePageViewModel() {
val flightDate = MutableLiveData<String>(DateUtils.getCurrentTime().formatDate()) // 航班日期
val flightNo = MutableLiveData("") // 航班号
val waybillNo = MutableLiveData("") // 运单号
val depPort = MutableLiveData("") // 始发站(下拉选择)
val depPortList = MutableLiveData<List<KeyValue>>(emptyList()) // 始发站下拉列表(始发港 + 经停港)
val destPort = MutableLiveData("") // 目的站(航班查询自动填充,不可编辑)
// ========== 航班级联查询 ==========
private var lastQueriedFlight = "" // 避免重复查询
/**
* 航班日期输入完成回调
*/
fun onFlightDateInputComplete() {
lastQueriedFlight = ""
queryFlightIfReady()
}
/**
* 航班号输入完成回调
*/
fun onFlightNoInputComplete() {
queryFlightIfReady()
}
/**
* 航班日期 + 航班号 均有值时,查询航班并填充始发站/目的站
* 参考「电报生成」(/flt/intFlight):始发站下拉(始发港+经停港),目的站自动填充且只读
*/
private fun queryFlightIfReady() {
val fdate = flightDate.value
val fno = flightNo.value
if (fdate.isNullOrEmpty() || fno.isNullOrEmpty()) return
val key = "$fdate-$fno"
if (key == lastQueriedFlight) return
lastQueriedFlight = key
launchCollect({
NetApply.api.getGjFlightBean(
mapOf(
"fdate" to fdate,
"fno" to fno,
"ieFlag" to "E", // 出港
).toRequestBody()
)
}) {
onSuccess = {
if (it.verifySuccess() && it.data != null) {
val flight = it.data!!
// 目的站:航班查询返回,自动填充
destPort.value = flight.fdest.noNull()
// 始发站下拉:始发港 + 经停港(可逗号分隔多个)
val list = mutableListOf(KeyValue(flight.fdep.noNull(), flight.fdep.noNull()))
flight.jtz.split(",").forEach { stop ->
val s = stop.trim()
if (s.isNotEmpty()) list.add(KeyValue(s, s))
}
depPortList.value = list
depPort.value = flight.fdep.noNull()
} else {
depPortList.value = emptyList()
depPort.value = ""
destPort.value = ""
}
}
onFailed = { _, _ ->
depPortList.value = emptyList()
depPort.value = ""
destPort.value = ""
}
}
}
// ========== 统计信息 ==========
val totalCount = MutableLiveData("0") // 合计票数
@@ -156,6 +228,12 @@ class IntExpLoadViewModel : BasePageViewModel() {
return
}
// 校验申报状态:只有装载申报状态为 01 的记录才能删除申报
if (selectedItems.any { it.loadStatus != "01" }) {
showToast("只能删除申报状态为01的运单")
return
}
// 从接口获取删除原因列表
launchLoadingCollect({ NetApply.api.getDelReasonList() }) {
onSuccess = { result ->
@@ -199,6 +277,8 @@ class IntExpLoadViewModel : BasePageViewModel() {
fdate = flightDate.value?.ifEmpty { null },
fno = flightNo.value?.ifEmpty { null },
wbNo = waybillNo.value?.ifEmpty { null },
dep = depPort.value?.ifEmpty { null },
dest = destPort.value?.ifEmpty { null },
pageNum = pageModel.page,
pageSize = pageModel.limit
)
@@ -210,7 +290,9 @@ class IntExpLoadViewModel : BasePageViewModel() {
val totalParams = GjcCheckInPage(
fdate = flightDate.value?.ifEmpty { null },
fno = flightNo.value?.ifEmpty { null },
wbNo = waybillNo.value?.ifEmpty { null }
wbNo = waybillNo.value?.ifEmpty { null },
dep = depPort.value?.ifEmpty { null },
dest = destPort.value?.ifEmpty { null }
).toRequestBody()
// 获取列表 (带Loading)

View File

@@ -96,12 +96,8 @@ class IntExpTallyViewModel : BasePageViewModel() {
val shouldExpand = !isAllExpanded.value!!
isAllExpanded.value = shouldExpand
// 更新所有列表项的 showMore 状态
list.forEach { bean ->
// 只有当有子列表时才设置展开状态
if (!bean.haWbList.isNullOrEmpty()) {
bean.showMore.set(shouldExpand)
}
bean.showMore.set(shouldExpand)
}
// 刷新列表UI
@@ -206,6 +202,14 @@ class IntExpTallyViewModel : BasePageViewModel() {
return
}
// 校验申报状态:只有未申报(状态为空)的记录才能理货申报
if (selectedMaWbList.any { !it.declareStatus.isNullOrEmpty() } ||
selectedHaWbList.any { !it.tallyStatus.isNullOrEmpty() }
) {
showToast("只有未申报的运单才能理货申报")
return
}
// 构建请求参数(区分主单和分单)
val params = mutableMapOf<String, Any?>()
if (selectedMaWbList.isNotEmpty()) {
@@ -253,6 +257,14 @@ class IntExpTallyViewModel : BasePageViewModel() {
return
}
// 校验申报状态:只有申报状态为 01 的记录才能删除申报
if (selectedMaWbList.any { it.declareStatus != "01" } ||
selectedHaWbList.any { it.tallyStatus != "01" }
) {
showToast("只能删除申报状态为01的运单")
return
}
// 从接口获取删除原因列表
launchLoadingCollect({ NetApply.api.getDelReasonList() }) {
onSuccess = { result ->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -160,7 +160,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="28dp"
android:background="@color/color_f2"
android:background="@color/white"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingHorizontal="8dp">
@@ -214,6 +214,12 @@
android:textSize="13sp" />
</LinearLayout>
<!-- 表头与列表项分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/line" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_waybill_list"
android:layout_width="match_parent"

View File

@@ -37,6 +37,7 @@
android:layout_weight="1"
hint='@{"请选择航班日期"}'
icon="@{@drawable/img_date}"
setRefreshCallBack="@{viewModel::onFlightDateInputComplete}"
type="@{SearchLayoutType.DATE}"
value="@={viewModel.flightDate}" />
@@ -46,10 +47,31 @@
android:layout_height="wrap_content"
android:layout_weight="1"
hint='@{"请输入航班号"}'
setRefreshCallBack="@{viewModel::onFlightNoInputComplete}"
type="@{SearchLayoutType.INPUT}"
value="@={viewModel.flightNo}"
setUpperCaseAlphanumeric="@{true}" />
<!-- 始发站(下拉选择:始发港 + 经停港) -->
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
hint='@{"始发站"}'
type="@{SearchLayoutType.SPINNER}"
list="@{viewModel.depPortList}"
value="@={viewModel.depPort}" />
<!-- 目的站(航班查询自动填充,不可编辑) -->
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
enable="@{false}"
hint='@{"目的站"}'
type="@{SearchLayoutType.INPUT}"
value="@={viewModel.destPort}" />
<!-- 运单号 -->
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
android:layout_width="0dp"
@@ -71,10 +93,10 @@
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="0.6"
android:gravity="center_vertical|start"
android:orientation="horizontal"
android:paddingHorizontal="24dp">
android:paddingHorizontal="12dp">
<ImageView
android:layout_width="36dp"

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="500dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_radius_10"
android:gravity="center_horizontal"
@@ -28,33 +28,26 @@
android:textSize="18sp"
android:textStyle="bold" />
<!-- 航班信息显示 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="15dp"
android:text='@{"航班:" + model.flightInfo}'
android:textColor="@color/text_normal"
android:textSize="16sp"
android:textStyle="bold" />
<!-- 分配人下拉选择 -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
android:layout_marginHorizontal="30dp"
android:layout_marginTop="30dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="分配人:"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
android:layout_width="240dp"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
type="@{SearchLayoutType.SPINNER}"
list="@{model.assembleCompanyList}"
value="@={model.allocator}" />

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -130,7 +130,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onConfirmClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -79,7 +79,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onSaveClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -79,7 +79,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onSaveClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -130,7 +130,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onConfirmClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -79,7 +79,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onSaveClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -79,7 +79,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onSaveClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -78,7 +78,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onSaveClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -130,7 +130,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onConfirmClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -79,7 +79,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onSaveClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -18,14 +18,19 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_white_radius_bottom_8"
android:orientation="vertical"
android:paddingEnd="8dp">
android:orientation="vertical">
<!-- 表头 (浅灰色背景) -->
<!-- tab 与表头分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
<!-- 表头 (白色背景) -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/color_f2"
android:background="@color/white"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingHorizontal="10dp">
@@ -91,6 +96,12 @@
android:textStyle="bold" />
</LinearLayout>
<!-- 表头与内容分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
<!-- 数据列表 -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_storage_list"

View File

@@ -18,14 +18,19 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_white_radius_bottom_8"
android:orientation="vertical"
android:paddingEnd="8dp">
android:orientation="vertical">
<!-- 表头 (深绿色背景) -->
<!-- tab 与表头分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
<!-- 表头 (白色背景) -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/color_f2"
android:background="@color/white"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingHorizontal="10dp">
@@ -111,6 +116,12 @@
android:textStyle="bold" />
</LinearLayout>
<!-- 表头与内容分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
<!-- 数据列表 -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_warehouse_list"

View File

@@ -18,8 +18,8 @@
android:layout_marginVertical="5dp"
android:background="@drawable/bg_item"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 选中图标 -->
<ImageView
android:id="@+id/iv_icon"

View File

@@ -27,8 +27,8 @@
android:layout_height="wrap_content"
android:background="@drawable/bg_item"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 飞机图标 -->
<ImageView
android:id="@+id/iv_icon"

View File

@@ -20,8 +20,8 @@
android:layout_marginVertical="5dp"
android:background="@drawable/bg_item"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 选中图标 -->
<ImageView
android:id="@+id/iv_icon"
@@ -94,7 +94,7 @@
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="0.8"
android:gravity="center_vertical">
<TextView
@@ -140,7 +140,7 @@
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="0.7"
android:gravity="center_vertical">
<TextView
@@ -217,7 +217,7 @@
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="0.8"
android:gravity="center_vertical">
<TextView
@@ -272,7 +272,7 @@
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="0.7"
android:gravity="center_vertical">
<TextView

View File

@@ -25,8 +25,8 @@
android:layout_marginVertical="5dp"
android:background="@drawable/bg_item"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 左侧图标 -->
<ImageView
android:layout_width="40dp"

View File

@@ -15,12 +15,17 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@{position % 2 == 0 ? @color/white : @color/color_f2}"
android:gravity="center_vertical"
android:minHeight="40dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
android:background="@color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="40dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
<!-- 序号 -->
<TextView
@@ -82,5 +87,13 @@
android:textColor="@android:color/black"
android:textSize="14sp" />
</LinearLayout>
<!-- 内容分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
</LinearLayout>
</layout>

View File

@@ -15,12 +15,17 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@{position % 2 == 0 ? @color/white : @color/color_f2}"
android:gravity="center_vertical"
android:minHeight="40dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
android:background="@color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="40dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
<!-- 序号 -->
<TextView
@@ -102,5 +107,13 @@
android:textColor="@android:color/black"
android:textSize="14sp" />
</LinearLayout>
<!-- 内容分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
</LinearLayout>
</layout>

View File

@@ -18,8 +18,8 @@
android:layout_marginHorizontal="15dp"
android:layout_marginVertical="6dp"
android:background="@drawable/bg_item"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<ImageView
android:id="@+id/iv_icon"
loadImage="@{bean.checked ? @drawable/img_plane_s : @drawable/img_plane}"

View File

@@ -23,8 +23,8 @@
android:layout_marginVertical="5dp"
android:background="@{bean.checkIn.equals(`2`) ? @drawable/bg_item_green : @drawable/bg_item}"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 飞机图标 (根据checked状态切换图片) -->
<ImageView
android:id="@+id/iv_icon"

View File

@@ -17,8 +17,8 @@
android:layout_marginVertical="5dp"
android:background="@drawable/bg_item"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 飞机图标 -->
<ImageView
android:id="@+id/iv_icon"

View File

@@ -35,7 +35,8 @@
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 选中图标 (飞机图标,根据选择状态切换图片) -->
<ImageView
@@ -335,11 +336,11 @@
<!-- 展开按钮 -->
<ImageView
android:id="@+id/iv_show"
visible="@{bean.haWbList != null &amp;&amp; !bean.haWbList.empty}"
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="-10dp"
android:scaleType="centerInside"
android:layout_height="20dp"
android:paddingVertical="2.5dp"
android:layout_marginTop="-20dp"
android:scaleType="center"
android:src="@mipmap/img_down" />
</LinearLayout>
@@ -354,8 +355,21 @@
android:orientation="vertical"
android:visibility="gone">
<!-- 暂无数据提示 -->
<TextView
android:id="@+id/tv_empty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingVertical="15dp"
android:text="暂无分单数据"
android:textColor="@color/text_gray"
android:textSize="14sp"
android:visibility="gone" />
<!-- 表头 -->
<LinearLayout
android:id="@+id/ll_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="10dp"
@@ -465,6 +479,7 @@
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:id="@+id/divider_header"
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/sub_list_divider" />

View File

@@ -41,7 +41,8 @@
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 选中图标 (飞机图标,根据选择状态切换图片) -->
<ImageView
@@ -338,10 +339,11 @@
<ImageView
android:id="@+id/iv_show"
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="-10dp"
android:layout_height="20dp"
android:paddingVertical="2.5dp"
android:layout_marginTop="-20dp"
android:rotation="@{bean.showMore.get() ? 180f : 0f}"
android:scaleType="centerInside"
android:scaleType="center"
android:src="@mipmap/img_down" />
</LinearLayout>

View File

@@ -23,8 +23,8 @@
android:background="@drawable/bg_white_radius_8"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 选中图标 (飞机图标,根据选择状态切换图片) -->
<ImageView
android:id="@+id/iv_icon"
@@ -42,7 +42,7 @@
android:layout_weight="1"
android:orientation="vertical">
<!-- 第一行:运单号、状态、件数、重量 -->
<!-- 第一行:运单号、状态、件数、重量、特码 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -53,7 +53,7 @@
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="1.3"
android:gravity="center_vertical"
android:orientation="horizontal">
@@ -63,7 +63,7 @@
android:text="运单号:"
android:textColor="@color/text_normal"
android:textSize="15sp"
completeSpace="@{4}" />
completeSpace="@{5}" />
<TextView
android:layout_width="wrap_content"
@@ -79,7 +79,7 @@
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="0.9"
android:gravity="center_vertical"
android:orientation="horizontal">
@@ -89,7 +89,7 @@
android:text="状态:"
android:textColor="@color/text_normal"
android:textSize="15sp"
completeSpace="@{5}" />
completeSpace="@{4}" />
<TextView
android:layout_width="wrap_content"
@@ -104,7 +104,7 @@
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="0.9"
android:gravity="center_vertical"
android:orientation="horizontal">
@@ -114,7 +114,7 @@
android:text="件数:"
android:textColor="@color/text_normal"
android:textSize="15sp"
completeSpace="@{4}" />
completeSpace="@{3}" />
<TextView
android:layout_width="wrap_content"
@@ -129,7 +129,7 @@
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="1.3"
android:gravity="center_vertical"
android:orientation="horizontal">
@@ -139,7 +139,7 @@
android:text="重量:"
android:textColor="@color/text_normal"
android:textSize="15sp"
completeSpace="@{5}" />
completeSpace="@{6}" />
<TextView
android:layout_width="wrap_content"
@@ -150,21 +150,11 @@
</LinearLayout>
</LinearLayout>
<!-- 第二行:特码、航班日期、航班号、品名(中) -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<!-- 特码 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="0.9"
android:gravity="center_vertical"
android:orientation="horizontal">
@@ -174,7 +164,7 @@
android:text="特码:"
android:textColor="@color/text_normal"
android:textSize="15sp"
completeSpace="@{4}" />
completeSpace="@{3}" />
<TextView
android:layout_width="wrap_content"
@@ -185,11 +175,21 @@
</LinearLayout>
</LinearLayout>
<!-- 第二行:航班日期、航班号、航程、品名(中) -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<!-- 航班日期 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="1.3"
android:gravity="center_vertical"
android:orientation="horizontal">
@@ -214,7 +214,7 @@
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="0.9"
android:gravity="center_vertical"
android:orientation="horizontal">
@@ -235,11 +235,36 @@
</LinearLayout>
<!-- 航程 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.9"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="航程:"
android:textColor="@color/text_normal"
android:textSize="15sp"
completeSpace="@{3}" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.rangeText}"
android:textColor="@color/text_normal"
android:textSize="15sp" />
</LinearLayout>
<!-- 品名(中) -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="1.3"
android:gravity="center_vertical"
android:orientation="horizontal">
@@ -249,7 +274,7 @@
android:text="品名(中)"
android:textColor="@color/text_normal"
android:textSize="15sp"
completeSpace="@{5}" />
completeSpace="@{6}" />
<TextView
android:layout_width="wrap_content"
@@ -262,6 +287,13 @@
</LinearLayout>
<!-- 占位 (与第一行特码列对齐) -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.9"
android:orientation="horizontal" />
</LinearLayout>
</LinearLayout>

View File

@@ -27,7 +27,8 @@
android:layout_height="wrap_content"
android:background="@drawable/bg_white_radius_8"
android:orientation="horizontal"
android:padding="10dp"
android:paddingVertical="20dp"
android:paddingHorizontal="10dp"
android:gravity="center_vertical">
<!-- 选中图标 (飞机图标,根据选择状态切换图片) -->

View File

@@ -22,7 +22,8 @@
android:layout_marginTop="10dp"
android:background="@drawable/bg_white_radius_8"
android:orientation="horizontal"
android:padding="10dp"
android:paddingVertical="20dp"
android:paddingHorizontal="10dp"
android:gravity="center_vertical">
<!-- 选中图标 (飞机图标,根据选择状态切换图片) -->

View File

@@ -37,7 +37,8 @@
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 选中图标 -->
<ImageView
@@ -305,9 +306,10 @@
android:id="@+id/iv_show"
visible="@{bean.storageUseList != null &amp;&amp; !bean.storageUseList.empty}"
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="-10dp"
android:scaleType="centerInside"
android:layout_height="20dp"
android:paddingVertical="2.5dp"
android:layout_marginTop="-20dp"
android:scaleType="center"
android:src="@mipmap/img_down" />
</LinearLayout>

View File

@@ -16,9 +16,14 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="8dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp">
<!-- 选项(单选框) -->
<ImageView
@@ -85,6 +90,12 @@
android:textColor="@color/text_normal"
android:textSize="14sp" />
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/sub_list_divider" />
</LinearLayout>
</layout>

View File

@@ -10,7 +10,7 @@
<!-- 白色卡片主要内容区域 -->
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bg_white_radius_8" android:orientation="vertical">
<!-- 主要内容区域 -->
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:padding="10dp">
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:paddingVertical="20dp" android:paddingHorizontal="10dp">
<!-- 选中图标 -->
<ImageView android:id="@+id/iv_icon" android:layout_width="40dp" android:layout_height="40dp" android:layout_marginTop="0.5px" android:layout_marginEnd="10dp" loadImage="@{bean.checked.get() ? @drawable/img_plane_s : @drawable/img_plane}" android:src="@drawable/img_plane"/>
<!-- 数据展示区域 -->
@@ -19,7 +19,7 @@
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">
<!-- 运单号 (weight=1.5) -->
<LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.0" android:orientation="horizontal">
<TextView completeSpace="@{4}" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="运单号:" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView completeSpace="@{5}" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="运单号:" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{bean.wbNo}" android:textColor="@color/colorPrimary" android:textSize="15sp" android:textStyle="bold"/>
</LinearLayout>
<!-- 状态 (weight=1) -->
@@ -43,29 +43,29 @@
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{String.valueOf((int)bean.weight)}" android:textColor="@color/text_normal" android:textSize="15sp"/>
</LinearLayout>
</LinearLayout>
<!-- 第二行:特码、始发站、目的站、运单类型、分单数 -->
<!-- 第二行:航班日期、航班号、航程、运单类型、分单数 -->
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal">
<!-- 特码 (weight=1.5) -->
<!-- 航班日期 (weight=1.0) -->
<LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1.0" android:orientation="horizontal">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" completeSpace="@{4}" android:text="特码" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{bean.spCode}" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" completeSpace="@{5}" android:text="航班日期" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{bean.flightDateText}" android:textColor="@color/text_normal" android:textSize="15sp"/>
</LinearLayout>
<!-- 始发站 (weight=1) -->
<!-- 航班号 (weight=0.8) -->
<LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.8" android:orientation="horizontal">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" completeSpace="@{4}" android:text="始发站" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{bean.dep}" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" completeSpace="@{4}" android:text="航班号" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{bean.fno}" android:textColor="@color/text_normal" android:textSize="15sp"/>
</LinearLayout>
<!-- 目的站 (weight=1) -->
<!-- 航程 (weight=0.8) -->
<LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.8" android:orientation="horizontal">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" completeSpace="@{4}" android:text="目的站" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{bean.dest}" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" completeSpace="@{4}" android:text="航程" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{bean.rangeText}" android:textColor="@color/text_normal" android:textSize="15sp"/>
</LinearLayout>
<!-- 运单类型 (weight=1) -->
<!-- 运单类型 (weight=1.2) -->
<LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1.2" android:orientation="horizontal">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" completeSpace="@{5}" android:text="运单类型:" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{bean.awbName}" android:textColor="@color/text_normal" android:textSize="15sp"/>
</LinearLayout>
<!-- 分单数 (weight=1) -->
<!-- 分单数 (weight=0.8) -->
<LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.8" android:orientation="horizontal">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" completeSpace="@{4}" android:text="分单数:" android:textColor="@color/text_normal" android:textSize="15sp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{String.valueOf(bean.haWbNumber)}" android:textColor="@color/text_normal" android:textSize="15sp"/>
@@ -76,17 +76,28 @@
<!-- 展开/折叠按钮 -->
<ImageView
android:id="@+id/iv_show"
visible="@{bean.haWbList != null &amp;&amp; !bean.haWbList.empty}"
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="-10dp"
android:scaleType="centerInside"
android:layout_height="20dp"
android:paddingVertical="2.5dp"
android:layout_marginTop="-20dp"
android:scaleType="center"
android:src="@mipmap/img_down" />
</LinearLayout>
<!-- 子订单列表容器(在白色卡片外面) -->
<LinearLayout visible="@{bean.showMore}" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="#e3f6e0" android:orientation="vertical" android:visibility="gone">
<!-- 暂无数据提示 -->
<TextView
android:id="@+id/tv_empty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingVertical="15dp"
android:text="暂无分单数据"
android:textColor="@color/text_gray"
android:textSize="14sp"
android:visibility="gone" />
<!-- 表头 -->
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginVertical="10dp" android:paddingHorizontal="10dp" android:orientation="horizontal">
<LinearLayout android:id="@+id/ll_header" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginVertical="10dp" android:paddingHorizontal="10dp" android:orientation="horizontal">
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.5" android:gravity="center" android:text="选项" android:textColor="@color/text_normal" android:textSize="14sp" android:textStyle="bold"/>
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1.2" android:gravity="center" android:text="分单号" android:textColor="@color/text_normal" android:textSize="14sp" android:textStyle="bold"/>
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.8" android:gravity="center" android:text="件数" android:textColor="@color/text_normal" android:textSize="14sp" android:textStyle="bold"/>
@@ -99,6 +110,7 @@
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.9" android:gravity="center" android:text="删除费率" android:textColor="@color/text_normal" android:textSize="14sp" android:textStyle="bold"/>
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:id="@+id/divider_header"
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/sub_list_divider"/>

View File

@@ -73,7 +73,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@{bean.arrivalStatus ?? ``}"
android:text="@{bean.tallyStatus ?? ``}"
android:textColor="@color/text_normal"
android:textSize="14sp" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -5,8 +5,8 @@ import com.lukouguoji.gjj.R
import com.lukouguoji.gjj.databinding.ItemIntArrAirManifestBinding
import com.lukouguoji.module_base.adapter.setCommonAdapter
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.common.ConstantEvent
import com.lukouguoji.module_base.impl.FlowBus
import com.lukouguoji.module_base.bean.GjjAirManifest
import com.lukouguoji.module_base.ktx.refresh
@@ -47,7 +47,23 @@ class IntArrAirManifestViewHolder(view: View) :
R.layout.item_int_arr_air_manifest_sub
)
val subList = bean.haWbList ?: emptyList()
binding.rvSub.tag = bean
binding.rvSub.refresh(bean.haWbList ?: emptyList())
binding.rvSub.refresh(subList)
updateSubListVisibility(subList.isNotEmpty())
}
private fun updateSubListVisibility(hasData: Boolean) {
if (hasData) {
binding.llHeader.visibility = View.VISIBLE
binding.dividerHeader.visibility = View.VISIBLE
binding.rvSub.visibility = View.VISIBLE
binding.tvEmpty.visibility = View.GONE
} else {
binding.llHeader.visibility = View.GONE
binding.dividerHeader.visibility = View.GONE
binding.rvSub.visibility = View.GONE
binding.tvEmpty.visibility = View.VISIBLE
}
}
}

View File

@@ -45,5 +45,20 @@ class IntImpStorageUseViewHolder(view: View) :
val storageUseList = bean.storageUseList ?: emptyList()
binding.rvSub.tag = bean
binding.rvSub.refresh(storageUseList)
updateSubListVisibility(storageUseList.isNotEmpty())
}
private fun updateSubListVisibility(hasData: Boolean) {
if (hasData) {
binding.llHeader.visibility = View.VISIBLE
binding.dividerHeader.visibility = View.VISIBLE
binding.rvSub.visibility = View.VISIBLE
binding.tvEmpty.visibility = View.GONE
} else {
binding.llHeader.visibility = View.GONE
binding.dividerHeader.visibility = View.GONE
binding.rvSub.visibility = View.GONE
binding.tvEmpty.visibility = View.VISIBLE
}
}
}

View File

@@ -41,15 +41,15 @@ class IntArrAirManifestViewModel : BasePageViewModel() {
// ========== 全选状态 ==========
val isAllChecked = MutableLiveData(false)
fun onItemCheckChanged() {
updateCheckAllStatus()
}
fun updateCheckAllStatus() {
val list = pageModel.rv?.commonAdapter()?.items as? List<GjjAirManifest> ?: return
isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() }
}
fun onItemCheckChanged() {
updateCheckAllStatus()
}
fun updateCheckAllStatus() {
val list = pageModel.rv?.commonAdapter()?.items as? List<GjjAirManifest> ?: return
isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() }
}
// ========== 全部展开状态 ==========
val isAllExpanded = MutableLiveData(false)
@@ -90,9 +90,7 @@ class IntArrAirManifestViewModel : BasePageViewModel() {
isAllExpanded.value = shouldExpand
val list = pageModel.rv?.commonAdapter()?.items as? List<GjjAirManifest> ?: return
list.forEach { bean ->
if (!bean.haWbList.isNullOrEmpty()) {
bean.showMore.set(shouldExpand)
}
bean.showMore.set(shouldExpand)
}
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
}
@@ -177,6 +175,12 @@ class IntArrAirManifestViewModel : BasePageViewModel() {
fun deleteDeclarationClick() {
val (maWbList, haWbList) = getSelectedItems("请选择要删除申报的舱单") ?: return
// 校验申报状态:只有申报状态为 01 的舱单才能删除申报
if (maWbList.any { it.mftStatus != "01" } || haWbList.any { it.mftStatus != "01" }) {
showToast("只能删除申报状态为01的舱单")
return
}
// 从接口获取删除原因列表
launchLoadingCollect({ NetApply.api.getDelReasonList() }) {
onSuccess = { result ->

View File

@@ -103,9 +103,7 @@ class IntImpStorageUseViewModel : BasePageViewModel() {
isAllExpanded.value = shouldExpand
list.forEach { bean ->
if (!bean.storageUseList.isNullOrEmpty()) {
bean.showMore.set(shouldExpand)
}
bean.showMore.set(shouldExpand)
}
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -130,7 +130,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onConfirmClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -79,7 +79,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onSaveClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -79,7 +79,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onSaveClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -78,7 +78,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onSaveClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -130,7 +130,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onConfirmClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
@@ -79,7 +79,7 @@
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onSaveClick()}"
android:text="保存" />
android:text="确定" />
</LinearLayout>

View File

@@ -20,11 +20,17 @@
android:background="@drawable/bg_white_radius_bottom_8"
android:orientation="vertical">
<!-- 表头 -->
<!-- tab 与表头分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
<!-- 表头 (白色背景) -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/color_f5"
android:background="@color/white"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingHorizontal="10dp">
@@ -90,6 +96,12 @@
android:textStyle="bold" />
</LinearLayout>
<!-- 表头与内容分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
<!-- 数据列表 -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_storage_list"

View File

@@ -20,11 +20,17 @@
android:background="@drawable/bg_white_radius_bottom_8"
android:orientation="vertical">
<!-- 表头 -->
<!-- tab 与表头分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
<!-- 表头 (白色背景) -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/color_f5"
android:background="@color/white"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingHorizontal="10dp">
@@ -100,6 +106,12 @@
android:textStyle="bold" />
</LinearLayout>
<!-- 表头与内容分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
<!-- 数据列表 -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_warehouse_list"

View File

@@ -26,8 +26,8 @@
android:background="@drawable/bg_item"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"

View File

@@ -22,8 +22,8 @@
android:background="@drawable/bg_item"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<ImageView
android:id="@+id/iv_icon"
loadImage="@{bean.checked ? @drawable/img_plane_s : @drawable/img_plane}"

View File

@@ -30,7 +30,8 @@
android:background="@drawable/bg_item"
android:gravity="center_vertical"
android:orientation="vertical"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
@@ -266,9 +267,10 @@
<ImageView
android:id="@+id/iv_show"
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="-10dp"
android:scaleType="centerInside"
android:layout_height="20dp"
android:paddingVertical="2.5dp"
android:layout_marginTop="-20dp"
android:scaleType="center"
android:src="@mipmap/img_down" />
</androidx.appcompat.widget.LinearLayoutCompat>

View File

@@ -23,8 +23,8 @@
android:layout_marginHorizontal="15dp"
android:layout_marginVertical="6dp"
android:background="@drawable/bg_item"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<ImageView
android:id="@+id/iv_icon"
loadImage="@{bean.checked ? @drawable/img_plane_s : @drawable/img_plane}"

View File

@@ -40,7 +40,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 选中图标 (飞机图标,根据选择状态切换图片) -->
<ImageView
@@ -313,11 +314,11 @@
<!-- 展开/折叠按钮(卡片内部底部) -->
<ImageView
android:id="@+id/iv_show"
visible="@{bean.haWbList != null &amp;&amp; !bean.haWbList.empty}"
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="-10dp"
android:scaleType="centerInside"
android:layout_height="20dp"
android:paddingVertical="2.5dp"
android:layout_marginTop="-20dp"
android:scaleType="center"
android:src="@mipmap/img_down" />
</androidx.appcompat.widget.LinearLayoutCompat>
@@ -332,8 +333,21 @@
android:orientation="vertical"
android:visibility="gone">
<!-- 暂无数据提示 -->
<TextView
android:id="@+id/tv_empty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingVertical="15dp"
android:text="暂无分单数据"
android:textColor="@color/text_gray"
android:textSize="14sp"
android:visibility="gone" />
<!-- 表头 -->
<LinearLayout
android:id="@+id/ll_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="10dp"
@@ -443,6 +457,7 @@
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:id="@+id/divider_header"
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/sub_list_divider" />

View File

@@ -16,9 +16,14 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="8dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp">
<!-- 选项(单选框) -->
<ImageView
@@ -131,6 +136,12 @@
android:textColor="@color/text_normal"
android:textSize="14sp" />
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/sub_list_divider" />
</LinearLayout>
</layout>

View File

@@ -34,8 +34,8 @@
android:background="@drawable/bg_item"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 左侧选中图标 -->
<ImageView
android:id="@+id/iv_icon"

View File

@@ -28,7 +28,8 @@
android:layout_height="wrap_content"
android:background="@drawable/bg_white_radius_8"
android:orientation="horizontal"
android:padding="10dp"
android:paddingVertical="20dp"
android:paddingHorizontal="10dp"
android:gravity="center_vertical">
<!-- 选中图标(飞机图标,根据选择状态切换图片) -->

View File

@@ -43,7 +43,8 @@
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 选中图标 -->
<ImageView
@@ -316,9 +317,10 @@
<ImageView
android:id="@+id/iv_show"
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="-10dp"
android:scaleType="centerInside"
android:layout_height="20dp"
android:paddingVertical="2.5dp"
android:layout_marginTop="-20dp"
android:scaleType="center"
android:src="@mipmap/img_down" />
</LinearLayout>
@@ -408,7 +410,7 @@
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.6"
android:layout_weight="1.0"
android:gravity="center"
android:text="件数"
android:textSize="14sp"
@@ -417,7 +419,7 @@
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.6"
android:layout_weight="1.0"
android:gravity="center"
android:text="重量"
android:textSize="14sp"
@@ -426,7 +428,7 @@
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.6"
android:layout_weight="1.0"
android:gravity="center"
android:text="原始舱单"
android:textSize="14sp"
@@ -435,7 +437,7 @@
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.6"
android:layout_weight="1.0"
android:gravity="center"
android:text="理货报告"
android:textSize="14sp"
@@ -444,7 +446,7 @@
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.8"
android:layout_weight="1.0"
android:gravity="center"
android:text="品名(中)"
android:textSize="14sp"

View File

@@ -16,9 +16,14 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="8dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp">
<!-- 选项(单选框) -->
<ImageView
@@ -61,7 +66,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.6"
android:layout_weight="1.0"
android:gravity="center"
android:maxLines="1"
android:ellipsize="end"
@@ -74,7 +79,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.6"
android:layout_weight="1.0"
android:gravity="center"
android:maxLines="1"
android:ellipsize="end"
@@ -87,7 +92,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.6"
android:layout_weight="1.0"
android:gravity="center"
android:maxLines="1"
android:ellipsize="end"
@@ -100,7 +105,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.6"
android:layout_weight="1.0"
android:gravity="center"
android:maxLines="1"
android:ellipsize="end"
@@ -113,7 +118,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1.8"
android:layout_weight="1.0"
android:gravity="center"
android:maxLines="1"
android:ellipsize="end"
@@ -121,6 +126,12 @@
android:textColor="@color/text_normal"
android:textSize="14sp" />
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/sub_list_divider" />
</LinearLayout>
</layout>

View File

@@ -22,8 +22,8 @@
android:background="@drawable/bg_item"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 选中图标 -->
<ImageView
android:id="@+id/iv_icon"

View File

@@ -35,8 +35,8 @@
android:background="@drawable/bg_item"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 选中图标 -->
<ImageView
android:id="@+id/iv_icon"

View File

@@ -29,8 +29,8 @@
android:layout_height="wrap_content"
android:background="@drawable/bg_item"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 左侧图标 -->
<ImageView
android:layout_width="40dp"

View File

@@ -15,12 +15,17 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@{position % 2 == 0 ? @color/white : @color/color_f2}"
android:gravity="center_vertical"
android:minHeight="40dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
android:background="@color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="40dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
<!-- 序号 -->
<TextView
@@ -82,5 +87,13 @@
android:textColor="@android:color/black"
android:textSize="14sp" />
</LinearLayout>
<!-- 内容分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
</LinearLayout>
</layout>

View File

@@ -15,12 +15,17 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@{position % 2 == 0 ? @color/white : @color/color_f2}"
android:gravity="center_vertical"
android:minHeight="40dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
android:background="@color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="40dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
<!-- 序号 -->
<TextView
@@ -92,5 +97,13 @@
android:textColor="@android:color/black"
android:textSize="14sp" />
</LinearLayout>
<!-- 内容分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/line" />
</LinearLayout>
</layout>

View File

@@ -37,7 +37,8 @@
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp">
android:paddingVertical="20dp"
android:paddingHorizontal="10dp">
<!-- 选中图标 -->
<ImageView
@@ -304,11 +305,11 @@
<!-- 展开/折叠按钮 -->
<ImageView
android:id="@+id/iv_show"
visible="@{bean.storageUseList != null &amp;&amp; !bean.storageUseList.empty}"
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="-10dp"
android:scaleType="centerInside"
android:layout_height="20dp"
android:paddingVertical="2.5dp"
android:layout_marginTop="-20dp"
android:scaleType="center"
android:src="@mipmap/img_down" />
</LinearLayout>
@@ -323,8 +324,21 @@
android:orientation="vertical"
android:visibility="gone">
<!-- 暂无数据提示 -->
<TextView
android:id="@+id/tv_empty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingVertical="15dp"
android:text="暂无库位数据"
android:textColor="@color/text_gray"
android:textSize="14sp"
android:visibility="gone" />
<!-- 表头 -->
<LinearLayout
android:id="@+id/ll_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="10dp"
@@ -394,6 +408,7 @@
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:id="@+id/divider_header"
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/sub_list_divider" />

View File

@@ -16,9 +16,14 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingHorizontal="10dp"
android:paddingVertical="8dp">
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="8dp"
android:orientation="horizontal"
android:paddingHorizontal="10dp">
<!-- 选项(单选框) -->
<ImageView
@@ -85,6 +90,12 @@
android:textColor="@color/text_normal"
android:textSize="14sp" />
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/sub_list_divider" />
</LinearLayout>
</layout>

Some files were not shown because too many files have changed in this diff Show More