xieyonghong 3 vuotta sitten
vanhempi
commit
5e1b886035

+ 1 - 1
src/pages/DataCollect/Collector/components/Point/Save/modbus.tsx

@@ -225,7 +225,7 @@ export default (props: Props) => {
                           if (resp.result.passed) {
                             resolve('');
                           } else {
-                            resolve('地址已存在');
+                            resolve('地址已存在');
                           }
                         }
                         resolve('');

+ 2 - 0
src/pages/device/Instance/Detail/Running/Property/PropertyCard.less

@@ -6,8 +6,10 @@
 
 .card-title-box {
   display: flex;
+  align-items: center;
   justify-content: space-between;
   width: 100%;
+  height: 32px;
   margin-bottom: 10px;
 
   .card-title {

+ 44 - 29
src/pages/device/components/InputSelect/index.tsx

@@ -1,32 +1,47 @@
 import { Select } from 'antd';
-import { connect, mapProps } from '@formily/react';
-import { useState } from 'react';
-import { LoadingOutlined } from '@ant-design/icons';
+import { useEffect, useState } from 'react';
+import { service } from '@/pages/device/components/Metadata';
+import { Store } from 'jetlinks-store';
 
-const InputSelect = connect(
-  Select,
-  mapProps(
-    {
-      dataSource: 'options',
-      loading: true,
-    },
-    (props, field) => {
-      const [value, setValue] = useState(props.value);
-      return {
-        ...props,
-        value: value,
-        onChange: (item: any) => {
-          if (item.length > 1) {
-            setValue(item.slice(item.length - 1));
-          } else {
-            setValue(item);
-          }
-        },
-        suffixIcon:
-          field?.['loading'] || field?.['validating'] ? <LoadingOutlined /> : props.suffixIcon,
-      };
-    },
-  ),
-  // mapReadPretty(PreviewText.Input),
-);
+interface Props {
+  value: any;
+  onChange: (value: string) => void;
+}
+
+const InputSelect = (props: Props) => {
+  const [options, setOptions] = useState<any>([]);
+
+  useEffect(() => {
+    service.getUnit().then((resp) => {
+      const _data = resp.result.map((item: any) => ({
+        label: item.description,
+        value: item.id,
+      }));
+      // 缓存单位数据
+      Store.set('units', _data);
+      setOptions(_data);
+    });
+  }, []);
+
+  return (
+    <Select
+      showSearch
+      showArrow
+      allowClear
+      mode={'tags'}
+      onChange={(value) => {
+        if (value.length > 1) {
+          props.onChange(value.slice(value.length - 1));
+        } else {
+          props.onChange(value);
+        }
+      }}
+      value={props.value}
+      options={options}
+      filterOption={(input: string, option: any) =>
+        option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
+      }
+    />
+  );
+};
 export default InputSelect;

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

@@ -256,14 +256,14 @@ const Edit = observer((props: Props) => {
         'x-decorator': 'FormItem',
         'x-component': 'InputSelect',
         'x-visible': false,
-        'x-component-props': {
-          showSearch: true,
-          showArrow: true,
-          allowClear: true,
-          mode: 'tags',
-          filterOption: (input: string, option: any) =>
-            option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0,
-        },
+        // 'x-component-props': {
+        //   showSearch: true,
+        //   showArrow: true,
+        //   allowClear: true,
+        //   mode: 'tags',
+        //   filterOption: (input: string, option: any) =>
+        //     option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0,
+        // },
         'x-reactions': [
           {
             dependencies: ['.type'],
@@ -273,7 +273,7 @@ const Edit = observer((props: Props) => {
               },
             },
           },
-          '{{useAsyncDataSource(getUnit)}}',
+          // '{{useAsyncDataSource(getUnit)}}',
         ],
       },
       scale: {

+ 7 - 5
src/pages/edge/Resource/index.tsx

@@ -69,7 +69,9 @@ export default () => {
       style={{ padding: 0 }}
       popConfirm={{
         title: intl.formatMessage({
-          id: `pages.data.option.${record.state?.value}.tips`,
+          id: `pages.data.option.${
+            record.state.value !== 'disabled' ? 'disabled' : 'enabled'
+          }.tips`,
           defaultMessage: '确认禁用?',
         }),
         onConfirm: () => {
@@ -119,15 +121,15 @@ export default () => {
       key={'delete'}
       style={{ padding: 0 }}
       isPermission={permission.delete}
-      tooltip={record.state.value !== 'notActive' ? { title: '请先禁用,再删除。' } : undefined}
-      disabled={record.state.value !== 'notActive'}
+      tooltip={record.state.value !== 'disabled' ? { title: '请先禁用,再删除。' } : undefined}
+      disabled={record.state.value !== 'disabled'}
       popConfirm={{
         title: intl.formatMessage({
           id: 'pages.data.option.remove.tips',
         }),
-        disabled: record.state.value !== 'notActive',
+        disabled: record.state.value !== 'disabled',
         onConfirm: async () => {
-          if (record.state.value === 'notActive') {
+          if (record.state.value === 'disabled') {
             await service.remove(record.id);
             onlyMessage(
               intl.formatMessage({

+ 77 - 3
src/pages/link/Type/Detail/index.tsx

@@ -467,9 +467,33 @@ const Save = observer(() => {
             'x-component-props': {
               placeholder: '请输入远程端口',
             },
-            required: true,
             'x-decorator': 'FormItem',
             'x-component': 'NumberPicker',
+            'x-validator': [
+              {
+                max: 65535,
+                message: '请输入0-65535之间的正整数',
+              },
+              {
+                min: 0,
+                message: '请输入0-65535之间的正整数',
+              },
+              {
+                required: true,
+                placeholder: '请输入远程端口',
+              },
+              {
+                validator: (value: any[]) => {
+                  return new Promise((resolve) => {
+                    if (/[.]/.test(value)) {
+                      resolve('请输入1-65535之间的正整数');
+                    } else {
+                      resolve('');
+                    }
+                  });
+                },
+              },
+            ],
           },
           clientId: {
             title: 'clientId',
@@ -481,9 +505,18 @@ const Save = observer(() => {
             'x-component-props': {
               placeholder: '请输入ClientId',
             },
-            required: true,
             'x-decorator': 'FormItem',
             'x-component': 'Input',
+            'x-validator': [
+              {
+                max: 64,
+                message: '最多可输入64个字符',
+              },
+              {
+                required: true,
+                placeholder: '请输入ClientId',
+              },
+            ],
           },
           username: {
             title: '用户名',
@@ -498,6 +531,16 @@ const Save = observer(() => {
             required: true,
             'x-decorator': 'FormItem',
             'x-component': 'Input',
+            'x-validator': [
+              {
+                max: 64,
+                message: '最多可输入64个字符',
+              },
+              {
+                required: true,
+                placeholder: '请输入用户名',
+              },
+            ],
           },
           password: {
             title: '密码',
@@ -512,6 +555,16 @@ const Save = observer(() => {
             required: true,
             'x-decorator': 'FormItem',
             'x-component': 'Input',
+            'x-validator': [
+              {
+                max: 128,
+                message: '最多可输入128个字符',
+              },
+              {
+                required: true,
+                placeholder: '请输入密码',
+              },
+            ],
           },
           // maxMessageSize: {
           //   title: '最大消息长度',
@@ -541,13 +594,20 @@ const Save = observer(() => {
             },
             'x-decorator': 'FormItem',
             'x-component': 'Input',
+            'x-validator': [
+              {
+                max: 64,
+                message: '最多可输入64个字符',
+              },
+            ],
           },
         },
       },
       maxMessageSize: {
         title: '最大消息长度',
         'x-decorator': 'FormItem',
-        'x-component': 'Input',
+        'x-component': 'NumberPicker',
+        default: 8192,
         'x-decorator-props': {
           gridSpan: 1,
           labelAlign: 'left',
@@ -567,6 +627,20 @@ const Save = observer(() => {
             },
           },
         },
+        'x-validator': [
+          {
+            max: 1073741824,
+            message: '请输入1024~1073741824之间的数字',
+          },
+          {
+            min: 1024,
+            message: '请输入1024~1073741824之间的数字',
+          },
+          {
+            required: true,
+            placeholder: '请输入最大消息长度',
+          },
+        ],
       },
       secure: {
         // title: '开启DTLS',

+ 10 - 6
src/pages/rule-engine/Scene/Save/action/DeviceOutput/actions/index.tsx

@@ -6,6 +6,7 @@ import DeviceModel from '../model';
 import FunctionCall from './functionCall';
 import ReadProperty from './ReadProperty';
 import WriteProperty from './WriteProperty';
+import { service } from '@/pages/device/Instance/index';
 
 interface Props {
   get: (data: any) => void;
@@ -47,18 +48,21 @@ export default observer((props: Props) => {
     // console.log('-----------',DeviceModel.deviceDetail)
     if (DeviceModel.productDetail) {
       if (DeviceModel.selector === 'fixed') {
-        const metadata = JSON.parse(
-          DeviceModel.deviceDetail?.metadata || DeviceModel.deviceDetail?.deriveMetadata || '{}',
-        );
-        setProperties(metadata.properties);
-        setFunctions(metadata.functions);
+        service.detail(DeviceModel.deviceId).then((res) => {
+          if (res.status === 200) {
+            DeviceModel.deviceDetail = res.result || {};
+            const metadata = JSON.parse(res.result?.metadata);
+            setProperties(metadata.properties);
+            setFunctions(metadata.functions);
+          }
+        });
       } else {
         const metadata = JSON.parse(DeviceModel.productDetail?.metadata || '{}');
         setProperties(metadata.properties);
         setFunctions(metadata.functions);
       }
     }
-  }, [DeviceModel.productDetail, DeviceModel.deviceDetail]);
+  }, [DeviceModel.productDetail]);
 
   useEffect(() => {
     if (functionId && functions.length !== 0) {

+ 2 - 0
src/pages/rule-engine/Scene/Save/action/DeviceOutput/device/index.tsx

@@ -349,6 +349,7 @@ export default observer((props: Props) => {
                         DeviceModel.selectorValues = [
                           { value: DeviceModel.deviceId, name: item.name },
                         ];
+                        DeviceModel.message = {};
                       } else {
                         DeviceModel.deviceId = '';
                         DeviceModel.selectorValues = [];
@@ -497,6 +498,7 @@ export default observer((props: Props) => {
             onChange={(value) => {
               if (value) {
                 form.resetFields(['selectorValues']);
+                DeviceModel.message = {};
               }
             }}
           />

+ 1 - 1
src/pages/rule-engine/Scene/Save/action/device/relationSelect.tsx

@@ -17,7 +17,7 @@ export default (props: RelationProps) => {
       setOptions(
         resp.result.map((item: any) => ({
           label: item.name,
-          value: item.id,
+          value: item.relation,
         })),
       );
     }

+ 2 - 0
src/pages/rule-engine/Scene/Save/device/addModel.tsx

@@ -247,6 +247,8 @@ export default observer((props: AddProps) => {
           // console.log(res.result.metadata)
           handleMetadata(res.result.metadata);
         }
+      } else {
+        handleMetadata(TriggerDeviceModel.productDetail?.metadata);
       }
 
       TriggerDeviceModel.stepNumber = 2;

+ 3 - 0
src/pages/system/Menu/Detail/buttons.tsx

@@ -146,6 +146,7 @@ export default (props: ButtonsProps) => {
       }),
       width: 220,
       dataIndex: 'id',
+      ellipsis: true,
     },
     {
       title: intl.formatMessage({
@@ -154,12 +155,14 @@ export default (props: ButtonsProps) => {
       }),
       width: 300,
       dataIndex: 'name',
+      ellipsis: true,
     },
     {
       title: intl.formatMessage({
         id: 'page.system.menu.describe',
         defaultMessage: '说明',
       }),
+      ellipsis: true,
       dataIndex: 'description',
       // render: (_, row) => () => {
       //   console.log(row)

+ 2 - 4
src/pages/system/User/Save/index.tsx

@@ -331,10 +331,9 @@ const Save = (props: Props) => {
             'x-decorator': 'FormItem',
             'x-component': 'Select',
             'x-component-props': {
-              disabled: !rolePermission.view,
               mode: 'multiple',
               showArrow: true,
-              placeholder: !rolePermission.view ? '暂无权限,请联系管理员' : '请选择角色',
+              placeholder: '请选择角色',
               filterOption: (input: string, option: any) =>
                 option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0,
             },
@@ -374,10 +373,9 @@ const Save = (props: Props) => {
             'x-decorator': 'FormItem',
             'x-component': 'TreeSelect',
             'x-component-props': {
-              disabled: !deptPermission.view,
               multiple: true,
               showArrow: true,
-              placeholder: !deptPermission.view ? '暂无权限,请联系管理员' : '请选择组织',
+              placeholder: '请选择组织',
               showCheckedStrategy: ATreeSelect.SHOW_ALL,
               filterOption: (input: string, option: any) =>
                 option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0,