From 173766e82d7cde9a7ae30b8896a9a287dff411f8 Mon Sep 17 00:00:00 2001
From: zjk <852185829@qq.com>
Date: 星期二, 02 九月 2025 10:17:59 +0800
Subject: [PATCH] feat: 打包配置

---
 laboratory/src/views/dataManagement/schemeManagement/addPlan.vue |   87 ++++++++++++++++++++++++++++++-------------
 1 files changed, 60 insertions(+), 27 deletions(-)

diff --git a/laboratory/src/views/dataManagement/schemeManagement/addPlan.vue b/laboratory/src/views/dataManagement/schemeManagement/addPlan.vue
index e8ea911..ab8bbfa 100644
--- a/laboratory/src/views/dataManagement/schemeManagement/addPlan.vue
+++ b/laboratory/src/views/dataManagement/schemeManagement/addPlan.vue
@@ -223,7 +223,7 @@
             ref="purposeEditor"
             :readOnly="isEdit"
             :value="editorContents.purpose"
-            height="200px"
+            height="400px"
             placeholder="请输入实验目的..."
           />
         </div>
@@ -239,7 +239,7 @@
             ref="processEditor"
             :readOnly="isEdit"
             :value="editorContents.process"
-            height="200px"
+            height="400px"
             placeholder="请输入工艺参数及路线..."
           />
         </div>
@@ -356,6 +356,7 @@
 } from "./service";
 import moment from "moment";
 import { add, update, updateTester } from "./service";
+import { mapState } from "vuex";
 
 export default {
   name: "AddProject",
@@ -432,6 +433,9 @@
       this.editId = this.$route.query.id;
       await this.loadEditData();
     }
+  },
+  computed: {
+    ...mapState(["tagList", "isFold"]),
   },
   methods: {
     // ===== 人员相关方法 =====
@@ -572,7 +576,7 @@
           }
 
           // 根据是否为编辑模式调用不同接口
-          const apiCall = this.editId
+          const apiCall = (this.editId && !this.isEdit)
             ? update(formData)
             : this.isEdit
             ? updateTester(formData)
@@ -584,7 +588,11 @@
                 this.$message.success(
                   status === 1 ? "保存成功" : "草稿保存成功"
                 );
-                this.$router.go(-1);
+                this.$router.back();
+      this.$store.commit(
+        "SET_TAGLIST",
+        this.tagList.filter((item) => item.path !== this.$route.path)
+      );
               } else {
                 this.$message.error(
                   res.msg || (status === 1 ? "保存失败" : "草稿保存失败")
@@ -623,13 +631,11 @@
         this.$message.error("请选择实验调度");
         return false;
       }
-
       // 校验实验日期
       if (!this.form.experimentDate) {
         this.$message.error("请填写实验日期");
         return false;
       }
-
       // 校验参与人员
       if (
         !this.selectedParticipants ||
@@ -638,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() {
@@ -706,7 +733,6 @@
           });
         getParticipantsByDispatchId({ dispatchId: data[0].id })
           .then((res) => {
-            console.log("获取参加人员列表:", res);
             if (res) {
               this.participantsData = res || [];
             } else {
@@ -731,7 +757,6 @@
           return;
         }
 
-        console.log("编辑数据", res);
         const data = res;
 
         // 填充基本表单数据
@@ -740,10 +765,6 @@
         // 填充实验调度信息
         if (data.experimentDispatch?.id) {
           this.form.dispatchId = data.experimentDispatch.id;
-          console.log(
-            "experimentStepRecord experimentStepRecord",
-            JSON.parse(data.experimentStepRecord)
-          );
           this.groupTableData = [{ ...data.experimentDispatch }];
 
           // 获取组别信息
@@ -755,6 +776,18 @@
           } catch (err) {
             console.error("获取组别列表失败:", err);
           }
+          getParticipantsByDispatchId({ dispatchId: data.experimentDispatch.id })
+          .then((res) => {
+            if (res) {
+              this.participantsData = res || [];
+            } else {
+              this.$message.error(res.msg || "获取参加人员列表失败");
+            }
+          })
+          .catch((err) => {
+            this.$message.error("获取参加人员列表失败");
+            console.error("获取参加人员列表失败:", err);
+          });
         }
 
         // 填充参与人员
@@ -954,12 +987,12 @@
 }
 
 .groupTable {
-  width: 65%;
+  width: 100%;
   padding-left: 40px;
 }
 
 .rwuTable {
-  width: 85%;
+  width: 100%;
   padding-left: 40px;
 }
 
@@ -1167,7 +1200,7 @@
 .content-box {
   padding: 0 25px;
   margin-bottom: 20px;
-  width: 65%;
+  width: 95%;
   display: flex;
   .content-box-left {
     flex: 1;

--
Gitblit v1.7.1