Przeglądaj źródła

fix: 修改bug12.26.2

100011797 3 lat temu
rodzic
commit
892f36a7ee

+ 23 - 25
src/components/Metadata/ArrayParam/index.tsx

@@ -7,7 +7,6 @@ import { Store } from 'jetlinks-store';
 import JsonParam from '@/components/Metadata/JsonParam';
 import EnumParam from '@/components/Metadata/EnumParam';
 import BooleanEnum from '@/components/Metadata/BooleanParam';
-import { registerValidateRules } from '@formily/core';
 
 const ArrayParam = () => {
   const SchemaField = createSchemaField({
@@ -25,27 +24,6 @@ const ArrayParam = () => {
     },
   });
 
-  registerValidateRules({
-    checkLength(value) {
-      if (value === undefined) {
-        return '';
-      }
-      if (String(value).length > 64) {
-        return {
-          type: 'error',
-          message: '最多可输入64个字符',
-        };
-      }
-      if (!(value % 1 === 0)) {
-        return {
-          type: 'error',
-          message: '请输入非0正整数',
-        };
-      }
-      return '';
-    },
-  });
-
   const schema: ISchema = {
     type: 'object',
     properties: {
@@ -68,7 +46,9 @@ const ArrayParam = () => {
             title: '元素类型',
             'x-decorator': 'FormItem',
             'x-component': 'Select',
-            enum: DataTypeList.filter((item) => item.value !== 'array'),
+            enum: DataTypeList.filter((item) =>
+              ['int', 'long', 'float', 'double', 'string', 'boolean', 'date'].includes(item.value),
+            ),
             'x-validator': [
               {
                 required: true,
@@ -83,9 +63,15 @@ const ArrayParam = () => {
             'x-component-props': {
               min: 1,
             },
+            default: 2,
             'x-validator': [
               {
-                checkLength: true,
+                max: 2147483647,
+                message: '请输入0-2147483647之间的正整数',
+              },
+              {
+                min: 0,
+                message: '请输入0-2147483647之间的正整数',
               },
             ],
             'x-reactions': {
@@ -124,6 +110,13 @@ const ArrayParam = () => {
             'x-decorator': 'FormItem',
             'x-component': 'Select',
             enum: DateTypeList,
+            default: 'string',
+            'x-validator': [
+              {
+                required: true,
+                message: '请选择时间格式',
+              },
+            ],
             'x-reactions': {
               dependencies: ['.type'],
               fulfill: {
@@ -148,7 +141,12 @@ const ArrayParam = () => {
                 },
                 'x-validator': [
                   {
-                    checkLength: true,
+                    max: 2147483647,
+                    message: '请输入1-2147483647之间的正整数',
+                  },
+                  {
+                    min: 1,
+                    message: '请输入1-2147483647之间的正整数',
                   },
                 ],
                 'x-reactions': {

+ 40 - 1
src/components/Metadata/BooleanParam/index.tsx

@@ -32,13 +32,22 @@ const BooleanParam = () => {
             'x-component-props': {
               placeholder: 'trueText',
             },
+            'x-validator': [
+              {
+                required: true,
+                message: '请输入trueText',
+              },
+              {
+                max: 64,
+                message: '最多可输入64个字符',
+              },
+            ],
           },
           trueValue: {
             title: '-',
             'x-decorator': 'FormItem',
             'x-component': 'Input',
             default: true,
-
             'x-decorator-props': {
               gridSpan: 1,
               colon: false,
@@ -46,6 +55,16 @@ const BooleanParam = () => {
             'x-component-props': {
               placeholder: 'trueValue',
             },
+            'x-validator': [
+              {
+                required: true,
+                message: '请输入trueValue',
+              },
+              {
+                max: 64,
+                message: '最多可输入64个字符',
+              },
+            ],
           },
           falseText: {
             'x-decorator': 'FormItem',
@@ -57,6 +76,16 @@ const BooleanParam = () => {
             'x-component-props': {
               placeholder: 'falseText',
             },
+            'x-validator': [
+              {
+                required: true,
+                message: '请输入falseText',
+              },
+              {
+                max: 64,
+                message: '最多可输入64个字符',
+              },
+            ],
           },
           falseValue: {
             'x-decorator': 'FormItem',
@@ -70,6 +99,16 @@ const BooleanParam = () => {
             'x-component-props': {
               placeholder: 'falseValue',
             },
+            'x-validator': [
+              {
+                required: true,
+                message: '请输入falseValue',
+              },
+              {
+                max: 64,
+                message: '最多可输入64个字符',
+              },
+            ],
           },
         },
       },

+ 31 - 23
src/components/Metadata/JsonParam/index.tsx

@@ -11,7 +11,6 @@ import EnumParam from '@/components/Metadata/EnumParam';
 import ArrayParam from '@/components/Metadata/ArrayParam';
 import { useIntl } from '@/.umi/plugin-locale/localeExports';
 import Editable from '../EditTable';
-import { registerValidateRules } from '@formily/core';
 
 // 不算是自定义组件。只是抽离了JSONSchema
 interface Props {
@@ -46,25 +45,6 @@ const JsonParam = observer((props: Props) => {
       return _data;
     });
 
-  registerValidateRules({
-    checkLength(value) {
-      if (value === undefined) return '';
-      if (String(value).length > 64) {
-        return {
-          type: 'error',
-          message: '最多可输入64个字符',
-        };
-      }
-      if (!(value % 1 === 0)) {
-        return {
-          type: 'error',
-          message: '请输入非0正整数',
-        };
-      }
-      return '';
-    },
-  });
-
   const checkArray: any = (arr: any) => {
     if (Array.isArray(arr) && arr.length) {
       return arr.every((item: any) => {
@@ -172,7 +152,17 @@ const JsonParam = observer((props: Props) => {
                       enum:
                         MetadataModel.type === 'functions'
                           ? DataTypeList.filter((item) => item.value !== 'file')
-                          : DataTypeList,
+                          : DataTypeList.filter((item) =>
+                              [
+                                'int',
+                                'long',
+                                'float',
+                                'double',
+                                'string',
+                                'boolean',
+                                'date',
+                              ].includes(item.value),
+                            ),
                     },
                     booleanConfig: {
                       title: '布尔值',
@@ -270,6 +260,13 @@ const JsonParam = observer((props: Props) => {
                       'x-component': 'Select',
                       enum: DateTypeList,
                       'x-visible': false,
+                      default: 'string',
+                      'x-validator': [
+                        {
+                          required: true,
+                          message: '请选择时间格式',
+                        },
+                      ],
                       'x-reactions': {
                         dependencies: ['..valueType.type'],
                         fulfill: {
@@ -297,7 +294,12 @@ const JsonParam = observer((props: Props) => {
                           },
                           'x-validator': [
                             {
-                              checkLength: true,
+                              max: 2147483647,
+                              message: '请输入1-2147483647之间的正整数',
+                            },
+                            {
+                              min: 1,
+                              message: '请输入1-2147483647之间的正整数',
                             },
                           ],
                           'x-reactions': {
@@ -318,9 +320,15 @@ const JsonParam = observer((props: Props) => {
                   'x-decorator': 'FormItem',
                   'x-component': 'NumberPicker',
                   'x-visible': false,
+                  default: 2,
                   'x-validator': [
                     {
-                      checkLength: true,
+                      max: 2147483647,
+                      message: '请输入0-2147483647之间的正整数',
+                    },
+                    {
+                      min: 0,
+                      message: '请输入0-2147483647之间的正整数',
                     },
                   ],
                   'x-component-props': {

+ 1 - 1
src/pages/device/Instance/Detail/Diagnose/Message/index.tsx

@@ -397,7 +397,7 @@ const Message = observer(() => {
                       }
                     }
                     if (values.type === 'function') {
-                      const list = (_inputs?.data || []).filter((it: any) => !!it.value);
+                      const list = (_inputs || []).filter((it: any) => !!it.value);
                       const obj = {};
                       list.map((it: any) => {
                         obj[it.id] = it.value;

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

@@ -252,6 +252,8 @@ const Edit = observer((props: Props) => {
               ]
             : MetadataModel.type === 'functions'
             ? DataTypeList.filter((item) => item.value !== 'file')
+            : MetadataModel.type === 'tags'
+            ? DataTypeList.filter((item) => item.value !== 'file' && item.value !== 'password')
             : DataTypeList,
       },
       unit: {
@@ -288,6 +290,17 @@ const Edit = observer((props: Props) => {
         }),
         'x-decorator': 'FormItem',
         'x-component': 'NumberPicker',
+        default: 2,
+        'x-validator': [
+          {
+            max: 2147483647,
+            message: '请输入0-2147483647之间的正整数',
+          },
+          {
+            min: 0,
+            message: '请输入0-2147483647之间的正整数',
+          },
+        ],
         'x-reactions': {
           dependencies: ['.type'],
           fulfill: {
@@ -322,6 +335,13 @@ const Edit = observer((props: Props) => {
         'x-decorator': 'FormItem',
         'x-component': 'Select',
         enum: DateTypeList,
+        default: 'string',
+        'x-validator': [
+          {
+            required: true,
+            message: '请选择时间格式',
+          },
+        ],
         'x-reactions': {
           dependencies: ['.type'],
           fulfill: {
@@ -367,9 +387,19 @@ const Edit = observer((props: Props) => {
             'x-component-props': {
               min: 1,
             },
+            // 'x-validator': [
+            //   {
+            //     checkLength: true,
+            //   },
+            // ],
             'x-validator': [
               {
-                checkLength: true,
+                max: 2147483647,
+                message: '请输入1-2147483647之间的正整数',
+              },
+              {
+                min: 1,
+                message: '请输入1-2147483647之间的正整数',
               },
             ],
             'x-reactions': {
@@ -439,6 +469,13 @@ const Edit = observer((props: Props) => {
         'x-component': 'Select',
         'x-visible': false,
         enum: FileTypeList,
+        default: 'url',
+        'x-validator': [
+          {
+            required: true,
+            message: '请选择文件类型',
+          },
+        ],
         'x-reactions': {
           dependencies: ['.type'],
           fulfill: {
@@ -1072,9 +1109,14 @@ const Edit = observer((props: Props) => {
           id: 'pages.device.productDetail.metadata.whetherAsync',
           defaultMessage: '是否异步',
         }),
-        required: true,
         'x-decorator': 'FormItem',
         'x-component': 'Radio.Group',
+        'x-validator': [
+          {
+            required: true,
+            message: '请选择是否异步',
+          },
+        ],
         enum: [
           {
             label: intl.formatMessage({

+ 1 - 1
src/pages/device/components/Metadata/Base/columns.tsx

@@ -72,7 +72,7 @@ const PropertyColumns: ProColumns<MetadataItem>[] = BaseColumns.concat([
     render: (text: any) => text?.type,
   },
   {
-    title: '数据类型',
+    title: '属性来源',
     dataIndex: 'expands',
     render: (text: any) => SourceMap[text?.source],
   },

+ 96 - 1
src/pages/link/Type/Detail/index.tsx

@@ -672,6 +672,7 @@ const Save = observer(() => {
           { value: 'delimited', label: '分隔符' },
           { value: 'script', label: '自定义脚本' },
           { value: 'fixed_length', label: '固定长度' },
+          { value: 'length', label: '长度' },
         ],
         'x-reactions': {
           dependencies: ['type'],
@@ -700,7 +701,7 @@ const Save = observer(() => {
             dependencies: ['.parserType'],
             fulfill: {
               state: {
-                visible: '{{["delimited", "script", "fixed_length"].includes($deps[0])}}',
+                visible: '{{["delimited", "script", "fixed_length", "length"].includes($deps[0])}}',
               },
             },
           },
@@ -832,6 +833,100 @@ const Save = observer(() => {
               },
             ],
           },
+          length: {
+            title: '长度',
+            'x-component': 'Select',
+            'x-decorator': 'FormItem',
+            'x-decorator-props': {
+              labelAlign: 'left',
+              layout: 'vertical',
+              gridSpan: 1,
+            },
+            'x-validator': [
+              {
+                required: true,
+                message: '请选择长度',
+              },
+            ],
+            enum: [1, 2, 3, 4, 8],
+            default: 4,
+            'x-component-props': {
+              placeholder: '请选择长度',
+            },
+            'x-reactions': [
+              {
+                dependencies: ['..parserType'],
+                fulfill: {
+                  state: {
+                    visible: '{{$deps[0] === "length"}}',
+                  },
+                },
+              },
+            ],
+          },
+          offset: {
+            title: '偏移量',
+            'x-component': 'NumberPicker',
+            'x-decorator': 'FormItem',
+            'x-decorator-props': {
+              labelAlign: 'left',
+              layout: 'vertical',
+              gridSpan: 1,
+            },
+            'x-validator': [
+              {
+                max: 65535,
+                message: '请输入0-65535之间的正整数',
+              },
+              {
+                min: 0,
+                message: '请输入0-65535之间的正整数',
+              },
+            ],
+            'x-component-props': {
+              placeholder: '请输入偏移量',
+            },
+            default: 0,
+            'x-reactions': [
+              {
+                dependencies: ['..parserType'],
+                fulfill: {
+                  state: {
+                    visible: '{{$deps[0] === "length"}}',
+                  },
+                },
+              },
+            ],
+          },
+          little: {
+            title: '大小端',
+            type: 'boolean',
+            'x-component': 'Select',
+            'x-decorator': 'FormItem',
+            'x-decorator-props': {
+              labelAlign: 'left',
+              layout: 'vertical',
+              gridSpan: 1,
+            },
+            'x-component-props': {
+              placeholder: '请选择大小端',
+            },
+            default: false,
+            enum: [
+              { label: '大端', value: false },
+              { label: '小端', value: true },
+            ],
+            'x-reactions': [
+              {
+                dependencies: ['..parserType'],
+                fulfill: {
+                  state: {
+                    visible: '{{$deps[0] === "length"}}',
+                  },
+                },
+              },
+            ],
+          },
         },
       },
     },