Browse Source

fix: bug

Next wzy
hear 3 years ago
parent
commit
965fc92f4a

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

@@ -1,32 +1,47 @@
 import { Select } from 'antd';
 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;
 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-decorator': 'FormItem',
         'x-component': 'InputSelect',
         'x-component': 'InputSelect',
         'x-visible': false,
         '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': [
         'x-reactions': [
           {
           {
             dependencies: ['.type'],
             dependencies: ['.type'],
@@ -273,7 +273,7 @@ const Edit = observer((props: Props) => {
               },
               },
             },
             },
           },
           },
-          '{{useAsyncDataSource(getUnit)}}',
+          // '{{useAsyncDataSource(getUnit)}}',
         ],
         ],
       },
       },
       scale: {
       scale: {

+ 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 FunctionCall from './functionCall';
 import ReadProperty from './ReadProperty';
 import ReadProperty from './ReadProperty';
 import WriteProperty from './WriteProperty';
 import WriteProperty from './WriteProperty';
+import { service } from '@/pages/device/Instance/index';
 
 
 interface Props {
 interface Props {
   get: (data: any) => void;
   get: (data: any) => void;
@@ -47,18 +48,21 @@ export default observer((props: Props) => {
     // console.log('-----------',DeviceModel.deviceDetail)
     // console.log('-----------',DeviceModel.deviceDetail)
     if (DeviceModel.productDetail) {
     if (DeviceModel.productDetail) {
       if (DeviceModel.selector === 'fixed') {
       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 {
       } else {
         const metadata = JSON.parse(DeviceModel.productDetail?.metadata || '{}');
         const metadata = JSON.parse(DeviceModel.productDetail?.metadata || '{}');
         setProperties(metadata.properties);
         setProperties(metadata.properties);
         setFunctions(metadata.functions);
         setFunctions(metadata.functions);
       }
       }
     }
     }
-  }, [DeviceModel.productDetail, DeviceModel.deviceDetail]);
+  }, [DeviceModel.productDetail]);
 
 
   useEffect(() => {
   useEffect(() => {
     if (functionId && functions.length !== 0) {
     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 = [
                         DeviceModel.selectorValues = [
                           { value: DeviceModel.deviceId, name: item.name },
                           { value: DeviceModel.deviceId, name: item.name },
                         ];
                         ];
+                        DeviceModel.message = {};
                       } else {
                       } else {
                         DeviceModel.deviceId = '';
                         DeviceModel.deviceId = '';
                         DeviceModel.selectorValues = [];
                         DeviceModel.selectorValues = [];
@@ -497,6 +498,7 @@ export default observer((props: Props) => {
             onChange={(value) => {
             onChange={(value) => {
               if (value) {
               if (value) {
                 form.resetFields(['selectorValues']);
                 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(
       setOptions(
         resp.result.map((item: any) => ({
         resp.result.map((item: any) => ({
           label: item.name,
           label: item.name,
-          value: item.id,
+          value: item.relation,
         })),
         })),
       );
       );
     }
     }

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

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