Browse Source

fix: merge next

Wzyyy98 3 years ago
parent
commit
72ba99c2f6

File diff suppressed because it is too large
+ 57 - 1
public/icons/iconfont.js


+ 2 - 2
src/components/ProTableCard/CardItems/Scene/index.tsx

@@ -126,7 +126,7 @@ const actionFilter = (terms: any, isLast: boolean, index: number) => {
         str += `${handleOptionsLabel(iItem, _isLast ? item.terms[iIndex + 1]?.[3] : undefined)}`;
         str += `${handleOptionsLabel(iItem, _isLast ? item.terms[iIndex + 1]?.[3] : undefined)}`;
       });
       });
     }
     }
-    str += iindex < terms.length - 1 ? item.termType : '';
+    str += iindex < terms.length - 1 ? terms[iindex + 1].termType : '';
   });
   });
 
 
   return str;
   return str;
@@ -154,7 +154,7 @@ const conditionsRender = (when: any[], index: number) => {
               })
               })
               .join('')
               .join('')
           : '';
           : '';
-        whenStr += !tLast ? tSer : tSer + termsItem.termType;
+        whenStr += !tLast ? tSer : tSer + terms[tIndex + 1].termType;
       }
       }
     });
     });
     return whenStr;
     return whenStr;

+ 1 - 1
src/pages/rule-engine/Scene/Save/action/ListItem/FilterGroup.tsx

