xieyonghong 3 лет назад
Родитель
Сommit
b167073a33

+ 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`, {