Compare commits

6 Commits

Author SHA1 Message Date
9c4588e47e refactor: 国际出港查询筛选改内嵌面板并对齐国际进港交互
- 筛选由XPopup全屏抽屉改为内嵌滑动面板,不再遮挡标题栏
- 有筛选条件时筛选按钮显示红点(hasFilter)
- 航班号锁定大写字母数字、目的港锁定大写字母
- 运单类型走字典接口(type=IO 国际出港),修正原错误的"10"
- 修复PadDataLayoutNew重置后Spinner UI未清空(国际进港同组件一并修复)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-23 12:25:30 +08:00
084832e4e9 fix: 多个国际进出港页面必填项与筛选逻辑调整
- 进港舱单新增/编辑:品名(中)改为非必填
- 国际出港开始计重:运抵件数/重量改为必填,新增运抵重量超预配3%校验
- 国际出港板箱过磅:架子车号改为非必填
- 国际进港出库列表:新增特码栏、删除提货单号、提取时间改办理时间、查询条件改特码
- 进港/出港仓库列表:清仓结果筛选传参修复并反转值(正常=1/异常=0)
- 组装ULD未维护提示文言优化,版本号升至1.8.8

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-23 11:58:14 +08:00
89989ef00a fix: ULD编辑页备注对齐最大装载容积,表单输入框统一禁止换行
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-23 10:56:28 +08:00
7b2bc00afc fix: 权限过滤trim空格,事故签证权限串调整为GNJ命名空间,返回按钮图标回退矢量图
- 首页菜单权限过滤增加 trim(),兜底后端下发权限串带首尾空格导致精确匹配失败
- 综合事故签证权限常量由 AppComprehensiveAccidentVisa 改为 AppGNJAccidentVisa
- 国内出港分拨首页返回按钮图标由栅格图 img_back_action 回退为矢量图(新增 img_back_action_old.xml 备份)
- .claude/settings.local.json 新增 sync-air-cargo 脚本执行权限

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-23 10:47:21 +08:00
c3c9a77942 style: 六个国际出港/进港列表页统一分单子列表样式并状态标签化
参照国际出港运抵列表,为出港仓库/组装/理货、进港舱单/理货/仓库
六个页面的分单子列表统一外观:子列表整块白色圆角、表头浅蓝背景
顶部圆角、表头及内容行分割线改用 app:dividerColor 修复偏紫问题;
主表与子表状态字段改为按值着色的胶囊标签(清仓正常/复磅/回填/
申报状态等)。tag_status_* 与 bg_arrive_sub_header 由 module_gjc
提升至 module_base 供进港模块共用。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-15 15:47:18 +08:00
2f875e32c9 fix: 修复运抵列表子项分割线颜色偏紫问题
MaterialDivider 忽略 android:background,实际渲染色始终来自
app:dividerColor(默认主题色),导致内容行分割线显示偏紫,
改用 app:dividerColor 显式指定为统一灰色

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-15 11:46:59 +08:00
45 changed files with 851 additions and 627 deletions

View File

@@ -149,7 +149,8 @@
"Bash(sed -n '82,115p' module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpStorageUseViewModel.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", "mcp__plugin_claude-mem_mcp-search__search",
"Read(//Users/kid/.claude/**)" "Read(//Users/kid/.claude/**)",
"Bash(bash /Users/kid/Development/Fusion/Projects/aerologic-app/.claude/skills/sync-air-cargo/scripts/sync.sh)"
], ],
"deny": [], "deny": [],
"ask": [] "ask": []

View File

@@ -719,7 +719,7 @@ XxxDialogModel(onConfirm = { refresh() }).show()
|------|------|------|------| |------|------|------|------|
| 底部 | `DIALOG_TYPE_BOTTOM` | 操作选项 | 默认类型 | | 底部 | `DIALOG_TYPE_BOTTOM` | 操作选项 | 默认类型 |
| 中间 | `DIALOG_TYPE_CENTER` | 确认框、表单输入 | `ConfirmDialogModel` | | 中间 | `DIALOG_TYPE_CENTER` | 确认框、表单输入 | `ConfirmDialogModel` |
| 抽屉 | `DIALOG_TYPE_DRAWER` | 筛选条件 | `GjcQueryFilterDialogModel` | | 抽屉 | `DIALOG_TYPE_DRAWER` | 通用右侧抽屉 | 见下方模板 |
| 全屏 | `DIALOG_TYPE_FULL` | 列表展示 | `NoticeMessageDialogModel` | | 全屏 | `DIALOG_TYPE_FULL` | 列表展示 | `NoticeMessageDialogModel` |
### 抽屉弹窗(筛选场景) ### 抽屉弹窗(筛选场景)

View File

