Browse Source

修改表单组布局组件数据获取逻辑,解决表单数据提交报错问题

lph 1 năm trước cách đây
mục cha
commit
7a518c3eac

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

@@ -243,6 +243,7 @@ export default {
           formType,
           defaultValue,
           insertMap,
+          isMainForm,
         } = refName;
         this.$refs[tableName][0]?.getData().then((values) => {
           resolve({
@@ -253,6 +254,7 @@ export default {
             formType,
             defaultValue,
             insertMap,
+            isMainForm,
           });
         });
       });

+ 275 - 276
zkqy-ui/src/views/tablelist/commonTable/listInfo.vue

@@ -1152,6 +1152,7 @@ export default {
         tableName: mainForm.mainFormTable,
         formItem: mainForm.mainFormItem,
         relateFormItem: null,
+        isMainForm: true,
         formType: mainForm.showTemplate.spare == "2" ? "batch" : "normal",
         defaultValue: mainForm.showValue ? mainForm.showValue[0].resultMap : {},
       });
@@ -1205,6 +1206,7 @@ export default {
             formType: item.showTemplate.spare == "2" ? "batch" : "normal",
             defaultValue,
             insertMap: item.insertMap,
+            isMainForm: false,
           });
         });
       }
@@ -1479,7 +1481,6 @@ export default {
       let { formItem, relateFormItem } = values;
       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;
@@ -1488,7 +1489,6 @@ export default {
     },
     //提交编辑结果按钮回调
     async editConfirmHandler() {
-      console.log("wer");
       if (this.$refs.addFromRef && this.formType == "dragForm") {
         this.$refs.addFromRef
           .getData()
@@ -1581,316 +1581,315 @@ export default {
       } else if (this.formType == "dragFormGroup") {
         //表单组
         // // console.log(this.$refs.formGroupRef);
+        //有布局的表单组
+        // let res = await this.$refs.formGroupLayoutRef.getFormData();
+        // console.log(res);
+        // let valuesArr = [];
+        // res.forEach((item) => {
+        //   valuesArr.push(...item);
+        // });
+        // console.log(valuesArr);
+        // Promise.all(valuesArr).then((values) => {
+        //   console.log("布局表单数据", values);
+        // });
+        //无布局
+        let promiseArray = [];
         if (this.isLayout) {
-          //有布局的表单组
           let res = await this.$refs.formGroupLayoutRef.getFormData();
           // let values = await Promise.all(res);
           console.log(res);
-          let valuesArr = [];
           res.forEach((item) => {
-            valuesArr.push(...item);
-          });
-          console.log(valuesArr);
-          Promise.all(valuesArr).then((values) => {
-            console.log("布局表单数据", values);
+            promiseArray.push(...item);
           });
         } else {
-          //无布局
-          let promiseArray = this.FormNameList.map((item) => {
+          promiseArray = this.FormNameList.map((item) => {
             return this.$refs.formGroupRef?.getFormData(item);
           });
-          Promise.all(promiseArray).then(
-            async (res) => {
-              // 获取到所有表单数据
-              // console.log(res);
-              let mainFormData = res[0].data;
-              let data = {
-                basicMap: {
-                  tableName: this.tableName,
-                  // btnKey: btnData.btnKey,
-                  btnKey: this.currentBtnData.btnKey,
-                  BpmRunNodeFormDateVo: {},
-                },
-                conditionMap: {},
-                commMap: {},
-                btnParametersMap: {},
-              };
+        }
+        Promise.all(promiseArray).then(
+          async (res) => {
+            // 获取到所有表单数据
+            console.log("res", res);
+            let mainForm = res.find((item) => item.isMainForm);
+            let mainFormData = mainForm.data;
+            let data = {
+              basicMap: {
+                tableName: this.tableName,
+                // btnKey: btnData.btnKey,
+                btnKey: this.currentBtnData.btnKey,
+                BpmRunNodeFormDateVo: {},
+              },
+              conditionMap: {},
+              commMap: {},
+              btnParametersMap: {},
+            };
 
-              let btnParams =
-                JSON.parse(this.currentBtnData.btnParams)?.commonFieldData ||
-                [];
-              let conditionData =
-                JSON.parse(this.currentBtnData.btnParams)?.conditionData || [];
-              Object.keys(mainFormData).map((k) => {
-                data.commMap[k] = mainFormData[k];
-              });
-              btnParams.forEach((item) => {
-                data.btnParametersMap[item.fieldName.split(".")[1]] =
-                  item.fieldValue
-                    ? item.fieldValue
-                    : this.currentRow[
-                        camelCase(item.fieldName.replace(".", "_"))
-                      ];
-              });
-              conditionData.forEach((item) => {
-                data.conditionMap[item.fieldName.split(".")[1]] =
-                  item.fieldValue
-                    ? item.fieldValue
-                    : this.currentRow[
-                        camelCase(item.fieldName.replace(".", "_"))
-                      ];
-              });
-              data.basicMap.btnType = this.currentBtnData.btnType;
-              data.basicMap.visible = true;
-              let payLoad = {
-                insertCommonEntityList: [],
-                updateCommonEntityList: [],
-                deleteCommonEntityList: [],
-              };
-              if (this.currentBtnData.btnType == "UPDATE") {
-                // 准备删除数据
-                res.forEach((item, index) => {
-                  let result = {};
-                  if (index == 0) {
-                    //主表  主表不会是动态表格
-                    result = {
-                      basicMap: {
-                        tableName: item.tableName,
-                      },
-                      commMap: {
-                        ...item.data,
-                      },
-                      conditionMap: {},
-                    };
-                    //主表条件
-                    let conditionData =
-                      JSON.parse(this.currentBtnData.btnParams).conditionData ||
-                      [];
-                    conditionData.forEach((item) => {
-                      result.conditionMap[item.fieldName.split(".")[1]] =
-                        item.fieldValue
-                          ? item.fieldValue
-                          : this.currentRow[
-                              camelCase(item.fieldName.replace(".", "_"))
-                            ];
-                    });
-                    payLoad.updateCommonEntityList.push(result);
-                  } else {
-                    // 从表条件
-                    let {
-                      formItem,
-                      relateFormItem,
-                      formType,
-                      defaultValue,
-                      tableName,
-                    } = item;
-                    if (formType == "batch") {
-                      //动态表格的修改
-                      let result = {};
-                      // 准备删除数据
-                      if (defaultValue[tableName]?.length) {
-                        let ids = defaultValue[tableName].map(
-                          (item) => item.id
-                        );
-                        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.removeAutoField(result);
-                      console.log(result);
-                      payLoad.insertCommonEntityList.push(result);
-                    } else {
-                      //普通表格的修改
+            let btnParams =
+              JSON.parse(this.currentBtnData.btnParams)?.commonFieldData || [];
+            let conditionData =
+              JSON.parse(this.currentBtnData.btnParams)?.conditionData || [];
+            Object.keys(mainFormData).map((k) => {
+              data.commMap[k] = mainFormData[k];
+            });
+            btnParams.forEach((item) => {
+              data.btnParametersMap[item.fieldName.split(".")[1]] =
+                item.fieldValue
+                  ? item.fieldValue
+                  : this.currentRow[
+                      camelCase(item.fieldName.replace(".", "_"))
+                    ];
+            });
+            conditionData.forEach((item) => {
+              data.conditionMap[item.fieldName.split(".")[1]] = item.fieldValue
+                ? item.fieldValue
+                : this.currentRow[camelCase(item.fieldName.replace(".", "_"))];
+            });
+            data.basicMap.btnType = this.currentBtnData.btnType;
+            data.basicMap.visible = true;
+            let payLoad = {
+              insertCommonEntityList: [],
+              updateCommonEntityList: [],
+              deleteCommonEntityList: [],
+            };
+            if (this.currentBtnData.btnType == "UPDATE") {
+              // 准备删除数据
+              res.forEach((item, index) => {
+                let result = {};
+                if (index == 0) {
+                  //主表  主表不会是动态表格
+                  result = {
+                    basicMap: {
+                      tableName: item.tableName,
+                    },
+                    commMap: {
+                      ...item.data,
+                    },
+                    conditionMap: {},
+                  };
+                  //主表条件
+                  let conditionData =
+                    JSON.parse(this.currentBtnData.btnParams).conditionData ||
+                    [];
+                  conditionData.forEach((item) => {
+                    result.conditionMap[item.fieldName.split(".")[1]] =
+                      item.fieldValue
+                        ? item.fieldValue
+                        : this.currentRow[
+                            camelCase(item.fieldName.replace(".", "_"))
+                          ];
+                  });
+                  payLoad.updateCommonEntityList.push(result);
+                } else {
+                  // 从表条件
+                  let {
+                    formItem,
+                    relateFormItem,
+                    formType,
+                    defaultValue,
+                    tableName,
+                  } = item;
+                  if (formType == "batch") {
+                    //动态表格的修改
+                    let result = {};
+                    // 准备删除数据
+                    if (defaultValue[tableName]?.length) {
+                      let ids = defaultValue[tableName].map((item) => item.id);
                       result = {
                         basicMap: {
-                          tableName: item.tableName,
+                          tableName,
                         },
-                        commMap: {
-                          ...item.data,
+                        conditionMap: {
+                          id: ids,
                         },
-                        conditionMap: {},
                       };
-                      let fieldName = formItem.split(".")[1];
-                      let value =
-                        this.currentRow[
-                          camelCase(relateFormItem.replace(".", "_"))
-                        ];
-                      result.conditionMap[fieldName] = value;
-                      payLoad.updateCommonEntityList.push(result);
+                      payLoad.deleteCommonEntityList.push(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);
-                  // return;
-                  if (item.data.batch) {
-                    //动态表格
+                    // 准备新增数据
                     result = this.getFormGroupBatchData(item, index, res);
+                    if (item.insertMap.length) {
+                      this.addInsertData(item.insertMap, result, res);
+                    }
+                    // 去除未修改数据的自动生成字段
+                    this.removeAutoField(result);
+                    payLoad.insertCommonEntityList.push(result);
                   } else {
+                    //普通表格的修改
                     result = {
                       basicMap: {
                         tableName: item.tableName,
                       },
-                      addListMap: [
-                        {
-                          ...item.data,
-                        },
-                      ],
+                      commMap: {
+                        ...item.data,
+                      },
+                      conditionMap: {},
                     };
-                    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]];
-                    }
-                  }
-                  if (item.insertMap?.length) {
-                    this.addInsertData(item.insertMap, result, res);
-                  }
-                  return result;
-                });
-              } else if (this.currentBtnData.btnType == "INITIATED") {
-                // 按照单独的表单投产逻辑收集主表单数据
-                // let mainFormData = res[0].data;//主表单数据
-                // payLoad = {
-                //   basicMap: {
-                //     tableName: this.tableName,
-                //     // btnKey: btnData.btnKey,
-                //     btnKey: this.currentBtnData.btnKey,
-                //   },
-                //   addListMap: mainFormData,
-                //   conditionMap: {},
-                //   commMap: {},
-                //   btnParametersMap: {},
-                // };
-                // if (this.currentBtnData.btnParams) {
-                //   let btnParams =
-                //     JSON.parse(this.currentBtnData.btnParams)?.commonFieldData ||
-                //     [];
-                //   let conditionData =
-                //     JSON.parse(this.currentBtnData.btnParams).conditionData || [];
-                //   // let
-                //   btnParams.forEach((item) => {
-                //     payLoad.btnParametersMap[item.fieldName.split(".")[1]] =
-                //       item.fieldValue
-                //         ? item.fieldValue
-                //         : this.currentRow[
-                //             camelCase(item.fieldName.replace(".", "_"))
-                //           ];
-                //   });
-                //   conditionData.forEach((item) => {
-                //     payLoad.conditionMap[item.fieldName.split(".")[1]] =
-                //       item.fieldValue
-                //         ? item.fieldValue
-                //         : this.currentRow[
-                //             camelCase(item.fieldName.replace(".", "_"))
-                //           ];
-                //   });
-                // }
-                // if (Object.keys(this.defaultValue).length) {
-                //   // data.conditionMap[this.templateInfo.template?.primaryKey] =
-                //   //   this.defaultValue[this.templateInfo.template?.primaryKey];
-                //   Object.keys(mainFormData).map((k) => {
-                //     data.commMap[k] = mainFormData[k];
-                //   });
-                //   data.basicMap.btnType = this.currentBtnData.btnType;
-                //   data.basicMap.visible = true;
-                // } else {
-                //   data.basicMap.btnType = "INSERT";
-                //   data.basicMap.visible = true;
-                // }
-                // 添加表单组数据处理逻辑
-                payLoad.updateCommonEntityList = res.map((item, index) => {
-                  let result = {
-                    basicMap: {
-                      tableName: item.tableName,
-                    },
-                    commMap: {
-                      ...item.data,
-                    },
-                    conditionMap: {},
-                  };
-                  if (index == 0) {
-                    //主表条件
-                    let conditionData =
-                      JSON.parse(this.currentBtnData.btnParams).conditionData ||
-                      [];
-                    conditionData.forEach((item) => {
-                      result.conditionMap[item.fieldName.split(".")[1]] =
-                        item.fieldValue
-                          ? item.fieldValue
-                          : this.currentRow[
-                              camelCase(item.fieldName.replace(".", "_"))
-                            ];
-                    });
-                  } else {
-                    // 从表条件
-                    let { formItem, relateFormItem } = item;
                     let fieldName = formItem.split(".")[1];
                     let value =
                       this.currentRow[
                         camelCase(relateFormItem.replace(".", "_"))
                       ];
                     result.conditionMap[fieldName] = value;
+                    payLoad.updateCommonEntityList.push(result);
                   }
-                  return result;
-                });
-              }
+                }
+              });
+            } else if (this.currentBtnData.btnType == "INSERT") {
+              // 新增
+              let uuid = uuidv4().replace("-", "");
+              payLoad.insertCommonEntityList = res.map((item, index) => {
+                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);
 
-              data.basicMap.BpmRunNodeFormDateVo = payLoad;
-              // return;
-              try {
-                let res = await btnCommonApi(data);
-                if (res.code == 200) {
-                  this.$message.success("操作成功");
-                  this.getList();
-                  this.defaultValue = {};
-                  this.open = false;
+                    let mainFormKey = mainForm.data[formItem.split(".")[1]];
+                    console.log("formItem", formItem);
+                    if (mainFormKey) {
+                      result.addListMap[0][formItem.split(".")[1]] =
+                        mainFormKey;
+                    } else {
+                      mainForm.data[formItem.split(".")[1]] = uuid;
+                      result.addListMap[0][formItem.split(".")[1]] = uuid;
+                    }
+                  } else {
+                    //子表单
+                    result.addListMap[0][formItem.split(".")[1]] =
+                      mainForm.data[relateFormItem?.split(".")[1]];
+                  }
+                }
+                if (item.insertMap?.length) {
+                  this.addInsertData(item.insertMap, result, res);
+                }
+                return result;
+              });
+            } else if (this.currentBtnData.btnType == "INITIATED") {
+              // 按照单独的表单投产逻辑收集主表单数据
+              // let mainFormData = res[0].data;//主表单数据
+              // payLoad = {
+              //   basicMap: {
+              //     tableName: this.tableName,
+              //     // btnKey: btnData.btnKey,
+              //     btnKey: this.currentBtnData.btnKey,
+              //   },
+              //   addListMap: mainFormData,
+              //   conditionMap: {},
+              //   commMap: {},
+              //   btnParametersMap: {},
+              // };
+              // if (this.currentBtnData.btnParams) {
+              //   let btnParams =
+              //     JSON.parse(this.currentBtnData.btnParams)?.commonFieldData ||
+              //     [];
+              //   let conditionData =
+              //     JSON.parse(this.currentBtnData.btnParams).conditionData || [];
+              //   // let
+              //   btnParams.forEach((item) => {
+              //     payLoad.btnParametersMap[item.fieldName.split(".")[1]] =
+              //       item.fieldValue
+              //         ? item.fieldValue
+              //         : this.currentRow[
+              //             camelCase(item.fieldName.replace(".", "_"))
+              //           ];
+              //   });
+              //   conditionData.forEach((item) => {
+              //     payLoad.conditionMap[item.fieldName.split(".")[1]] =
+              //       item.fieldValue
+              //         ? item.fieldValue
+              //         : this.currentRow[
+              //             camelCase(item.fieldName.replace(".", "_"))
+              //           ];
+              //   });
+              // }
+              // if (Object.keys(this.defaultValue).length) {
+              //   // data.conditionMap[this.templateInfo.template?.primaryKey] =
+              //   //   this.defaultValue[this.templateInfo.template?.primaryKey];
+              //   Object.keys(mainFormData).map((k) => {
+              //     data.commMap[k] = mainFormData[k];
+              //   });
+              //   data.basicMap.btnType = this.currentBtnData.btnType;
+              //   data.basicMap.visible = true;
+              // } else {
+              //   data.basicMap.btnType = "INSERT";
+              //   data.basicMap.visible = true;
+              // }
+              // 添加表单组数据处理逻辑
+              payLoad.updateCommonEntityList = res.map((item, index) => {
+                let result = {
+                  basicMap: {
+                    tableName: item.tableName,
+                  },
+                  commMap: {
+                    ...item.data,
+                  },
+                  conditionMap: {},
+                };
+                if (index == 0) {
+                  //主表条件
+                  let conditionData =
+                    JSON.parse(this.currentBtnData.btnParams).conditionData ||
+                    [];
+                  conditionData.forEach((item) => {
+                    result.conditionMap[item.fieldName.split(".")[1]] =
+                      item.fieldValue
+                        ? item.fieldValue
+                        : this.currentRow[
+                            camelCase(item.fieldName.replace(".", "_"))
+                          ];
+                  });
                 } else {
-                  console.log(res);
-                  this.$message.error("网络异常,请稍后再试");
+                  // 从表条件
+                  let { formItem, relateFormItem } = item;
+                  let fieldName = formItem.split(".")[1];
+                  let value =
+                    this.currentRow[
+                      camelCase(relateFormItem.replace(".", "_"))
+                    ];
+                  result.conditionMap[fieldName] = value;
                 }
-              } catch (error) {
-                console.log(error);
+                return result;
+              });
+            }
+
+            data.basicMap.BpmRunNodeFormDateVo = payLoad;
+            // return;
+            try {
+              let res = await btnCommonApi(data);
+              if (res.code == 200) {
+                this.$message.success("操作成功");
+                this.getList();
+                this.defaultValue = {};
+                this.open = false;
+              } else {
+                console.log(res);
                 this.$message.error("网络异常,请稍后再试");
               }
-            },
-            (err) => {
-              // console.log(err);
+            } catch (error) {
+              console.log(error);
+              this.$message.error("网络异常,请稍后再试");
             }
-          );
-        }
+          },
+          (err) => {
+            // console.log(err);
+          }
+        );
       } else {
         // 没有绑定表单
         let data = {

+ 10 - 0
zkqy-ui/src/views/tablelist/components/FormGroupLayout/LayoutIndex.vue

@@ -84,6 +84,7 @@ export default {
         relateFormItem: null,
         formType: mainForm.showTemplate.spare == "2" ? "batch" : "normal",
         defaultValue: mainForm.showValue ? mainForm.showValue[0].resultMap : {},
+        isMainForm: true,
       });
       if (subFormList && subFormList.length > 0) {
         subFormList.forEach((item) => {
@@ -137,6 +138,7 @@ export default {
             formType: item.showTemplate.spare == "2" ? "batch" : "normal",
             defaultValue,
             insertMap: item.insertMap,
+            isMainForm: false,
           });
         });
       }
@@ -172,6 +174,9 @@ export default {
         }
         if (item.type == "form") {
           let targeForm = this.formArray.find((i) => i.formKey == item.formKey);
+          let infoTarget = this.FormNameList.find(
+            (i) => i.formKey == item.formKey
+          );
           item.dfVueTemplate = targeForm.template.dfVueTemplate;
           item.defaultValue = targeForm.template.defaultValue
             ? targeForm.template.defaultValue
@@ -180,6 +185,11 @@ export default {
             ? targeForm.template.dfFormSql
             : {};
           item.tableName = targeForm.tableName;
+          item.formItem = infoTarget.formItem;
+          item.relateFormItem = infoTarget.relateFormItem;
+          item.formType = infoTarget.formType;
+          item.insertMap = infoTarget.insertMap;
+          item.isMainForm = infoTarget.isMainForm;
         }
       });
     },

+ 1 - 1
zkqy-ui/src/views/tablelist/components/FormGroupLayout/LayoutItem.vue

@@ -104,7 +104,7 @@ export default {
       if (type == "form") {
         let { tableName } = this.record;
         let values = await this.$refs.formBuild.getData();
-        return { tableName, data: values };
+        return { tableName, data: values, ...this.record };
       }
     },
   },