Merge branch 'main' of ssh://git.njcqit.com:2222/eric/aerologic-app
This commit is contained in:
@@ -753,7 +753,7 @@ class HomeFragment : Fragment() {
|
|||||||
RightMenu(
|
RightMenu(
|
||||||
Constant.AuthName.GjcIntExpStorageUse,
|
Constant.AuthName.GjcIntExpStorageUse,
|
||||||
R.mipmap.gjc_cang_ku_icon,
|
R.mipmap.gjc_cang_ku_icon,
|
||||||
"仓库"
|
"出港仓库"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package com.lukouguoji.module_base.bean
|
package com.lukouguoji.module_base.bean
|
||||||
|
|
||||||
import androidx.databinding.ObservableBoolean
|
import androidx.databinding.ObservableBoolean
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
import java.util.Locale
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 国际出港主单数据模型
|
* 国际出港主单数据模型
|
||||||
@@ -78,6 +80,7 @@ data class GjcMaWb(
|
|||||||
var declareStatus: String? = null, // 申报状态
|
var declareStatus: String? = null, // 申报状态
|
||||||
var reviewStatus: String? = null, // 审核状态(0:未审核;1:通过;2:退回)
|
var reviewStatus: String? = null, // 审核状态(0:未审核;1:通过;2:退回)
|
||||||
var tranFlag: String? = null, // 转运标志
|
var tranFlag: String? = null, // 转运标志
|
||||||
|
var clearNormal: String? = null, // 清仓正常(0:否,1:是)
|
||||||
|
|
||||||
// ==================== 操作信息 ====================
|
// ==================== 操作信息 ====================
|
||||||
var opDate: String? = null, // 操作时间(入库时间)
|
var opDate: String? = null, // 操作时间(入库时间)
|
||||||
@@ -106,7 +109,6 @@ data class GjcMaWb(
|
|||||||
|
|
||||||
// ==================== 关联列表(非数据库字段,用于展示) ====================
|
// ==================== 关联列表(非数据库字段,用于展示) ====================
|
||||||
var haWbList: List<GjcHaWb>? = null, // 分单列表
|
var haWbList: List<GjcHaWb>? = null, // 分单列表
|
||||||
@Transient
|
|
||||||
var storageUseList: List<GjcStorageUse>? = null, // 库位使用列表
|
var storageUseList: List<GjcStorageUse>? = null, // 库位使用列表
|
||||||
@Transient
|
@Transient
|
||||||
var attachList: List<ComAttach>? = null // 附件列表
|
var attachList: List<ComAttach>? = null // 附件列表
|
||||||
@@ -145,6 +147,34 @@ data class GjcMaWb(
|
|||||||
"1" -> "提前运抵"
|
"1" -> "提前运抵"
|
||||||
else -> arriveFlag ?: ""
|
else -> arriveFlag ?: ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 航班信息(格式化后)
|
||||||
|
* 格式: yyyyMMdd/航班号
|
||||||
|
* 示例: 20260108/MU2025
|
||||||
|
*/
|
||||||
|
val flightInfo: String
|
||||||
|
get() {
|
||||||
|
val dateFormat = SimpleDateFormat("yyyyMMdd", Locale.getDefault())
|
||||||
|
val formattedDate = fdate?.let { dateFormat.format(it) } ?: ""
|
||||||
|
val flightNo = fno ?: ""
|
||||||
|
return if (formattedDate.isNotEmpty() && flightNo.isNotEmpty()) {
|
||||||
|
"$formattedDate/$flightNo"
|
||||||
|
} else {
|
||||||
|
flight ?: "" // 如果无法格式化,回退到原始flight字段
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清仓正常状态中文
|
||||||
|
* 0-否,1-是
|
||||||
|
*/
|
||||||
|
val clearNormalText: String
|
||||||
|
get() = when (clearNormal) {
|
||||||
|
"0" -> "否"
|
||||||
|
"1" -> "是"
|
||||||
|
else -> clearNormal ?: ""
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -244,14 +274,16 @@ data class GjcStorageUse(
|
|||||||
var prefix: String? = null, // 运单前缀
|
var prefix: String? = null, // 运单前缀
|
||||||
var no: String? = null, // 运单号
|
var no: String? = null, // 运单号
|
||||||
var location: String? = null, // 库位号
|
var location: String? = null, // 库位号
|
||||||
|
var locationId: Long? = null, // 库位id
|
||||||
var storageCode: String? = null, // 库位号(兼容字段)
|
var storageCode: String? = null, // 库位号(兼容字段)
|
||||||
var uld: String? = null, // 板箱号
|
var uld: String? = null, // 板箱号
|
||||||
var inDate: Date? = null, // 入库时间
|
var inDate: String? = null, // 入库时间
|
||||||
var inOpId: String? = null, // 入库人
|
var inOpId: String? = null, // 入库人
|
||||||
var inId: String? = null, // 入库人(兼容字段)
|
var inId: String? = null, // 入库人(兼容字段)
|
||||||
var outDate: Date? = null, // 出库时间
|
var outDate: String? = null, // 出库时间
|
||||||
var outOpId: String? = null, // 出库人
|
var outOpId: String? = null, // 出库人
|
||||||
var outId: String? = null // 出库人(兼容字段)
|
var outId: String? = null, // 出库人(兼容字段)
|
||||||
|
var cargoStatus: String? = null // 货物状态
|
||||||
) {
|
) {
|
||||||
// ==================== UI扩展字段 ====================
|
// ==================== UI扩展字段 ====================
|
||||||
@Transient
|
@Transient
|
||||||
|
|||||||
@@ -811,6 +811,27 @@ interface Api {
|
|||||||
@POST("IntExpMove/move")
|
@POST("IntExpMove/move")
|
||||||
suspend fun submitIntExpMove(@Body data: RequestBody): BaseResultBean<SimpleResultBean>
|
suspend fun submitIntExpMove(@Body data: RequestBody): BaseResultBean<SimpleResultBean>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际出港库位操作-清仓
|
||||||
|
* 接口路径: /IntExpStorageUse/updateClear
|
||||||
|
*/
|
||||||
|
@POST("IntExpStorageUse/updateClear")
|
||||||
|
suspend fun clearIntExpStorage(@Body data: RequestBody): BaseResultBean<Boolean>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际出港库位操作-修改库位
|
||||||
|
* 接口路径: /IntExpStorageUse/modifyStorage
|
||||||
|
*/
|
||||||
|
@POST("IntExpStorageUse/modifyStorage")
|
||||||
|
suspend fun modifyIntExpStorage(@Body data: RequestBody): BaseResultBean<Boolean>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际出港库位操作-出库
|
||||||
|
* 接口路径: /IntExpStorageUse/outStorage
|
||||||
|
*/
|
||||||
|
@POST("IntExpStorageUse/outStorage")
|
||||||
|
suspend fun outIntExpStorage(@Body data: RequestBody): BaseResultBean<Boolean>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 国际出港仓库-分页查询
|
* 国际出港仓库-分页查询
|
||||||
* 接口路径: /IntExpStorageUse/pageQuery
|
* 接口路径: /IntExpStorageUse/pageQuery
|
||||||
|
|||||||
@@ -3,15 +3,20 @@ package com.lukouguoji.gjc.activity
|
|||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
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.ActivityIntExpStorageUseBinding
|
import com.lukouguoji.gjc.databinding.ActivityIntExpStorageUseBinding
|
||||||
|
import com.lukouguoji.gjc.dialog.IntExpMoveClearDialogModel
|
||||||
|
import com.lukouguoji.gjc.dialog.IntExpModifyStorageDialogModel
|
||||||
import com.lukouguoji.gjc.viewModel.IntExpStorageUseViewModel
|
import com.lukouguoji.gjc.viewModel.IntExpStorageUseViewModel
|
||||||
import com.lukouguoji.module_base.base.BaseBindingActivity
|
import com.lukouguoji.module_base.base.BaseBindingActivity
|
||||||
import com.lukouguoji.module_base.common.Constant
|
import com.lukouguoji.module_base.common.Constant
|
||||||
import com.lukouguoji.module_base.common.ConstantEvent
|
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.commonAdapter
|
||||||
|
import com.lukouguoji.module_base.ktx.showToast
|
||||||
import com.lukouguoji.module_base.router.ARouterConstants
|
import com.lukouguoji.module_base.router.ARouterConstants
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -27,6 +32,7 @@ class IntExpStorageUseActivity :
|
|||||||
override fun initOnCreate(savedInstanceState: Bundle?) {
|
override fun initOnCreate(savedInstanceState: Bundle?) {
|
||||||
setBackArrow("国际出港仓库")
|
setBackArrow("国际出港仓库")
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
binding.activity = this
|
||||||
|
|
||||||
// 观察全选状态,更新图标透明度
|
// 观察全选状态,更新图标透明度
|
||||||
viewModel.isAllChecked.observe(this) { isAllChecked ->
|
viewModel.isAllChecked.observe(this) { isAllChecked ->
|
||||||
@@ -45,6 +51,106 @@ class IntExpStorageUseActivity :
|
|||||||
viewModel.refresh()
|
viewModel.refresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显示清仓操作对话框
|
||||||
|
*/
|
||||||
|
fun showClearDialog() {
|
||||||
|
val list = viewModel.pageModel.rv?.commonAdapter()?.items as? List<*> ?: return
|
||||||
|
val allItems = list.filterIsInstance<com.lukouguoji.module_base.bean.GjcMaWb>()
|
||||||
|
|
||||||
|
// 构建清仓数据:保留主列表结构,但只包含选中的子列表项
|
||||||
|
val maWbListForClear = allItems.mapNotNull { maWb ->
|
||||||
|
// 过滤出选中的子列表项
|
||||||
|
val selectedStorageList = maWb.storageUseList?.filter { it.isSelected } ?: emptyList()
|
||||||
|
|
||||||
|
// 只添加有选中子列表项的主列表项
|
||||||
|
if (selectedStorageList.isNotEmpty() || maWb.isSelected) {
|
||||||
|
// 创建主列表项的副本,只包含选中的子列表
|
||||||
|
maWb.copy(storageUseList = selectedStorageList)
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (maWbListForClear.isEmpty()) {
|
||||||
|
showToast("请至少选择一个库位")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 显示清仓对话框
|
||||||
|
IntExpMoveClearDialogModel { dialog ->
|
||||||
|
// 用户点击保存后,执行清仓操作
|
||||||
|
val clearNormal = dialog.clearNormal.value ?: ""
|
||||||
|
viewModel.performClear(clearNormal, maWbListForClear)
|
||||||
|
}.show(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显示修改库位对话框
|
||||||
|
*/
|
||||||
|
fun showModifyStorageDialog() {
|
||||||
|
val list = viewModel.pageModel.rv?.commonAdapter()?.items as? List<*> ?: return
|
||||||
|
val allItems = list.filterIsInstance<com.lukouguoji.module_base.bean.GjcMaWb>()
|
||||||
|
|
||||||
|
// 收集所有选中的子列表项(库位)
|
||||||
|
val selectedStorageUseList = mutableListOf<com.lukouguoji.module_base.bean.GjcStorageUse>()
|
||||||
|
allItems.forEach { maWb ->
|
||||||
|
maWb.storageUseList?.filter { it.isSelected }?.let { selectedStorageUseList.addAll(it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验:必须且只能选中一个库位
|
||||||
|
when {
|
||||||
|
selectedStorageUseList.isEmpty() -> {
|
||||||
|
showToast("请选择要修改的库位")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
selectedStorageUseList.size > 1 -> {
|
||||||
|
showToast("只能选择一个库位进行修改")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val selectedStorage = selectedStorageUseList[0]
|
||||||
|
|
||||||
|
// 显示修改库位对话框
|
||||||
|
IntExpModifyStorageDialogModel { dialog ->
|
||||||
|
// 用户点击保存后,执行修改库位操作
|
||||||
|
val newLocation = dialog.location.value ?: ""
|
||||||
|
viewModel.performModifyStorage(newLocation, selectedStorage)
|
||||||
|
}.show(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显示出库二次确认对话框
|
||||||
|
*/
|
||||||
|
fun showOutStorageDialog() {
|
||||||
|
val list = viewModel.pageModel.rv?.commonAdapter()?.items as? List<*> ?: return
|
||||||
|
val allItems = list.filterIsInstance<com.lukouguoji.module_base.bean.GjcMaWb>()
|
||||||
|
|
||||||
|
// 收集所有选中的子列表项(库位)
|
||||||
|
val selectedStorageUseList = mutableListOf<com.lukouguoji.module_base.bean.GjcStorageUse>()
|
||||||
|
allItems.forEach { maWb ->
|
||||||
|
maWb.storageUseList?.filter { it.isSelected }?.let { selectedStorageUseList.addAll(it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验:必须至少选中一个库位
|
||||||
|
if (selectedStorageUseList.isEmpty()) {
|
||||||
|
showToast("请选择要出库的库位")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 显示二次确认对话框
|
||||||
|
AlertDialog.Builder(this)
|
||||||
|
.setTitle("出库确认")
|
||||||
|
.setMessage("确定要将选中的 ${selectedStorageUseList.size} 个库位执行出库操作吗?")
|
||||||
|
.setPositiveButton("确定") { _, _ ->
|
||||||
|
// 用户确认后,执行出库操作
|
||||||
|
viewModel.performOutStorage(selectedStorageUseList)
|
||||||
|
}
|
||||||
|
.setNegativeButton("取消", null)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
super.onActivityResult(requestCode, resultCode, data)
|
super.onActivityResult(requestCode, resultCode, data)
|
||||||
if (requestCode == Constant.RequestCode.WAYBILL && resultCode == Activity.RESULT_OK) {
|
if (requestCode == Constant.RequestCode.WAYBILL && resultCode == Activity.RESULT_OK) {
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package com.lukouguoji.gjc.dialog
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import androidx.lifecycle.MutableLiveData
|
||||||
|
import com.lukouguoji.gjc.R
|
||||||
|
import com.lukouguoji.gjc.databinding.DialogIntExpModifyStorageBinding
|
||||||
|
import com.lukouguoji.module_base.base.BaseDialogModel
|
||||||
|
import com.lukouguoji.module_base.ktx.verifyNullOrEmpty
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际出港 - 修改库位对话框
|
||||||
|
*/
|
||||||
|
class IntExpModifyStorageDialogModel(
|
||||||
|
private val callback: (IntExpModifyStorageDialogModel) -> Unit
|
||||||
|
) : BaseDialogModel<DialogIntExpModifyStorageBinding>(DIALOG_TYPE_CENTER) {
|
||||||
|
|
||||||
|
// 库位号
|
||||||
|
val location = MutableLiveData("")
|
||||||
|
|
||||||
|
override fun layoutId(): Int {
|
||||||
|
return R.layout.dialog_int_exp_modify_storage
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDialogCreated(context: Context) {
|
||||||
|
binding.model = this
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存按钮点击
|
||||||
|
*/
|
||||||
|
fun onSaveClick() {
|
||||||
|
if (location.value.verifyNullOrEmpty("请输入库位号")) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
dismiss()
|
||||||
|
callback(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package com.lukouguoji.gjc.dialog
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import androidx.lifecycle.MutableLiveData
|
||||||
|
import com.lukouguoji.gjc.R
|
||||||
|
import com.lukouguoji.gjc.databinding.DialogIntExpMoveClearBinding
|
||||||
|
import com.lukouguoji.module_base.base.BaseDialogModel
|
||||||
|
import com.lukouguoji.module_base.ktx.verifyNullOrEmpty
|
||||||
|
import dev.utils.app.info.KeyValue
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际出港移库 - 清仓操作对话框
|
||||||
|
*/
|
||||||
|
class IntExpMoveClearDialogModel(
|
||||||
|
private val callback: (IntExpMoveClearDialogModel) -> Unit
|
||||||
|
) : BaseDialogModel<DialogIntExpMoveClearBinding>(DIALOG_TYPE_CENTER) {
|
||||||
|
|
||||||
|
// 清仓正常(存储的是 code:"0" 或 "1")
|
||||||
|
val clearNormal = MutableLiveData("")
|
||||||
|
|
||||||
|
// 清仓正常选项列表
|
||||||
|
val clearNormalList = MutableLiveData<List<KeyValue>>().apply {
|
||||||
|
value = listOf(
|
||||||
|
KeyValue("是", "1"),
|
||||||
|
KeyValue("否", "0")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun layoutId(): Int {
|
||||||
|
return R.layout.dialog_int_exp_move_clear
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDialogCreated(context: Context) {
|
||||||
|
binding.model = this
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存按钮点击
|
||||||
|
*/
|
||||||
|
fun onSaveClick() {
|
||||||
|
if (clearNormal.value.verifyNullOrEmpty("请选择清仓正常")) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
dismiss()
|
||||||
|
callback(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.lukouguoji.gjc.holder
|
package com.lukouguoji.gjc.holder
|
||||||
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.lukouguoji.gjc.databinding.ItemIntExpStorageUseSubBinding
|
import com.lukouguoji.gjc.databinding.ItemIntExpStorageUseSubBinding
|
||||||
import com.lukouguoji.module_base.base.BaseViewHolder
|
import com.lukouguoji.module_base.base.BaseViewHolder
|
||||||
|
import com.lukouguoji.module_base.bean.GjcMaWb
|
||||||
import com.lukouguoji.module_base.bean.GjcStorageUse
|
import com.lukouguoji.module_base.bean.GjcStorageUse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,10 +19,33 @@ class IntExpStorageUseSubViewHolder(view: View) :
|
|||||||
binding.position = position
|
binding.position = position
|
||||||
binding.executePendingBindings()
|
binding.executePendingBindings()
|
||||||
|
|
||||||
// 单选框点击切换选择状态
|
// 单选框点击切换选择状态(反向联动主列表)
|
||||||
binding.ivCheckbox.setOnClickListener {
|
binding.ivCheckbox.setOnClickListener {
|
||||||
bean.checked.set(!bean.checked.get())
|
// 切换子列表项的选择状态
|
||||||
|
val newCheckedState = !bean.checked.get()
|
||||||
|
bean.checked.set(newCheckedState)
|
||||||
binding.executePendingBindings()
|
binding.executePendingBindings()
|
||||||
|
|
||||||
|
// 反向联动主列表项(仅在勾选时联动)
|
||||||
|
updateParentCheckState(newCheckedState)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新父列表项的选择状态
|
||||||
|
* 规则:
|
||||||
|
* - 如果子项被勾选(newCheckedState = true),则自动勾选父项
|
||||||
|
* - 如果子项被取消勾选(newCheckedState = false),则不改变父项状态
|
||||||
|
*/
|
||||||
|
private fun updateParentCheckState(newCheckedState: Boolean) {
|
||||||
|
// 从RecyclerView的tag获取父Bean引用
|
||||||
|
val recyclerView = itemView.parent as? RecyclerView ?: return
|
||||||
|
val parentBean = recyclerView.tag as? GjcMaWb ?: return
|
||||||
|
|
||||||
|
// 只有当子项被勾选时,才联动勾选父项
|
||||||
|
if (newCheckedState) {
|
||||||
|
parentBean.checked.set(true)
|
||||||
|
}
|
||||||
|
// 当子项被取消勾选时,不影响父项状态
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,10 +20,20 @@ class IntExpStorageUseViewHolder(view: View) :
|
|||||||
binding.position = position
|
binding.position = position
|
||||||
binding.executePendingBindings()
|
binding.executePendingBindings()
|
||||||
|
|
||||||
// 图标点击切换选择状态
|
// 图标点击切换选择状态(联动子列表)
|
||||||
binding.ivIcon.setOnClickListener {
|
binding.ivIcon.setOnClickListener {
|
||||||
bean.checked.set(!bean.checked.get())
|
// 切换主列表项的选择状态
|
||||||
|
val newCheckedState = !bean.checked.get()
|
||||||
|
bean.checked.set(newCheckedState)
|
||||||
|
|
||||||
|
// 联动勾选/取消所有子列表项
|
||||||
|
bean.storageUseList?.forEach { storageUse ->
|
||||||
|
storageUse.checked.set(newCheckedState)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 刷新UI
|
||||||
binding.executePendingBindings()
|
binding.executePendingBindings()
|
||||||
|
binding.rvSub.adapter?.notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 展开按钮点击事件
|
// 展开按钮点击事件
|
||||||
@@ -38,7 +48,10 @@ class IntExpStorageUseViewHolder(view: View) :
|
|||||||
R.layout.item_int_exp_storage_use_sub
|
R.layout.item_int_exp_storage_use_sub
|
||||||
)
|
)
|
||||||
|
|
||||||
// 刷新库位明细数据
|
// 刷新库位明细数据(传递父Bean引用)
|
||||||
binding.rvSub.refresh(bean.storageUseList ?: emptyList())
|
val storageUseList = bean.storageUseList ?: emptyList()
|
||||||
|
// 为每个子列表项设置父Bean引用(通过tag传递)
|
||||||
|
binding.rvSub.tag = bean
|
||||||
|
binding.rvSub.refresh(storageUseList)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,10 +20,20 @@ class IntExpTallyViewHolder(view: View) :
|
|||||||
binding.position = position
|
binding.position = position
|
||||||
binding.executePendingBindings()
|
binding.executePendingBindings()
|
||||||
|
|
||||||
// 图标点击切换选择状态(保留原有)
|
// 图标点击切换选择状态(单向同步到子列表)
|
||||||
binding.ivIcon.setOnClickListener {
|
binding.ivIcon.setOnClickListener {
|
||||||
bean.checked.set(!bean.checked.get())
|
// 切换主列表项的选择状态
|
||||||
|
val newCheckedState = !bean.checked.get()
|
||||||
|
bean.checked.set(newCheckedState)
|
||||||
|
|
||||||
|
// 单向同步:主列表选择状态同步到所有子列表项
|
||||||
|
bean.haWbList?.forEach { haWb ->
|
||||||
|
haWb.checked.set(newCheckedState)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 刷新UI
|
||||||
binding.executePendingBindings()
|
binding.executePendingBindings()
|
||||||
|
binding.rvSub.adapter?.notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== 新增:展开按钮点击事件 ==========
|
// ========== 新增:展开按钮点击事件 ==========
|
||||||
|
|||||||
@@ -31,18 +31,17 @@ class IntExpMoveViewModel : BasePageViewModel(), IOnItemClickListener {
|
|||||||
// ========== 运单类型下拉数据 ==========
|
// ========== 运单类型下拉数据 ==========
|
||||||
val awbTypeList = MutableLiveData<List<KeyValue>>().apply {
|
val awbTypeList = MutableLiveData<List<KeyValue>>().apply {
|
||||||
value = listOf(
|
value = listOf(
|
||||||
KeyValue("", "全部"),
|
KeyValue("全部", ""),
|
||||||
KeyValue("IOCO", "国际出港(经国内航班出境)"),
|
KeyValue("转国内出港", "IOCO")
|
||||||
KeyValue("IOSO", "国际出港(国际航班出境)")
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== 移库状态下拉数据 ==========
|
// ========== 移库状态下拉数据 ==========
|
||||||
val moveStateList = MutableLiveData<List<KeyValue>>().apply {
|
val moveStateList = MutableLiveData<List<KeyValue>>().apply {
|
||||||
value = listOf(
|
value = listOf(
|
||||||
KeyValue("", "全部"),
|
KeyValue("全部", ""),
|
||||||
KeyValue("0", "未移交"),
|
KeyValue("未移库", "0"),
|
||||||
KeyValue("1", "已移交")
|
KeyValue("已移库", "1")
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,14 +145,14 @@ class IntExpMoveViewModel : BasePageViewModel(), IOnItemClickListener {
|
|||||||
* 获取列表数据
|
* 获取列表数据
|
||||||
*/
|
*/
|
||||||
override fun getData() {
|
override fun getData() {
|
||||||
// 构建筛选参数
|
// 构建筛选参数(只传递非空值)
|
||||||
val filterParams = mapOf(
|
val filterParams = mutableMapOf<String, Any>()
|
||||||
"awbType" to awbType.value.noNull(),
|
|
||||||
"by1" to by1.value.noNull(),
|
awbType.value?.takeIf { it.isNotEmpty() }?.let { filterParams["awbType"] = it }
|
||||||
"dest1" to dest1.value.noNull(),
|
by1.value?.takeIf { it.isNotEmpty() }?.let { filterParams["by1"] = it }
|
||||||
"moveState" to moveState.value.noNull(),
|
dest1.value?.takeIf { it.isNotEmpty() }?.let { filterParams["dest1"] = it }
|
||||||
"wbNo" to waybillNo.value.noNull()
|
moveState.value?.takeIf { it.isNotEmpty() }?.let { filterParams["moveState"] = it }
|
||||||
)
|
waybillNo.value?.takeIf { it.isNotEmpty() }?.let { filterParams["wbNo"] = it }
|
||||||
|
|
||||||
// 列表参数(含分页)
|
// 列表参数(含分页)
|
||||||
val listParams = (filterParams + mapOf(
|
val listParams = (filterParams + mapOf(
|
||||||
|
|||||||
@@ -11,13 +11,16 @@ import com.lukouguoji.module_base.common.ConstantEvent
|
|||||||
import com.lukouguoji.module_base.http.net.NetApply
|
import com.lukouguoji.module_base.http.net.NetApply
|
||||||
import com.lukouguoji.module_base.impl.FlowBus
|
import com.lukouguoji.module_base.impl.FlowBus
|
||||||
import com.lukouguoji.module_base.ktx.commonAdapter
|
import com.lukouguoji.module_base.ktx.commonAdapter
|
||||||
|
import com.lukouguoji.module_base.ktx.formatDate
|
||||||
import com.lukouguoji.module_base.ktx.launchCollect
|
import com.lukouguoji.module_base.ktx.launchCollect
|
||||||
import com.lukouguoji.module_base.ktx.launchLoadingCollect
|
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.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 dev.utils.app.info.KeyValue
|
import dev.utils.app.info.KeyValue
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import java.util.Date
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 国际出港-仓库 ViewModel
|
* 国际出港-仓库 ViewModel
|
||||||
@@ -25,12 +28,12 @@ import kotlinx.coroutines.launch
|
|||||||
class IntExpStorageUseViewModel : BasePageViewModel() {
|
class IntExpStorageUseViewModel : BasePageViewModel() {
|
||||||
|
|
||||||
// ========== 筛选条件 ==========
|
// ========== 筛选条件 ==========
|
||||||
val flightDate = MutableLiveData("") // 航班日期
|
val flightDate = MutableLiveData(Date().formatDate()) // 航班日期,默认今天
|
||||||
val flightNo = MutableLiveData("") // 航班号
|
val flightNo = MutableLiveData("") // 航班号
|
||||||
val clearResult = MutableLiveData("") // 清仓综合结果
|
val clearResult = MutableLiveData("") // 清仓综合结果
|
||||||
val clearResultList = MutableLiveData<List<KeyValue>>() // 清仓综合结果列表
|
val clearResultList = MutableLiveData<List<KeyValue>>() // 清仓综合结果列表
|
||||||
val wbNo = MutableLiveData("") // 运单号
|
val wbNo = MutableLiveData("") // 运单号
|
||||||
val storageCode = MutableLiveData("") // 库位号
|
val location = MutableLiveData("") // 库位号
|
||||||
|
|
||||||
// ========== 统计信息 ==========
|
// ========== 统计信息 ==========
|
||||||
val totalWbNumber = MutableLiveData("0") // 总票数
|
val totalWbNumber = MutableLiveData("0") // 总票数
|
||||||
@@ -40,6 +43,14 @@ class IntExpStorageUseViewModel : BasePageViewModel() {
|
|||||||
// ========== 全选状态 ==========
|
// ========== 全选状态 ==========
|
||||||
val isAllChecked = MutableLiveData(false)
|
val isAllChecked = MutableLiveData(false)
|
||||||
|
|
||||||
|
// ========== 全局展开状态 ==========
|
||||||
|
/**
|
||||||
|
* 全局展开状态
|
||||||
|
* - true: 全部展开
|
||||||
|
* - false: 全部收起
|
||||||
|
*/
|
||||||
|
val isAllExpanded = MutableLiveData(false)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
// 初始化清仓综合结果列表(根据实际需求配置)
|
// 初始化清仓综合结果列表(根据实际需求配置)
|
||||||
clearResultList.value = listOf(
|
clearResultList.value = listOf(
|
||||||
@@ -50,7 +61,8 @@ class IntExpStorageUseViewModel : BasePageViewModel() {
|
|||||||
|
|
||||||
// 监听全选状态,自动更新所有列表项
|
// 监听全选状态,自动更新所有列表项
|
||||||
isAllChecked.observeForever { checked ->
|
isAllChecked.observeForever { checked ->
|
||||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return@observeForever
|
val list =
|
||||||
|
pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return@observeForever
|
||||||
list.forEach { it.checked.set(checked) }
|
list.forEach { it.checked.set(checked) }
|
||||||
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
@@ -68,18 +80,49 @@ class IntExpStorageUseViewModel : BasePageViewModel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 全选按钮点击
|
* 全选按钮点击(联动勾选所有子列表项)
|
||||||
*/
|
*/
|
||||||
fun checkAllClick() {
|
fun checkAllClick() {
|
||||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return
|
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return
|
||||||
|
|
||||||
val shouldCheckAll = !isAllChecked.value!!
|
val shouldCheckAll = !isAllChecked.value!!
|
||||||
list.forEach { it.checked.set(shouldCheckAll) }
|
|
||||||
|
// 联动勾选/取消主列表和子列表
|
||||||
|
list.forEach { maWb ->
|
||||||
|
maWb.checked.set(shouldCheckAll)
|
||||||
|
// 同时联动勾选/取消所有子列表项
|
||||||
|
maWb.storageUseList?.forEach { storageUse ->
|
||||||
|
storageUse.checked.set(shouldCheckAll)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
isAllChecked.value = shouldCheckAll
|
isAllChecked.value = shouldCheckAll
|
||||||
|
|
||||||
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 切换全局展开/收起状态
|
||||||
|
*/
|
||||||
|
fun toggleAllExpand() {
|
||||||
|
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return
|
||||||
|
|
||||||
|
// 切换全局状态
|
||||||
|
val shouldExpand = !isAllExpanded.value!!
|
||||||
|
isAllExpanded.value = shouldExpand
|
||||||
|
|
||||||
|
// 更新所有列表项的 showMore 状态
|
||||||
|
list.forEach { bean ->
|
||||||
|
// 只有当有子列表时才设置展开状态
|
||||||
|
if (!bean.storageUseList.isNullOrEmpty()) {
|
||||||
|
bean.showMore.set(shouldExpand)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 刷新列表UI
|
||||||
|
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 扫码运单号
|
* 扫码运单号
|
||||||
*/
|
*/
|
||||||
@@ -88,51 +131,113 @@ class IntExpStorageUseViewModel : BasePageViewModel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清仓操作
|
* 清仓操作(在Activity中调用,会显示对话框)
|
||||||
*/
|
*/
|
||||||
fun clearStorage() {
|
fun clearStorage() {
|
||||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return
|
// 由Activity显示对话框
|
||||||
val selectedItems = list.filter { it.isSelected }
|
}
|
||||||
|
|
||||||
if (selectedItems.isEmpty()) {
|
/**
|
||||||
showToast("请选择要清仓的运单")
|
* 执行清仓操作
|
||||||
|
* @param clearNormal 清仓正常("0"或"1")
|
||||||
|
* @param maWbListForClear 包含选中子列表项的主列表数据
|
||||||
|
*/
|
||||||
|
fun performClear(clearNormal: String, maWbListForClear: List<GjcMaWb>) {
|
||||||
|
if (maWbListForClear.isEmpty()) {
|
||||||
|
showToast("请至少选择一个库位")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: 实现清仓接口调用
|
// 构建请求参数:完整的主子列表结构
|
||||||
showToast("清仓功能待实现")
|
val params = mapOf(
|
||||||
|
"clearNormal" to clearNormal,
|
||||||
|
"maWbList" to maWbListForClear
|
||||||
|
).toRequestBody()
|
||||||
|
|
||||||
|
launchLoadingCollect({ NetApply.api.clearIntExpStorage(params) }) {
|
||||||
|
onSuccess = {
|
||||||
|
showToast("清仓成功")
|
||||||
|
viewModelScope.launch {
|
||||||
|
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).emit("refresh")
|
||||||
|
}
|
||||||
|
refresh() // 刷新列表
|
||||||
|
}
|
||||||
|
onFailed = { _, msg ->
|
||||||
|
showToast(msg.noNull("清仓失败"))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改库位
|
* 修改库位
|
||||||
*/
|
*/
|
||||||
fun modifyStorage() {
|
fun modifyStorage() {
|
||||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return
|
// 由Activity显示对话框
|
||||||
val selectedItems = list.filter { it.isSelected }
|
|
||||||
|
|
||||||
if (selectedItems.isEmpty()) {
|
|
||||||
showToast("请选择要修改库位的运单")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: 实现修改库位接口调用或弹出对话框
|
|
||||||
showToast("修改库位功能待实现")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出库操作
|
* 执行修改库位操作
|
||||||
|
* @param newLocation 新的库位号
|
||||||
|
* @param storageUse 选中的单个库位使用对象
|
||||||
*/
|
*/
|
||||||
fun outStorage() {
|
fun performModifyStorage(newLocation: String, storageUse: com.lukouguoji.module_base.bean.GjcStorageUse) {
|
||||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return
|
if (newLocation.isEmpty()) {
|
||||||
val selectedItems = list.filter { it.isSelected }
|
showToast("请输入新的库位号")
|
||||||
|
|
||||||
if (selectedItems.isEmpty()) {
|
|
||||||
showToast("请选择要出库的运单")
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: 实现出库接口调用
|
// 创建更新后的库位对象(覆盖 location 字段)
|
||||||
showToast("出库功能待实现")
|
val updatedStorage = storageUse.copy(location = newLocation)
|
||||||
|
|
||||||
|
// 直接使用更新后的对象构建请求参数
|
||||||
|
val params = updatedStorage.toRequestBody()
|
||||||
|
|
||||||
|
launchLoadingCollect({ NetApply.api.modifyIntExpStorage(params) }) {
|
||||||
|
onSuccess = {
|
||||||
|
showToast("修改库位成功")
|
||||||
|
viewModelScope.launch {
|
||||||
|
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).emit("refresh")
|
||||||
|
}
|
||||||
|
refresh() // 刷新列表
|
||||||
|
}
|
||||||
|
onFailed = { _, msg ->
|
||||||
|
showToast(msg.noNull("修改库位失败"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库操作(在Activity中调用,会显示二次确认对话框)
|
||||||
|
*/
|
||||||
|
fun outStorage() {
|
||||||
|
// 由Activity显示二次确认对话框
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行出库操作
|
||||||
|
* @param selectedStorageList 选中的子列表项(库位)
|
||||||
|
*/
|
||||||
|
fun performOutStorage(selectedStorageList: List<com.lukouguoji.module_base.bean.GjcStorageUse>) {
|
||||||
|
if (selectedStorageList.isEmpty()) {
|
||||||
|
showToast("请选择要出库的库位")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将选中的子列表项转换为RequestBody
|
||||||
|
val params = selectedStorageList.toRequestBody()
|
||||||
|
|
||||||
|
launchLoadingCollect({ NetApply.api.outIntExpStorage(params) }) {
|
||||||
|
onSuccess = {
|
||||||
|
showToast("出库成功")
|
||||||
|
viewModelScope.launch {
|
||||||
|
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).emit("refresh")
|
||||||
|
}
|
||||||
|
refresh() // 刷新列表
|
||||||
|
}
|
||||||
|
onFailed = { _, msg ->
|
||||||
|
showToast(msg.noNull("出库失败"))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -140,10 +245,15 @@ class IntExpStorageUseViewModel : BasePageViewModel() {
|
|||||||
*/
|
*/
|
||||||
fun inStorage() {
|
fun inStorage() {
|
||||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return
|
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return
|
||||||
val selectedItems = list.filter { it.isSelected }
|
|
||||||
|
|
||||||
if (selectedItems.isEmpty()) {
|
// 收集所有选中的子列表项(库位)
|
||||||
showToast("请选择要入库的运单")
|
val selectedStorageUseList = mutableListOf<com.lukouguoji.module_base.bean.GjcStorageUse>()
|
||||||
|
list.forEach { maWb ->
|
||||||
|
maWb.storageUseList?.filter { it.isSelected }?.let { selectedStorageUseList.addAll(it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedStorageUseList.isEmpty()) {
|
||||||
|
showToast("请选择要入库的库位")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,7 +270,7 @@ 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 },
|
||||||
"storageCode" to storageCode.value?.ifEmpty { null }
|
"location" to location.value?.ifEmpty { null }
|
||||||
)
|
)
|
||||||
|
|
||||||
// 列表参数 (含分页)
|
// 列表参数 (含分页)
|
||||||
@@ -178,6 +288,8 @@ class IntExpStorageUseViewModel : BasePageViewModel() {
|
|||||||
// 手动处理 PageInfo 数据
|
// 手动处理 PageInfo 数据
|
||||||
pageModel.handleDataList(result.list)
|
pageModel.handleDataList(result.list)
|
||||||
pageModel.haveMore.postValue((result.pages) > pageModel.page)
|
pageModel.haveMore.postValue((result.pages) > pageModel.page)
|
||||||
|
// 数据加载完成后,重置全局展开状态为收起
|
||||||
|
isAllExpanded.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,14 +71,23 @@ class IntExpTallyViewModel : BasePageViewModel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 全选按钮点击 (切换全选状态)
|
* 全选按钮点击 (切换全选状态,单向同步到子列表)
|
||||||
*/
|
*/
|
||||||
fun checkAllClick() {
|
fun checkAllClick() {
|
||||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return
|
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return
|
||||||
|
|
||||||
// 切换全选状态
|
// 切换全选状态
|
||||||
val shouldCheckAll = !isAllChecked.value!!
|
val shouldCheckAll = !isAllChecked.value!!
|
||||||
list.forEach { it.checked.set(shouldCheckAll) }
|
|
||||||
|
// 单向同步:主列表和子列表都设置为相同的选择状态
|
||||||
|
list.forEach { maWb ->
|
||||||
|
maWb.checked.set(shouldCheckAll)
|
||||||
|
// 同步到所有子列表项
|
||||||
|
maWb.haWbList?.forEach { haWb ->
|
||||||
|
haWb.checked.set(shouldCheckAll)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
isAllChecked.value = shouldCheckAll
|
isAllChecked.value = shouldCheckAll
|
||||||
|
|
||||||
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||||
|
|||||||
@@ -7,9 +7,15 @@
|
|||||||
|
|
||||||
<import type="com.lukouguoji.module_base.ui.weight.search.layout.SearchLayoutType" />
|
<import type="com.lukouguoji.module_base.ui.weight.search.layout.SearchLayoutType" />
|
||||||
|
|
||||||
|
<import type="com.lukouguoji.gjc.R" />
|
||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="com.lukouguoji.gjc.viewModel.IntExpStorageUseViewModel" />
|
type="com.lukouguoji.gjc.viewModel.IntExpStorageUseViewModel" />
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="activity"
|
||||||
|
type="com.lukouguoji.gjc.activity.IntExpStorageUseActivity" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -42,16 +48,16 @@
|
|||||||
<!-- 航班号 -->
|
<!-- 航班号 -->
|
||||||
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
||||||
hint='@{"请输入航班号"}'
|
hint='@{"请输入航班号"}'
|
||||||
|
setUpperCaseAlphanumeric="@{true}"
|
||||||
type="@{SearchLayoutType.INPUT}"
|
type="@{SearchLayoutType.INPUT}"
|
||||||
value="@={viewModel.flightNo}"
|
value="@={viewModel.flightNo}"
|
||||||
setUpperCaseAlphanumeric="@{true}"
|
|
||||||
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" />
|
||||||
|
|
||||||
<!-- 清仓综合结果 -->
|
<!-- 清仓综合结果 -->
|
||||||
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
||||||
hint='@{"请选择清仓综合结果"}'
|
hint='@{"请选择清仓结果"}'
|
||||||
list="@{viewModel.clearResultList}"
|
list="@{viewModel.clearResultList}"
|
||||||
type="@{SearchLayoutType.SPINNER}"
|
type="@{SearchLayoutType.SPINNER}"
|
||||||
value="@={viewModel.clearResult}"
|
value="@={viewModel.clearResult}"
|
||||||
@@ -61,6 +67,12 @@
|
|||||||
|
|
||||||
<!-- 运单号 -->
|
<!-- 运单号 -->
|
||||||
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
||||||
|
autoQueryEnabled="@{true}"
|
||||||
|
autoQueryMaxLength="@{8}"
|
||||||
|
autoQueryMinLength="@{4}"
|
||||||
|
autoQueryParamKey="@{`wbNo`}"
|
||||||
|
autoQueryTitle="@{`选择运单号`}"
|
||||||
|
autoQueryUrl="@{`/IntExpStorageUse/queryWbNoList`}"
|
||||||
hint='@{"请输入运单号"}'
|
hint='@{"请输入运单号"}'
|
||||||
icon="@{@drawable/img_scan}"
|
icon="@{@drawable/img_scan}"
|
||||||
setOnIconClickListener="@{(v)-> viewModel.scanWbNo()}"
|
setOnIconClickListener="@{(v)-> viewModel.scanWbNo()}"
|
||||||
@@ -74,14 +86,14 @@
|
|||||||
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
||||||
hint='@{"请输入库位号"}'
|
hint='@{"请输入库位号"}'
|
||||||
type="@{SearchLayoutType.INPUT}"
|
type="@{SearchLayoutType.INPUT}"
|
||||||
value="@={viewModel.storageCode}"
|
value="@={viewModel.location}"
|
||||||
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" />
|
||||||
|
|
||||||
<!-- 搜索按钮 -->
|
<!-- 搜索按钮 -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="200dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
@@ -94,6 +106,17 @@
|
|||||||
android:padding="2dp"
|
android:padding="2dp"
|
||||||
android:src="@drawable/img_search" />
|
android:src="@drawable/img_search" />
|
||||||
|
|
||||||
|
<!-- 全局展开/收起按钮 -->
|
||||||
|
<ImageView
|
||||||
|
loadImage="@{viewModel.isAllExpanded ? R.mipmap.img_up : R.mipmap.img_down}"
|
||||||
|
android:layout_width="36dp"
|
||||||
|
android:layout_height="36dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:contentDescription="展开/收起全部子列表"
|
||||||
|
android:onClick="@{()-> viewModel.toggleAllExpand()}"
|
||||||
|
android:padding="2dp"
|
||||||
|
android:scaleType="fitCenter" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -199,22 +222,19 @@
|
|||||||
<!-- 清仓按钮 -->
|
<!-- 清仓按钮 -->
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/tv_bottom_btn"
|
style="@style/tv_bottom_btn"
|
||||||
android:layout_marginEnd="10dp"
|
android:onClick="@{()-> activity.showClearDialog()}"
|
||||||
android:onClick="@{()-> viewModel.clearStorage()}"
|
|
||||||
android:text="清 仓" />
|
android:text="清 仓" />
|
||||||
|
|
||||||
<!-- 修改库位按钮 -->
|
<!-- 修改库位按钮 -->
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/tv_bottom_btn"
|
style="@style/tv_bottom_btn"
|
||||||
android:layout_marginEnd="10dp"
|
android:onClick="@{()-> activity.showModifyStorageDialog()}"
|
||||||
android:onClick="@{()-> viewModel.modifyStorage()}"
|
|
||||||
android:text="修改库位" />
|
android:text="修改库位" />
|
||||||
|
|
||||||
<!-- 出库按钮 -->
|
<!-- 出库按钮 -->
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/tv_bottom_btn"
|
style="@style/tv_bottom_btn"
|
||||||
android:layout_marginEnd="10dp"
|
android:onClick="@{()-> activity.showOutStorageDialog()}"
|
||||||
android:onClick="@{()-> viewModel.outStorage()}"
|
|
||||||
android:text="出 库" />
|
android:text="出 库" />
|
||||||
|
|
||||||
<!-- 入库按钮 -->
|
<!-- 入库按钮 -->
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layout xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<data>
|
||||||
|
<import type="com.lukouguoji.module_base.ui.weight.search.layout.SearchLayoutType"/>
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="model"
|
||||||
|
type="com.lukouguoji.gjc.dialog.IntExpModifyStorageDialogModel" />
|
||||||
|
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="600dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/bg_dialog_f2_radius_10"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<!-- 标题栏 -->
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
android:background="@drawable/bg_primary_radius_top_10"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="库位信息"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<!-- 表单内容 -->
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="30dp"
|
||||||
|
android:layout_marginTop="30dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<!-- 库位号 -->
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
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="16sp" />
|
||||||
|
|
||||||
|
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
type="@{SearchLayoutType.INPUT}"
|
||||||
|
hint='@{"请输入库位号"}'
|
||||||
|
value="@={model.location}" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!-- 底部按钮 -->
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="40dp"
|
||||||
|
android:layout_marginBottom="20dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/tv_bottom_btn"
|
||||||
|
android:onClick="@{()->model.dismiss()}"
|
||||||
|
android:text="取消" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/tv_bottom_btn"
|
||||||
|
android:onClick="@{()->model.onSaveClick()}"
|
||||||
|
android:text="保存" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</layout>
|
||||||
86
module_gjc/src/main/res/layout/dialog_int_exp_move_clear.xml
Normal file
86
module_gjc/src/main/res/layout/dialog_int_exp_move_clear.xml
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layout xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<data>
|
||||||
|
<import type="com.lukouguoji.module_base.ui.weight.search.layout.SearchLayoutType"/>
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="model"
|
||||||
|
type="com.lukouguoji.gjc.dialog.IntExpMoveClearDialogModel" />
|
||||||
|
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="600dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/bg_dialog_f2_radius_10"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<!-- 标题栏 -->
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
android:background="@drawable/bg_primary_radius_top_10"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="清仓操作"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<!-- 表单内容 -->
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="30dp"
|
||||||
|
android:layout_marginTop="30dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<!-- 清仓正常 -->
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
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="16sp" />
|
||||||
|
|
||||||
|
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
type="@{SearchLayoutType.SPINNER}"
|
||||||
|
list="@{model.clearNormalList}"
|
||||||
|
value="@={model.clearNormal}" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!-- 底部按钮 -->
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="40dp"
|
||||||
|
android:layout_marginBottom="20dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/tv_bottom_btn"
|
||||||
|
android:onClick="@{()->model.dismiss()}"
|
||||||
|
android:text="取消" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/tv_bottom_btn"
|
||||||
|
android:onClick="@{()->model.onSaveClick()}"
|
||||||
|
android:text="保存" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</layout>
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1.0"
|
android:layout_weight="0.9"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -73,7 +73,6 @@
|
|||||||
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:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -81,8 +80,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@{bean.wbNo}"
|
android:text="@{bean.wbNo}"
|
||||||
android:textColor="@color/colorPrimary"
|
android:textColor="@color/colorPrimary"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp" />
|
||||||
android:textStyle="bold" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@@ -90,7 +88,7 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1.2"
|
android:layout_weight="1.1"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -98,14 +96,12 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
completeSpace="@{5}"
|
completeSpace="@{5}"
|
||||||
android:text="航班信息:"
|
android:text="航班信息:"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<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.flight}"
|
android:text="@{bean.flightInfo}"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -120,16 +116,14 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
completeSpace="@{3}"
|
completeSpace="@{5}"
|
||||||
android:text="航程:"
|
android:text="航程:"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<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.range}"
|
android:text="@{bean.range}"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -138,7 +132,7 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1.2"
|
android:layout_weight="1.1"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -146,7 +140,6 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
completeSpace="@{5}"
|
completeSpace="@{5}"
|
||||||
android:text="品名(英):"
|
android:text="品名(英):"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -155,7 +148,6 @@
|
|||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:text="@{bean.goods}"
|
android:text="@{bean.goods}"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -164,22 +156,20 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="0.8"
|
android:layout_weight="0.6"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
completeSpace="@{3}"
|
completeSpace="@{4}"
|
||||||
android:text="重量:"
|
android:text="重量:"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@{String.valueOf((int)bean.weight)}"
|
android:text="@{String.valueOf((int)bean.weight)}"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -197,7 +187,7 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1.0"
|
android:layout_weight="0.9"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -205,14 +195,12 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
completeSpace="@{4}"
|
completeSpace="@{4}"
|
||||||
android:text="代理人:"
|
android:text="代理人:"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<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.agentName}"
|
android:text="@{bean.agentCode}"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -221,7 +209,7 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1.2"
|
android:layout_weight="1.1"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -229,14 +217,12 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
completeSpace="@{5}"
|
completeSpace="@{5}"
|
||||||
android:text="件数:"
|
android:text="件数:"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@{String.valueOf(bean.pc)}"
|
android:text="@{String.valueOf(bean.pc)}"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -251,16 +237,14 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
completeSpace="@{3}"
|
completeSpace="@{5}"
|
||||||
android:text="清仓正常否:"
|
android:text="清仓正常:"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="是"
|
android:text="@{bean.clearNormalText}"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -269,7 +253,7 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1.2"
|
android:layout_weight="1.1"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -277,14 +261,12 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
completeSpace="@{5}"
|
completeSpace="@{5}"
|
||||||
android:text="入库时间:"
|
android:text="入库时间:"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<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.opDate}"
|
android:text="@{bean.opDate}"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -293,22 +275,20 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="0.8"
|
android:layout_weight="0.6"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
completeSpace="@{3}"
|
completeSpace="@{4}"
|
||||||
android:text="库位数:"
|
android:text="库位数:"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@{String.valueOf(bean.storageUseNumber)}"
|
android:text="@{String.valueOf(bean.storageUseNumber)}"
|
||||||
android:textColor="@color/text_normal"
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:layout_weight="1.5"
|
android:layout_weight="1.5"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="@{bean.inDate != null ? bean.inDate.toString() : ``}"
|
android:text="@{bean.inDate ?? ``}"
|
||||||
android:textColor="@color/text_normal"
|
android:textColor="@color/text_normal"
|
||||||
android:textSize="14sp" />
|
android:textSize="14sp" />
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:layout_weight="1.5"
|
android:layout_weight="1.5"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="@{bean.outDate != null ? bean.outDate.toString() : ``}"
|
android:text="@{bean.outDate ?? ``}"
|
||||||
android:textColor="@color/text_normal"
|
android:textColor="@color/text_normal"
|
||||||
android:textSize="14sp" />
|
android:textSize="14sp" />
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user