@@ -26,8 +26,8 @@ android {
applicationId "com.lukouguoji.aerologic" applicationId "com.lukouguoji.aerologic"
minSdkVersion 24 minSdkVersion 24
targetSdkVersion 30 targetSdkVersion 30
versionCode 87 versionCode 88
versionName "1.8.7" versionName "1.8.8"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

View File

@@ -989,7 +989,8 @@ class HomeFragment : Fragment() {
*/ */
getAuthsObj()?.let { authsObj -> getAuthsObj()?.let { authsObj ->
val authArr = authsObj.getJSONArray(id) val authArr = authsObj.getJSONArray(id)
val authSet = authArr?.map { it.toString() }?.toSet() ?: emptySet() // trim兜底后端下发的权限串可能带首尾空格如 "AppDomImpManiFest "),避免精确匹配失败
val authSet = authArr?.map { it.toString().trim() }?.toSet() ?: emptySet()
return list.filter { m -> authSet.contains(m.id) } return list.filter { m -> authSet.contains(m.id) }
} }
return list return list

View File

@@ -130,7 +130,7 @@
hint='@{"请输入备注"}' hint='@{"请输入备注"}'
inputHeight="@{80}" inputHeight="@{80}"
title='@{"备注"}' title='@{"备注"}'
titleLength="@{3}" titleLength="@{7}"
type="@{DataLayoutType.INPUT}" type="@{DataLayoutType.INPUT}"
value='@={viewModel.uldBean.remark}' /> value='@={viewModel.uldBean.remark}' />

View File

@@ -300,7 +300,7 @@ interface Constant {
const val AccidentVisa = "AppAccidentVisa" //事故签证 const val AccidentVisa = "AppAccidentVisa" //事故签证
// 事故签证 // 事故签证
const val ComprehensiveAccidentVisa = "AppComprehensiveAccidentVisa" const val ComprehensiveAccidentVisa = "AppGNJAccidentVisa"
// 单证交接 // 单证交接
const val DocumentHandover = "AppDocHandoverLog" const val DocumentHandover = "AppDocHandoverLog"

View File

@@ -152,6 +152,10 @@ class PadDataLayout : FrameLayout {
spinner = view.findViewById(R.id.spinner) spinner = view.findViewById(R.id.spinner)
iv = view.findViewById(R.id.iv) iv = view.findViewById(R.id.iv)
// 默认单行,禁止换行(多行输入框通过 inputHeight 属性恢复为多行)
et.isSingleLine = true
et.maxLines = 1
et.doOnTextChanged { text, _, _, _ -> et.doOnTextChanged { text, _, _, _ ->
value = text.toString() value = text.toString()
} }

View File

@@ -198,6 +198,10 @@ class PadDataLayoutNew : FrameLayout {
spinner = view.findViewById(R.id.spinner) spinner = view.findViewById(R.id.spinner)
iv = view.findViewById(R.id.iv) iv = view.findViewById(R.id.iv)
// 默认单行,禁止换行(多行输入框通过 inputHeight 属性恢复为多行)
et.isSingleLine = true
et.maxLines = 1
et.doOnTextChanged { text, _, _, _ -> et.doOnTextChanged { text, _, _, _ ->
value = text.toString() value = text.toString()
} }
@@ -274,7 +278,8 @@ class PadDataLayoutNew : FrameLayout {
tvSpinner.text = list.find { b -> b.value == value }?.key ?: value tvSpinner.text = list.find { b -> b.value == value }?.key ?: value
if (value.isNotEmpty() && list.isNotEmpty()) { // 同步 Spinner 选中项(含 value 为空时重置到对应项,如"全部"),修复重置后 UI 不清空的问题
if (list.isNotEmpty()) {
val index = list.indexOfFirst { b -> b.value == value } val index = list.indexOfFirst { b -> b.value == value }
if (index >= 0) { if (index >= 0) {
spinner.post { spinner.post {

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M410.9,163.7v111.7c0,0 0,0 0,0.1 0,36.6 29.3,66.4 65.7,67.2 10.8,0.3 263.6,8.3 394.4,174 46.9,59.4 72.8,133.3 77.7,221 -70.3,-102.5 -185.5,-210.7 -358.5,-210.7 -42.6,0 -86.9,6.9 -131.6,20.5 -27.9,8.7 -47.7,34.2 -47.7,64.4 0,0 0,0 0,0v91.2l-321,-270.4 321,-269.1M432.9,75.5c-17.2,0 -32.6,9.3 -32.6,9.3l-356.7,299c-79.3,54.4 -4.6,94.1 -4.6,94.1l352.9,297.3c17.2,12.5 31.2,17.3 42.4,17.3 35,0 43.8,-45.9 43.8,-45.9v-134.6c34.2,-11.1 73.6,-17.6 114.5,-17.6 273.4,0 382,343.1 382,343.1 4.4,8.3 8.4,11 11.8,11 6.9,0 11.2,-11 11.2,-11 138.5,-652.2 -519.5,-661.9 -519.5,-662v-134.6c-3.6,-53 -25.6,-65.3 -45.4,-65.3z"
android:fillColor="#1c8cf5"/>
</vector>

View File

@@ -3,6 +3,9 @@ package com.lukouguoji.gjc.activity
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.widget.FrameLayout
import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.facade.annotation.Route
import com.lukouguoji.gjc.R import com.lukouguoji.gjc.R
import com.lukouguoji.gjc.databinding.ActivityGjcQueryBinding import com.lukouguoji.gjc.databinding.ActivityGjcQueryBinding
@@ -12,6 +15,8 @@ import com.lukouguoji.module_base.common.ConstantEvent
import com.lukouguoji.module_base.impl.FlowBus import com.lukouguoji.module_base.impl.FlowBus
import com.lukouguoji.module_base.impl.observe import com.lukouguoji.module_base.impl.observe
import com.lukouguoji.module_base.ktx.getLifecycleOwner import com.lukouguoji.module_base.ktx.getLifecycleOwner
import com.lukouguoji.module_base.ktx.setUpperCaseAlphanumericFilter
import com.lukouguoji.module_base.ktx.setUpperCaseLetterFilter
import com.lukouguoji.module_base.router.ARouterConstants import com.lukouguoji.module_base.router.ARouterConstants
/** /**
@@ -39,13 +44,74 @@ class GjcQueryActivity :
viewModel.refresh() viewModel.refresh()
} }
// 初始化代理列表 // 初始化代理列表 & 筛选下拉列表
viewModel.initAgentList() viewModel.initAgentList()
viewModel.initFilterLists()
// 观察筛选面板显示状态
viewModel.filterVisible.observe(this) { visible ->
if (visible) showFilterPanel() else hideFilterPanel()
}
// 航班号:大写字母+数字
binding.filterPanel.filterFlightNo.et.setUpperCaseAlphanumericFilter()
// 目的港:仅大写字母
binding.filterPanel.filterDest.et.setUpperCaseLetterFilter()
// 初始加载 // 初始加载
viewModel.refresh() viewModel.refresh()
} }
private fun showFilterPanel() {
val panel = binding.filterPanel.root
val overlay = binding.filterOverlay
val panelWidth = window.decorView.width / 3
panel.layoutParams = (panel.layoutParams as FrameLayout.LayoutParams).apply {
width = panelWidth
gravity = Gravity.END
}
// 先 INVISIBLE 完成测量,避免第一次显示时闪烁
panel.visibility = View.INVISIBLE
panel.translationX = panelWidth.toFloat()
overlay.visibility = View.VISIBLE
overlay.alpha = 0f
panel.post {
panel.visibility = View.VISIBLE
panel.animate().translationX(0f).setDuration(250).start()
overlay.animate().alpha(1f).setDuration(250).start()
}
}
private fun hideFilterPanel() {
val panel = binding.filterPanel.root
val overlay = binding.filterOverlay
if (panel.visibility != View.VISIBLE) return
panel.animate()
.translationX(panel.width.toFloat())
.setDuration(250)
.withEndAction { panel.visibility = View.GONE }
.start()
overlay.animate()
.alpha(0f)
.setDuration(250)
.withEndAction { overlay.visibility = View.GONE }
.start()
}
override fun onBackPressed() {
if (viewModel.filterVisible.value == true) {
viewModel.closeFilter()
} else {
super.onBackPressed()
}
}
companion object { companion object {
@JvmStatic @JvmStatic
fun start(context: Context) { fun start(context: Context) {

View File

@@ -1,101 +0,0 @@
package com.lukouguoji.gjc.dialog
import android.content.Context
import android.content.res.ColorStateList
import android.graphics.Color
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.lifecycle.MutableLiveData
import com.lukouguoji.gjc.R
import com.lukouguoji.gjc.databinding.DialogGjcQueryFilterBinding
import com.lukouguoji.module_base.base.BaseDialogModel
import com.lxj.xpopup.XPopup
import com.lxj.xpopup.enums.PopupPosition
import dev.DevUtils
import dev.utils.app.info.KeyValue
/**
* 国际出港查询筛选抽屉
*/
class GjcQueryFilterDialogModel(
val spCode: MutableLiveData<String>, // 特码
val flightNo: MutableLiveData<String>, // 航班号
val dest: MutableLiveData<String>, // 目的港
val awbType: MutableLiveData<String>, // 运单类型
val businessType: MutableLiveData<String>, // 业务类型
val goodsCn: MutableLiveData<String>, // 品名(中)
private val onConfirm: () -> Unit
) : BaseDialogModel<DialogGjcQueryFilterBinding>(DIALOG_TYPE_DRAWER) {
// 运单类型列表
val awbTypeList = MutableLiveData(
listOf(
KeyValue("全部", ""),
KeyValue("主单", "1"),
KeyValue("分单", "2")
)
)
// 业务类型列表
val businessTypeList = MutableLiveData(
listOf(
KeyValue("全部", ""),
KeyValue("普货", "1"),
KeyValue("特货", "2")
)
)
override fun layoutId() = R.layout.dialog_gjc_query_filter
override fun onBuild(builder: XPopup.Builder) {
super.onBuild(builder)
// 设置从右边弹出
builder.popupPosition(PopupPosition.Right)
// 设置抽屉宽度为 Activity contentView 宽度的1/3横屏长边
val activity = DevUtils.getTopActivity()
val activityWidth = activity.window.decorView.width
builder.maxWidth(activityWidth / 3)
builder.popupWidth(activityWidth / 3)
}
override fun onDialogCreated(context: Context) {
binding.model = this
binding.lifecycleOwner = context as? androidx.lifecycle.LifecycleOwner
val titleColor = Color.parseColor("#666666")
// 设置标题
binding.root.findViewById<TextView>(R.id.title_name)?.text = "筛选条件"
binding.root.findViewById<TextView>(R.id.title_name)?.setTextColor(titleColor)
binding.root.findViewById<TextView>(R.id.tool_tv_back)?.setTextColor(titleColor)
binding.root.findViewById<ImageView>(R.id.tool_iv_back)?.imageTintList = ColorStateList.valueOf(titleColor)
binding.root.findViewById<View>(R.id.toolbar)?.setBackgroundColor(Color.WHITE)
// 返回按钮
binding.root.findViewById<View>(R.id.tool_back)?.setOnClickListener {
dismiss()
}
}
/**
* 重置筛选条件
*/
fun onResetClick() {
spCode.value = ""
flightNo.value = ""
dest.value = ""
awbType.value = ""
businessType.value = ""
goodsCn.value = ""
}
/**
* 确认筛选
*/
fun onConfirmClick() {
dismiss()
onConfirm()
}
}

View File

@@ -366,8 +366,7 @@ class GjcBoxWeighingAddViewModel : BaseViewModel() {
bean.passageway = passagewayList.value?.firstOrNull{ it.value == channel.value }?.key ?: "" bean.passageway = passagewayList.value?.firstOrNull{ it.value == channel.value }?.key ?: ""
bean.passagewayId = channel.value ?: "" bean.passagewayId = channel.value ?: ""
// 验证必填字段 // 验证必填字段(架子车号改为非必填)
if (bean.carId.verifyNullOrEmpty("请输入架子车号")) return
if (bean.uld.verifyNullOrEmpty("请输入ULD编号")) return if (bean.uld.verifyNullOrEmpty("请输入ULD编号")) return
if (bean.passageway.verifyNullOrEmpty("请选择通道号")) return if (bean.passageway.verifyNullOrEmpty("请选择通道号")) return

View File

@@ -2,9 +2,9 @@ package com.lukouguoji.gjc.viewModel
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import androidx.lifecycle.MediatorLiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import com.lukouguoji.gjc.R import com.lukouguoji.gjc.R
import com.lukouguoji.gjc.dialog.GjcQueryFilterDialogModel
import com.lukouguoji.gjc.holder.GjcQueryViewHolder import com.lukouguoji.gjc.holder.GjcQueryViewHolder
import com.lukouguoji.module_base.base.BasePageViewModel import com.lukouguoji.module_base.base.BasePageViewModel
import com.lukouguoji.module_base.common.Constant import com.lukouguoji.module_base.common.Constant
@@ -14,6 +14,7 @@ import com.lukouguoji.module_base.ktx.launchLoadingCollect
import com.lukouguoji.module_base.ktx.showToast import com.lukouguoji.module_base.ktx.showToast
import com.lukouguoji.module_base.ktx.toRequestBody import com.lukouguoji.module_base.ktx.toRequestBody
import com.lukouguoji.module_base.model.ScanModel import com.lukouguoji.module_base.model.ScanModel
import com.lukouguoji.module_base.util.DictUtils
import dev.utils.app.info.KeyValue import dev.utils.app.info.KeyValue
import dev.utils.common.DateUtils import dev.utils.common.DateUtils
import com.lukouguoji.module_base.ktx.formatDate import com.lukouguoji.module_base.ktx.formatDate
@@ -52,7 +53,22 @@ class GjcQueryViewModel : BasePageViewModel() {
val totalPc = MutableLiveData("0") // 总件数 val totalPc = MutableLiveData("0") // 总件数
val totalWeight = MutableLiveData("0") // 总重量 val totalWeight = MutableLiveData("0") // 总重量
// ==================== 筛选条件(预留)==================== // ==================== 筛选面板 ====================
val filterVisible = MutableLiveData(false)
// 运单类型列表(字典接口 typeCode/awbtype=IO 国际出港)
val awbTypeList = MutableLiveData<List<KeyValue>>(emptyList())
// 业务类型列表
val businessTypeList = MutableLiveData(
listOf(
KeyValue("全部", ""),
KeyValue("普货", "1"),
KeyValue("特货", "2")
)
)
// ==================== 筛选条件 ====================
val spCode = MutableLiveData("") // 特码 val spCode = MutableLiveData("") // 特码
val flightNo = MutableLiveData("") // 航班号 val flightNo = MutableLiveData("") // 航班号
val dest = MutableLiveData("") // 目的港 val dest = MutableLiveData("") // 目的港
@@ -60,6 +76,20 @@ class GjcQueryViewModel : BasePageViewModel() {
val businessType = MutableLiveData("") // 业务类型 val businessType = MutableLiveData("") // 业务类型
val goodsCn = MutableLiveData("") // 品名(中) val goodsCn = MutableLiveData("") // 品名(中)
// 是否有筛选条件(任意一个非空则为 true用于筛选按钮红点
val hasFilter: MediatorLiveData<Boolean> = MediatorLiveData<Boolean>().apply {
val update = { _: Any? ->
value = listOf(spCode, flightNo, dest, awbType, businessType, goodsCn)
.any { !it.value.isNullOrEmpty() }
}
addSource(spCode, update)
addSource(flightNo, update)
addSource(dest, update)
addSource(awbType, update)
addSource(businessType, update)
addSource(goodsCn, update)
}
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// 方法区 // 方法区
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@@ -79,19 +109,50 @@ class GjcQueryViewModel : BasePageViewModel() {
} }
/** /**
* 筛选按钮点击 * 筛选按钮点击 - 打开筛选面板
*/ */
fun filterClick() { fun filterClick() {
val filterDialog = GjcQueryFilterDialogModel( filterVisible.value = true
spCode = spCode, }
flightNo = flightNo,
dest = dest, /**
awbType = awbType, * 关闭筛选面板
businessType = businessType, */
goodsCn = goodsCn, fun closeFilter() {
onConfirm = { refresh() } filterVisible.value = false
) }
filterDialog.show()
/**
* 重置筛选条件
*/
fun resetFilter() {
spCode.value = ""
flightNo.value = ""
dest.value = ""
awbType.value = ""
businessType.value = ""
goodsCn.value = ""
}
/**
* 确认筛选 - 关闭面板并刷新
*/
fun confirmFilter() {
filterVisible.value = false
refresh()
}
/**
* 初始化筛选下拉列表运单类型从字典接口获取type=IO 国际出港)
*/
fun initFilterLists() {
DictUtils.getWaybillTypeList(
type = Constant.businessType.IO,
addAll = true,
checkedValue = awbType.value
) {
awbTypeList.postValue(it)
}
} }
/** /**
@@ -110,7 +171,7 @@ class GjcQueryViewModel : BasePageViewModel() {
"wbNo" to waybillNo.value!!.ifEmpty { null }, "wbNo" to waybillNo.value!!.ifEmpty { null },
// 筛选条件(暂未使用) // 筛选条件(暂未使用)
"spCode" to spCode.value!!.ifEmpty { null }, "spCode" to spCode.value!!.ifEmpty { null },
"flightNo" to flightNo.value!!.ifEmpty { null }, "fno" to flightNo.value!!.ifEmpty { null },
"dest" to dest.value!!.ifEmpty { null }, "dest" to dest.value!!.ifEmpty { null },
"awbType" to awbType.value!!.ifEmpty { null }, "awbType" to awbType.value!!.ifEmpty { null },
"businessType" to businessType.value!!.ifEmpty { null }, "businessType" to businessType.value!!.ifEmpty { null },
@@ -126,7 +187,7 @@ class GjcQueryViewModel : BasePageViewModel() {
"wbNo" to waybillNo.value!!.ifEmpty { null }, "wbNo" to waybillNo.value!!.ifEmpty { null },
// 筛选条件 // 筛选条件
"spCode" to spCode.value!!.ifEmpty { null }, "spCode" to spCode.value!!.ifEmpty { null },
"flightNo" to flightNo.value!!.ifEmpty { null }, "fno" to flightNo.value!!.ifEmpty { null },
"dest" to dest.value!!.ifEmpty { null }, "dest" to dest.value!!.ifEmpty { null },
"awbType" to awbType.value!!.ifEmpty { null }, "awbType" to awbType.value!!.ifEmpty { null },
"businessType" to businessType.value!!.ifEmpty { null }, "businessType" to businessType.value!!.ifEmpty { null },

View File

@@ -355,7 +355,11 @@ class GjcWeighingStartViewModel : BaseViewModel() {
if (bean.fno.verifyNullOrEmpty("请输入航班号")) return if (bean.fno.verifyNullOrEmpty("请输入航班号")) return
if (channel.value.verifyNullOrEmpty("请选择通道号")) return if (channel.value.verifyNullOrEmpty("请选择通道号")) return
// 2. 校验件数: 运抵件数 + 实时件数 不能大于 预配件数 // 2. 校验运抵件数、运抵重量必填
if (arrivePc.value.verifyNullOrEmpty("请输入运抵件数")) return
if (arriveWeight.value.verifyNullOrEmpty("请输入运抵重量")) return
// 3. 校验件数: 运抵件数 + 实时件数 不能大于 预配件数
val realTimePcVal = realTimePc.value?.toLongOrNull() ?: 0L val realTimePcVal = realTimePc.value?.toLongOrNull() ?: 0L
val arrivePcVal = arrivePc.value?.toLongOrNull() ?: bean.arrivePc ?: 0L val arrivePcVal = arrivePc.value?.toLongOrNull() ?: bean.arrivePc ?: 0L
val preallocatedPc = bean.pc ?: 0L val preallocatedPc = bean.pc ?: 0L
@@ -365,7 +369,17 @@ class GjcWeighingStartViewModel : BaseViewModel() {
return return
} }
// 3. 收集当前表单数据,更新到 bean // 4. 校验重量: 运抵重量 + 实时重量 不能超过预配重量的3%
val realTimeWeightVal = realTimeWeight.value?.toDoubleOrNull() ?: 0.0
val arriveWeightCheckVal = arriveWeight.value?.toDoubleOrNull() ?: 0.0
val preallocatedWeight = bean.weight ?: 0.0
if (arriveWeightCheckVal + realTimeWeightVal > preallocatedWeight * 1.03) {
showToast("运抵重量 + 实时重量不能超过预配重量的3%")
return
}
// 5. 收集当前表单数据,更新到 bean
bean.apply { bean.apply {
// 更新运抵数据(如果用户已编辑) // 更新运抵数据(如果用户已编辑)
arrivePc = this@GjcWeighingStartViewModel.arrivePc.value?.toLongOrNull() ?: arrivePc arrivePc = this@GjcWeighingStartViewModel.arrivePc.value?.toLongOrNull() ?: arrivePc
@@ -429,6 +443,10 @@ class GjcWeighingStartViewModel : BaseViewModel() {
if (bean.fno.verifyNullOrEmpty("请输入航班号")) return if (bean.fno.verifyNullOrEmpty("请输入航班号")) return
if (channel.value.verifyNullOrEmpty("请选择通道号")) return if (channel.value.verifyNullOrEmpty("请选择通道号")) return
// 校验运抵件数、运抵重量必填
if (arrivePc.value.verifyNullOrEmpty("请输入运抵件数")) return
if (arriveWeight.value.verifyNullOrEmpty("请输入运抵重量")) return
// 校验件数: 运抵件数 + 实时件数 不能大于 预配件数 // 校验件数: 运抵件数 + 实时件数 不能大于 预配件数
val realTimePcVal = realTimePc.value?.toLongOrNull() ?: 0L val realTimePcVal = realTimePc.value?.toLongOrNull() ?: 0L
val arrivePcVal = arrivePc.value?.toLongOrNull() ?: bean.arrivePc ?: 0L val arrivePcVal = arrivePc.value?.toLongOrNull() ?: bean.arrivePc ?: 0L
@@ -439,6 +457,16 @@ class GjcWeighingStartViewModel : BaseViewModel() {
return return
} }
// 校验重量: 运抵重量 + 实时重量 不能超过预配重量的3%
val realTimeWeightVal = realTimeWeight.value?.toDoubleOrNull() ?: 0.0
val arriveWeightCheckVal = arriveWeight.value?.toDoubleOrNull() ?: 0.0
val preallocatedWeight = bean.weight ?: 0.0
if (arriveWeightCheckVal + realTimeWeightVal > preallocatedWeight * 1.03) {
showToast("运抵重量 + 实时重量不能超过预配重量的3%")
return
}
// 从编辑字段获取数值 // 从编辑字段获取数值
val arriveWeightVal = arriveWeight.value?.toDoubleOrNull() ?: bean.arriveWeight val arriveWeightVal = arriveWeight.value?.toDoubleOrNull() ?: bean.arriveWeight
val arriveVolumeVal = arriveVolume.value?.toDoubleOrNull() ?: bean.arriveVolume val arriveVolumeVal = arriveVolume.value?.toDoubleOrNull() ?: bean.arriveVolume

View File

@@ -449,7 +449,7 @@ class IntExpAssembleStartViewModel : BaseViewModel() {
assembleInfoList.value = mutableListOf() assembleInfoList.value = mutableListOf()
} }
} else { } else {
showToast("未查询到该ULD信息") showToast("ULD 编号未维护,请先进行维护!")
} }
} }
onFailed = { code, message -> onFailed = { code, message ->

View File

@@ -62,8 +62,8 @@ class IntExpStorageUseViewModel : BasePageViewModel() {
// 初始化清仓综合结果列表(根据实际需求配置) // 初始化清仓综合结果列表(根据实际需求配置)
clearResultList.value = listOf( clearResultList.value = listOf(
KeyValue("全部", ""), KeyValue("全部", ""),
KeyValue("正常", "0"), KeyValue("正常", "1"),
KeyValue("异常", "1") KeyValue("异常", "0")
) )
} }
@@ -306,7 +306,8 @@ class IntExpStorageUseViewModel : BasePageViewModel() {
"fdate" to flightDate.value?.ifEmpty { null }, "fdate" to flightDate.value?.ifEmpty { null },
"fno" to flightNo.value?.ifEmpty { null }, "fno" to flightNo.value?.ifEmpty { null },
"wbNo" to wbNo.value?.ifEmpty { null }, "wbNo" to wbNo.value?.ifEmpty { null },
"location" to location.value?.ifEmpty { null } "location" to location.value?.ifEmpty { null },
"clearNormal" to clearResult.value?.ifEmpty { null }
) )
// 列表参数 (含分页) // 列表参数 (含分页)

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#F44336" />
</shape>

View File

@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" />
<import type="com.lukouguoji.module_base.ui.weight.search.layout.SearchLayoutType" /> <import type="com.lukouguoji.module_base.ui.weight.search.layout.SearchLayoutType" />
<variable <variable
@@ -18,9 +18,21 @@
android:background="@color/color_f2" android:background="@color/color_f2"
android:orientation="vertical"> android:orientation="vertical">
<!-- 标题栏 --> <!-- 标题栏(始终在最上层,不被遮挡) -->
<include layout="@layout/title_tool_bar" /> <include layout="@layout/title_tool_bar" />
<!-- 内容区域FrameLayout 包裹,筛选面板和遮罩只在此区域内) -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<!-- 原有内容 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@@ -104,15 +116,28 @@
android:padding="2dp" android:padding="2dp"
android:src="@drawable/img_search" /> android:src="@drawable/img_search" />
<!-- 筛选按钮 --> <!-- 筛选按钮(含红点) -->
<ImageView <FrameLayout
android:layout_width="36dp" android:layout_width="36dp"
android:layout_height="36dp" android:layout_height="36dp"
android:layout_marginLeft="16dp" android:layout_marginLeft="16dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:onClick="@{()-> viewModel.filterClick()}" android:onClick="@{()-> viewModel.filterClick()}"
android:padding="5dp" android:padding="5dp"
android:src="@drawable/img_filter" /> android:src="@drawable/img_filter" />
<View
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_gravity="top|end"
android:background="@drawable/bg_red_dot"
android:visibility="@{viewModel.hasFilter ? View.VISIBLE : View.GONE}" />
</FrameLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -184,4 +209,29 @@
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<!-- 遮罩层(只覆盖内容区域) -->
<View
android:id="@+id/filter_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000"
android:clickable="true"
android:focusable="true"
android:onClick="@{()-> viewModel.closeFilter()}"
android:visibility="gone" />
<!-- 筛选面板(从右侧滑入,只在内容区域内) -->
<include
android:id="@+id/filter_panel"
layout="@layout/layout_gjc_query_filter"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"
android:visibility="gone"
app:viewModel="@{viewModel}" />
</FrameLayout>
</LinearLayout>
</layout> </layout>

View File

@@ -322,6 +322,7 @@
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew <com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
hint='@{"请输入运抵件数"}' hint='@{"请输入运抵件数"}'
required="@{true}"
title='@{"运抵件数"}' title='@{"运抵件数"}'
titleLength="@{5}" titleLength="@{5}"
type="@{DataLayoutType.INPUT}" type="@{DataLayoutType.INPUT}"
@@ -332,6 +333,7 @@
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew <com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
hint='@{"请输入运抵重量"}' hint='@{"请输入运抵重量"}'
required="@{true}"
title='@{"运抵重量"}' title='@{"运抵重量"}'
titleLength="@{5}" titleLength="@{5}"
type="@{DataLayoutType.INPUT}" type="@{DataLayoutType.INPUT}"

View File

@@ -145,7 +145,7 @@
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" /> app:dividerColor="@color/sub_list_divider" />
</LinearLayout> </LinearLayout>

View File

@@ -163,9 +163,12 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@{bean.wtDate != null &amp;&amp; !bean.wtDate.isEmpty() ? @drawable/tag_status_green : @drawable/tag_status_gray}"
android:paddingHorizontal="8dp"
android:paddingVertical="2dp"
android:text="@{bean.wtDate != null &amp;&amp; !bean.wtDate.isEmpty() ? `已复磅` : `未复磅`}" android:text="@{bean.wtDate != null &amp;&amp; !bean.wtDate.isEmpty() ? `已复磅` : `未复磅`}"
android:textColor="@{bean.wtDate != null &amp;&amp; !bean.wtDate.isEmpty() ? @color/text_green : @color/text_normal}" android:textColor="@{bean.wtDate != null &amp;&amp; !bean.wtDate.isEmpty() ? @color/text_green : @color/text_gray}"
android:textSize="15sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@@ -188,9 +191,13 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@{`2`.equals(bean.fillWeightFlag) ? @drawable/tag_status_green : (`1`.equals(bean.fillWeightFlag) ? @drawable/tag_status_orange : @drawable/tag_status_gray)}"
android:paddingHorizontal="8dp"
android:paddingVertical="2dp"
android:text="@{bean.fillWeightFlagText}" android:text="@{bean.fillWeightFlagText}"
android:textColor="@{bean.isFillWeightGreen ? @color/text_green : @color/text_normal}" android:textColor="@{`2`.equals(bean.fillWeightFlag) ? @color/text_green : (`1`.equals(bean.fillWeightFlag) ? @color/text_orange : @color/text_gray)}"
android:textSize="15sp" /> android:textSize="14sp"
android:visibility="@{bean.fillWeightFlagText != null &amp;&amp; !bean.fillWeightFlagText.isEmpty() ? View.VISIBLE : View.GONE}" />
</LinearLayout> </LinearLayout>
@@ -377,8 +384,8 @@
visible="@{bean.showMore}" visible="@{bean.showMore}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="10dp"
android:background="#e3f6e0" android:background="@drawable/bg_white_radius_8"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
@@ -416,14 +423,15 @@
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" /> android:visibility="gone" />
<!-- 表头 (有数据时显示) --> <!-- 表头 (有数据时显示,浅蓝色背景,顶部圆角同卡片) -->
<LinearLayout <LinearLayout
visible="@{bean.hasWaybillDetails &amp;&amp; !bean.isLoading.get()}" visible="@{bean.hasWaybillDetails &amp;&amp; !bean.isLoading.get()}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginVertical="10dp" android:background="@drawable/bg_arrive_sub_header"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="10dp" android:paddingHorizontal="10dp"
android:paddingVertical="10dp"
android:visibility="gone"> android:visibility="gone">
<TextView <TextView
@@ -512,7 +520,7 @@
visible="@{bean.hasWaybillDetails &amp;&amp; !bean.isLoading.get()}" visible="@{bean.hasWaybillDetails &amp;&amp; !bean.isLoading.get()}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" app:dividerColor="@color/sub_list_divider"
android:visibility="gone" /> android:visibility="gone" />
<!-- 子列表 RecyclerView (有数据时显示) --> <!-- 子列表 RecyclerView (有数据时显示) -->

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>
@@ -110,7 +111,7 @@
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" /> app:dividerColor="@color/sub_list_divider" />
</LinearLayout> </LinearLayout>
</layout> </layout>

View File

@@ -246,8 +246,13 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@{`1`.equals(bean.clearNormal) ? @drawable/tag_status_green : (`0`.equals(bean.clearNormal) ? @drawable/tag_status_orange : @drawable/tag_status_gray)}"
android:paddingHorizontal="8dp"
android:paddingVertical="2dp"
android:text="@{bean.clearNormalText}" android:text="@{bean.clearNormalText}"
android:textSize="15sp" /> android:textColor="@{`1`.equals(bean.clearNormal) ? @color/text_green : (`0`.equals(bean.clearNormal) ? @color/text_orange : @color/text_gray)}"
android:textSize="14sp"
android:visibility="@{bean.clearNormalText != null &amp;&amp; !bean.clearNormalText.isEmpty() ? View.VISIBLE : View.GONE}" />
</LinearLayout> </LinearLayout>
@@ -319,18 +324,19 @@
visible="@{bean.showMore}" visible="@{bean.showMore}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="10dp"
android:background="#e3f6e0" android:background="@drawable/bg_white_radius_8"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
<!-- 表头 --> <!-- 表头(浅蓝色背景,顶部圆角同卡片) -->
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginVertical="10dp" android:background="@drawable/bg_arrive_sub_header"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="10dp"> android:paddingHorizontal="10dp"
android:paddingVertical="10dp">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
@@ -397,7 +403,7 @@
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" /> app:dividerColor="@color/sub_list_divider" />
<!-- 子列表 RecyclerView --> <!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:loadImage="http://schemas.android.com/tools"> xmlns:loadImage="http://schemas.android.com/tools">
<data> <data>
@@ -95,7 +96,7 @@
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" /> app:dividerColor="@color/sub_list_divider" />
</LinearLayout> </LinearLayout>
</layout> </layout>

View File

@@ -25,7 +25,7 @@
<!-- 状态 (weight=1) --> <!-- 状态 (weight=1) -->
<LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.8" android:orientation="horizontal"> <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" 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.declareStatus}" android:textColor="@{`01`.equals(bean.declareStatus) ? @color/text_green : (`W`.equals(bean.declareStatus) ? @color/text_blue : @color/text_normal)}" android:textSize="15sp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@{`01`.equals(bean.declareStatus) ? @drawable/tag_status_green : (`W`.equals(bean.declareStatus) ? @drawable/tag_status_blue : @drawable/tag_status_gray)}" android:paddingHorizontal="8dp" android:paddingVertical="2dp" android:text="@{bean.declareStatus}" android:textColor="@{`01`.equals(bean.declareStatus) ? @color/text_green : (`W`.equals(bean.declareStatus) ? @color/colorPrimary : @color/text_gray)}" android:textSize="14sp" android:visibility="@{bean.declareStatus != null &amp;&amp; !bean.declareStatus.isEmpty() ? View.VISIBLE : View.GONE}"/>
</LinearLayout> </LinearLayout>
<!-- 代理 (weight=1) --> <!-- 代理 (weight=1) -->
<LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.8" android:orientation="horizontal"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.8" android:orientation="horizontal">
@@ -84,7 +84,7 @@
android:src="@mipmap/img_down" /> android:src="@mipmap/img_down" />
</LinearLayout> </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"> <LinearLayout visible="@{bean.showMore}" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/bg_white_radius_8" android:orientation="vertical" android:visibility="gone">
<!-- 暂无数据提示 --> <!-- 暂无数据提示 -->
<TextView <TextView
android:id="@+id/tv_empty" android:id="@+id/tv_empty"
@@ -97,7 +97,7 @@
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" /> android:visibility="gone" />
<!-- 表头 --> <!-- 表头 -->
<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"> <LinearLayout android:id="@+id/ll_header" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bg_arrive_sub_header" android:paddingVertical="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="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="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"/> <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"/>
@@ -113,7 +113,7 @@
android:id="@+id/divider_header" android:id="@+id/divider_header"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider"/> app:dividerColor="@color/sub_list_divider"/>
<!-- 子列表 RecyclerView --> <!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_sub" android:layout_width="match_parent" android:layout_height="wrap_content" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_sub" android:layout_width="match_parent" android:layout_height="wrap_content" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
</LinearLayout> </LinearLayout>

View File

@@ -5,6 +5,8 @@
<data> <data>
<import type="android.view.View" />
<variable <variable
name="bean" name="bean"
type="com.lukouguoji.module_base.bean.GjcHaWb" /> type="com.lukouguoji.module_base.bean.GjcHaWb" />
@@ -67,15 +69,26 @@
android:textColor="@color/text_normal" android:textColor="@color/text_normal"
android:textSize="14sp" /> android:textSize="14sp" />
<!-- 申报状态 --> <!-- 申报状态Tag 形式,根据语义着色) -->
<TextView <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@{`未申报`.equals(bean.tallyStatus) ? @drawable/tag_status_gray : @drawable/tag_status_green}"
android:paddingHorizontal="8dp"
android:paddingVertical="2dp"
android:text="@{bean.tallyStatus ?? ``}" android:text="@{bean.tallyStatus ?? ``}"
android:textColor="@color/text_normal" android:textColor="@{`未申报`.equals(bean.tallyStatus) ? @color/text_gray : @color/text_green}"
android:textSize="14sp" /> android:textSize="13sp"
android:visibility="@{bean.tallyStatus != null &amp;&amp; !bean.tallyStatus.isEmpty() ? View.VISIBLE : View.GONE}" />
</LinearLayout>
<!-- 品名(中) --> <!-- 品名(中) -->
<TextView <TextView
@@ -132,7 +145,7 @@
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" /> app:dividerColor="@color/sub_list_divider" />
</LinearLayout> </LinearLayout>

View File

@@ -2,32 +2,47 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <layout xmlns:android="http://schemas.android.com/apk/res/android">
<data> <data>
<import type="com.lukouguoji.module_base.ui.weight.data.layout.DataLayoutType" /> <import type="com.lukouguoji.module_base.ui.weight.data.layout.DataLayoutType" />
<variable <variable
name="model" name="viewModel"
type="com.lukouguoji.gjc.dialog.GjcQueryFilterDialogModel" /> type="com.lukouguoji.gjc.viewModel.GjcQueryViewModel" />
</data> </data>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/white" android:background="@color/white"
android:elevation="8dp"
android:orientation="vertical"> android:orientation="vertical">
<!-- 状态栏占位 --> <!-- 筛选标题栏 -->
<View <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="25dp" android:layout_height="50dp"
android:background="@color/white" /> android:gravity="center_vertical"
android:paddingHorizontal="15dp">
<!-- 标题栏 --> <ImageView
<include layout="@layout/title_tool_bar" /> android:layout_width="15dp"
android:layout_height="15dp"
android:onClick="@{()-> viewModel.closeFilter()}"
android:src="@mipmap/left_icon"
android:tint="#666666" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="筛选条件"
android:textColor="#666666"
android:textSize="16sp" />
</LinearLayout>
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp"/> android:layout_height="1dp" />
<!-- 筛选条件区域 --> <!-- 筛选条件区域 -->
<ScrollView <ScrollView
@@ -43,71 +58,73 @@
<!-- 特码 --> <!-- 特码 -->
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew <com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请输入特码"}' hint='@{"请输入特码"}'
title='@{"特码"}' title='@{"特码"}'
titleLength="@{4}" titleLength="@{4}"
type="@{DataLayoutType.INPUT}" type="@{DataLayoutType.INPUT}"
value='@={model.spCode}' value='@={viewModel.spCode}' />
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" />
<!-- 航班号 --> <!-- 航班号 -->
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew <com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:id="@+id/filter_flight_no"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请输入航班号"}' hint='@{"请输入航班号"}'
title='@{"航班号"}' title='@{"航班号"}'
titleLength="@{4}" titleLength="@{4}"
type="@{DataLayoutType.INPUT}" type="@{DataLayoutType.INPUT}"
value='@={model.flightNo}' value='@={viewModel.flightNo}' />
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" />
<!-- 目的港 --> <!-- 目的港 -->
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew <com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:id="@+id/filter_dest"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请输入目的港"}' hint='@{"请输入目的港"}'
title='@{"目的港"}' title='@{"目的港"}'
titleLength="@{4}" titleLength="@{4}"
type="@{DataLayoutType.INPUT}" type="@{DataLayoutType.INPUT}"
value='@={model.dest}' value='@={viewModel.dest}' />
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" />
<!-- 运单类型 --> <!-- 运单类型 -->
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew <com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请选择运单类型"}' hint='@{"请选择运单类型"}'
list="@{model.awbTypeList}" list="@{viewModel.awbTypeList}"
title='@{"运单类型"}' title='@{"运单类型"}'
titleLength="@{4}" titleLength="@{4}"
type="@{DataLayoutType.SPINNER}" type="@{DataLayoutType.SPINNER}"
value='@={model.awbType}' value='@={viewModel.awbType}' />
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" />
<!-- 业务类型 --> <!-- 业务类型 -->
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew <com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请选择业务类型"}' hint='@{"请选择业务类型"}'
list="@{model.businessTypeList}" list="@{viewModel.businessTypeList}"
title='@{"业务类型"}' title='@{"业务类型"}'
titleLength="@{4}" titleLength="@{4}"
type="@{DataLayoutType.SPINNER}" type="@{DataLayoutType.SPINNER}"
value='@={model.businessType}' value='@={viewModel.businessType}' />
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" />
<!-- 品名(中) --> <!-- 品名(中) -->
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew <com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
hint='@{"请输入品名"}' hint='@{"请输入品名"}'
title='@{"品名(中)"}' title='@{"品名(中)"}'
titleLength="@{4}" titleLength="@{4}"
type="@{DataLayoutType.INPUT}" type="@{DataLayoutType.INPUT}"
value='@={model.goodsCn}' value='@={viewModel.goodsCn}' />
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" />
<!-- 底部按钮区域 --> <!-- 底部按钮区域 -->
<LinearLayout <LinearLayout
@@ -120,7 +137,6 @@
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="15dp"> android:paddingHorizontal="15dp">
<!-- 重置按钮 -->
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="40dp" android:layout_height="40dp"
@@ -128,19 +144,18 @@
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/bg_primary_radius_4" android:background="@drawable/bg_primary_radius_4"
android:gravity="center" android:gravity="center"
android:onClick="@{()-> model.onResetClick()}" android:onClick="@{()-> viewModel.resetFilter()}"
android:text="重置" android:text="重置"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="16sp" /> android:textSize="16sp" />
<!-- 搜索按钮 -->
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="40dp" android:layout_height="40dp"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/bg_primary_radius_4" android:background="@drawable/bg_primary_radius_4"
android:gravity="center" android:gravity="center"
android:onClick="@{()-> model.onConfirmClick()}" android:onClick="@{()-> viewModel.confirmFilter()}"
android:text="搜索" android:text="搜索"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="16sp" /> android:textSize="16sp" />
@@ -149,10 +164,8 @@
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
</LinearLayout> </LinearLayout>
</layout> </layout>

View File

@@ -368,7 +368,6 @@ class GjjManifestAddViewModel : BaseViewModel() {
|| actualNum.value.verifyNullOrEmpty("请输入实到件数") || actualNum.value.verifyNullOrEmpty("请输入实到件数")
|| actualWeight.value.verifyNullOrEmpty("请输入实到重量") || actualWeight.value.verifyNullOrEmpty("请输入实到重量")
|| billingWeight.value.verifyNullOrEmpty("请输入计费重量") || billingWeight.value.verifyNullOrEmpty("请输入计费重量")
|| goodsNameCn.value.verifyNullOrEmpty("请输入品名(中)")
|| goodsNameEn.value.verifyNullOrEmpty("请输入品名(英)") || goodsNameEn.value.verifyNullOrEmpty("请输入品名(英)")
|| waybillType.value.verifyNullOrEmpty("请选择运单类型") || waybillType.value.verifyNullOrEmpty("请选择运单类型")
|| businessType.value.verifyNullOrEmpty("请选择业务类型") || businessType.value.verifyNullOrEmpty("请选择业务类型")

View File

@@ -34,7 +34,7 @@ class IntImpPickUpDLVViewModel : BasePageViewModel() {
val paymentDateEnd = MutableLiveData("") // 缴费日期止 val paymentDateEnd = MutableLiveData("") // 缴费日期止
val agentCode = MutableLiveData("") // 代理人 val agentCode = MutableLiveData("") // 代理人
val wbNo = MutableLiveData("") // 运单号 val wbNo = MutableLiveData("") // 运单号
val pickUpNo = MutableLiveData("") // 提货单号 val spCode = MutableLiveData("") // 特码
// ========== 下拉列表数据源 ========== // ========== 下拉列表数据源 ==========
val agentList = MutableLiveData(listOf(KeyValue("全部", ""))) val agentList = MutableLiveData(listOf(KeyValue("全部", "")))
@@ -90,9 +90,9 @@ class IntImpPickUpDLVViewModel : BasePageViewModel() {
} }
/** /**
* 扫码提货单号 * 扫码特码
*/ */
fun scanPickUpNo() { fun scanSpCode() {
ScanModel.startScan(getTopActivity(), Constant.RequestCode.gnj_chu_ku_list) ScanModel.startScan(getTopActivity(), Constant.RequestCode.gnj_chu_ku_list)
} }
@@ -144,7 +144,7 @@ class IntImpPickUpDLVViewModel : BasePageViewModel() {
"endDate" to paymentDateEnd.value?.ifEmpty { null }, "endDate" to paymentDateEnd.value?.ifEmpty { null },
"agentCode" to agentCode.value?.ifEmpty { null }, "agentCode" to agentCode.value?.ifEmpty { null },
"no" to wbNo.value?.ifEmpty { null }, "no" to wbNo.value?.ifEmpty { null },
"pkId" to pickUpNo.value?.ifEmpty { null } "spCode" to spCode.value?.ifEmpty { null }
) )
val listParams = (filterParams + mapOf( val listParams = (filterParams + mapOf(
@@ -182,7 +182,7 @@ class IntImpPickUpDLVViewModel : BasePageViewModel() {
refresh() refresh()
} }
Constant.RequestCode.gnj_chu_ku_list -> { Constant.RequestCode.gnj_chu_ku_list -> {
pickUpNo.value = data.getStringExtra(Constant.Result.CODED_CONTENT) spCode.value = data.getStringExtra(Constant.Result.CODED_CONTENT)
refresh() refresh()
} }
} }

View File

@@ -57,8 +57,8 @@ class IntImpStorageUseViewModel : BasePageViewModel() {
init { init {
clearResultList.value = listOf( clearResultList.value = listOf(
KeyValue("全部", ""), KeyValue("全部", ""),
KeyValue("正常", "0"), KeyValue("正常", "1"),
KeyValue("异常", "1") KeyValue("异常", "0")
) )
} }

View File

@@ -266,7 +266,7 @@
<com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew <com.lukouguoji.module_base.ui.weight.data.layout.PadDataLayoutNew
hint='@{"请输入品名(中)"}' hint='@{"请输入品名(中)"}'
required="@{true}" required="@{false}"
title='@{"品名(中)"}' title='@{"品名(中)"}'
titleLength="@{5}" titleLength="@{5}"
type="@{DataLayoutType.INPUT}" type="@{DataLayoutType.INPUT}"

View File

@@ -76,13 +76,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" /> android:layout_weight="1" />
<!-- 提货单号 --> <!-- 特码 -->
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout <com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
hint='@{"请输入提货单号"}' hint='@{"请输入特码"}'
icon="@{@drawable/img_scan}" icon="@{@drawable/img_scan}"
setOnIconClickListener="@{(v)-> viewModel.scanPickUpNo()}" setOnIconClickListener="@{(v)-> viewModel.scanSpCode()}"
type="@{SearchLayoutType.INPUT}" type="@{SearchLayoutType.INPUT}"
value="@={viewModel.pickUpNo}" value="@={viewModel.spCode}"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" /> android:layout_weight="1" />

View File

@@ -349,13 +349,13 @@
</com.mcxtzhang.swipemenulib.SwipeMenuLayout> </com.mcxtzhang.swipemenulib.SwipeMenuLayout>
<!-- 分单子列表容器(淡绿色背景 --> <!-- 分单子列表容器(白色圆角卡片 -->
<LinearLayout <LinearLayout
visible="@{bean.showMore}" visible="@{bean.showMore}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="10dp"
android:background="#e3f6e0" android:background="@drawable/bg_white_radius_8"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
@@ -371,14 +371,15 @@
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" /> android:visibility="gone" />
<!-- 表头 --> <!-- 表头(浅蓝色背景,顶部圆角同卡片) -->
<LinearLayout <LinearLayout
android:id="@+id/ll_header" android:id="@+id/ll_header"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginVertical="10dp" android:background="@drawable/bg_arrive_sub_header"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="10dp"> android:paddingHorizontal="10dp"
android:paddingVertical="10dp">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
@@ -458,7 +459,7 @@
android:id="@+id/divider_header" android:id="@+id/divider_header"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" /> app:dividerColor="@color/sub_list_divider" />
<!-- 子列表 RecyclerView --> <!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView

View File

@@ -1,9 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:loadImage="http://schemas.android.com/tools"> xmlns:loadImage="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" />
<variable <variable
name="bean" name="bean"
type="com.lukouguoji.module_base.bean.GjjHaWb" /> type="com.lukouguoji.module_base.bean.GjjHaWb" />
@@ -87,31 +90,53 @@
android:textColor="@color/text_normal" android:textColor="@color/text_normal"
android:textSize="14sp" /> android:textSize="14sp" />
<!-- 原始舱单 --> <!-- 原始舱单Tag 形式,根据语义着色) -->
<TextView <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_weight="1.0" android:layout_weight="1.0"
android:gravity="center" android:gravity="center"
android:maxLines="1" android:orientation="horizontal">
android:ellipsize="end"
android:text="@{bean.mftStatus ?? ``}"
android:textColor="@color/colorPrimary"
android:textSize="14sp" />
<!-- 理货报告 -->
<TextView <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@{`01`.equals(bean.mftStatus) ? @drawable/tag_status_green : (`W`.equals(bean.mftStatus) ? @drawable/tag_status_blue : @drawable/tag_status_gray)}"
android:ellipsize="end"
android:maxLines="1"
android:paddingHorizontal="8dp"
android:paddingVertical="2dp"
android:text="@{bean.mftStatus ?? ``}"
android:textColor="@{`01`.equals(bean.mftStatus) ? @color/text_green : (`W`.equals(bean.mftStatus) ? @color/colorPrimary : @color/text_gray)}"
android:textSize="13sp"
android:visibility="@{bean.mftStatus != null &amp;&amp; !bean.mftStatus.isEmpty() ? View.VISIBLE : View.GONE}" />
</LinearLayout>
<!-- 理货报告Tag 形式,根据语义着色) -->
<LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_weight="1.0" android:layout_weight="1.0"
android:gravity="center" android:gravity="center"
android:maxLines="1" android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@{`01`.equals(bean.tallyStatus) ? @drawable/tag_status_green : (`W`.equals(bean.tallyStatus) ? @drawable/tag_status_blue : @drawable/tag_status_gray)}"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1"
android:paddingHorizontal="8dp"
android:paddingVertical="2dp"
android:text="@{bean.tallyStatus ?? ``}" android:text="@{bean.tallyStatus ?? ``}"
android:textColor="@color/colorPrimary" android:textColor="@{`01`.equals(bean.tallyStatus) ? @color/text_green : (`W`.equals(bean.tallyStatus) ? @color/colorPrimary : @color/text_gray)}"
android:textSize="14sp" /> android:textSize="13sp"
android:visibility="@{bean.tallyStatus != null &amp;&amp; !bean.tallyStatus.isEmpty() ? View.VISIBLE : View.GONE}" />
</LinearLayout>
<!-- 品名(中) --> <!-- 品名(中) -->
<TextView <TextView
@@ -131,7 +156,7 @@
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" /> app:dividerColor="@color/sub_list_divider" />
</LinearLayout> </LinearLayout>
</layout> </layout>

View File

@@ -160,13 +160,13 @@
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
<!-- 第二行:提货单号、库位、提取时间、品名(中) --> <!-- 第二行:特码、库位、办理时间、品名(中) -->
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"> android:layout_marginTop="10dp">
<!-- 提货单号 --> <!-- 特码 -->
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@@ -177,13 +177,13 @@
completeSpace="@{5}" completeSpace="@{5}"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="提货单号" android:text="特码"
android:textSize="15sp" /> android:textSize="15sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{bean.pkId}" android:text="@{bean.spCode}"
android:textSize="15sp" /> android:textSize="15sp" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
@@ -210,7 +210,7 @@
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
<!-- 提取时间 --> <!-- 办理时间 -->
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@@ -221,7 +221,7 @@
completeSpace="@{5}" completeSpace="@{5}"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="提取时间:" android:text="办理时间:"
android:textSize="15sp" /> android:textSize="15sp" />
<TextView <TextView

View File

@@ -247,8 +247,13 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@{`1`.equals(bean.clearNormal) ? @drawable/tag_status_green : (`0`.equals(bean.clearNormal) ? @drawable/tag_status_orange : @drawable/tag_status_gray)}"
android:paddingHorizontal="8dp"
android:paddingVertical="2dp"
android:text="@{bean.clearNormalText}" android:text="@{bean.clearNormalText}"
android:textSize="15sp" /> android:textColor="@{`1`.equals(bean.clearNormal) ? @color/text_green : (`0`.equals(bean.clearNormal) ? @color/text_orange : @color/text_gray)}"
android:textSize="14sp"
android:visibility="@{bean.clearNormalText != null &amp;&amp; !bean.clearNormalText.isEmpty() ? View.VISIBLE : View.GONE}" />
</LinearLayout> </LinearLayout>
@@ -319,8 +324,8 @@
visible="@{bean.showMore}" visible="@{bean.showMore}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="10dp"
android:background="#e3f6e0" android:background="@drawable/bg_white_radius_8"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
@@ -336,14 +341,15 @@
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" /> android:visibility="gone" />
<!-- 表头 --> <!-- 表头(浅蓝色背景,顶部圆角同卡片) -->
<LinearLayout <LinearLayout
android:id="@+id/ll_header" android:id="@+id/ll_header"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginVertical="10dp" android:background="@drawable/bg_arrive_sub_header"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="10dp"> android:paddingHorizontal="10dp"
android:paddingVertical="10dp">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
@@ -411,7 +417,7 @@
android:id="@+id/divider_header" android:id="@+id/divider_header"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" /> app:dividerColor="@color/sub_list_divider" />
<!-- 子列表 RecyclerView --> <!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:loadImage="http://schemas.android.com/tools"> xmlns:loadImage="http://schemas.android.com/tools">
<data> <data>
@@ -95,7 +96,7 @@
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" /> app:dividerColor="@color/sub_list_divider" />
</LinearLayout> </LinearLayout>
</layout> </layout>

View File

@@ -109,9 +109,13 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textSize="15sp" android:background="@{`01`.equals(bean.status) ? @drawable/tag_status_green : (`W`.equals(bean.status) ? @drawable/tag_status_blue : @drawable/tag_status_gray)}"
android:paddingHorizontal="8dp"
android:paddingVertical="2dp"
android:textSize="14sp"
android:text="@{bean.status}" android:text="@{bean.status}"
android:textColor="@{`01`.equals(bean.status) ? @color/text_green : (`W`.equals(bean.status) ? @color/text_blue : @color/text_normal)}" /> android:textColor="@{`01`.equals(bean.status) ? @color/text_green : (`W`.equals(bean.status) ? @color/colorPrimary : @color/text_gray)}"
android:visibility="@{bean.status != null &amp;&amp; !bean.status.isEmpty() ? View.VISIBLE : View.GONE}" />
</LinearLayout> </LinearLayout>
@@ -340,8 +344,8 @@
visible="@{bean.showMore}" visible="@{bean.showMore}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="10dp"
android:background="#e3f6e0" android:background="@drawable/bg_white_radius_8"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
@@ -357,14 +361,15 @@
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" /> android:visibility="gone" />
<!-- 表头 --> <!-- 表头(浅蓝色背景,顶部圆角同卡片) -->
<LinearLayout <LinearLayout
android:id="@+id/ll_header" android:id="@+id/ll_header"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginVertical="10dp" android:background="@drawable/bg_arrive_sub_header"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="10dp"> android:paddingHorizontal="10dp"
android:paddingVertical="10dp">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
@@ -472,7 +477,7 @@
android:id="@+id/divider_header" android:id="@+id/divider_header"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" /> app:dividerColor="@color/sub_list_divider" />
<!-- 子列表 RecyclerView --> <!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView

View File

@@ -1,9 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:loadImage="http://schemas.android.com/tools"> xmlns:loadImage="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" />
<variable <variable
name="bean" name="bean"
type="com.lukouguoji.module_base.bean.GjjImportTally" /> type="com.lukouguoji.module_base.bean.GjjImportTally" />
@@ -68,16 +71,27 @@
android:textColor="@color/text_normal" android:textColor="@color/text_normal"
android:textSize="14sp" /> android:textSize="14sp" />
<!-- 申报状态 --> <!-- 申报状态Tag 形式,根据语义着色) -->
<TextView <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_weight="0.8" android:layout_weight="0.8"
android:gravity="center" android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@{`01`.equals(bean.status) ? @drawable/tag_status_green : (`W`.equals(bean.status) ? @drawable/tag_status_blue : @drawable/tag_status_gray)}"
android:paddingHorizontal="8dp"
android:paddingVertical="2dp"
android:text="@{bean.status}" android:text="@{bean.status}"
android:textColor="#4CAF50" android:textColor="@{`01`.equals(bean.status) ? @color/text_green : (`W`.equals(bean.status) ? @color/colorPrimary : @color/text_gray)}"
android:textSize="14sp" /> android:textSize="13sp"
android:visibility="@{bean.status != null &amp;&amp; !bean.status.isEmpty() ? View.VISIBLE : View.GONE}" />
</LinearLayout>
<!-- 品名(中) --> <!-- 品名(中) -->
<TextView <TextView
@@ -141,7 +155,7 @@
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/sub_list_divider" /> app:dividerColor="@color/sub_list_divider" />
</LinearLayout> </LinearLayout>
</layout> </layout>

View File

@@ -105,7 +105,7 @@
<ImageView <ImageView
style="@style/iv_search_action" style="@style/iv_search_action"
android:onClick="@{()-> viewModel.onBackClick()}" android:onClick="@{()-> viewModel.onBackClick()}"
android:src="@drawable/img_back_action" /> android:src="@drawable/img_back_action_old" />
</LinearLayout> </LinearLayout>