fix(saledelivery): 解决发货单功能中的数据传递和计算问题
This commit is contained in:
parent
71d1d6e707
commit
ba58b68ab0
@ -81,5 +81,6 @@ public class SaleDeliveryDetailDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Integer deliveriedBagQty;
|
private Integer deliveriedBagQty;
|
||||||
|
|
||||||
|
private String inventBillNo;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -120,6 +120,7 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService {
|
|||||||
List<SaleDeliveryDetailDO> saleDeliveryDetails = BeanUtils.toBean(list, SaleDeliveryDetailDO.class);
|
List<SaleDeliveryDetailDO> saleDeliveryDetails = BeanUtils.toBean(list, SaleDeliveryDetailDO.class);
|
||||||
saleDeliveryDetails.forEach(detail ->
|
saleDeliveryDetails.forEach(detail ->
|
||||||
detail.setSaleDeliveryId(saleDeliveryId)
|
detail.setSaleDeliveryId(saleDeliveryId)
|
||||||
|
.setInventBillNo(detail.getInventBillNo())
|
||||||
.setId(null)
|
.setId(null)
|
||||||
);
|
);
|
||||||
saleDeliveryDetailMapper.insertBatch(saleDeliveryDetails);
|
saleDeliveryDetailMapper.insertBatch(saleDeliveryDetails);
|
||||||
@ -239,8 +240,8 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService {
|
|||||||
.billDate(LocalDate.now())
|
.billDate(LocalDate.now())
|
||||||
.operatorId(saleDelivery.getDeliveryEmpId())
|
.operatorId(saleDelivery.getDeliveryEmpId())
|
||||||
.operatorName(saleDelivery.getDeliveryEmpName())
|
.operatorName(saleDelivery.getDeliveryEmpName())
|
||||||
.relarionNo(saleDelivery.getSaleOrdNo())
|
.relarionNo(saleDelivery.getSaleDeliveryNo())
|
||||||
.relarionId(saleDelivery.getSaleOrdId())
|
.relarionId(saleDelivery.getId())
|
||||||
.sourceNo(saleDelivery.getSaleOrdNo())
|
.sourceNo(saleDelivery.getSaleOrdNo())
|
||||||
.sourceId(saleDelivery.getSaleOrdId())
|
.sourceId(saleDelivery.getSaleOrdId())
|
||||||
.build();
|
.build();
|
||||||
@ -279,7 +280,7 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService {
|
|||||||
.bagSpec(detail.getBagSpec())
|
.bagSpec(detail.getBagSpec())
|
||||||
.bagQty(detail.getDeliveriedBagQty())
|
.bagQty(detail.getDeliveriedBagQty())
|
||||||
|
|
||||||
.relarionId(inventory.getId())
|
.relarionId(detail.getSaleDeliveryId().longValue())
|
||||||
.planId(inventory.getPlanId())
|
.planId(inventory.getPlanId())
|
||||||
.proNo(inventory.getProNo())
|
.proNo(inventory.getProNo())
|
||||||
.sourceId(inventory.getId())
|
.sourceId(inventory.getId())
|
||||||
|
|||||||
@ -135,6 +135,7 @@ const queryParams = reactive({
|
|||||||
storeAreaId: undefined,
|
storeAreaId: undefined,
|
||||||
yardQty: 1,
|
yardQty: 1,
|
||||||
matName: undefined,
|
matName: undefined,
|
||||||
|
spec: undefined,
|
||||||
})
|
})
|
||||||
|
|
||||||
// 仓储列表(条件:store_type = '3' )
|
// 仓储列表(条件:store_type = '3' )
|
||||||
@ -228,8 +229,8 @@ const handleQuery = () => {
|
|||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
queryParams.storeHouseId = undefined
|
queryParams.storeHouseId = undefined
|
||||||
queryParams.storeAreaId = undefined
|
queryParams.storeAreaId = undefined
|
||||||
queryParams.matName = undefined
|
// queryParams.matName = undefined
|
||||||
queryParams.spec = undefined
|
// queryParams.spec = undefined
|
||||||
queryParams.yardQty = 1
|
queryParams.yardQty = 1
|
||||||
|
|
||||||
queryParams.pageNo = 1
|
queryParams.pageNo = 1
|
||||||
@ -284,11 +285,13 @@ const open = (params?: { materialName?: string }) => {
|
|||||||
queryParams.pageNo = 1
|
queryParams.pageNo = 1
|
||||||
queryParams.storeHouseId = undefined
|
queryParams.storeHouseId = undefined
|
||||||
queryParams.storeAreaId = undefined
|
queryParams.storeAreaId = undefined
|
||||||
queryParams.matName = params?.materialName
|
queryParams.matName = params?.materialName || undefined
|
||||||
|
queryParams.spec = params?.spec || undefined
|
||||||
|
// 清空列表数据,不自动查询
|
||||||
|
inventoryList.value = []
|
||||||
|
total.value = 0
|
||||||
// 初始化仓储列表
|
// 初始化仓储列表
|
||||||
getStoreHouseList()
|
getStoreHouseList()
|
||||||
// 执行搜索
|
|
||||||
getList()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ open, setSelectedIds })
|
defineExpose({ open, setSelectedIds })
|
||||||
|
|||||||
@ -250,6 +250,10 @@ const emitSelect = (row) => {
|
|||||||
const open = () => {
|
const open = () => {
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
selectedId.value = ''
|
selectedId.value = ''
|
||||||
|
// 清空查询参数
|
||||||
|
queryParams.custName = undefined
|
||||||
|
queryParams.saleOrdNo = undefined
|
||||||
|
queryParams.pageNo = 1
|
||||||
handleQuery()
|
handleQuery()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -181,7 +181,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="单袋规格" prop="bagSpec" width="150px" align="center">
|
<el-table-column label="单袋规格" prop="bagSpec" width="150px" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.bagSpec" placeholder="手动录入" />
|
{{ scope.row.bagSpec }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="发货袋数(*)" prop="deliveriedBag" width="120px" align="center">
|
<el-table-column label="发货袋数(*)" prop="deliveriedBag" width="120px" align="center">
|
||||||
@ -396,6 +396,12 @@ const getSummary = (param: any) => {
|
|||||||
|
|
||||||
/** 强制刷新表格(用于实时更新合计) */
|
/** 强制刷新表格(用于实时更新合计) */
|
||||||
const refreshTable = () => {
|
const refreshTable = () => {
|
||||||
|
// 自动计算发货数量:deliveriedQty = deliveriedBag * bagSpec
|
||||||
|
productList.value.forEach(item => {
|
||||||
|
const bag = Number(item.deliveriedBag) || 0
|
||||||
|
const spec = Number(item.bagSpec) || 0
|
||||||
|
item.deliveriedQty = bag * spec
|
||||||
|
})
|
||||||
// 通过修改key强制表格重新渲染
|
// 通过修改key强制表格重新渲染
|
||||||
if (productList.value.length > 0) {
|
if (productList.value.length > 0) {
|
||||||
productList.value = [...productList.value]
|
productList.value = [...productList.value]
|
||||||
@ -580,6 +586,9 @@ const handleOrderSelect = async (data: any) => {
|
|||||||
formData.deliveriedQty = data.remaimQty
|
formData.deliveriedQty = data.remaimQty
|
||||||
formData.unit = data.unit
|
formData.unit = data.unit
|
||||||
|
|
||||||
|
// 切换销售订单后,清空产品信息列表
|
||||||
|
productList.value = []
|
||||||
|
|
||||||
// 添加到选项列表以便显示
|
// 添加到选项列表以便显示
|
||||||
if (!saleOrderOptions.value.find(item => item.id === data.saleOrdId)) {
|
if (!saleOrderOptions.value.find(item => item.id === data.saleOrdId)) {
|
||||||
saleOrderOptions.value.push({
|
saleOrderOptions.value.push({
|
||||||
@ -643,6 +652,12 @@ const loadCustomerContact = async (custId: number) => {
|
|||||||
|
|
||||||
/** 添加产品项 */
|
/** 添加产品项 */
|
||||||
const addProductItem = () => {
|
const addProductItem = () => {
|
||||||
|
// 校验:必须先选择销售订单(确保有产品名称和规格)
|
||||||
|
if (!formData.materialName || !formData.spec) {
|
||||||
|
message.warning('请先选择销售订单!')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// 获取已选择的库存ID列表
|
// 获取已选择的库存ID列表
|
||||||
const selectedIds = productList.value
|
const selectedIds = productList.value
|
||||||
.filter(item => item.inventoryId)
|
.filter(item => item.inventoryId)
|
||||||
@ -651,8 +666,8 @@ const addProductItem = () => {
|
|||||||
// 设置已选择的ID,以便弹窗打开时自动选中
|
// 设置已选择的ID,以便弹窗打开时自动选中
|
||||||
inventorySelectRef.value.setSelectedIds(selectedIds)
|
inventorySelectRef.value.setSelectedIds(selectedIds)
|
||||||
|
|
||||||
// 打开弹窗,传入产品名称作为查询参数
|
// 打开弹窗,传入产品名称和规格信息作为查询参数
|
||||||
inventorySelectRef.value.open({ materialName: formData.materialName })
|
inventorySelectRef.value.open({ materialName: formData.materialName, spec: formData.spec })
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 处理库存选择 */
|
/** 处理库存选择 */
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user