Преглед изворни кода

fix: 修改物模型数据校验

100011797 пре 3 година
родитељ
комит
210ea31e39

+ 15 - 2
src/components/FIndicators/index.tsx

@@ -13,7 +13,6 @@ const FIndicators = (props: Props) => {
   const { value, onChange, type } = props;
   const DatePicker1: any = DatePicker;
   const [list, setList] = useState<any[]>([]);
-
   useEffect(() => {
     const arr = [];
     if (!!props.enum?.falseText && props.enum?.falseValue !== undefined) {
@@ -119,6 +118,20 @@ const FIndicators = (props: Props) => {
           ))}
         </Select>
       );
+    } else if (type === 'string') {
+      return (
+        <Input
+          style={{ width: '100%' }}
+          value={value?.value}
+          placeholder={'请输入'}
+          onChange={(e) => {
+            onChange({
+              ...value,
+              value: [e.target.value],
+            });
+          }}
+        />
+      );
     } else {
       return (
         <>
@@ -152,7 +165,7 @@ const FIndicators = (props: Props) => {
   return (
     <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
       {renderComponent()}
-      {type !== 'boolean' && (
+      {type !== 'boolean' && type !== 'string' && (
         <Checkbox
           style={{ minWidth: 60, marginLeft: 5 }}
           checked={value?.range}

+ 8 - 0
src/components/Metadata/ArrayParam/index.tsx

@@ -66,6 +66,10 @@ const ArrayParam = () => {
             default: 2,
             'x-validator': [
               {
+                format: 'integer',
+                message: '请输入0-2147483647之间的正整数',
+              },
+              {
                 max: 2147483647,
                 message: '请输入0-2147483647之间的正整数',
               },
@@ -141,6 +145,10 @@ const ArrayParam = () => {
                 },
                 'x-validator': [
                   {
+                    format: 'integer',
+                    message: '请输入1-2147483647之间的正整数',
+                  },
+                  {
                     max: 2147483647,
                     message: '请输入1-2147483647之间的正整数',
                   },

+ 8 - 0
src/components/Metadata/EnumParam/index.tsx

@@ -39,6 +39,14 @@ const EnumParam = () => {
             },
           },
         ],
+        'x-reactions': {
+          dependencies: ['.type'],
+          fulfill: {
+            state: {
+              value: [{}],
+            },
+          },
+        },
         items: {
           type: 'void',
           'x-component': 'ArrayItems.Item',

+ 16 - 0
src/components/Metadata/JsonParam/index.tsx

@@ -64,6 +64,14 @@ const JsonParam = observer((props: Props) => {
         type: 'array',
         'x-component': 'ArrayItems',
         'x-decorator': 'FormItem',
+        'x-reactions': {
+          dependencies: ['.type'],
+          fulfill: {
+            state: {
+              value: [{}],
+            },
+          },
+        },
         'x-validator': [
           {
             triggerType: 'onBlur',
@@ -294,6 +302,10 @@ const JsonParam = observer((props: Props) => {
                           },
                           'x-validator': [
                             {
+                              format: 'integer',
+                              message: '请输入1-2147483647之间的正整数',
+                            },
+                            {
                               max: 2147483647,
                               message: '请输入1-2147483647之间的正整数',
                             },
@@ -323,6 +335,10 @@ const JsonParam = observer((props: Props) => {
                   default: 2,
                   'x-validator': [
                     {
+                      format: 'integer',
+                      message: '请输入0-2147483647之间的正整数',
+                    },
+                    {
                       max: 2147483647,
                       message: '请输入0-2147483647之间的正整数',
                     },

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

@@ -208,21 +208,6 @@ const Edit = observer((props: Props) => {
       const reg = new RegExp('^[0-9a-zA-Z_\\\\-]+$');
       return reg.exec(value) ? '' : 'ID只能由数字、字母、下划线、中划线组成';
     },
-    checkLength(value) {
-      if (String(value).length > 64) {
-        return {
-          type: 'error',
-          message: '最多可输入64个字符',
-        };
-      }
-      if (!(value % 1 === 0)) {
-        return {
-          type: 'error',
-          message: '请输入非0正整数',
-        };
-      }
-      return '';
-    },
   });
   const valueTypeConfig = {
     type: 'object',
@@ -293,6 +278,10 @@ const Edit = observer((props: Props) => {
         default: 2,
         'x-validator': [
           {
+            format: 'integer',
+            message: '请输入0-2147483647之间的正整数',
+          },
+          {
             max: 2147483647,
             message: '请输入0-2147483647之间的正整数',
           },
@@ -387,13 +376,12 @@ const Edit = observer((props: Props) => {
             'x-component-props': {
               min: 1,
             },
-            // 'x-validator': [
-            //   {
-            //     checkLength: true,
-            //   },
-            // ],
             'x-validator': [
               {
+                format: 'integer',
+                message: '请输入1-2147483647之间的正整数',
+              },
+              {
                 max: 2147483647,
                 message: '请输入1-2147483647之间的正整数',
               },
@@ -923,6 +911,8 @@ const Edit = observer((props: Props) => {
                               type: '{{$deps[0]}}',
                               enum: '{{$deps[1]}}',
                             },
+                            selfErrors:
+                              "{{$deps[0] === 'string' && $self?.value?.value?.[0]?.length > 64 ? '最多输入64个字符' : ''}}",
                           },
                         },
                       },

+ 10 - 14
src/pages/media/Device/Save/index.tsx

@@ -53,6 +53,7 @@ const Save = () => {
           form.setFieldsValue({
             ...res.result,
             photoUrl: res.result?.photoUrl || defaultImage,
+            channel: res.result?.provider,
           });
           const _accessType = res.result?.provider || DefaultAccessType;
           setAccessType(_accessType);
@@ -62,7 +63,7 @@ const Save = () => {
       });
     } else {
       form.setFieldsValue({
-        provider: DefaultAccessType,
+        channel: DefaultAccessType,
         photoUrl: defaultImage,
       });
       queryProduct(DefaultAccessType);
@@ -73,20 +74,16 @@ const Save = () => {
   const handleSave = useCallback(async () => {
     const formData = await form.validateFields();
     if (formData) {
-      const { provider, ...extraFormData } = formData;
-      if (formData.password === oldPassword && !id) {
-        delete extraFormData.password;
+      const { channel, ...extraFormData } = formData;
+      if (formData?.others?.access_pwd === oldPassword && !id) {
+        delete extraFormData.others?.access_pwd;
       }
       if (formData.id === '') {
         delete extraFormData.id;
       }
-      // if (formData.password === oldPassword) {
-      //   delete extraFormData.password;
-      // }
-      const resp =
-        provider === DefaultAccessType
-          ? await service.saveGB(extraFormData)
-          : await service.saveFixed(extraFormData);
+      const resp = id
+        ? await service.updateData(channel, id, { ...extraFormData, channel })
+        : await service.saveData(channel, { ...extraFormData, channel });
       if (resp.status === 200) {
         form.resetFields();
         onlyMessage('操作成功');
@@ -140,7 +137,7 @@ const Save = () => {
                 <Row>
                   <Col span={24}>
                     <Form.Item
-                      name={'provider'}
+                      name={'channel'}
                       label={'接入方式'}
                       required
                       rules={[{ required: true, message: '请选择接入方式' }]}
@@ -149,7 +146,6 @@ const Save = () => {
                         model={'singular'}
                         itemStyle={{ width: '50%' }}
                         onSelect={(key) => {
-                          console.log(key);
                           setAccessType(key);
                           queryProduct(key);
                           form.resetFields(['id', 'productId']);
@@ -301,7 +297,7 @@ const Save = () => {
                     <Col span={24}>
                       <Form.Item
                         label={'接入密码'}
-                        name={'password'}
+                        name={['others', 'access_pwd']}
                         required
                         rules={[
                           { required: true, message: '请输入接入密码' },

+ 6 - 0
src/pages/media/Device/service.ts

@@ -4,6 +4,12 @@ import SystemConst from '@/utils/const';
 import type { DeviceItem } from './typings';
 
 class Service extends BaseService<DeviceItem> {
+  saveData = (channelId: string, data?: any) =>
+    request(`${this.uri}/${channelId}`, { method: 'POST', data });
+
+  updateData = (channel: string, deviceId: string, data?: any) =>
+    request(`${this.uri}/${channel}/${deviceId}`, { method: 'PUT', data });
+
   // 新增GB28181接入的设备
   saveGB = (data?: any) => request(`${this.uri}/gb28181`, { method: 'PATCH', data });
 

+ 1 - 1
src/pages/notice/Template/Detail/index.tsx

@@ -335,7 +335,7 @@ const Detail = observer(() => {
           });
           onFieldValueChange('template.body', (field, form1) => {
             const value = (field as Field).value;
-            console.log(value);
+            // console.log(value);
             const idList = value.match(pattern)?.filter((i: string) => i);
             form1.setFieldState('variableDefinitions', (state1) => {
               state1.visible = !!idList && idList.length > 0;

+ 4 - 1
src/pages/rule-engine/Scene/Save/action/notify/components/variableItem/buildIn.tsx

@@ -68,7 +68,10 @@ export default (props: BuiltInProps) => {
             });
           }
         } else {
-          if (item.type === type) {
+          if (
+            item.type === type ||
+            (type === 'double' && ['int', 'float', 'double', 'long'].includes(item.type))
+          ) {
             list.push(item);
           }
         }