diff --git a/src/views/secondOrder/components/outDialog.vue b/src/views/secondOrder/components/outDialog.vue index 1a6c69d..4cbf3e8 100644 --- a/src/views/secondOrder/components/outDialog.vue +++ b/src/views/secondOrder/components/outDialog.vue @@ -581,11 +581,11 @@ export default { isRowSelectable(row) { // 确保 materialName 是非空字符串,materialId 是非空值(字符串或数字) return ( - (row.materialName && - row.materialName.trim() !== "" && - row.materialId != null && - row.materialId !== "") || - rowinventory < row.num + row.materialName && + row.materialName.trim() !== "" && + row.materialId != null && + row.materialId !== "" && + row.inventory > 0 ); }, // 监听嵌套表格的勾选事件 @@ -857,13 +857,24 @@ export default { let hasError = false; for (const group of this.groupTableData) { - const key = group.materialId || group.materialCode || group.id; - if (!key) continue; + if ( + !group.twoInventoryVOList || + group.twoInventoryVOList.length === 0 + ) { + this.$message.error( + `分组【${ + group.materialName || group.materialCode + }】下无可出库物资` + ); + hasError = true; + break; + } - // 获取该分组下用户勾选的子项 - const selectedItems = this.selectedGroupMap[key] || []; + // 从 group.twoInventoryVOList 中筛选 _selected 为 true 的项 + const selectedItems = group.twoInventoryVOList.filter( + (item) => item._selected + ); - // 如果没有勾选任何子项,跳过(或可视为错误,根据业务) if (selectedItems.length === 0) { this.$message.error( `分组【${ @@ -874,7 +885,6 @@ export default { break; } - // 计算勾选项的 num 总和 const totalSelectedNum = selectedItems.reduce((sum, item) => { return sum + (Number(item.num) || 0); }, 0); @@ -891,7 +901,6 @@ export default { break; } } - if (hasError) { return; // 阻止提交 }