Просмотр исходного кода

feat(merge): merge xyh

Next xyh
Lind 3 лет назад
Родитель
Сommit
9724cfcc4f

+ 4 - 0
src/pages/device/Instance/Detail/Config/Edit.tsx

@@ -14,6 +14,7 @@ const componentMap = {
 interface Props {
   close: () => void;
   metadata: any[];
+  reload: () => void;
 }
 
 const Edit = (props: Props) => {
@@ -106,6 +107,9 @@ const Edit = (props: Props) => {
                     setTimeout(() => window.close(), 300);
                   }
                 } else {
+                  if (props.reload) {
+                    props.reload();
+                  }
                   props.close();
                 }
               }

+ 5 - 8
src/pages/device/Instance/Detail/Config/index.tsx

@@ -16,11 +16,7 @@ const Config = () => {
   const params = useParams<{ id: string }>();
   useEffect(() => {
     const id = InstanceModel.current?.id || params.id;
-    if (id) {
-      service.getConfigMetadata(id).then((response) => {
-        InstanceModel.config = response?.result;
-      });
-    } else {
+    if (!id) {
       history.goBack();
     }
   }, []);
@@ -29,7 +25,7 @@ const Config = () => {
   const [visible, setVisible] = useState<boolean>(false);
   const { permission } = PermissionButton.usePermission('device/Instance');
 
-  const id = InstanceModel.detail?.id || params?.id;
+  const id = params?.id;
 
   const getDetail = () => {
     service.detail(id || '').then((resp) => {
@@ -42,7 +38,8 @@ const Config = () => {
   useEffect(() => {
     if (id) {
       service.getConfigMetadata(id).then((config) => {
-        setMetadata(config?.result);
+        InstanceModel.config = config?.result || [];
+        setMetadata(config?.result || []);
       });
     }
   }, [id]);
@@ -180,8 +177,8 @@ const Config = () => {
           metadata={metadata || []}
           close={() => {
             setVisible(false);
-            getDetail();
           }}
+          reload={getDetail}
         />
       )}
     </div>

+ 11 - 5
src/pages/device/Instance/Detail/Reation/Edit.tsx

@@ -8,11 +8,12 @@ import { useParams } from 'umi';
 import { Button, Drawer, message, Space } from 'antd';
 import { action } from '@formily/reactive';
 import type { Response } from '@/utils/typings';
-import { useEffect, useState } from 'react';
+import { useEffect, useMemo, useState } from 'react';
 
 interface Props {
   close: () => void;
   data: any[];
+  reload: () => void;
 }
 
 const Edit = (props: Props) => {
@@ -40,10 +41,12 @@ const Edit = (props: Props) => {
     );
   };
 
-  const form = createForm({
-    validateFirst: true,
-    initialValues: initData,
-  });
+  const form = useMemo(() => {
+    return createForm({
+      validateFirst: true,
+      initialValues: initData,
+    });
+  }, []);
 
   const SchemaField = createSchemaField({
     components: {
@@ -143,6 +146,9 @@ const Edit = (props: Props) => {
                 if (resp.status === 200) {
                   message.success('操作成功!');
                   props.close();
+                  if (props.reload) {
+                    props.reload();
+                  }
                 }
               }
             }}

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

@@ -66,8 +66,8 @@ const Reation = () => {
           data={data || []}
           close={() => {
             setVisible(false);
-            getDetail();
           }}
+          reload={getDetail}
         />
       )}
     </div>

+ 1 - 1
src/pages/device/Instance/index.tsx

@@ -290,7 +290,7 @@ const Instance = () => {
       valueType: 'select',
       hideInTable: true,
       request: () =>
-        service.queryGatewayList().then((resp) =>
+        service.queryGatewayList().then((resp: any) =>
           resp.result.map((item: any) => ({
             label: item.name,
             value: `accessId is ${item.id}`,

+ 8 - 2
src/pages/device/Instance/service.ts

@@ -259,8 +259,14 @@ class Service extends BaseService<DeviceInstance> {
       method: 'GET',
     });
 
-  //接入方式
-  public queryGatewayList = () => request(`/${SystemConst.API_BASE}/gateway/device/providers`);
+  //接入网关
+  public queryGatewayList = () =>
+    request(`/${SystemConst.API_BASE}/gateway/device/_query/no-paging`, {
+      method: 'POST',
+      data: {
+        paging: false,
+      },
+    });
   // 保存设备关系
   public saveRelations = (id: string, data: any) =>
     request(`/${SystemConst.API_BASE}/device/instance/${id}/relations`, {

+ 6 - 1
src/pages/rule-engine/Scene/Save/action/messageContent.tsx

@@ -1,5 +1,5 @@
 import type { FormInstance } from 'antd';
-import { Col, Form, Row } from 'antd';
+import { Col, Form, Input, Row } from 'antd';
 import {
   BuiltIn,
   OrgList,
@@ -56,6 +56,9 @@ export default (props: MessageContentProps) => {
                     },
                   });
                 }
+                if (type === 'link') {
+                  rules.push({ max: 64, message: '最多64个字符' });
+                }
                 return (
                   <Col span={12} key={`${item.id}_${index}`}>
                     <Form.Item
@@ -77,6 +80,8 @@ export default (props: MessageContentProps) => {
                         <InputFile />
                       ) : type === 'tag' ? (
                         <TagSelect configId={props.configId} />
+                      ) : type === 'link' ? (
+                        <Input placeholder={'请输入' + item.name} />
                       ) : (
                         <BuiltIn type={props.triggerType} data={item} />
                       )}

+ 26 - 50
src/pages/rule-engine/Scene/Save/index.tsx

@@ -12,7 +12,7 @@ import {
   Tooltip,
 } from 'antd';
 import { useIntl, useLocation } from 'umi';
-import { useEffect, useRef, useState } from 'react';
+import { useCallback, useEffect, useRef, useState } from 'react';
 import { PermissionButton, TitleComponent } from '@/components';
 import ActionItems from './action/action';
 import { PlusOutlined, QuestionCircleOutlined } from '@ant-design/icons';
@@ -52,7 +52,7 @@ export default () => {
 
   const { getOtherPermission } = PermissionButton.usePermission('rule-engine/Scene');
   const [triggerType, setTriggerType] = useState('');
-  // const [triggerValue, setTriggerValue] = useState<any>();
+  const [triggerValue, setTriggerValue] = useState<any>([]);
   const [loading, setLoading] = useState(false);
   const [parallel, setParallel] = useState(true); // 是否并行
   const [shakeLimit, setShakeLimit] = useState<ShakeLimitType>(DefaultShakeLimit);
@@ -60,23 +60,29 @@ export default () => {
   const [actionsData, setActionsData] = useState<any[]>([]);
   const [isEdit, setIsEdit] = useState(false);
 
-  const getDetail = async (id: string) => {
-    const resp = await service.detail(id);
-    if (resp.status === 200 && resp.result) {
-      setIsEdit(true);
-      const _data: any = resp.result;
-      FormModel = _data;
-      form.setFieldsValue(_data);
-      setParallel(_data.parallel);
-      setShakeLimit(_data.shakeLimit || DefaultShakeLimit);
-      if (_data.trigger?.device?.selectorValues) {
-        setRequestParams({ trigger: _data.trigger });
-      }
-      if (_data.actions) {
-        setActionsData(_data.actions);
+  const getDetail = useCallback(
+    async (id: string) => {
+      const resp = await service.detail(id);
+      if (resp.status === 200 && resp.result) {
+        setIsEdit(true);
+        const _data: any = resp.result;
+        FormModel = _data;
+        form.setFieldsValue(_data);
+        setParallel(_data.parallel);
+        setShakeLimit(_data.shakeLimit || DefaultShakeLimit);
+
+        setTriggerValue(_data.terms || []);
+
+        if (_data.trigger?.device?.selectorValues) {
+          setRequestParams({ trigger: _data.trigger });
+        }
+        if (_data.actions) {
+          setActionsData(_data.actions);
+        }
       }
-    }
-  };
+    },
+    [triggerRef],
+  );
 
   useEffect(() => {
     const params = new URLSearchParams(location.search);
@@ -92,7 +98,6 @@ export default () => {
     // 获取触发条件数据
     if (triggerRef.current) {
       triggerData = await triggerRef.current.getTriggerForm();
-      console.log(JSON.stringify(triggerData), 'trigger');
       if (!triggerData) {
         return;
       }
@@ -183,6 +188,7 @@ export default () => {
           className={'scene-save'}
           onValuesChange={(changeValue, allValues) => {
             if (changeValue.trigger) {
+              setTriggerValue([]);
               setRequestParams({ trigger: allValues.trigger });
             }
             if (allValues.actions) {
@@ -277,7 +283,7 @@ export default () => {
               <TriggerTerm
                 ref={triggerRef}
                 params={requestParams}
-                // value={triggerValue}
+                value={{ trigger: triggerValue }}
               />
             </Form.Item>
           ) : null}
@@ -384,36 +390,6 @@ export default () => {
         >
           保存
         </PermissionButton>
-        {/*<Button*/}
-        {/*  onClick={() => {*/}
-        {/*    setTriggerValue({*/}
-        {/*      trigger: [*/}
-        {/*        {*/}
-        {/*          terms: [*/}
-        {/*            {*/}
-        {/*              column: '_now',*/}
-        {/*              termType: 'eq',*/}
-        {/*              source: 'manual',*/}
-        {/*              value: '2022-04-21 14:26:04',*/}
-        {/*            },*/}
-        {/*          ],*/}
-        {/*        },*/}
-        {/*        {*/}
-        {/*          terms: [*/}
-        {/*            {*/}
-        {/*              column: 'properties.test-zhibioa.recent',*/}
-        {/*              termType: 'lte',*/}
-        {/*              source: 'metrics',*/}
-        {/*              value: '123',*/}
-        {/*            },*/}
-        {/*          ],*/}
-        {/*        },*/}
-        {/*      ],*/}
-        {/*    });*/}
-        {/*  }}*/}
-        {/*>*/}
-        {/*  设置*/}
-        {/*</Button>*/}
       </Card>
     </PageContainer>
   );