Ver código fonte

修改表单组渲染逻辑解决字段回显问题/处理表单组含有动态表格时的新增逻辑/暂存:将要处理动态表格的修改逻辑

lph 1 ano atrás
pai
commit
7599c55e20

+ 13 - 14
zkqy-ui/src/components/FormGroup/formList.vue

@@ -104,7 +104,7 @@ export default {
     myFormList: {
       handler(val) {
         // this.$emit("update:formList", val);
-
+        console.log(JSON.parse(JSON.stringify(val)));
         let temp = JSON.parse(JSON.stringify(val));
         this.formArray = this.disableHandler(temp);
         this.$nextTick(() => {
@@ -130,16 +130,16 @@ export default {
     setDefaultValue() {
       console.log("开始渲染默认数据");
       this.formArray.forEach((item) => {
-        for (const key of Object.keys(item.template?.defaultValue || {})) {
-          item.template.defaultValue[toUnderline(key)] =
-            item.template.defaultValue[key];
-        }
+        // for (const key of Object.keys(item.template?.defaultValue || {})) {
+        //   item.template.defaultValue[toUnderline(key)] =
+        //     item.template.defaultValue[key];
+        // }
+        console.log(item);
         this.defaultValue[item.tableName] = item.template?.defaultValue || {};
       });
       for (const key in this.defaultValue) {
+        console.log(this.defaultValue);
         this.$refs[key][0]?.setData(this.defaultValue[key]);
-        console.log(this.defaultValue[key]);
-        console.log(this.$refs[key][0]);
       }
     },
     getUUID() {
@@ -155,7 +155,6 @@ export default {
       this.resetForm();
       if (formList.length == 0) return [];
       formList.forEach((item) => {
-        console.log(item);
         item.template.dfFormSql =
           typeof item.template.dfFormSql == "object"
             ? item.template.dfFormSql
@@ -171,10 +170,8 @@ export default {
             : JSON.parse(item.template.dfVueTemplate);
 
         if (item.template.resultMap) {
-          console.log(item.template.resultMap);
-          console.log(item.template.resultMap[0]?.resultMap);
-          item.template.defaultValue = item.template.resultMap[0]?.resultMap
-            ? item.template.resultMap[0].resultMap
+          item.template.defaultValue = item.template.resultMap[0]
+            ? item.template.resultMap[0]
             : {};
         }
 
@@ -222,14 +219,16 @@ export default {
     // 获取指定表单数据
     getFormData(refName) {
       return new Promise((resolve) => {
-        let { tableName, formItem, relateFormItem } = refName;
-        console.log(this.$refs[tableName]);
+        let { tableName, formItem, relateFormItem, formType, defaultValue } =
+          refName;
         this.$refs[tableName][0]?.getData().then((values) => {
           resolve({
             tableName,
             data: values,
             formItem,
             relateFormItem,
+            formType,
+            defaultValue,
           });
         });
       });

+ 199 - 43
zkqy-ui/src/views/tablelist/commonTable/listInfo.vue

@@ -936,10 +936,14 @@ export default {
       this.FormNameList = [];
       let { mainForm, subFormList } = data;
       this.formList = [];
-      let showValue = mainForm.showValue[0];
+      let showValue = mainForm.showValue[0].resultMap;
       if (showValue) {
-        mainForm.showTemplate.resultMap = mainForm.showValue;
+        for (const key of Object.keys(showValue)) {
+          showValue[toUnderline(key)] = showValue[key];
+        }
+        mainForm.showTemplate.resultMap = [showValue];
       }
+
       this.formList.push({
         template: mainForm.showTemplate,
         tableName: mainForm.mainFormTable,
@@ -948,13 +952,39 @@ export default {
         tableName: mainForm.mainFormTable,
         formItem: mainForm.mainFormItem,
         relateFormItem: null,
+        formType: mainForm.showTemplate.spare == "2" ? "batch" : "normal",
+        defaultValue: mainForm.showValue[0].resultMap,
       });
       if (subFormList && subFormList.length > 0) {
         subFormList.forEach((item) => {
-          // console.log(item);
           let showValue = item.showValue[0];
           if (showValue) {
-            item.showTemplate.resultMap = item.showValue;
+            if (item.showTemplate.spare == "2") {
+              //动态表格表单
+              let batch = {};
+              batch[item.formItem?.split(".")?.[0]] = item.showValue.map(
+                (item) => item.resultMap
+              );
+              // 所有字段驼峰转下划线
+              batch[item.formItem?.split(".")?.[0]].forEach((item) => {
+                for (const key of Object.keys(item)) {
+                  item[toUnderline(key)] = item[key];
+                }
+              });
+              item.showTemplate.resultMap = [
+                {
+                  batch,
+                },
+              ];
+            } 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];
+              }
+
+              item.showTemplate.resultMap = [item.showValue[0].resultMap];
+            }
           }
           this.formList.push({
             template: item.showTemplate,
@@ -964,6 +994,8 @@ export default {
             tableName: item.formItem?.split(".")?.[0],
             formItem: item.formItem,
             relateFormItem: item.relateMainItem,
+            formType: item.showTemplate.spare == "2" ? "batch" : "normal",
+            defaultValue: item.showTemplate.resultMap.batch,
           });
         });
       }
@@ -1196,12 +1228,48 @@ export default {
       let temp = field.replace(tableName, "");
       return toUnderline(temp[0].toLowerCase() + temp.slice(1));
     },
+    // 处理 动态表单 动态表格 新增数据
+    getInsertBatchData(values, data) {
+      if (Object.keys(values.batch).length == 0) return data;
+      let tableName = Object.keys(values.batch)[0];
+      data.basicMap.tableName = tableName;
+      data.addListMap = values.batch[tableName].map((item) => {
+        delete item.key;
+        return item;
+      });
+      return data;
+    },
+    // 处理 动态表单 动态表格 修改数据
+    getEditBatchData(values, data) {},
+    // 处理 表单组  含有动态表格  新增数据
+    getFormGroupBatchData(values, index, result) {
+      let tableName = Object.keys(values.data.batch)[0];
+      let res = {
+        basicMap: {
+          tableName,
+        },
+        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]);
+        item[formItem.split(".")[1]] =
+          result[0].data[relateFormItem.split(".")[1]]; //将主表单的关联值赋值给从表单
+        return item;
+      });
+      return res;
+    },
     //提交编辑结果按钮回调
     async editConfirmHandler() {
       if (this.$refs.addFromRef && this.formType == "dragForm") {
         this.$refs.addFromRef
           .getData()
           .then(async (values) => {
+            // console.log("dragForm", values);
+
+            // return;
             let data = {
               basicMap: {
                 tableName: this.tableName,
@@ -1213,6 +1281,7 @@ export default {
               commMap: {},
               btnParametersMap: {},
             };
+
             if (this.currentBtnData.btnParams) {
               let btnParams =
                 JSON.parse(this.currentBtnData.btnParams)?.commonFieldData ||
@@ -1238,14 +1307,27 @@ export default {
               });
             }
             if (Object.keys(this.defaultValue).length) {
+              //修改
               // data.conditionMap[this.templateInfo.template?.primaryKey] =
               //   this.defaultValue[this.templateInfo.template?.primaryKey];
-              Object.keys(values).map((k) => {
-                data.commMap[k] = values[k];
-              });
+              if (values.batch) {
+                //动态表单的修改
+                data = this.getEditBatchData(values, data);
+              } else {
+                Object.keys(values).map((k) => {
+                  data.commMap[k] = values[k];
+                });
+              }
               data.basicMap.btnType = this.currentBtnData.btnType;
               data.basicMap.visible = true;
             } else {
+              // 处理 动态表格
+              // start
+              if (values.batch) {
+                data = this.getInsertBatchData(values, data);
+              }
+              // end
+              //新增
               data.basicMap.btnType = "INSERT";
               data.basicMap.visible = true;
             }
@@ -1265,7 +1347,7 @@ export default {
             this.open = false;
           })
           .catch((res) => {
-            // console.log(res);
+            console.log(res);
             this.$modal.msgError("表单校验失败,请规范填写数据");
           });
       } else if (this.formType == "dragFormGroup") {
@@ -1312,27 +1394,44 @@ export default {
                 ? item.fieldValue
                 : this.currentRow[camelCase(item.fieldName.replace(".", "_"))];
             });
-
-            // // console.log("mainFormData", mainFormData);
-            // // console.log("btnParams", btnParams);
-            // // console.log("conditionData", conditionData);
-            // // console.log("btnType", this.currentBtnData.btnType);
             data.basicMap.btnType = this.currentBtnData.btnType;
             data.basicMap.visible = true;
             let payLoad = {};
             if (this.currentBtnData.btnType == "UPDATE") {
+              // 准备删除数据
+              let deletePayloadList = [];
+              let insertCommonEntityList = [];
+              // {
+              //   basicMap: {
+              //     tableName: "",
+              //   },
+              //   conditionMap: {
+              //     // id: delIds,
+              //   },
+              // };
               //修改
               payLoad.updateCommonEntityList = res.map((item, index) => {
-                let result = {
-                  basicMap: {
-                    tableName: item.tableName,
-                  },
-                  commMap: {
-                    ...item.data,
-                  },
-                  conditionMap: {},
-                };
+                let result = {};
+                // {
+                //   basicMap: {
+                //     tableName: item.tableName,
+                //   },
+                //   commMap: {
+                //     ...item.data,
+                //   },
+                //   conditionMap: {},
+                // };
                 if (index == 0) {
+                  result = {
+                    basicMap: {
+                      tableName: item.tableName,
+                    },
+                    addListMap: [
+                      {
+                        ...item.data,
+                      },
+                    ],
+                  };
                   //主表条件
                   let conditionData =
                     JSON.parse(this.currentBtnData.btnParams).conditionData ||
@@ -1347,36 +1446,93 @@ export default {
                   });
                 } else {
                   // 从表条件
-                  let { formItem, relateFormItem } = item;
-                  let fieldName = formItem.split(".")[1];
-                  let value =
-                    this.currentRow[
-                      camelCase(relateFormItem.replace(".", "_"))
-                    ];
-                  result.conditionMap[fieldName] = value;
+                  let {
+                    formItem,
+                    relateFormItem,
+                    formType,
+                    defaultValue,
+                    tableName,
+                  } = item;
+                  if (formType == "batch") {
+                    //动态表格
+                    // 准备删除数据
+                    if (defaultValue[tableName]?.length) {
+                      let ids = defaultValue[tableName].map((item) => item.id);
+                      this.deletePayloadList.push({
+                        basicMap: {
+                          tableName,
+                        },
+                        conditionMap: {
+                          id: ids,
+                        },
+                      });
+                    }
+                    // 准备新增的数据
+                    //  this.getFormGroupBatchData(item, index, res);
+                  } else {
+                    result = {
+                      basicMap: {
+                        tableName: item.tableName,
+                      },
+                      addListMap: [
+                        {
+                          ...item.data,
+                        },
+                      ],
+                    };
+                    let fieldName = formItem.split(".")[1];
+                    let value =
+                      this.currentRow[
+                        camelCase(relateFormItem.replace(".", "_"))
+                      ];
+                    result.conditionMap[fieldName] = value;
+                  }
                 }
                 return result;
               });
             } else if (this.currentBtnData.btnType == "INSERT") {
               // 新增
-              let uuid = uuidv4();
+              let uuid = uuidv4().replace("-", "");
               // console.log(uuid);
               payLoad.insertCommonEntityList = res.map((item, index) => {
-                let result = {
-                  basicMap: {
-                    tableName: item.tableName,
-                  },
-                  addListMap: [
-                    {
-                      ...item.data,
+                let result = {};
+                console.log(item);
+                // return;
+                if (item.data.batch) {
+                  //动态表格
+                  result = this.getFormGroupBatchData(item, index, res);
+                } else {
+                  result = {
+                    basicMap: {
+                      tableName: item.tableName,
                     },
-                  ],
-                };
+                    addListMap: [
+                      {
+                        ...item.data,
+                      },
+                    ],
+                  };
+                  let { formItem, relateFormItem } = item;
+                  if (index == 0) {
+                    //主表单
+                    // 添加新增数据的关联条件
+
+                    // console.log(formItem);
+                    let mainFormKey = res[0].data[formItem.split(".")[1]];
+                    if (mainFormKey) {
+                      result.addListMap[0][formItem.split(".")[1]] =
+                        mainFormKey;
+                    } else {
+                      res[0].data[formItem.split(".")[1]] = uuid;
+                      result.addListMap[0][formItem.split(".")[1]] = uuid;
+                    }
+                  } else {
+                    //子表单
+                    result.addListMap[0][formItem.split(".")[1]] =
+                      res[0].data[relateFormItem.split(".")[1]];
+                  }
+                }
 
-                // 添加新增数据的关联条件
-                let { formItem, relateFormItem } = item;
-                // console.log(formItem);
-                result.addListMap[0][formItem.split(".")[1]] = uuid;
                 return result;
               });
             } else if (this.currentBtnData.btnType == "INITIATED") {