From 4ca375b2e3dae98d6ececc1b7b421a12f3fa8a26 Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期二, 01 七月 2025 09:00:38 +0800
Subject: [PATCH] 修改bug,验收通过

---
 laboratory/src/views/dataManagement/schemeManagement/addPlan.vue |   47 +++++++++++++++++++++++++++++++++--------------
 1 files changed, 33 insertions(+), 14 deletions(-)

diff --git a/laboratory/src/views/dataManagement/schemeManagement/addPlan.vue b/laboratory/src/views/dataManagement/schemeManagement/addPlan.vue
index 6c214a1..ab8bbfa 100644
--- a/laboratory/src/views/dataManagement/schemeManagement/addPlan.vue
+++ b/laboratory/src/views/dataManagement/schemeManagement/addPlan.vue
@@ -631,13 +631,11 @@
         this.$message.error("请选择实验调度");
         return false;
       }
-
       // 校验实验日期
       if (!this.form.experimentDate) {
         this.$message.error("请填写实验日期");
         return false;
       }
-
       // 校验参与人员
       if (
         !this.selectedParticipants ||
@@ -646,46 +644,67 @@
         this.$message.error("请选择参与人员");
         return false;
       }
-
       // 校验实验目的
       const purpose = this.$refs.purposeEditor.getContent();
       if (!purpose || purpose === "<p></p>" || purpose.trim() === "<p></p>") {
         this.$message.error("请填写实验目的");
         return false;
       }
-
       // 校验工艺参数及路线
       const process = this.$refs.processEditor.getContent();
       if (!process || process === "<p></p>" || process.trim() === "<p></p>") {
         this.$message.error("请填写工艺参数及路线");
         return false;
       }
-
+      // 校验 DynamicComponent 里的表格
+      function checkDynamicComponentTables(list, label) {
+        if (!Array.isArray(list)) return true;
+        for (const comp of list) {
+          if (comp.type === 'customTable') {
+            if (!comp.data || !Array.isArray(comp.data.headers) || comp.data.headers.length === 0) {
+              this.$message.error(`${label}中有表格未添加表头`);
+              return false;
+            }
+            if (!Array.isArray(comp.data.rows) || comp.data.rows.length === 0) {
+              this.$message.error(`${label}中有表格未添加数据`);
+              return false;
+            }
+          }
+        }
+        return true;
+      }
       // 校验实验材料
       if (!this.form.experimentMaterial) {
         this.$message.error("请添加实验材料");
         return false;
       }
-
+      if (!checkDynamicComponentTables.call(this, this.form.experimentMaterial, '实验材料')) {
+        return false;
+      }
       // 校验实验设备
       if (!this.form.experimentDevice) {
         this.$message.error("请添加实验设备");
         return false;
       }
-
+      if (!checkDynamicComponentTables.call(this, this.form.experimentDevice, '实验设备')) {
+        return false;
+      }
       // 校验实验步骤记录
       if (!this.stepList || this.stepList.length === 0) {
         this.$message.error("请添加实验操作步骤");
         return false;
       }
-
-      // 校验每个步骤是否都有内容
-      const invalidStep = this.stepList.findIndex((step) => !step.content);
-      if (invalidStep !== -1) {
-        this.$message.error(`请完善第${invalidStep + 1}个步骤的内容`);
-        return false;
+      // 校验每个步骤是否都有内容及表格
+      for (let i = 0; i < this.stepList.length; i++) {
+        const step = this.stepList[i];
+        if (!step.content) {
+          this.$message.error(`请完善第${i + 1}个步骤的内容`);
+          return false;
+        }
+        if (!checkDynamicComponentTables.call(this, step.content, `第${i + 1}个步骤`)) {
+          return false;
+        }
       }
-
       return true;
     },
     handleStopExperiment() {

--
Gitblit v1.7.1