Sfoglia il codice sorgente

处理表单组含有动态表格时的新增和修改逻辑/表单组的新增添加插入字段

lph 1 anno fa
parent
commit
372abef9ba

+ 9 - 2
zkqy-ui/src/components/FormGroup/formList.vue

@@ -219,8 +219,14 @@ export default {
     // 获取指定表单数据
     getFormData(refName) {
       return new Promise((resolve) => {
-        let { tableName, formItem, relateFormItem, formType, defaultValue } =
-          refName;
+        let {
+          tableName,
+          formItem,
+          relateFormItem,
+          formType,
+          defaultValue,
+          insertMap,
+        } = refName;
         this.$refs[tableName][0]?.getData().then((values) => {
           resolve({
             tableName,
@@ -229,6 +235,7 @@ export default {
             relateFormItem,
             formType,
             defaultValue,
+            insertMap,
           });
         });
       });

+ 99 - 53
zkqy-ui/src/views/tablelist/commonTable/listInfo.vue

@@ -345,6 +345,25 @@ export default {
   components: { Queryfrom, Menu, DialogTemplate, FormList },
   data() {
     return {
+      // 自动生成字段
+      theAutoField: [
+        "id",
+        "createBy",
+        "createById",
+        "createTime",
+        "delFlag",
+        "updateBy",
+        "updateById",
+        "updateTime",
+        "del_flag",
+        "create_by",
+        "create_by_id",
+        "create_time",
+        "data_approval_status",
+        "update_by",
+        "update_by_id",
+        "update_time",
+      ],
       // 绑定按钮dialog
       btnDialogVisible: false,
       // 绑定修改dialog
@@ -820,6 +839,7 @@ export default {
               //   this.$refs.formGroupRef.setDefaultValue();
               // });
             } else {
+              console.error(res);
               this.$message.error("网络异常,请稍后再试");
             }
           } else {
@@ -892,7 +912,7 @@ export default {
         // });
       } catch (error) {
         this.$message.error("网络异常,请稍后再试");
-        // console.log(error);
+        console.error(error);
       }
       return;
       // getInfoBySqlKey(this.templateInfo.template.sqlKey).then(({ data }) => {
@@ -958,17 +978,22 @@ export default {
       if (subFormList && subFormList.length > 0) {
         subFormList.forEach((item) => {
           let showValue = item.showValue[0];
+          let defaultValue = {};
           if (showValue) {
             if (item.showTemplate.spare == "2") {
               //动态表格表单
-              let batch = {};
-              batch[item.formItem?.split(".")?.[0]] = item.showValue.map(
-                (item) => item.resultMap
-              );
+              let batch = {},
+                tableName = item.formItem?.split(".")?.[0];
+              batch[tableName] = item.showValue.map((item) => item.resultMap);
+              defaultValue = JSON.parse(JSON.stringify(batch));
+              console.log(JSON.parse(JSON.stringify(batch)));
               // 所有字段驼峰转下划线
-              batch[item.formItem?.split(".")?.[0]].forEach((item) => {
-                for (const key of Object.keys(item)) {
-                  item[toUnderline(key)] = item[key];
+              batch[tableName].forEach((i) => {
+                for (const key of Object.keys(i)) {
+                  i[toUnderline(key)] = i[key];
+                  if (toUnderline(key) != key) {
+                    delete i[key];
+                  }
                 }
               });
               item.showTemplate.resultMap = [
@@ -977,7 +1002,6 @@ export default {
                 },
               ];
             } else {
-              console.log("iresultMap", item.showValue[0].resultMap);
               for (const key of Object.keys(item.showValue[0].resultMap)) {
                 item.showValue[0].resultMap[toUnderline(key)] =
                   item.showValue[0].resultMap[key];
@@ -995,7 +1019,8 @@ export default {
             formItem: item.formItem,
             relateFormItem: item.relateMainItem,
             formType: item.showTemplate.spare == "2" ? "batch" : "normal",
-            defaultValue: item.showTemplate.resultMap.batch,
+            defaultValue,
+            insertMap: item.insertMap,
           });
         });
       }
@@ -1239,10 +1264,22 @@ export default {
       });
       return data;
     },
+    // 添加插入的数据
+    addInsertData(insertMap, result, res) {
+      console.log(insertMap, result, res);
+      result.addListMap.forEach((i) => {
+        insertMap.forEach((j) => {
+          i[j.fieldName?.split(".")[1]] = res.find(
+            (k) => k.tableName == j.tableName
+          )?.data[j.relaField.split(".")[1]];
+        });
+      });
+    },
     // 处理 动态表单 动态表格 修改数据
     getEditBatchData(values, data) {},
     // 处理 表单组  含有动态表格  新增数据
     getFormGroupBatchData(values, index, result) {
+      console.log(values, index, result);
       let tableName = Object.keys(values.data.batch)[0];
       let res = {
         basicMap: {
@@ -1251,7 +1288,6 @@ export default {
         addListMap: [],
       };
       let { formItem, relateFormItem } = values;
-      console.log(formItem, relateFormItem, result);
       res.addListMap = values.data.batch[tableName].map((item) => {
         delete item.key;
         console.log(formItem.split(".")[1], relateFormItem.split(".")[1]);
@@ -1396,41 +1432,25 @@ export default {
             });
             data.basicMap.btnType = this.currentBtnData.btnType;
             data.basicMap.visible = true;
-            let payLoad = {};
+            let payLoad = {
+              insertCommonEntityList: [],
+              updateCommonEntityList: [],
+              deleteCommonEntityList: [],
+            };
             if (this.currentBtnData.btnType == "UPDATE") {
               // 准备删除数据
-              let deletePayloadList = [];
-              let insertCommonEntityList = [];
-              // {
-              //   basicMap: {
-              //     tableName: "",
-              //   },
-              //   conditionMap: {
-              //     // id: delIds,
-              //   },
-              // };
-              //修改
-              payLoad.updateCommonEntityList = res.map((item, index) => {
+              res.forEach((item, index) => {
                 let result = {};
-                // {
-                //   basicMap: {
-                //     tableName: item.tableName,
-                //   },
-                //   commMap: {
-                //     ...item.data,
-                //   },
-                //   conditionMap: {},
-                // };
                 if (index == 0) {
+                  //主表  主表不会是动态表格
                   result = {
                     basicMap: {
                       tableName: item.tableName,
                     },
-                    addListMap: [
-                      {
-                        ...item.data,
-                      },
-                    ],
+                    commMap: {
+                      ...item.data,
+                    },
+                    conditionMap: {},
                   };
                   //主表条件
                   let conditionData =
@@ -1444,6 +1464,7 @@ export default {
                             camelCase(item.fieldName.replace(".", "_"))
                           ];
                   });
+                  payLoad.updateCommonEntityList.push(result);
                 } else {
                   // 从表条件
                   let {
@@ -1454,31 +1475,40 @@ export default {
                     tableName,
                   } = item;
                   if (formType == "batch") {
-                    //动态表格
+                    //动态表格的修改
+                    let result = {};
                     // 准备删除数据
                     if (defaultValue[tableName]?.length) {
                       let ids = defaultValue[tableName].map((item) => item.id);
-                      this.deletePayloadList.push({
+                      result = {
                         basicMap: {
                           tableName,
                         },
                         conditionMap: {
                           id: ids,
                         },
-                      });
+                      };
+                      payLoad.deleteCommonEntityList.push(result);
+                    }
+                    // 准备新增数据
+                    result = this.getFormGroupBatchData(item, index, res);
+                    if (item.insertMap.length) {
+                      this.addInsertData(item.insertMap, result, res);
                     }
-                    // 准备新增的数据
-                    //  this.getFormGroupBatchData(item, index, res);
+                    // 去除未修改数据的自动生成字段
+                    this.removeAutoField(result);
+                    console.log(result);
+                    payLoad.insertCommonEntityList.push(result);
                   } else {
+                    //普通表格的修改
                     result = {
                       basicMap: {
                         tableName: item.tableName,
                       },
-                      addListMap: [
-                        {
-                          ...item.data,
-                        },
-                      ],
+                      commMap: {
+                        ...item.data,
+                      },
+                      conditionMap: {},
                     };
                     let fieldName = formItem.split(".")[1];
                     let value =
@@ -1486,14 +1516,15 @@ export default {
                         camelCase(relateFormItem.replace(".", "_"))
                       ];
                     result.conditionMap[fieldName] = value;
+                    payLoad.updateCommonEntityList.push(result);
                   }
                 }
-                return result;
               });
             } else if (this.currentBtnData.btnType == "INSERT") {
               // 新增
               let uuid = uuidv4().replace("-", "");
               // console.log(uuid);
+              res.forEach((item, index) => {});
               payLoad.insertCommonEntityList = res.map((item, index) => {
                 let result = {};
                 console.log(item);
@@ -1532,7 +1563,9 @@ export default {
                       res[0].data[relateFormItem.split(".")[1]];
                   }
                 }
-
+                if (item.insertMap?.length) {
+                  this.addInsertData(item.insertMap, result, res);
+                }
                 return result;
               });
             } else if (this.currentBtnData.btnType == "INITIATED") {
@@ -1624,6 +1657,7 @@ export default {
             }
 
             data.basicMap.BpmRunNodeFormDateVo = payLoad;
+            // return;
             try {
               let res = await btnCommonApi(data);
               if (res.code == 200) {
@@ -1632,10 +1666,11 @@ export default {
                 this.defaultValue = {};
                 this.open = false;
               } else {
+                console.log(res);
                 this.$message.error("网络异常,请稍后再试");
               }
             } catch (error) {
-              // console.log(error);
+              console.log(error);
               this.$message.error("网络异常,请稍后再试");
             }
           },
@@ -1682,10 +1717,11 @@ export default {
           if (res.code == 200) {
             this.$message.success("操作成功");
           } else {
+            console.log(res);
             this.$message.error("网络异常,请稍后再试");
           }
         } catch (error) {
-          // console.log(error);
+          console.log(error);
           this.$message.error("网络异常,请稍后再试");
         }
         this.getList();
@@ -1693,6 +1729,15 @@ export default {
         this.open = false;
       }
     },
+
+    // 去除多余字段
+    removeAutoField(result) {
+      result.addListMap.forEach((item) => {
+        this.theAutoField.forEach((field) => {
+          delete item[field];
+        });
+      });
+    },
     // 使用提交数据类型的按钮获取数据
     tempSubBtn(getData) {
       getData()
@@ -1932,10 +1977,11 @@ export default {
             if (res.code == 200) {
               this.$message.success(res.msg);
             } else {
+              console.error(res.msg);
               this.$message.error("网络异常,请稍后再试");
             }
           } catch (error) {
-            // console.log(error);
+            console.error(error);
             this.$message.error("网络异常,请稍后再试");
           }
         })