diff --git a/src/views/wms/inStockBill/index.vue b/src/views/wms/inStockBill/index.vue index 91e4c6b..7d21b45 100644 --- a/src/views/wms/inStockBill/index.vue +++ b/src/views/wms/inStockBill/index.vue @@ -68,6 +68,7 @@ + @@ -99,7 +101,7 @@ - + @@ -135,7 +137,7 @@ - + @@ -220,10 +222,10 @@ /> - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -312,7 +282,8 @@ import { addInStockBill, delInStockBill, getInStockBill, listInStockBill, update import { InStockBillForm, InStockBillQuery, InStockBillVO } from '@/api/wms/inStockBill/types'; import { ref } from 'vue'; // 存储选中的物料信息 import { useRouter } from 'vue-router'; // 存储选中的物料信息 -import { getWmsInStockDetailsList } from '@/api/wms/inStockDetails'; // 添加展开行处理函数 +import { getWmsInStockDetailsList } from '@/api/wms/inStockDetails'; +import { getWmsWarehouseInfoList } from '@/api/wms/warehouseInfo'; // 添加展开行处理函数 // 添加展开行处理函数 const handleExpandChange = async (row, expandedRows) => { @@ -342,7 +313,7 @@ const single = ref(true); const multiple = ref(true); const total = ref(0); const dateRangeCreateTime = ref<[DateModelType, DateModelType]>(['', '']); - +const wms_warehouse = ref([]); const queryFormRef = ref(); const inStockBillFormRef = ref(); @@ -360,15 +331,15 @@ const handleMaterialConfirm = (materials) => { // 设置默认单价为采购单价 material.unitPrice = material.purchasePrice || 0; - material.quantity = 1; // 默认数量为1 - material.totalPrice = (material.unitPrice * material.quantity).toFixed(2); + material.inStockAmount = 1; // 默认数量为1 + material.totalPrice = (material.unitPrice * material.inStockAmount).toFixed(2); }); }; // 计算总价 const calculateTotalPrice = (material) => { - if (material.unitPrice && material.quantity) { - material.totalPrice = (material.unitPrice * material.quantity).toFixed(2); + if (material.unitPrice && material.inStockAmount) { + material.totalPrice = (material.unitPrice * material.inStockAmount).toFixed(2); } else { material.totalPrice = 0; } @@ -390,7 +361,8 @@ const dialog = reactive({ title: '' }); const addDialog = reactive({ - visible: false + visible: false, + title: '' }); // 列显隐信息 @@ -477,10 +449,12 @@ const reset = () => { form.value = { ...initFormData }; inStockBillFormRef.value?.resetFields(); }; - +// 添加表格ref +const tableRef = ref(); /** 搜索按钮操作 */ const handleQuery = () => { queryParams.value.pageNum = 1; + closeChildTable(); getList(); }; @@ -488,8 +462,18 @@ const handleQuery = () => { const resetQuery = () => { dateRangeCreateTime.value = ['', '']; queryFormRef.value?.resetFields(); + closeChildTable(); + handleQuery(); }; +// 关闭所有展开的子表 +const closeChildTable = () => { + if (tableRef.value) { + tableRef.value.store.states.expandRows.value.forEach((row) => { + tableRef.value.toggleRowExpansion(row, false); + }); + } +}; /** 多选框选中数据 */ const handleSelectionChange = (selection: InStockBillVO[]) => { @@ -499,11 +483,19 @@ const handleSelectionChange = (selection: InStockBillVO[]) => { }; const router = useRouter(); + +const getWarehouseList = async () => { + const res = await getWmsWarehouseInfoList(); + wms_warehouse.value = res.data; +}; /** 新增按钮操作 */ const handleAdd = () => { reset(); addFormRef.value?.resetFields(); + selectedMaterials.value = []; + addDialog.title = '添加物料入库'; addDialog.visible = true; + // getWarehouseList(); // dialog.title = '添加物料入库'; // materialSelectRef.value.open(); // router.push('/wms/inStockBill/add'); @@ -521,7 +513,7 @@ const handleAddSubmit = () => { // 验证物料信息的完整性 const invalidMaterials = selectedMaterials.value.filter((material) => { - return !material.unitPrice || material.unitPrice <= 0 || !material.quantity || material.quantity <= 0; + return !material.unitPrice || material.unitPrice <= 0 || !material.inStockAmount || material.inStockAmount <= 0; }); if (invalidMaterials.length > 0) { @@ -536,28 +528,53 @@ const handleAddSubmit = () => { ...form.value, // 添加物料明细信息 inStockDetailsList: selectedMaterials.value.map((material) => ({ + inStockDetailsId: material.inStockDetailsId, // 物料ID materialId: material.materialId, // 物料ID batchNumber: material.batchNumber, // 批次号 unitPrice: material.unitPrice, // 单价 - inStockAmount: material.quantity, // 数量 + inStockAmount: material.inStockAmount, // 数量 unitName: material.unitName, // 单位 - totalPrice: material.totalPrice // 总价 + totalPrice: material.totalPrice, // 总价 + warehouseId: material.warehouseId // 仓库ID })) }; - await addInStockBill(submitData); - proxy?.$modal.msgSuccess('添加成功'); + // 根据是否有inStockBillId判断是新增还是修改 + if (form.value.inStockBillId) { + // 修改操作 + await updateInStockBill(submitData); + closeChildTable(); + proxy?.$modal.msgSuccess('修改成功'); + } else { + // 新增操作 + await addInStockBill(submitData); + proxy?.$modal.msgSuccess('添加成功'); + } + addDialog.visible = false; // 清空已选择的物料 selectedMaterials.value = []; await getList(); } catch (error) { - console.error('添加入库单失败:', error); - proxy?.$modal.msgError('添加失败,请重试'); + console.error('操作失败:', error); + proxy?.$modal.msgError(form.value.inStockBillId ? '修改失败,请重试' : '添加失败,请重试'); } finally { buttonLoading.value = false; } + // await addInStockBill(submitData); + // proxy?.$modal.msgSuccess('添加成功'); + // addDialog.visible = false; + // + // // 清空已选择的物料 + // selectedMaterials.value = []; + // await getList(); + // } catch (error) { + // console.error('添加入库单失败:', error); + // proxy?.$modal.msgError('添加失败,请重试'); + // } finally { + // buttonLoading.value = false; + // } } }); }; @@ -574,8 +591,12 @@ const handleUpdate = async (row?: InStockBillVO) => { const _inStockBillId = row?.inStockBillId || ids.value[0]; const res = await getInStockBill(_inStockBillId); Object.assign(form.value, res.data); - dialog.visible = true; - dialog.title = '修改物料入库'; + + const childList = await getWmsInStockDetailsList({ inStockBillId: row.inStockBillId }); + selectedMaterials.value = childList.data; + + addDialog.title = '修改物料入库'; + addDialog.visible = true; }; /** 提交按钮 */ @@ -617,5 +638,6 @@ const handleExport = () => { onMounted(() => { getList(); + getWarehouseList(); });