From ba58b68ab0a0804b3487c6d242058cf6f18cc8eb Mon Sep 17 00:00:00 2001 From: zxy Date: Thu, 21 May 2026 09:46:12 +0800 Subject: [PATCH] =?UTF-8?q?fix(saledelivery):=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E5=8D=95=E5=8A=9F=E8=83=BD=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=BC=A0=E9=80=92=E5=92=8C=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SaleDeliveryDetailDO.java | 1 + .../saledelivery/SaleDeliveryServiceImpl.java | 7 ++++--- .../ProStorageInventorySelectDialog.vue | 13 +++++++----- .../biz/saledelivery/OrderSelectDialog.vue | 4 ++++ .../biz/saledelivery/SaleDeliveryForm.vue | 21 ++++++++++++++++--- 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/saledeliverydetail/SaleDeliveryDetailDO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/saledeliverydetail/SaleDeliveryDetailDO.java index d6f63d4..12036d9 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/saledeliverydetail/SaleDeliveryDetailDO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/saledeliverydetail/SaleDeliveryDetailDO.java @@ -81,5 +81,6 @@ public class SaleDeliveryDetailDO extends BaseDO { */ private Integer deliveriedBagQty; + private String inventBillNo; } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/saledelivery/SaleDeliveryServiceImpl.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/saledelivery/SaleDeliveryServiceImpl.java index 074907a..5d1844b 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/saledelivery/SaleDeliveryServiceImpl.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/saledelivery/SaleDeliveryServiceImpl.java @@ -120,6 +120,7 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService { List saleDeliveryDetails = BeanUtils.toBean(list, SaleDeliveryDetailDO.class); saleDeliveryDetails.forEach(detail -> detail.setSaleDeliveryId(saleDeliveryId) + .setInventBillNo(detail.getInventBillNo()) .setId(null) ); saleDeliveryDetailMapper.insertBatch(saleDeliveryDetails); @@ -239,8 +240,8 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService { .billDate(LocalDate.now()) .operatorId(saleDelivery.getDeliveryEmpId()) .operatorName(saleDelivery.getDeliveryEmpName()) - .relarionNo(saleDelivery.getSaleOrdNo()) - .relarionId(saleDelivery.getSaleOrdId()) + .relarionNo(saleDelivery.getSaleDeliveryNo()) + .relarionId(saleDelivery.getId()) .sourceNo(saleDelivery.getSaleOrdNo()) .sourceId(saleDelivery.getSaleOrdId()) .build(); @@ -279,7 +280,7 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService { .bagSpec(detail.getBagSpec()) .bagQty(detail.getDeliveriedBagQty()) - .relarionId(inventory.getId()) + .relarionId(detail.getSaleDeliveryId().longValue()) .planId(inventory.getPlanId()) .proNo(inventory.getProNo()) .sourceId(inventory.getId()) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/prostorageinventory/ProStorageInventorySelectDialog.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/prostorageinventory/ProStorageInventorySelectDialog.vue index ed164cd..d42e4cb 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/prostorageinventory/ProStorageInventorySelectDialog.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/prostorageinventory/ProStorageInventorySelectDialog.vue @@ -135,6 +135,7 @@ const queryParams = reactive({ storeAreaId: undefined, yardQty: 1, matName: undefined, + spec: undefined, }) // 仓储列表(条件:store_type = '3' ) @@ -228,8 +229,8 @@ const handleQuery = () => { const resetQuery = () => { queryParams.storeHouseId = undefined queryParams.storeAreaId = undefined - queryParams.matName = undefined - queryParams.spec = undefined + // queryParams.matName = undefined + // queryParams.spec = undefined queryParams.yardQty = 1 queryParams.pageNo = 1 @@ -284,11 +285,13 @@ const open = (params?: { materialName?: string }) => { queryParams.pageNo = 1 queryParams.storeHouseId = undefined queryParams.storeAreaId = undefined - queryParams.matName = params?.materialName + queryParams.matName = params?.materialName || undefined + queryParams.spec = params?.spec || undefined + // 清空列表数据,不自动查询 + inventoryList.value = [] + total.value = 0 // 初始化仓储列表 getStoreHouseList() - // 执行搜索 - getList() } defineExpose({ open, setSelectedIds }) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/saledelivery/OrderSelectDialog.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/saledelivery/OrderSelectDialog.vue index 346787d..dc600de 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/saledelivery/OrderSelectDialog.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/saledelivery/OrderSelectDialog.vue @@ -250,6 +250,10 @@ const emitSelect = (row) => { const open = () => { dialogVisible.value = true selectedId.value = '' + // 清空查询参数 + queryParams.custName = undefined + queryParams.saleOrdNo = undefined + queryParams.pageNo = 1 handleQuery() } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/saledelivery/SaleDeliveryForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/saledelivery/SaleDeliveryForm.vue index 4077e37..6999114 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/saledelivery/SaleDeliveryForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/saledelivery/SaleDeliveryForm.vue @@ -181,7 +181,7 @@ @@ -396,6 +396,12 @@ const getSummary = (param: any) => { /** 强制刷新表格(用于实时更新合计) */ 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强制表格重新渲染 if (productList.value.length > 0) { productList.value = [...productList.value] @@ -580,6 +586,9 @@ const handleOrderSelect = async (data: any) => { formData.deliveriedQty = data.remaimQty formData.unit = data.unit + // 切换销售订单后,清空产品信息列表 + productList.value = [] + // 添加到选项列表以便显示 if (!saleOrderOptions.value.find(item => item.id === data.saleOrdId)) { saleOrderOptions.value.push({ @@ -643,6 +652,12 @@ const loadCustomerContact = async (custId: number) => { /** 添加产品项 */ const addProductItem = () => { + // 校验:必须先选择销售订单(确保有产品名称和规格) + if (!formData.materialName || !formData.spec) { + message.warning('请先选择销售订单!') + return + } + // 获取已选择的库存ID列表 const selectedIds = productList.value .filter(item => item.inventoryId) @@ -651,8 +666,8 @@ const addProductItem = () => { // 设置已选择的ID,以便弹窗打开时自动选中 inventorySelectRef.value.setSelectedIds(selectedIds) - // 打开弹窗,传入产品名称作为查询参数 - inventorySelectRef.value.open({ materialName: formData.materialName }) + // 打开弹窗,传入产品名称和规格信息作为查询参数 + inventorySelectRef.value.open({ materialName: formData.materialName, spec: formData.spec }) } /** 处理库存选择 */