添加物品单位功能

This commit is contained in:
zxj
2025-08-05 16:51:11 +08:00
parent 2eec3ec1d4
commit d99c0e6e79
14 changed files with 533 additions and 127 deletions
@@ -6,6 +6,7 @@ import com.sw.inbound.ext.toFormattedString
import com.sw.inbound.ext.toSafeBigDecimal
import com.sw.inbound.ext.toSafeDouble
import com.sw.inbound.model.request.GoodsAddParam
import com.sw.inbound.model.request.GoodsPurchaseUnitParam
import com.sw.inbound.model.request.PurchaseWarehouseParam
import com.sw.inbound.model.response.DictType
import com.sw.inbound.model.response.SearchGoodsInfo
@@ -34,6 +35,9 @@ class SelfProcurementViewModel @Inject constructor(
private val _addGoodsResult = MutableStateFlow<Boolean>(false)
val addGoodsResult: StateFlow<Boolean> = _addGoodsResult
private val _addGoodsPurchaseUnitResult = MutableStateFlow<Boolean>(false)
val addGoodsPurchaseUnitResult: StateFlow<Boolean> = _addGoodsPurchaseUnitResult
private val _addToWarehouseResult = MutableStateFlow<Boolean>(false)
val addToWarehouseResult: StateFlow<Boolean> = _addToWarehouseResult
@@ -52,10 +56,18 @@ class SelfProcurementViewModel @Inject constructor(
private val _goodsAddParam = MutableStateFlow<GoodsAddParam>(GoodsAddParam())
val goodsAddParam: StateFlow<GoodsAddParam> = _goodsAddParam
private val _goodsAddUnitParam =
MutableStateFlow<GoodsPurchaseUnitParam>(GoodsPurchaseUnitParam())
val goodsAddUnitParam: StateFlow<GoodsPurchaseUnitParam> = _goodsAddUnitParam
// 快速添加弹窗状态
private val _showAddProductDialog = MutableStateFlow<Boolean>(false)
val showAddProductDialog: StateFlow<Boolean> = _showAddProductDialog
// 添加采购单位弹窗状态
private val _showAddPurchaseUnitDialog = MutableStateFlow<Boolean>(false)
val showAddPurchaseUnitDialog: StateFlow<Boolean> = _showAddPurchaseUnitDialog
// 搜索物品列表
private val _searchListItems = MutableStateFlow<List<SearchGoodsInfo.Record>>(emptyList())
val searchListItems: StateFlow<List<SearchGoodsInfo.Record>> = _searchListItems
@@ -64,6 +76,10 @@ class SelfProcurementViewModel @Inject constructor(
private val _weightInfo = MutableStateFlow<Double?>(0.0)
val weightInfo: StateFlow<Double?> = _weightInfo
// 是否可以下拉
private val _dropdownTextChange = MutableStateFlow<Boolean>(false)
val dropdownTextChange: StateFlow<Boolean> = _dropdownTextChange
/**
* 数量是否是用户输入的值
*/
@@ -172,6 +188,16 @@ class SelfProcurementViewModel @Inject constructor(
fun updateAddProductDialog(show: Boolean) {
_showAddProductDialog.value = show
if (!show) {
_goodsAddParam.value = GoodsAddParam()
}
}
fun updateAddPurchaseUnitDialog(show: Boolean) {
_showAddPurchaseUnitDialog.value = show
if (!show) {
_goodsAddUnitParam.value = GoodsPurchaseUnitParam()
}
}
fun updateSelectedItem(purchaseOrder: PurchaseWarehouseParam?) {
@@ -221,7 +247,7 @@ class SelfProcurementViewModel @Inject constructor(
// 添加订单
fun addPurchaseItem(purchaseOrder: PurchaseWarehouseParam) {
_purchaseList.update { currentList ->
currentList + purchaseOrder
currentList + purchaseOrder
}
updateSelectedItem(null)
}
@@ -362,6 +388,38 @@ class SelfProcurementViewModel @Inject constructor(
}
}
fun updateGoodsPurchaseUnit(goodsPurchaseUnitParam: GoodsPurchaseUnitParam?) {
if (goodsPurchaseUnitParam == null) {
_dropdownTextChange.value = true
_goodsAddUnitParam.value = GoodsPurchaseUnitParam()
} else {
val hasUnitId = GlobalData.unitTypeList.any { it.id == goodsPurchaseUnitParam.unitId }
_dropdownTextChange.value = !hasUnitId
_goodsAddUnitParam.value = goodsPurchaseUnitParam
}
}
fun updateDropdownTextChange(canChange: Boolean) {
_dropdownTextChange.value == canChange
}
fun addGoodsPurchaseUnit() {
val errorInfo = _goodsAddUnitParam.value.hasNullField()
if (errorInfo != null) {
ToastUtils.showToast(errorInfo)
return
}
launchWithLoading {
val response = repository.selfPurchaseGoodsAddUnit(_goodsAddUnitParam.value)
if (parseResponse(response)) {
_showAddPurchaseUnitDialog.value = false
_goodsAddUnitParam.value = GoodsPurchaseUnitParam()
// _addGoodsPurchaseUnitResult.value = true
ToastUtils.showToast("采购单位添加成功")
}
}
}
/**
* 物品提交入库
*/
@@ -372,11 +430,7 @@ class SelfProcurementViewModel @Inject constructor(
}
launchWithLoading {
val response = repository.selfPurchaseWarehousing(_purchaseList.value)
if (parseResponse(response)) {
_addToWarehouseResult.value = true
} else {
_addToWarehouseResult.value = false
}
_addToWarehouseResult.value = parseResponse(response)
}
}
}