From d50b11c9aa1e6e2a7bad0e93b25c7ecea36b1f08 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Thu, 5 Mar 2026 16:26:38 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=95=86=E5=93=81=E9=BB=98=E8=AE=A4=E6=98=BE=E7=A4=BA=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E5=8D=95=E4=BF=A1=E6=81=AF=EF=BC=9B=E9=87=87=E9=9B=86?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=98=BE=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/FoodCollectionActivity.kt | 18 +- .../sw/inbound/activity/GoodsListActivity.kt | 9 +- .../sw/inbound/activity/ReceiptActivity.kt | 2 + .../sw/inbound/dialog/CollectSearchDialog.kt | 30 +- .../sw/inbound/dialog/GoodsRecognizeDialog.kt | 2 - .../com/sw/inbound/dialog/GoodsStoreDialog.kt | 88 +++-- .../sw/inbound/model/response/GoodsInfo.kt | 128 +++---- .../java/com/sw/inbound/objbox/ObjectBox.kt | 4 + .../ui/weight/ReceiptUnadjustedListView.kt | 314 +++++++++--------- 9 files changed, 321 insertions(+), 274 deletions(-) diff --git a/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt b/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt index 30a77d8..9128989 100644 --- a/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt +++ b/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt @@ -28,6 +28,7 @@ import com.sw.inbound.databinding.LayoutEmptySearchBinding import com.sw.inbound.dialog.CollectSearchDialog import com.sw.inbound.dialog.CustomDialog import com.sw.inbound.dialog.Loading +import com.sw.inbound.dialog.WarnDialog import com.sw.inbound.model.response.SearchGoodsInfo import com.sw.inbound.objbox.Food import com.sw.inbound.objbox.FoodCollectionBean @@ -182,8 +183,7 @@ class FoodCollectionActivity : ComponentActivity() { } // vectorThread() // uploadAllImage() - - upload() + showUploadDialog() } binding.btnTakePhoto.clickWithDebounce(800) { takePhoto() @@ -224,6 +224,20 @@ class FoodCollectionActivity : ComponentActivity() { } } + private fun showUploadDialog() { + val goodsName = searchGoodsList[clickIndex].goodsName + WarnDialog( + context = this, + content = "选择错误会影响识别结果,请确认当前采集物品是:${goodsName}?", + cancelBlock = { + + }, + confirmBlock = { + upload() + } + ) .show() + } + private var pageNo = 1 private var clickIndex = -1 diff --git a/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt b/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt index 466af83..4cb7c8e 100644 --- a/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt +++ b/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt @@ -38,19 +38,13 @@ import com.sw.inbound.model.request.UploadInfo import com.sw.inbound.model.response.DictType import com.sw.inbound.model.response.GoodsInfo import com.sw.inbound.model.response.SearchGoodsInfo -import com.sw.inbound.objbox.Food import com.sw.inbound.objbox.FoodModule import com.sw.inbound.objbox.FoodModule.IdNameScore -import com.sw.inbound.objbox.FoodModule.bitmap2FloatArray -import com.sw.inbound.objbox.Food_ -import com.sw.inbound.objbox.ObjectBox import com.sw.inbound.sdk.SensorScaleUtils -import com.sw.inbound.utils.AssetsTool import com.sw.inbound.utils.BitmapCropper import com.sw.inbound.utils.BitmapSaver import com.sw.inbound.utils.CameraUtils import com.sw.inbound.utils.DateTimeUtils -import com.sw.inbound.utils.FileUtils import com.sw.inbound.utils.ImageUtil import com.sw.inbound.utils.LogSaveUtil import com.sw.inbound.utils.PreciseDelayHandler @@ -63,7 +57,6 @@ import com.sw.inbound.utils.ext.toast import com.sw.inbound.viewmodel.ReceiptViewModel import com.sw.inbound.viewmodel.UserViewModel import dagger.hilt.android.AndroidEntryPoint -import io.objectbox.query.Query import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import okhttp3.RequestBody @@ -483,7 +476,7 @@ abstract class GoodsListActivity : ComponentActivity() { context = this, list = goodsList.toMutableList(), goodsFile = file, - goodsName = name, + goodsName = name ) { GoodsSearchDialog(this).show() }.apply { diff --git a/app/src/main/java/com/sw/inbound/activity/ReceiptActivity.kt b/app/src/main/java/com/sw/inbound/activity/ReceiptActivity.kt index b80be38..2e47e5a 100644 --- a/app/src/main/java/com/sw/inbound/activity/ReceiptActivity.kt +++ b/app/src/main/java/com/sw/inbound/activity/ReceiptActivity.kt @@ -85,6 +85,8 @@ class ReceiptActivity : GoodsListActivity() { list.forEach { goodsInfo -> goodsInfo.recUnitPriceTaxInBak = goodsInfo.recUnitPriceTaxIn goodsInfo.recUnitPriceTaxIn = 0.0 + goodsInfo.recPriceExItemBak = goodsInfo.recPriceExItem + goodsInfo.receiveCountBak = goodsInfo.receiveCount goodsInfo.unitNameBak = goodsInfo.unitName goodsInfo.receivedNumBak = goodsInfo.receivedNum } diff --git a/app/src/main/java/com/sw/inbound/dialog/CollectSearchDialog.kt b/app/src/main/java/com/sw/inbound/dialog/CollectSearchDialog.kt index 48726f6..281db9b 100644 --- a/app/src/main/java/com/sw/inbound/dialog/CollectSearchDialog.kt +++ b/app/src/main/java/com/sw/inbound/dialog/CollectSearchDialog.kt @@ -79,6 +79,7 @@ class CollectSearchDialog( it.setEnableLoadMore(false) it.setOnRefreshListener { pageNo = 1 + this@CollectSearchDialog.clickIndex = -1 val searchName = binding.etInputGoods.text.toString().trim() getCollectGoods(searchName) } @@ -121,17 +122,13 @@ class CollectSearchDialog( private val searchAdapter by lazy { CollectSearchAdapter(list).apply { isStateViewEnable = true - //setOnItemClickListener { _, _, position -> - // this@CollectSearchDialog.clickIndex = position - // if (list[position].isSelected) { - // return@setOnItemClickListener - // } - // list.forEach { item -> - // item.isSelected = false - // } - // list[position].isSelected = true - // notifyDataSetChanged() - //} + setOnItemClickListener { _, _, position -> + activity?.lifecycleScope?.launch { + val goodsName = list[position].goodsName?:"" + val count = ObjectBox.count(goodsName) + activity?.toast("已采集数据${count}条") + } + } addOnItemChildClickListener(R.id.ivDelete) { _, _, position -> this@CollectSearchDialog.clickIndex = position list.forEach { item -> @@ -139,7 +136,9 @@ class CollectSearchDialog( } list[position].isSelected = true notifyDataSetChanged() - showDeleteDialog(position) + showDeleteDialog(position) { + this@CollectSearchDialog.clickIndex = -1 + } } } } @@ -147,7 +146,12 @@ class CollectSearchDialog( private fun showDeleteDialog(position: Int, deleteAction: () -> Unit = {}) { WarnDialog( context = context, - content = "请确认是否删除物品:${list[position].goodsName}?", + content = "请确认是否删除物品:${list[position].goodsName?.split("WP")?.get(0)}?", + cancelBlock = { + this@CollectSearchDialog.clickIndex = -1 + list[position].isSelected = false + searchAdapter.notifyItemChanged(position) + }, confirmBlock = { // Thread { // }.start() diff --git a/app/src/main/java/com/sw/inbound/dialog/GoodsRecognizeDialog.kt b/app/src/main/java/com/sw/inbound/dialog/GoodsRecognizeDialog.kt index 0353af2..2471953 100644 --- a/app/src/main/java/com/sw/inbound/dialog/GoodsRecognizeDialog.kt +++ b/app/src/main/java/com/sw/inbound/dialog/GoodsRecognizeDialog.kt @@ -8,11 +8,9 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.sw.inbound.activity.GoodsListActivity import com.sw.inbound.adapter.RecognizeAdapter import com.sw.inbound.databinding.DialogGoodsRecognizeBinding -import com.sw.inbound.databinding.LayoutEmptyRecognizeBinding import com.sw.inbound.model.response.SearchGoodsInfo import com.sw.inbound.utils.ext.clickWithDebounce import com.sw.inbound.utils.ext.gone -import com.sw.inbound.utils.ext.toast import com.sw.inbound.utils.ext.visible import java.io.File diff --git a/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt b/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt index 3a0d93d..60c25ea 100644 --- a/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt +++ b/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt @@ -114,28 +114,7 @@ class GoodsStoreDialog( ) { dictType -> try { v.hideKeyboard() - binding.tvProcurementUnit.run { - text = dictType.value - tag = dictType.id - } - val unit = dictType.value - binding.tvCountUnit.text = unit - binding.etProcurementCount.let { - //it.isEnabled = true - it.inputType = if (unit == "千克" || unit == "公斤" || unit == "斤") { - InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL - } else { - InputType.TYPE_CLASS_NUMBER - } - } - val first = goods.unitVoList!!.first { it.businessUnitId == dictType.id } - val stringBuilder = - StringBuilder().append("1").append(dictType.value).append("=") - .append(first.purchaseValue!!.toInt().toString()) - .append(goods.kcUnitName).append(",").append("1") - .append(goods.kcUnitName).append("=").append(first.consumeValue) - .append("克") - binding.tvUnitCalculate.text = stringBuilder.toString() + loadDropdownMenu(dictType) //val count = getUnitCount(dictType.id!!) //if (count.isBlank() || "0" == count) { // //context.toast("入库数量不能为0") @@ -206,9 +185,60 @@ class GoodsStoreDialog( if (it.isNullOrBlank()) invisible() else visible() } } + setPurchaseOrderInfo() addWeightListener() } + /** + * 加载下拉菜单 + */ + private fun loadDropdownMenu(dictType: DictType) { + binding.tvProcurementUnit.run { + text = dictType.value + tag = dictType.id + } + val unit = dictType.value + binding.tvCountUnit.text = unit + binding.etProcurementCount.let { + //it.isEnabled = true + it.inputType = if (unit == "千克" || unit == "公斤" || unit == "斤") { + InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL + } else { + InputType.TYPE_CLASS_NUMBER + } + } + val first = goods.unitVoList!!.first { it.businessUnitId == dictType.id } + val stringBuilder = + StringBuilder().append("1").append(dictType.value).append("=") + .append(first.purchaseValue!!.toInt().toString()) + .append(goods.kcUnitName).append(",").append("1") + .append(goods.kcUnitName).append("=").append(first.consumeValue) + .append("克") + binding.tvUnitCalculate.text = stringBuilder.toString() + } + + /** + * 设置采购单信息 + */ + private fun setPurchaseOrderInfo() { + isLoadPurchaseOrderInfo = false + val item = activity?.goodsList?.firstOrNull { it.goodId == goods.id } + if (item == null || dropdownList.isEmpty()) return + val unit = item.unitNameBak + val price = item.recPriceExItemBak + val amount = item.recUnitPriceTaxInBak + val count = item.receiveCountBak + + val dictType = dropdownList.firstOrNull { it.value == unit } + if (dictType == null) return + loadDropdownMenu(dictType) + + count?.let { binding.etProcurementCount.setText("$count") } + price?.let { binding.tvProcurementPrice.text = "$price" } + amount?.let { binding.etProcurementAmount.setText("$amount") } + isLoadPurchaseOrderInfo = true + } + private var isLoadPurchaseOrderInfo = true private fun addWeightListener() { activity?.readWeightInfo { weight -> if (abs(this.realWeight - weight) < 10 && binding.etProcurementCount.text.isNotBlank()) { @@ -217,7 +247,7 @@ class GoodsStoreDialog( } this.realWeight = weight binding.tvTotalWeight.text = getSpannable(weight) - if (binding.etProcurementCount.isFocused) { + if (isLoadPurchaseOrderInfo || binding.etProcurementCount.isFocused) { return@readWeightInfo } val unitTag = binding.tvProcurementUnit.tag @@ -334,10 +364,10 @@ class GoodsStoreDialog( collectGoodsVector(uri) { activity?.uploadImage(goods.id!!, goods.goodsName!!, imageFile) } - binding.root.postDelayed({ - Loading.dismiss() - confirm(unitName, count, price, totalPrice) - }, 500) + binding.root.postDelayed({ + Loading.dismiss() + confirm(unitName, count, price, totalPrice) + }, 500) } cameraUtils.addFailCallback { binding.root.postDelayed({ @@ -350,7 +380,7 @@ class GoodsStoreDialog( } } - private fun confirm(unitName:String, count:Double, price:Double, totalPrice:Double?) { + private fun confirm(unitName: String, count: Double, price: Double, totalPrice: Double?) { val id = binding.tvProcurementUnit.tag.toString() val unitVo = goods.unitVoList!!.first { it.businessUnitId == id } confirmBlock( @@ -464,7 +494,7 @@ class GoodsStoreDialog( private var imageFile: File? = null // private var box: Box? = null - private fun collectGoodsVector(imageUri:Uri, block: ()-> Unit = {}) { + private fun collectGoodsVector(imageUri: Uri, block: () -> Unit = {}) { try { ImageUtil.uriToBitmap(context, imageUri)?.let { bitmap -> val cropBitmap = BitmapCropper.cropCenter( diff --git a/app/src/main/java/com/sw/inbound/model/response/GoodsInfo.kt b/app/src/main/java/com/sw/inbound/model/response/GoodsInfo.kt index 43b5e4c..dc921a0 100644 --- a/app/src/main/java/com/sw/inbound/model/response/GoodsInfo.kt +++ b/app/src/main/java/com/sw/inbound/model/response/GoodsInfo.kt @@ -54,13 +54,15 @@ data class GoodsInfo( * 采购数量 */ var receiveCount: Double? = null, + var receiveCountBak: Double? = null, /** * 金额 */ var recPriceExItem: Double? = null, + var recPriceExItemBak: Double? = null, // 金额 界面显示 - var recPriceExItemTemp: String = "", +// var recPriceExItemTemp: String = "", /** * 仓库id */ @@ -144,16 +146,16 @@ data class GoodsInfo( return receivedNum?.toSafeString(unitName) ?: "0" } - val dualCountStr: String - get() { - return if (receivedNum != null && receivedNum != 0.toDouble() && receiveCount != null && receiveCount != 0.toDouble()) { - "${receivedNum.toSafeString(unitName)}/${receiveCount.toSafeString(unitName)}" - } else if (receivedNum != null && receivedNum != 0.toDouble()) { - "${receivedNum.toSafeString(unitName)}/-" - } else { - receiveCountListStr - } - } +// val dualCountStr: String +// get() { +// return if (receivedNum != null && receivedNum != 0.toDouble() && receiveCount != null && receiveCount != 0.toDouble()) { +// "${receivedNum.toSafeString(unitName)}/${receiveCount.toSafeString(unitName)}" +// } else if (receivedNum != null && receivedNum != 0.toDouble()) { +// "${receivedNum.toSafeString(unitName)}/-" +// } else { +// receiveCountListStr +// } +// } val recUnitPriceTaxInStr: String get() { @@ -167,11 +169,11 @@ data class GoodsInfo( return recUnitPriceTaxIn?.toFormattedString() ?: "-" } - val newRecUnitPriceTaxInListStr: String - get() { - if (newRecUnitPriceTaxIn == 0.toDouble()) return "-" - return newRecUnitPriceTaxIn?.toFormattedString() ?: "-" - } +// val newRecUnitPriceTaxInListStr: String +// get() { +// if (newRecUnitPriceTaxIn == 0.toDouble()) return "-" +// return newRecUnitPriceTaxIn?.toFormattedString() ?: "-" +// } val receiveCountStr: String get() { @@ -180,13 +182,13 @@ data class GoodsInfo( else -> receiveCount?.toSafeString(unitName) ?: "" } } - val receiveCountListStr: String - get() { - return when (receiveCount) { - 0.toDouble() -> "-" - else -> receiveCount?.toSafeString(unitName) ?: "-" - } - } +// val receiveCountListStr: String +// get() { +// return when (receiveCount) { +// 0.toDouble() -> "-" +// else -> receiveCount?.toSafeString(unitName) ?: "-" +// } +// } val recPriceExItemStr: String get() { @@ -195,13 +197,13 @@ data class GoodsInfo( else -> recPriceExItem?.toFormattedString() ?: "" } } - val recPriceExItemListStr: String - get() { - return when (recPriceExItem) { - 0.toDouble() -> "-" - else -> recPriceExItem?.toFormattedString() ?: "-" - } - } +// val recPriceExItemListStr: String +// get() { +// return when (recPriceExItem) { +// 0.toDouble() -> "-" +// else -> recPriceExItem?.toFormattedString() ?: "-" +// } +// } val unitNameStr: String get() { @@ -220,14 +222,14 @@ data class GoodsInfo( return goodsWeight?.toFormattedString() ?: "" } - val goodsWeightUnitStr: String - get() { - return if (goodsWeight == null || goodsWeight!!.toInt() < 1) { - "克" - } else { - "千克" - } - } +// val goodsWeightUnitStr: String +// get() { +// return if (goodsWeight == null || goodsWeight!!.toInt() < 1) { +// "克" +// } else { +// "千克" +// } +// } var purchaseUnitIdStr: String @@ -238,30 +240,30 @@ data class GoodsInfo( return GlobalData.unitTypeList.find { it.id == purchaseUnitId.toString() }?.value ?: "" } - val warehouseNameStr: String - get() { - if (warehouseName == null) { - return "" - } - return warehouseName!! - } +// val warehouseNameStr: String +// get() { +// if (warehouseName == null) { +// return "" +// } +// return warehouseName!! +// } - fun hasNullField(): String? { - if (warehouseId.isNullOrBlank()) { - return "请选择仓库" - } - if (receivedNum == null || receivedNum == 0.toDouble()) { - return "请输入收货数量或进行称重" - } - if (newRecUnitPriceTaxIn == null || newRecUnitPriceTaxIn == 0.toDouble()) { - return "请输入收货单价" - } - if (recPriceExItem == null || recPriceExItem == 0.toDouble()) { - return "请输入收货金额" - } - if (goodsWeight == null || goodsWeight!!.toFloat() <= 0) { - return "请放入要称重的物品" - } - return null - } +// fun hasNullField(): String? { +// if (warehouseId.isNullOrBlank()) { +// return "请选择仓库" +// } +// if (receivedNum == null || receivedNum == 0.toDouble()) { +// return "请输入收货数量或进行称重" +// } +// if (newRecUnitPriceTaxIn == null || newRecUnitPriceTaxIn == 0.toDouble()) { +// return "请输入收货单价" +// } +// if (recPriceExItem == null || recPriceExItem == 0.toDouble()) { +// return "请输入收货金额" +// } +// if (goodsWeight == null || goodsWeight!!.toFloat() <= 0) { +// return "请放入要称重的物品" +// } +// return null +// } } \ No newline at end of file diff --git a/app/src/main/java/com/sw/inbound/objbox/ObjectBox.kt b/app/src/main/java/com/sw/inbound/objbox/ObjectBox.kt index c7db823..e25d17d 100644 --- a/app/src/main/java/com/sw/inbound/objbox/ObjectBox.kt +++ b/app/src/main/java/com/sw/inbound/objbox/ObjectBox.kt @@ -183,6 +183,10 @@ object ObjectBox { box?.put(entities) } + suspend fun count(name: String) = safeDbOp { + getBox()?.all?.count() { it.name == name } + } ?: 0 + suspend fun filter(name: String?) = safeDbOp { val list = getBox()?.all?.distinctBy { it.name } if (name.isNullOrBlank().not()) { diff --git a/app/src/main/java/com/sw/inbound/ui/weight/ReceiptUnadjustedListView.kt b/app/src/main/java/com/sw/inbound/ui/weight/ReceiptUnadjustedListView.kt index cde1550..c1796e4 100644 --- a/app/src/main/java/com/sw/inbound/ui/weight/ReceiptUnadjustedListView.kt +++ b/app/src/main/java/com/sw/inbound/ui/weight/ReceiptUnadjustedListView.kt @@ -1,157 +1,157 @@ -package com.sw.inbound.ui.weight - -import androidx.compose.foundation.Image -import androidx.compose.foundation.background -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.material3.HorizontalDivider -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.colorResource -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.unit.dp -import com.sw.inbound.R -import com.sw.inbound.ext.bold -import com.sw.inbound.model.response.GoodsInfo -import com.sw.inbound.ui.theme.AppTypography -import com.sw.inbound.ui.theme.Gray_DCDCF0 - -/** - * 收货-未调整列表 - */ -@Composable -fun ReceiptUnadjustedListView( - modifier: Modifier = Modifier, - productList: List, - checkedItem: GoodsInfo? = null, - onItemCheckedClick: (Int, GoodsInfo) -> Unit = { _, _ -> }, - showClose: Boolean = false, - onCloseClick: (GoodsInfo) -> Unit = {}, -) { - var selectIndex by remember { mutableIntStateOf(-1) } - - Column( - modifier = modifier -// .padding(horizontal = 30.dp) - ) { - // 左侧列表标题 - Row( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 60.dp) - .height(84.dp), - verticalAlignment = Alignment.CenterVertically - ) { - CustomSingleRightText( - modifier = Modifier.weight(1f), - text = "名称", - style = AppTypography.gray96a0aaTextStyle.bold(), - textAlign = TextAlign.Start - ) - Spacer(modifier = Modifier.width(10.dp)) - CustomSingleRightText( - modifier = Modifier.width(120.dp), - text = "单价(元)", - style = AppTypography.gray96a0aaTextStyle.bold() - ) - Spacer(modifier = Modifier.width(20.dp)) - CustomSingleRightText( - modifier = Modifier.width(200.dp), - text = "数量", - style = AppTypography.gray96a0aaTextStyle.bold() - ) - Spacer(modifier = Modifier.width(20.dp)) - CustomSingleRightText( - modifier = Modifier.width(120.dp), - text = "金额(元)", - style = AppTypography.gray96a0aaTextStyle.bold() - ) - if (showClose) { - Spacer(modifier = Modifier.width(78.dp)) - } - } -// Spacer(modifier = Modifier.height(31.dp)) - HorizontalDivider(thickness = 1.dp, color = colorResource(R.color.divider)) -// Spacer(modifier = Modifier.height(31.dp)) - // 左侧列表 - LazyColumn() { - itemsIndexed( - items = productList, -// key = { index, it -> it.id ?: index }) { index, it -> - key = { index, it -> index }) { index, it -> - - val checkedBg = - if (/*selectIndex == index ||*/ checkedItem?.id == it.id) Gray_DCDCF0 else Color.Transparent - Row( - modifier = Modifier - .background(color = checkedBg) - .height(80.dp) - .padding(horizontal = 60.dp) - .clickable { - selectIndex = index - onItemCheckedClick(index, it) - }, verticalAlignment = Alignment.CenterVertically - ) { - CustomSingleRightText( - modifier = Modifier.weight(1f), - text = it.goodNameStr, - textAlign = TextAlign.Start - ) - Spacer(modifier = Modifier.width(10.dp)) - CustomSingleRightText( - modifier = Modifier.width(120.dp), - text = it.recUnitPriceTaxInListStr, - style = AppTypography.blackTextStyle - ) - Spacer(modifier = Modifier.width(20.dp)) - CustomSingleRightText( - modifier = Modifier.width(200.dp), - text = "${it.dualCountStr}${it.unitNameStr}", - style = AppTypography.blackTextStyle - ) - Spacer(modifier = Modifier.width(20.dp)) - CustomSingleRightText( - modifier = Modifier.width(120.dp), - text = it.recPriceExItemListStr, - style = AppTypography.blackTextStyle - ) - if (showClose) { - Spacer(modifier = Modifier.width(30.dp)) - Image( - modifier = Modifier - .size(48.dp) - .clickable { - onCloseClick(it) - }, - painter = painterResource(R.mipmap.ic_delete), - contentDescription = "删除" - ) - } - } -// Spacer(modifier = Modifier.height(33.dp)) -// if (productList.indexOf(it) != productList.lastIndex) - HorizontalDivider( - thickness = 1.dp, - color = colorResource(R.color.divider) - ) -// Spacer(modifier = Modifier.height(33.dp)) - } - } - } -} \ No newline at end of file +//package com.sw.inbound.ui.weight +// +//import androidx.compose.foundation.Image +//import androidx.compose.foundation.background +//import androidx.compose.foundation.clickable +//import androidx.compose.foundation.layout.Column +//import androidx.compose.foundation.layout.Row +//import androidx.compose.foundation.layout.Spacer +//import androidx.compose.foundation.layout.fillMaxWidth +//import androidx.compose.foundation.layout.height +//import androidx.compose.foundation.layout.padding +//import androidx.compose.foundation.layout.size +//import androidx.compose.foundation.layout.width +//import androidx.compose.foundation.lazy.LazyColumn +//import androidx.compose.foundation.lazy.itemsIndexed +//import androidx.compose.material3.HorizontalDivider +//import androidx.compose.runtime.Composable +//import androidx.compose.runtime.getValue +//import androidx.compose.runtime.mutableIntStateOf +//import androidx.compose.runtime.remember +//import androidx.compose.runtime.setValue +//import androidx.compose.ui.Alignment +//import androidx.compose.ui.Modifier +//import androidx.compose.ui.graphics.Color +//import androidx.compose.ui.res.colorResource +//import androidx.compose.ui.res.painterResource +//import androidx.compose.ui.text.style.TextAlign +//import androidx.compose.ui.unit.dp +//import com.sw.inbound.R +//import com.sw.inbound.ext.bold +//import com.sw.inbound.model.response.GoodsInfo +//import com.sw.inbound.ui.theme.AppTypography +//import com.sw.inbound.ui.theme.Gray_DCDCF0 +// +///** +// * 收货-未调整列表 +// */ +//@Composable +//fun ReceiptUnadjustedListView( +// modifier: Modifier = Modifier, +// productList: List, +// checkedItem: GoodsInfo? = null, +// onItemCheckedClick: (Int, GoodsInfo) -> Unit = { _, _ -> }, +// showClose: Boolean = false, +// onCloseClick: (GoodsInfo) -> Unit = {}, +//) { +// var selectIndex by remember { mutableIntStateOf(-1) } +// +// Column( +// modifier = modifier +//// .padding(horizontal = 30.dp) +// ) { +// // 左侧列表标题 +// Row( +// modifier = Modifier +// .fillMaxWidth() +// .padding(horizontal = 60.dp) +// .height(84.dp), +// verticalAlignment = Alignment.CenterVertically +// ) { +// CustomSingleRightText( +// modifier = Modifier.weight(1f), +// text = "名称", +// style = AppTypography.gray96a0aaTextStyle.bold(), +// textAlign = TextAlign.Start +// ) +// Spacer(modifier = Modifier.width(10.dp)) +// CustomSingleRightText( +// modifier = Modifier.width(120.dp), +// text = "单价(元)", +// style = AppTypography.gray96a0aaTextStyle.bold() +// ) +// Spacer(modifier = Modifier.width(20.dp)) +// CustomSingleRightText( +// modifier = Modifier.width(200.dp), +// text = "数量", +// style = AppTypography.gray96a0aaTextStyle.bold() +// ) +// Spacer(modifier = Modifier.width(20.dp)) +// CustomSingleRightText( +// modifier = Modifier.width(120.dp), +// text = "金额(元)", +// style = AppTypography.gray96a0aaTextStyle.bold() +// ) +// if (showClose) { +// Spacer(modifier = Modifier.width(78.dp)) +// } +// } +//// Spacer(modifier = Modifier.height(31.dp)) +// HorizontalDivider(thickness = 1.dp, color = colorResource(R.color.divider)) +//// Spacer(modifier = Modifier.height(31.dp)) +// // 左侧列表 +// LazyColumn() { +// itemsIndexed( +// items = productList, +//// key = { index, it -> it.id ?: index }) { index, it -> +// key = { index, it -> index }) { index, it -> +// +// val checkedBg = +// if (/*selectIndex == index ||*/ checkedItem?.id == it.id) Gray_DCDCF0 else Color.Transparent +// Row( +// modifier = Modifier +// .background(color = checkedBg) +// .height(80.dp) +// .padding(horizontal = 60.dp) +// .clickable { +// selectIndex = index +// onItemCheckedClick(index, it) +// }, verticalAlignment = Alignment.CenterVertically +// ) { +// CustomSingleRightText( +// modifier = Modifier.weight(1f), +// text = it.goodNameStr, +// textAlign = TextAlign.Start +// ) +// Spacer(modifier = Modifier.width(10.dp)) +// CustomSingleRightText( +// modifier = Modifier.width(120.dp), +// text = it.recUnitPriceTaxInListStr, +// style = AppTypography.blackTextStyle +// ) +// Spacer(modifier = Modifier.width(20.dp)) +// CustomSingleRightText( +// modifier = Modifier.width(200.dp), +// text = "${it.dualCountStr}${it.unitNameStr}", +// style = AppTypography.blackTextStyle +// ) +// Spacer(modifier = Modifier.width(20.dp)) +// CustomSingleRightText( +// modifier = Modifier.width(120.dp), +// text = it.recPriceExItemListStr, +// style = AppTypography.blackTextStyle +// ) +// if (showClose) { +// Spacer(modifier = Modifier.width(30.dp)) +// Image( +// modifier = Modifier +// .size(48.dp) +// .clickable { +// onCloseClick(it) +// }, +// painter = painterResource(R.mipmap.ic_delete), +// contentDescription = "删除" +// ) +// } +// } +//// Spacer(modifier = Modifier.height(33.dp)) +//// if (productList.indexOf(it) != productList.lastIndex) +// HorizontalDivider( +// thickness = 1.dp, +// color = colorResource(R.color.divider) +// ) +//// Spacer(modifier = Modifier.height(33.dp)) +// } +// } +// } +//} \ No newline at end of file