Просмотр исходного кода

fix(metadata): add metadata validator

Lind 3 лет назад
Родитель
Сommit
1ae5d3049b

+ 3 - 0
src/components/BaseCrud/index.tsx

@@ -46,6 +46,7 @@ export type Props<T> = {
   form?: Form;
   /** @name 用于存储搜索历史记录的标记*/
   moduleName?: string; //
+  footer?: React.ReactNode;
 };
 
 const BaseCrud = <T extends Record<string, any>>(props: Props<T>) => {
@@ -68,6 +69,7 @@ const BaseCrud = <T extends Record<string, any>>(props: Props<T>) => {
     formEffect,
     form,
     moduleName,
+    footer,
   } = props;
 
   const [param, setParam] = useState({});
@@ -151,6 +153,7 @@ const BaseCrud = <T extends Record<string, any>>(props: Props<T>) => {
         modelConfig={modelConfig}
         formEffect={formEffect}
         customForm={form}
+        footer={footer}
       />
     </>
   );

+ 4 - 1
src/components/BaseCrud/save/index.tsx

@@ -43,11 +43,13 @@ interface Props<T> {
   modelConfig?: ModalProps & { loading?: boolean };
   formEffect?: () => void;
   customForm?: Form1;
+  footer?: React.ReactNode;
 }
 
 const Save = <T extends Record<string, any>>(props: Props<T>) => {
   const intl = useIntl();
-  const { service, schema, reload, schemaConfig, modelConfig, formEffect, customForm } = props;
+  const { service, schema, reload, schemaConfig, modelConfig, formEffect, customForm, footer } =
+    props;
 
   const [visible, setVisible] = useState<boolean>(false);
   const [current, setCurrent] = useState<T>();
@@ -130,6 +132,7 @@ const Save = <T extends Record<string, any>>(props: Props<T>) => {
       maskClosable={false}
       visible={visible}
       onCancel={CurdModel.close}
+      footer={footer}
       onOk={save}
       {...modelConfig}
     >

+ 17 - 3
src/components/Metadata/JsonParam/index.tsx

@@ -1,10 +1,10 @@
 import {
-  NumberPicker,
-  FormLayout,
-  Editable,
   ArrayItems,
+  Editable,
   FormItem,
+  FormLayout,
   Input,
+  NumberPicker,
   Select,
 } from '@formily/antd';
 import { createSchemaField } from '@formily/react';
@@ -65,6 +65,20 @@ const JsonParam = (props: Props) => {
                   required: true,
                   'x-decorator': 'FormItem',
                   'x-component': 'Input',
+                  'x-validator': [
+                    {
+                      max: 64,
+                      message: '最多可输入64个字符',
+                    },
+                    {
+                      required: true,
+                      message: '请输入标识',
+                    },
+                    {
+                      validateId: true,
+                      message: 'ID只能由数字、26个英文字母或者下划线组成',
+                    },
+                  ],
                 },
                 name: {
                   title: '名称',

+ 2 - 2
src/pages/device/components/Metadata/Base/Edit/index.tsx

@@ -136,8 +136,8 @@ const Edit = observer((props: Props) => {
   registerValidateRules({
     validateId(value) {
       if (!value) return '';
-      const reg = new RegExp('^\\w{3,20}$');
-      return reg.exec(value) ? '' : 'ID只能由数字、26个英文字母或者下划线组成';
+      const reg = new RegExp('^[0-9a-zA-Z_\\\\-]+$');
+      return reg.exec(value) ? '' : 'ID只能由数字、字母、下划线、中划线组成';
     },
   });
   const valueTypeConfig = {