@@ -204,7 +204,7 @@ export default observer((props: TermsProps) => {
             </div>
             </div>
           </Popconfirm>
           </Popconfirm>
         </div>
         </div>
-        {!props.isLast && (
+        {props.isLast && (
           <div className="terms-group-add" onClick={props.onAddGroup}>
           <div className="terms-group-add" onClick={props.onAddGroup}>
             <div className="terms-content">
             <div className="terms-content">
               <PlusOutlined style={{ fontSize: 12, paddingRight: 4 }} />
               <PlusOutlined style={{ fontSize: 12, paddingRight: 4 }} />

+ 1 - 0
src/pages/rule-engine/Scene/Save/action/ListItem/Item.tsx

@@ -402,6 +402,7 @@ export default (props: ItemProps) => {
                   data={termsItem}
                   data={termsItem}
                   columns={optionsColumns}
                   columns={optionsColumns}
                   isLast={index === thenTerms.length - 1}
                   isLast={index === thenTerms.length - 1}
+                  isFirst={index === 0}
                   paramsOptions={paramsOptions}
                   paramsOptions={paramsOptions}
                   label={props.options?.terms?.[index]}
                   label={props.options?.terms?.[index]}
                   actionColumns={props.options?.otherColumns}
                   actionColumns={props.options?.otherColumns}

+ 1 - 0
src/pages/rule-engine/Scene/Save/action/ListItem/index.less

@@ -263,6 +263,7 @@
       }
       }
 
 
       .ant-form-item {
       .ant-form-item {
+        margin-bottom: 8px;
         &:not(:first-child) {
         &:not(:first-child) {
           .ant-form-item-explain-error {
           .ant-form-item-explain-error {
             padding-left: 80px !important;
             padding-left: 80px !important;

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

@@ -34,8 +34,6 @@ export default observer(() => {
 
 
   useEffect(() => {
   useEffect(() => {
     if (form) {
     if (form) {
-      console.log('TriggerDeviceModel.selector', TriggerDeviceModel.selector);
-
       form.setFieldsValue({ selector: TriggerDeviceModel.selector });
       form.setFieldsValue({ selector: TriggerDeviceModel.selector });
     }
     }
   }, []);
   }, []);

+ 27 - 22
src/pages/rule-engine/Scene/Save/device/deviceList.tsx

@@ -10,16 +10,16 @@ import { useIntl } from 'umi';
 import { SceneDeviceCard } from '@/components/ProTableCard/CardItems/device';
 import { SceneDeviceCard } from '@/components/ProTableCard/CardItems/device';
 import { TriggerDeviceModel } from './addModel';
 import { TriggerDeviceModel } from './addModel';
 import { observer, Observer } from '@formily/reactive-react';
 import { observer, Observer } from '@formily/reactive-react';
+import { isArray } from 'lodash';
 
 
 export default observer(() => {
 export default observer(() => {
   const actionRef = useRef<ActionType>();
   const actionRef = useRef<ActionType>();
   const intl = useIntl();
   const intl = useIntl();
-  const [searchParam, setSearchParam] = useState<any>({
-    pageIndex: TriggerDeviceModel.devicePage,
-    pageSize: TriggerDeviceModel.devicePageSize,
-  });
+  const [searchParam, setSearchParam] = useState<any>({});
 
 
-  const [loading, setLoading] = useState(true);
+  const [oldRowKey] = useState(TriggerDeviceModel.deviceKeys);
+
+  // const [loading, setLoading] = useState(true);
 
 
   const columns: ProColumns<DeviceInstance>[] = [
   const columns: ProColumns<DeviceInstance>[] = [
     {
     {
@@ -184,17 +184,14 @@ export default observer(() => {
         enableSave={false}
         enableSave={false}
         bodyStyle={{ padding: 0, paddingBottom: 16 }}
         bodyStyle={{ padding: 0, paddingBottom: 16 }}
         onSearch={async (data) => {
         onSearch={async (data) => {
-          if (loading) {
-            setSearchParam({
-              pageIndex: TriggerDeviceModel.devicePage,
-              pageSize: TriggerDeviceModel.devicePageSize,
-              ...data,
-            });
-            setLoading(true);
-          } else {
-            actionRef.current?.reset?.();
-            setSearchParam(data);
-          }
+          // if (loading) {
+          //   setSearchParam(data);
+          //   setLoading(true);
+          // } else {
+          //
+          // }
+          actionRef.current?.reset?.();
+          setSearchParam(data);
         }}
         }}
         target="scene-trugger-device"
         target="scene-trugger-device"
         defaultParam={[
         defaultParam={[
@@ -224,7 +221,6 @@ export default observer(() => {
             rowSelection={{
             rowSelection={{
               selectedRowKeys: [...TriggerDeviceModel.deviceKeys],
               selectedRowKeys: [...TriggerDeviceModel.deviceKeys],
               onSelect: (record, selected) => {
               onSelect: (record, selected) => {
-                console.log(record);
                 if (selected) {
                 if (selected) {
                   TriggerDeviceModel.deviceKeys.push(record.id);
                   TriggerDeviceModel.deviceKeys.push(record.id);
                   if (TriggerDeviceModel.selectorValues) {
                   if (TriggerDeviceModel.selectorValues) {
@@ -253,12 +249,21 @@ export default observer(() => {
               TriggerDeviceModel.devicePage = page;
               TriggerDeviceModel.devicePage = page;
               TriggerDeviceModel.devicePageSize = size;
               TriggerDeviceModel.devicePageSize = size;
             }}
             }}
-            request={(params) =>
-              service.query({
+            request={(params) => {
+              const sorts: any[] = [{ name: 'createTime', order: 'desc' }];
+              if (oldRowKey && isArray(oldRowKey)) {
+                oldRowKey.forEach((v) => {
+                  sorts.push({
+                    name: 'id',
+                    value: v,
+                  });
+                });
+              }
+              return service.query({
                 ...params,
                 ...params,
-                sorts: [{ name: 'createTime', order: 'desc' }],
-              })
-            }
+                sorts: sorts,
+              });
+            }}
             params={searchParam}
             params={searchParam}
             cardRender={(record) => (
             cardRender={(record) => (
               <SceneDeviceCard showBindBtn={false} showTool={false} {...record} />
               <SceneDeviceCard showBindBtn={false} showTool={false} {...record} />

+ 15 - 3
src/pages/rule-engine/Scene/Save/device/index.tsx

@@ -48,14 +48,21 @@ export default observer((props: Props) => {
 
 
     const _label = [
     const _label = [
       <div style={{ display: 'flex', alignItems: 'center' }}>
       <div style={{ display: 'flex', alignItems: 'center' }}>
-        {options.selectorIcon ? <AIcon type={options.selectorIcon} /> : null}
+        {options.selectorIcon ? (
+          <AIcon type={options.selectorIcon} style={{ paddingRight: 4 }} />
+        ) : null}
         <span className="trigger-options-name">{options.name}</span>
         <span className="trigger-options-name">{options.name}</span>
         {options.extraName ? <span>{options.extraName}</span> : null}
         {options.extraName ? <span>{options.extraName}</span> : null}
       </div>,
       </div>,
     ];
     ];
     if (!options.onlyName) {
     if (!options.onlyName) {
       if (options.productName) {
       if (options.productName) {
-        _label.push(<span className="trigger-options-type">{options.productName}</span>);
+        _label.push(
+          <div style={{ display: 'flex', alignItems: 'center' }}>
+            <AIcon type={'icon-chanpin1'} style={{ paddingRight: 4 }} />
+            <span className="trigger-options-type">{options.productName}</span>
+          </div>,
+        );
       }
       }
       if (options.when) {
       if (options.when) {
         _label.push(<span className="trigger-options-when">{options.when}</span>);
         _label.push(<span className="trigger-options-when">{options.when}</span>);
@@ -70,7 +77,12 @@ export default observer((props: Props) => {
         _label.push(<span className="trigger-options-action">{options.action}</span>);
         _label.push(<span className="trigger-options-action">{options.action}</span>);
       }
       }
       if (options.type) {
       if (options.type) {
-        _label.push(<span className="trigger-options-type">{options.type}</span>);
+        _label.push(
+          <div style={{ display: 'flex', alignItems: 'center' }}>
+            <AIcon type={options.typeIcon} style={{ paddingRight: 4 }} />
+            <span className="trigger-options-type">{options.type}</span>
+          </div>,
+        );
       }
       }
     }
     }
     return _label;
     return _label;

+ 30 - 22
src/pages/rule-engine/Scene/Save/device/product.tsx

@@ -23,12 +23,10 @@ export const handleMetadata = (metadata?: string) => {
 export default observer(() => {
 export default observer(() => {
   const actionRef = useRef<ActionType>();
   const actionRef = useRef<ActionType>();
   const intl = useIntl();
   const intl = useIntl();
-  const [searchParam, setSearchParam] = useState<any>({
-    pageIndex: TriggerDeviceModel.productPage,
-    pageSize: TriggerDeviceModel.productPageSize,
-  });
+  const [searchParam, setSearchParam] = useState<any>({});
+  const [oldRowKey] = useState(TriggerDeviceModel.productId);
 
 
-  const [loading, setLoading] = useState(true);
+  // const [loading, setLoading] = useState(true);
 
 
   const columns: ProColumns<ProductItem>[] = [
   const columns: ProColumns<ProductItem>[] = [
     {
     {
@@ -210,17 +208,19 @@ export default observer(() => {
         enableSave={false}
         enableSave={false}
         bodyStyle={{ padding: 0, paddingBottom: 16 }}
         bodyStyle={{ padding: 0, paddingBottom: 16 }}
         onSearch={async (data) => {
         onSearch={async (data) => {
-          if (loading) {
-            setSearchParam({
-              pageIndex: TriggerDeviceModel.devicePage,
-              pageSize: TriggerDeviceModel.devicePageSize,
-              ...data,
-            });
-            setLoading(true);
-          } else {
-            actionRef.current?.reset?.();
-            setSearchParam(data);
-          }
+          // if (loading) {
+          //   setSearchParam({
+          //     pageIndex: TriggerDeviceModel.devicePage,
+          //     pageSize: TriggerDeviceModel.devicePageSize,
+          //     ...data,
+          //   });
+          //   setLoading(true);
+          // } else {
+          //   actionRef.current?.reset?.();
+          //   setSearchParam(data);
+          // }
+          actionRef.current?.reset?.();
+          setSearchParam(data);
         }}
         }}
         target="department-assets-product"
         target="department-assets-product"
       />
       />
@@ -239,7 +239,6 @@ export default observer(() => {
           type: 'radio',
           type: 'radio',
           selectedRowKeys: [TriggerDeviceModel.productId],
           selectedRowKeys: [TriggerDeviceModel.productId],
           onChange: (_, selectedRows) => {
           onChange: (_, selectedRows) => {
-            console.log('onChange', selectedRows);
             TriggerDeviceModel.productId = selectedRows.map((item) => item.id)[0];
             TriggerDeviceModel.productId = selectedRows.map((item) => item.id)[0];
             TriggerDeviceModel.productDetail = selectedRows?.[0];
             TriggerDeviceModel.productDetail = selectedRows?.[0];
             handleMetadata(TriggerDeviceModel.productDetail.metadata);
             handleMetadata(TriggerDeviceModel.productDetail.metadata);
@@ -257,12 +256,21 @@ export default observer(() => {
           TriggerDeviceModel.productPage = page;
           TriggerDeviceModel.productPage = page;
           TriggerDeviceModel.productPageSize = size;
           TriggerDeviceModel.productPageSize = size;
         }}
         }}
-        request={(params) =>
-          service.query({
+        request={(params) => {
+          const sorts: any = [{ name: 'createTime', order: 'desc' }];
+
+          if (oldRowKey) {
+            sorts.push({
+              name: 'id',
+              value: oldRowKey,
+            });
+          }
+
+          return service.query({
             ...params,
             ...params,
-            sorts: [{ name: 'createTime', order: 'desc' }],
-          })
-        }
+            sorts: sorts,
+          });
+        }}
         params={searchParam}
         params={searchParam}
         cardRender={(record) => (
         cardRender={(record) => (
           <SceneProductCard showBindBtn={false} showTool={false} {...record} />
           <SceneProductCard showBindBtn={false} showTool={false} {...record} />

+ 27 - 22
src/pages/rule-engine/Scene/Save/device/type.tsx

@@ -92,12 +92,31 @@ export default forwardRef((props: Props, ref) => {
     OperatorType.invokeFunction,
     OperatorType.invokeFunction,
   ];
   ];
 
 
+  const handleFunction = (fcItem: any) => {
+    if (fcItem) {
+      const _properties = fcItem.valueType ? fcItem.valueType.properties : fcItem.inputs;
+      const array = [];
+      for (const datum of _properties) {
+        array.push({
+          id: datum.id,
+          name: datum.name,
+          type: datum.valueType ? datum.valueType.type : '-',
+          format: datum.valueType ? datum.valueType.format : undefined,
+          options: datum.valueType ? datum.valueType.elements : undefined,
+          value: undefined,
+        });
+      }
+      setFunctionItem(array);
+    }
+  };
+
   const handleInit = (data: DeviceModelProps) => {
   const handleInit = (data: DeviceModelProps) => {
     form.setFieldsValue({
     form.setFieldsValue({
       ...data.operation,
       ...data.operation,
     });
     });
 
 
     const newTypeList = [...TypeList];
     const newTypeList = [...TypeList];
+    console.log('handleInit', data);
 
 
     if (data.metadata.events?.length) {
     if (data.metadata.events?.length) {
       newTypeList.push(TypeEnum.reportEvent);
       newTypeList.push(TypeEnum.reportEvent);
@@ -129,12 +148,18 @@ export default forwardRef((props: Props, ref) => {
       if (_reportProperty.length) {
       if (_reportProperty.length) {
         newTypeList.push(TypeEnum.reportProperty);
         newTypeList.push(TypeEnum.reportProperty);
       }
       }
-      console.log('data.metadata.properties', data.metadata.properties);
     }
     }
 
 
     if (data.metadata.functions?.length) {
     if (data.metadata.functions?.length) {
       newTypeList.push(TypeEnum.invokeFunction);
       newTypeList.push(TypeEnum.invokeFunction);
       setFunctions(data.metadata.functions);
       setFunctions(data.metadata.functions);
+
+      if (data.operation?.functionId) {
+        const fcItem = data.metadata.functions.find(
+          (item) => item.id === data.operation!.functionId,
+        );
+        handleFunction(fcItem);
+      }
     }
     }
 
 
     setTypeList(newTypeList);
     setTypeList(newTypeList);
@@ -191,7 +216,6 @@ export default forwardRef((props: Props, ref) => {
                   style={{ width: '100%' }}
                   style={{ width: '100%' }}
                   fieldNames={{ label: 'name', value: 'id' }}
                   fieldNames={{ label: 'name', value: 'id' }}
                   onSelect={(v: any, propertyItem: any) => {
                   onSelect={(v: any, propertyItem: any) => {
-                    console.log(v);
                     TriggerDeviceModel.options.action = '读取' + propertyItem.name;
                     TriggerDeviceModel.options.action = '读取' + propertyItem.name;
                   }}
                   }}
                 />
                 />
@@ -207,7 +231,6 @@ export default forwardRef((props: Props, ref) => {
             <Operation
             <Operation
               propertiesList={writeProperty}
               propertiesList={writeProperty}
               onSelect={(a, item) => {
               onSelect={(a, item) => {
-                console.log(a);
                 TriggerDeviceModel.options.action = '修改' + item.name;
                 TriggerDeviceModel.options.action = '修改' + item.name;
               }}
               }}
             />
             />
@@ -221,7 +244,6 @@ export default forwardRef((props: Props, ref) => {
               style={{ width: '100%' }}
               style={{ width: '100%' }}
               fieldNames={{ label: 'name', value: 'id' }}
               fieldNames={{ label: 'name', value: 'id' }}
               onSelect={(v: any, evenItem: any) => {
               onSelect={(v: any, evenItem: any) => {
-                console.log(v);
                 TriggerDeviceModel.options.action = evenItem.name + '上报';
                 TriggerDeviceModel.options.action = evenItem.name + '上报';
               }}
               }}
             />
             />
@@ -245,25 +267,8 @@ export default forwardRef((props: Props, ref) => {
                     option.name.toLowerCase().indexOf(input.toLowerCase()) >= 0
                     option.name.toLowerCase().indexOf(input.toLowerCase()) >= 0
                   }
                   }
                   onSelect={(v: any, fcItem: any) => {
                   onSelect={(v: any, fcItem: any) => {
-                    console.log(v);
                     TriggerDeviceModel.options.action = '执行' + fcItem.name;
                     TriggerDeviceModel.options.action = '执行' + fcItem.name;
-                    if (fcItem) {
-                      const _properties = fcItem.valueType
-                        ? fcItem.valueType.properties
-                        : fcItem.inputs;
-                      const array = [];
-                      for (const datum of _properties) {
-                        array.push({
-                          id: datum.id,
-                          name: datum.name,
-                          type: datum.valueType ? datum.valueType.type : '-',
-                          format: datum.valueType ? datum.valueType.format : undefined,
-                          options: datum.valueType ? datum.valueType.elements : undefined,
-                          value: undefined,
-                        });
-                      }
-                      setFunctionItem(array);
-                    }
+                    handleFunction(fcItem);
                   }}
                   }}
                 />
                 />
               </Form.Item>
               </Form.Item>

+ 1 - 0
src/pages/rule-engine/Scene/Save/terms/index.less

@@ -135,6 +135,7 @@
     }
     }
 
 
     .ant-form-item {
     .ant-form-item {
+      margin-bottom: 8px;
       &:not(:first-child) {
       &:not(:first-child) {
         .ant-form-item-explain-error {
         .ant-form-item-explain-error {
           padding-left: 80px !important;
           padding-left: 80px !important;