From e9aaf4e190e4c55f5b3da11c8698fe93534d8c8f Mon Sep 17 00:00:00 2001
From: zhangdi <15053473693@163.com>
Date: Mon, 2 Mar 2026 16:28:47 +0800
Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/firstOrder/outbound.vue | 205 ++++++++++--------
.../secondOrder/components/outDialog.vue | 64 +++++-
2 files changed, 179 insertions(+), 90 deletions(-)
diff --git a/src/views/firstOrder/outbound.vue b/src/views/firstOrder/outbound.vue
index 89421e9..6c852b5 100644
--- a/src/views/firstOrder/outbound.vue
+++ b/src/views/firstOrder/outbound.vue
@@ -1,12 +1,25 @@
-
+
- 新增出库单
+ 新增出库单
@@ -18,35 +31,54 @@
>
无
-
+
- 详情
- 编辑
+ 详情
+ 编辑
-
+
-
+
diff --git a/src/views/secondOrder/components/outDialog.vue b/src/views/secondOrder/components/outDialog.vue
index 0bb7a03..0c93a79 100644
--- a/src/views/secondOrder/components/outDialog.vue
+++ b/src/views/secondOrder/components/outDialog.vue
@@ -517,9 +517,10 @@ export default {
// 确保 materialName 是非空字符串,materialId 是非空值(字符串或数字)
return (
(row.materialName &&
- row.materialName.trim() !== "" &&
- row.materialId != null &&
- row.materialId !== "")||(rowinventory 0) {
group.twoInventoryVOList.forEach((element) => {
element.applyNum = group.applyNum;
+ element.goodsCode = group.applyNum;
if (element.type === "NY") {
element.num = 1;
} else {
@@ -751,8 +753,8 @@ export default {
this.sizeForm.ldTwoOutStorage.departmentInfo =
departmentArr.length > 0 ? departmentArr[0] : {};
- if(this.sizeForm.groupName!='自由出库'){
- this.groupTableData = res.data.result.ldTwoOutStorageDetailList
+ if (this.sizeForm.groupName != "自由出库") {
+ this.groupTableData = res.data.result.ldTwoOutStorageDetailList;
}
// this.sizeForm.ldTwoOutStorage.proposerInfo={}
});
@@ -776,6 +778,58 @@ export default {
console.log("form", this.sizeForm);
this.$refs.dynamicValidateForm.validate((valid) => {
if (valid) {
+ // ===== 非自由出库:校验分组物资勾选数量是否匹配申请数量 =====
+ if (this.sizeForm.ldTwoOutStorage.groupName !== "自由出库") {
+ let hasError = false;
+
+ for (const group of this.groupTableData) {
+ const key = group.materialId || group.materialCode || group.id;
+ if (!key) continue;
+
+ // 获取该分组下用户勾选的子项
+ const selectedItems = this.selectedGroupMap[key] || [];
+
+ // 如果没有勾选任何子项,跳过(或可视为错误,根据业务)
+ if (selectedItems.length === 0) {
+ this.$message.error(`分组【${group.materialName || group.materialCode}】未选择任何物资`);
+ hasError = true;
+ break;
+ }
+
+ // 计算勾选项的 num 总和
+ const totalSelectedNum = selectedItems.reduce((sum, item) => {
+ return sum + (Number(item.num) || 0);
+ }, 0);
+
+ const applyNum = Number(group.applyNum) || 0;
+
+ if (totalSelectedNum !== applyNum) {
+ this.$message.error(
+ `分组【${group.materialName || group.materialCode}】:已选物资出库数量总和(${totalSelectedNum})与申请数量(${applyNum})不一致`
+ );
+ hasError = true;
+ break;
+ }
+ }
+
+ if (hasError) {
+ return; // 阻止提交
+ }
+ }
+
+ // ===== 自由出库:校验是否有明细 =====
+ if (this.sizeForm.ldTwoOutStorage.groupName === "自由出库") {
+ if (
+ !this.sizeForm.ldTwoOutStorageDetailList ||
+ this.sizeForm.ldTwoOutStorageDetailList.length === 0
+ ) {
+ this.$message.error("请至少选择一项物资");
+ return;
+ }
+ }
+
+
+
submit(this.sizeForm).then((res) => {
this.$message({
type: "success",