Browse Source

feat:修改验证表单子项

DESKTOP-USV654P\pc 4 months ago
parent
commit
6abf0459ea

+ 1 - 1
src/views/form/design/components/BasicConfigStep.vue

@@ -326,7 +326,7 @@
       dataIndex: 'relationTableField',
     },
     {
-      title: '允许为空',
+      title: '不能为空',
       dataIndex: 'isNullable',
       key: 'isNullable',
       width: 80,

+ 16 - 0
src/views/form/template/components/FormModal.vue

@@ -69,6 +69,7 @@
     pkField: 'id',
     formEventConfig: [],
     key: 0,
+    subFormConfig: [],
   });
 
   const { t } = useI18n();
@@ -95,6 +96,7 @@
     state.isView = !!data?.isView;
     state.isUpdate = !!data?.isUpdate;
     state.isCopy = !!data?.isCopy;
+    state.subFormConfig = data.subFormConfig;
 
     state.pkField = data.pkField;
     releaseId = data.releaseId;
@@ -175,6 +177,20 @@
   async function handleSubmit() {
     try {
       const values = await formRef.value?.validate();
+      let detailError = false;
+      if (state.subFormConfig.length > 0) {
+        state.subFormConfig.forEach((item) => {
+          const itemData = values[item];
+          if ((Array.isArray(itemData) && itemData.length == 0) || itemData == null) {
+            detailError = true;
+          }
+        });
+      }
+
+      if (detailError) {
+        notification.warning({ message: t('提示'), description: t('表格数据不能为空') });
+        return;
+      }
       console.log(values);
       //添加隐藏组件
       if (formProps.value.hiddenComponent?.length) {

+ 13 - 0
src/views/form/template/index.vue

@@ -209,6 +209,7 @@
     formWidth = ref<number>(800), // 弹窗、抽屉宽度
     menuId = ref<string>(''),
     pkField = ref<string>(''); //主表主键
+  const subFormConfig = ref<any>([]);
   // 模板打印 入参参数
   let printData: {
     id: string;
@@ -518,6 +519,7 @@
       pkField: pkField.value,
       formEventConfig,
       formProps,
+      subFormConfig,
     };
     formType.value === 'modal' ? openModal(true, info) : openDrawer(true, info);
   }
@@ -530,6 +532,7 @@
       isUpdate: true,
       formEventConfig,
       formProps,
+      subFormConfig,
     };
     formType.value === 'modal' ? openModal(true, info) : openDrawer(true, info);
   }
@@ -542,6 +545,7 @@
       isView: true,
       formEventConfig,
       formProps,
+      subFormConfig,
     };
     formType.value === 'modal' ? openModal(true, info) : openDrawer(true, info);
   }
@@ -761,6 +765,15 @@
     formType.value = formJson.formJson.config.formType!;
     formWidth.value = formJson.formJson.config.formWidth || 800;
     formEventConfig.value = formJson.formEventConfig;
+
+    if (Array.isArray(formJson.tableConfigs) && formJson.tableConfigs?.length > 1) {
+      formJson.tableConfigs.forEach((element, index) => {
+        if (index > 0 && element.isNullable) {
+          subFormConfig.value.push(element.tableName + 'List');
+        }
+      });
+    }
+
     //查询配置转换为schema
     [searchFormSchema, searchDate] = ConvertQueryConfigToFormSchema(
       queryConfigs,