Browse Source

fix: 异常提示框

wzyyy 4 years ago
parent
commit
4bc6cc6c4c
100 changed files with 416 additions and 383 deletions
  1. 2 1
      src/components/Authorization/index.tsx
  2. 3 2
      src/components/BaseCrud/save/index.tsx
  3. 2 1
      src/components/BindUser/Bound.tsx
  4. 5 3
      src/components/Player/ScreenPlayer.tsx
  5. 5 5
      src/components/SearchComponent/index.tsx
  6. 3 3
      src/pages/Northbound/AliCloud/Detail/index.tsx
  7. 13 9
      src/pages/Northbound/AliCloud/index.tsx
  8. 4 4
      src/pages/Northbound/DuerOS/Detail/index.tsx
  9. 5 4
      src/pages/Northbound/DuerOS/index.tsx
  10. 6 5
      src/pages/account/Center/bind/index.tsx
  11. 6 5
      src/pages/account/Center/index.tsx
  12. 3 2
      src/pages/account/NotificationRecord/index.tsx
  13. 6 5
      src/pages/account/NotificationSubscription/index.tsx
  14. 3 3
      src/pages/account/NotificationSubscription/save/index.tsx
  15. 3 2
      src/pages/cloud/Aliyun/index.tsx
  16. 3 2
      src/pages/cloud/Ctwing/index.tsx
  17. 3 2
      src/pages/cloud/Onenet/index.tsx
  18. 4 3
      src/pages/device/Alarm/index.tsx
  19. 4 3
      src/pages/device/Category/Save/index.tsx
  20. 3 3
      src/pages/device/Category/index.tsx
  21. 4 3
      src/pages/device/Command/create/index.tsx
  22. 4 3
      src/pages/device/Command/index.tsx
  23. 4 3
      src/pages/device/Firmware/Detail/Task/Release/index.tsx
  24. 4 3
      src/pages/device/Firmware/Detail/Task/Save/index.tsx
  25. 4 3
      src/pages/device/Firmware/Save/index.tsx
  26. 3 2
      src/pages/device/Firmware/index.tsx
  27. 4 3
      src/pages/device/Instance/Detail/ChildDevice/index.tsx
  28. 3 2
      src/pages/device/Instance/Detail/Config/Edit.tsx
  29. 4 3
      src/pages/device/Instance/Detail/Config/index.tsx
  30. 6 5
      src/pages/device/Instance/Detail/Diagnose/Status/index.tsx
  31. 3 2
      src/pages/device/Instance/Detail/MetadataMap/EditableTable/index.tsx
  32. 5 4
      src/pages/device/Instance/Detail/Modbus/index.tsx
  33. 5 4
      src/pages/device/Instance/Detail/Opcua/index.tsx
  34. 3 2
      src/pages/device/Instance/Detail/Reation/Edit.tsx
  35. 2 2
      src/pages/device/Instance/Detail/Running/Property/EditProperty.tsx
  36. 3 2
      src/pages/device/Instance/Detail/Running/Property/Indicators.tsx
  37. 3 2
      src/pages/device/Instance/Detail/Running/Property/PropertyCard.tsx
  38. 3 2
      src/pages/device/Instance/Detail/Running/Property/index.tsx
  39. 3 2
      src/pages/device/Instance/Detail/Tags/Edit.tsx
  40. 4 3
      src/pages/device/Instance/Detail/index.tsx
  41. 4 4
      src/pages/device/Instance/Import/index.tsx
  42. 3 2
      src/pages/device/Instance/Save/index.tsx
  43. 14 10
      src/pages/device/Instance/index.tsx
  44. 4 3
      src/pages/device/Product/Detail/Access/AccessConfig/index.tsx
  45. 3 2
      src/pages/device/Product/Detail/Access/index.tsx
  46. 4 4
      src/pages/device/Product/Detail/PropertyImport/index.tsx
  47. 2 1
      src/pages/device/Product/Detail/index.tsx
  48. 3 2
      src/pages/device/Product/Save/index.tsx
  49. 9 9
      src/pages/device/Product/index.tsx
  50. 3 2
      src/pages/device/components/Alarm/Edit/index.tsx
  51. 3 2
      src/pages/device/components/Alarm/Record/index.tsx
  52. 4 3
      src/pages/device/components/Alarm/Setting/index.tsx
  53. 2 1
      src/pages/device/components/Metadata/Base/Edit/index.tsx
  54. 3 3
      src/pages/device/components/Metadata/Base/index.tsx
  55. 5 4
      src/pages/device/components/Metadata/Import/index.tsx
  56. 3 2
      src/pages/device/components/Metadata/index.tsx
  57. 6 18
      src/pages/link/AccessConfig/Detail/Access/index.tsx
  58. 3 2
      src/pages/link/AccessConfig/Detail/Channel/index.tsx
  59. 3 2
      src/pages/link/AccessConfig/Detail/Cloud/Finish/index.tsx
  60. 3 3
      src/pages/link/AccessConfig/Detail/Media/index.tsx
  61. 6 5
      src/pages/link/AccessConfig/index.tsx
  62. 4 3
      src/pages/link/Certificate/Detail/components/CertificateFile/index.tsx
  63. 3 2
      src/pages/link/Certificate/Detail/index.tsx
  64. 3 2
      src/pages/link/Certificate/index.tsx
  65. 3 2
      src/pages/link/Channel/Modbus/Access/addPoint/index.tsx
  66. 4 3
      src/pages/link/Channel/Modbus/Access/bindDevice/index.tsx
  67. 5 4
      src/pages/link/Channel/Modbus/Access/index.tsx
  68. 4 4
      src/pages/link/Channel/Modbus/Save/index.tsx
  69. 4 3
      src/pages/link/Channel/Modbus/index.tsx
  70. 6 5
      src/pages/link/Channel/Opcua/Access/addPoint/index.tsx
  71. 4 3
      src/pages/link/Channel/Opcua/Access/bindDevice/index.tsx
  72. 5 4
      src/pages/link/Channel/Opcua/Access/index.tsx
  73. 4 4
      src/pages/link/Channel/Opcua/Save/index.tsx
  74. 5 4
      src/pages/link/Channel/Opcua/index.tsx
  75. 5 5
      src/pages/link/Gateway/index.tsx
  76. 3 2
      src/pages/link/Protocol/FileUpload/index.tsx
  77. 8 7
      src/pages/link/Protocol/index.tsx
  78. 3 3
      src/pages/link/Type/Detail/index.tsx
  79. 6 5
      src/pages/link/Type/index.tsx
  80. 4 3
      src/pages/media/Cascade/Channel/BindChannel/index.tsx
  81. 6 5
      src/pages/media/Cascade/Channel/index.tsx
  82. 3 15
      src/pages/media/Cascade/Save/index.tsx
  83. 6 5
      src/pages/media/Cascade/index.tsx
  84. 4 3
      src/pages/media/Device/Channel/Save.tsx
  85. 4 3
      src/pages/media/Device/Save/index.tsx
  86. 7 6
      src/pages/media/Device/index.tsx
  87. 3 15
      src/pages/media/Stream/Detail/index.tsx
  88. 3 2
      src/pages/media/Stream/index.tsx
  89. 3 2
      src/pages/notice/Config/BindUser/index.tsx
  90. 3 3
      src/pages/notice/Config/Debug/index.tsx
  91. 3 3
      src/pages/notice/Config/Detail/index.tsx
  92. 4 15
      src/pages/notice/Config/SyncUser/index.tsx
  93. 8 8
      src/pages/notice/Config/index.tsx
  94. 3 3
      src/pages/notice/Template/Debug/index.tsx
  95. 3 3
      src/pages/notice/Template/Detail/index.tsx
  96. 7 7
      src/pages/notice/Template/index.tsx
  97. 4 3
      src/pages/rule-engine/Alarm/Config/index.tsx
  98. 3 3
      src/pages/rule-engine/Alarm/Configuration/Save/index.tsx
  99. 6 5
      src/pages/rule-engine/Alarm/Configuration/index.tsx
  100. 0 0
      src/pages/rule-engine/Alarm/Log/SolveComponent/index.tsx

+ 2 - 1
src/components/Authorization/index.tsx

@@ -11,6 +11,7 @@ import _ from 'lodash';
 import { AuthorizationModel } from '@/components/Authorization/autz';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import DB from '@/db';
+import { onlyMessage } from '@/utils/util';
 
 const service = new Service();
 
@@ -182,7 +183,7 @@ const Authorization = observer((props: AuthorizationProps) => {
         permissionList: permissions,
       })
       .subscribe(async () => {
-        await message.success('授权成功');
+        await onlyMessage('授权成功');
       });
   };
 

+ 3 - 2
src/components/BaseCrud/save/index.tsx

@@ -1,5 +1,5 @@
 import React, { useEffect, useMemo, useState } from 'react';
-import { message, Modal, Spin } from 'antd';
+import { Modal, Spin } from 'antd';
 import {
   ArrayItems,
   ArrayTable,
@@ -34,6 +34,7 @@ import FUpload from '@/components/Upload';
 import FileUpload from '@/pages/link/Protocol/FileUpload';
 import FMonacoEditor from '@/components/FMonacoEditor';
 import FBraftEditor from '@/components/FBraftEditor';
+import { onlyMessage } from '@/utils/util';
 
 interface Props<T> {
   schema: ISchema;
@@ -111,7 +112,7 @@ const Save = <T extends Record<string, any>>(props: Props<T>) => {
     if (response.status === 200) {
       Store.set(SystemConst.BASE_UPDATE_DATA, response.result);
     }
-    message.success(
+    onlyMessage(
       intl.formatMessage({
         id: 'pages.data.option.success',
         defaultMessage: '操作成功',

+ 2 - 1
src/components/BindUser/Bound.tsx

@@ -9,6 +9,7 @@ import { observer } from '@formily/react';
 import { BindModel } from '@/components/BindUser/model';
 import { columns, service } from '@/components/BindUser/index';
 import { useIntl } from '@@/plugin-locale/localeExports';
+import { onlyMessage } from '@/utils/util';
 
 const Bound = observer(() => {
   const intl = useIntl();
@@ -23,7 +24,7 @@ const Bound = observer(() => {
 
   const handleUnBindResult = {
     next: async () => {
-      message.success(
+      onlyMessage(
         intl.formatMessage({
           id: 'pages.bindUser.theBoundUser.success',
           defaultMessage: '解绑成功',

+ 5 - 3
src/components/Player/ScreenPlayer.tsx

@@ -1,7 +1,7 @@
 import { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';
 import classNames from 'classnames';
 import LivePlayer from './index';
-import { Button, Dropdown, Empty, Menu, message, Popconfirm, Popover, Radio, Tooltip } from 'antd';
+import { Button, Dropdown, Empty, Menu, Popconfirm, Popover, Radio, Tooltip } from 'antd';
 import { createSchemaField } from '@formily/react';
 import { Form, FormItem, Input } from '@formily/antd';
 import { useFullscreen } from 'ahooks';
@@ -10,6 +10,7 @@ import { DeleteOutlined, QuestionCircleOutlined } from '@ant-design/icons';
 import Service from './service';
 import MediaTool from '@/components/Player/mediaTool';
 import { createForm } from '@formily/core';
+import { onlyMessage } from '@/utils/util';
 
 type Player = {
   id?: string;
@@ -196,9 +197,10 @@ export default forwardRef((props: ScreenProps, ref) => {
     if (resp.status === 200) {
       setVisible(false);
       getHistory();
-      message.success('保存成功!');
+      onlyMessage('保存成功!');
     } else {
-      message.error('保存失败');
+      onlyMessage('保存失败', 'error');
+      // message.error('保存失败');
     }
   }, [players, screen, historyForm]);
 

+ 5 - 5
src/components/SearchComponent/index.tsx

@@ -24,7 +24,7 @@ import {
   SaveOutlined,
   SearchOutlined,
 } from '@ant-design/icons';
-import { Button, Card, Dropdown, Empty, Menu, message, Popover, Typography } from 'antd';
+import { Button, Card, Dropdown, Empty, Menu, Popover, Typography } from 'antd';
 import { useEffect, useMemo, useRef, useState } from 'react';
 import type { ProColumns } from '@jetlinks/pro-table';
 import type { EnumData } from '@/utils/typings';
@@ -33,7 +33,7 @@ import Service from '@/components/SearchComponent/service';
 import _ from 'lodash';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import classnames from 'classnames';
-import { randomString } from '@/utils/util';
+import { onlyMessage, randomString } from '@/utils/util';
 
 const ui2Server = (source: SearchTermsUI): SearchTermsServer => [
   { terms: source.terms1 },
@@ -454,7 +454,7 @@ const SearchComponent = <T extends Record<string, any>>(props: Props<T>) => {
                   e?.stopPropagation();
                   const response = await service.history.remove(`${target}-search`, item.key);
                   if (response.status === 200) {
-                    message.success('操作成功');
+                    onlyMessage('操作成功');
                     const temp = history.filter((h: any) => h.key !== item.key);
                     setHistory(temp);
                   }
@@ -530,9 +530,9 @@ const SearchComponent = <T extends Record<string, any>>(props: Props<T>) => {
       content: JSON.stringify(value),
     });
     if (response.status === 200) {
-      message.success('保存成功!');
+      onlyMessage('保存成功!');
     } else {
-      message.error('保存失败');
+      onlyMessage('保存失败', 'error');
     }
     setAliasVisible(!aliasVisible);
   };

+ 3 - 3
src/pages/Northbound/AliCloud/Detail/index.tsx

@@ -14,10 +14,10 @@ import type { Field } from '@formily/core';
 import { onFormInit } from '@formily/core';
 import { createForm, FormPath, onFieldChange, onFieldValueChange } from '@formily/core';
 import { createSchemaField, observer } from '@formily/react';
-import { Card, Col, Image, message, Row } from 'antd';
+import { Card, Col, Image, Row } from 'antd';
 import { useMemo } from 'react';
 import { useParams } from 'umi';
-import { useAsyncDataSource } from '@/utils/util';
+import { onlyMessage, useAsyncDataSource } from '@/utils/util';
 import './index.less';
 import { service } from '@/pages/Northbound/AliCloud';
 import usePermissions from '@/hooks/permission';
@@ -406,7 +406,7 @@ const Detail = observer(() => {
     data.bridgeProductName = product?.label || '';
     const response: any = data.id ? await service.update(data) : await service.save(data);
     if (response.status === 200) {
-      message.success('保存成功');
+      onlyMessage('保存成功');
       history.back();
     }
   };

+ 13 - 9
src/pages/Northbound/AliCloud/index.tsx

@@ -16,7 +16,8 @@ import { useIntl } from '@@/plugin-locale/localeExports';
 import { getMenuPathByParams, MENUS_CODE } from '@/utils/menu';
 import AliyunCard from '@/components/ProTableCard/CardItems/aliyun';
 import Service from './service';
-import { Badge, message } from 'antd';
+import { Badge } from 'antd';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('device/aliyun/bridge');
 
@@ -74,10 +75,10 @@ const AliCloud = () => {
                 ? await service._disable(record.id)
                 : await service._enable(record.id);
             if (resp.status === 200) {
-              message.success('操作成功!');
+              onlyMessage('操作成功!');
               actionRef.current?.reload?.();
             } else {
-              message.error('操作失败!');
+              onlyMessage('操作失败!', 'error');
             }
           },
         }}
@@ -102,7 +103,7 @@ const AliCloud = () => {
           onConfirm: async () => {
             if (record?.state?.value === 'disabled') {
               await service.remove(record.id);
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',
@@ -110,7 +111,7 @@ const AliCloud = () => {
               );
               actionRef.current?.reload();
             } else {
-              message.error(intl.formatMessage({ id: 'pages.device.instance.deleteTip' }));
+              onlyMessage(intl.formatMessage({ id: 'pages.device.instance.deleteTip' }), 'error');
             }
           },
         }}
@@ -278,10 +279,10 @@ const AliCloud = () => {
                         ? await service._disable(record.id)
                         : await service._enable(record.id);
                     if (resp.status === 200) {
-                      message.success('操作成功!');
+                      onlyMessage('操作成功!');
                       actionRef.current?.reload?.();
                     } else {
-                      message.error('操作失败!');
+                      onlyMessage('操作失败!', 'error');
                     }
                   },
                 }}
@@ -313,7 +314,7 @@ const AliCloud = () => {
                   onConfirm: async () => {
                     if (record?.state?.value === 'disabled') {
                       await service.remove(record.id);
-                      message.success(
+                      onlyMessage(
                         intl.formatMessage({
                           id: 'pages.data.option.success',
                           defaultMessage: '操作成功!',
@@ -321,7 +322,10 @@ const AliCloud = () => {
                       );
                       actionRef.current?.reload();
                     } else {
-                      message.error(intl.formatMessage({ id: 'pages.device.instance.deleteTip' }));
+                      onlyMessage(
+                        intl.formatMessage({ id: 'pages.device.instance.deleteTip' }),
+                        'error',
+                      );
                     }
                   },
                 }}

+ 4 - 4
src/pages/Northbound/DuerOS/Detail/index.tsx

@@ -1,7 +1,7 @@
 import { PageContainer } from '@ant-design/pro-layout';
 import { createSchemaField } from '@formily/react';
 import { ISchema } from '@formily/json-schema';
-import { Card, Col, message, Row } from 'antd';
+import { Card, Col, Row } from 'antd';
 import {
   ArrayCollapse,
   ArrayTable,
@@ -23,7 +23,7 @@ import {
   onFieldValueChange,
   onFormInit,
 } from '@formily/core';
-import { useAsyncDataSource } from '@/utils/util';
+import { onlyMessage, useAsyncDataSource } from '@/utils/util';
 import { service } from '..';
 import { Store } from 'jetlinks-store';
 import { useParams } from 'umi';
@@ -600,9 +600,9 @@ const Save = () => {
     const productName = Store.get('product-list')?.find((item: any) => item.id === data.id)?.name;
     const resp: any = await service.savePatch({ ...data, productName });
     if (resp.status === 200) {
-      message.success('保存成功!');
+      onlyMessage('保存成功!');
     } else {
-      message.error('保存失败!');
+      onlyMessage('保存失败!', 'error');
     }
     history.back();
   };

+ 5 - 4
src/pages/Northbound/DuerOS/index.tsx

@@ -12,12 +12,13 @@ import {
   PlusOutlined,
 } from '@ant-design/icons';
 import { useIntl } from '@@/plugin-locale/localeExports';
-import { Badge, message, Space } from 'antd';
+import { Badge, Space } from 'antd';
 import { DuerOSItem } from '@/pages/Northbound/DuerOS/types';
 import DuerOSCard from '@/components/ProTableCard/CardItems/duerOs';
 import { history } from '@@/core/history';
 import { getMenuPathByCode, getMenuPathByParams, MENUS_CODE } from '@/utils/menu';
 import Service from './service';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('dueros/product');
 export default () => {
@@ -73,14 +74,14 @@ export default () => {
             };
             const resp = await service.changeState(record.id, map[record.state?.value]);
             if (resp.status === 200) {
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',
                 }),
               );
             } else {
-              message.error('操作失败!');
+              onlyMessage('操作失败!', 'error');
             }
 
             actionRef.current?.reload();
@@ -117,7 +118,7 @@ export default () => {
           title: '确认删除?',
           onConfirm: async () => {
             await service.remove(record.id);
-            message.success('删除成功!');
+            onlyMessage('删除成功!');
             actionRef.current?.reload();
           },
         }}

+ 6 - 5
src/pages/account/Center/bind/index.tsx

@@ -1,10 +1,11 @@
-import { Button, Card, message, Form, Input } from 'antd';
+import { Button, Card, Form, Input } from 'antd';
 import { useEffect, useState } from 'react';
 import Service from '@/pages/account/Center/service';
 import api from '@/pages/user/Login/service';
 import styles from './index.less';
 import Token from '@/utils/token';
 import { useModel } from '@@/plugin-model/useModel';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service();
 
@@ -85,11 +86,11 @@ const Bind = () => {
         Token.set(userInfo.token);
         await fetchUserInfo();
         localStorage.setItem('onLogin', 'yes');
-        message.success('登录成功');
+        onlyMessage('登录成功');
         setTimeout(() => window.close(), 1000);
       },
       error: () => {
-        message.error('登录失败,请重试!');
+        onlyMessage('登录失败,请重试', 'error');
       },
     });
   };
@@ -193,11 +194,11 @@ const Bind = () => {
                 onClick={() => {
                   service.bind(code).then((res) => {
                     if (res.status === 200) {
-                      message.success('绑定成功');
+                      onlyMessage('绑定成功');
                       localStorage.setItem('onBind', 'true');
                       setTimeout(() => window.close(), 1000);
                     } else {
-                      message.error('绑定失败');
+                      onlyMessage('绑定失败', 'error');
                     }
                   });
                 }}

+ 6 - 5
src/pages/account/Center/index.tsx

@@ -24,6 +24,7 @@ import moment from 'moment';
 import { useModel } from 'umi';
 import usePermissions from '@/hooks/permission';
 import { PermissionButton } from '@/components';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service();
 
@@ -79,7 +80,7 @@ const Center = () => {
             if (res.status === 200) {
               setImageUrl(info.file.response.result);
               getDetail();
-              message.success('上传成功');
+              onlyMessage('上传成功');
             }
           });
         // setLoading(false);
@@ -90,18 +91,18 @@ const Center = () => {
   const saveInfo = (parms: UserDetail) => {
     service.saveUserDetail(parms).subscribe((res) => {
       if (res.status === 200) {
-        message.success('保存成功');
+        onlyMessage('保存成功');
         getDetail();
         setInfos(false);
       } else {
-        message.success('保存失败');
+        onlyMessage('保存失败', 'error');
       }
     });
   };
   const savePassword = (parms: { oldPassword: string; newPassword: string }) => {
     service.savePassWord(parms).subscribe((res) => {
       if (res.status === 200) {
-        message.success('保存成功');
+        onlyMessage('保存成功');
       }
     });
   };
@@ -115,7 +116,7 @@ const Center = () => {
   const unBind = (type: string, provider: string) => {
     service.unbind(type, provider).then((res) => {
       if (res.status === 200) {
-        message.success('解绑成功');
+        onlyMessage('解绑成功');
         getBindInfo();
       }
     });

+ 3 - 2
src/pages/account/NotificationRecord/index.tsx

@@ -7,10 +7,11 @@ import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import ProTable from '@jetlinks/pro-table';
 import { useEffect, useRef, useState } from 'react';
 import Detail from './detail';
-import { Badge, message } from 'antd';
+import { Badge } from 'antd';
 import Service from './service';
 import encodeQuery from '@/utils/encodeQuery';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('notifications');
 
@@ -105,7 +106,7 @@ const NotificationRecord = () => {
               const state = record?.state?.value !== 'read' ? 'read' : 'unread';
               const resp = await service.saveData(state, [record.id]);
               if (resp.status === 200) {
-                message.success('操作成功');
+                onlyMessage('操作成功');
                 actionRef.current?.reload();
               }
             },

+ 6 - 5
src/pages/account/NotificationSubscription/index.tsx

@@ -12,11 +12,12 @@ import { PageContainer } from '@ant-design/pro-layout';
 import { observer } from '@formily/reactive-react';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import ProTable from '@jetlinks/pro-table';
-import { Badge, message } from 'antd';
+import { Badge } from 'antd';
 import { useEffect, useRef, useState } from 'react';
 import Save from './save';
 import Service from './service';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('notifications/subscriptions');
 
@@ -77,10 +78,10 @@ const NotificationSubscription = observer(() => {
                 ? await service._disabled(record.id)
                 : await service._enabled(record.id);
             if (resp.status === 200) {
-              message.success('操作成功!');
+              onlyMessage('操作成功!');
               actionRef.current?.reload?.();
             } else {
-              message.error('操作失败!');
+              onlyMessage('操作失败!', 'error');
             }
           },
         }}
@@ -105,10 +106,10 @@ const NotificationSubscription = observer(() => {
           onConfirm: async () => {
             const resp: any = await service.remove(record.id);
             if (resp.status === 200) {
-              message.success('操作成功!');
+              onlyMessage('操作成功!');
               actionRef.current?.reload?.();
             } else {
-              message.error('操作失败!');
+              onlyMessage('操作失败!', 'error');
             }
           },
         }}

+ 3 - 3
src/pages/account/NotificationSubscription/save/index.tsx

@@ -1,10 +1,10 @@
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import { useEffect, useMemo, useState } from 'react';
 import { Checkbox, Form, FormGrid, FormItem, Input, Select } from '@formily/antd';
 import { createForm } from '@formily/core';
 import type { ISchema } from '@formily/react';
 import { createSchemaField } from '@formily/react';
-import { useAsyncDataSource } from '@/utils/util';
+import { onlyMessage, useAsyncDataSource } from '@/utils/util';
 import { service } from '@/pages/account/NotificationSubscription';
 import _ from 'lodash';
 
@@ -198,7 +198,7 @@ const Save = (props: Props) => {
     };
     const response: any = await service.saveData(param);
     if (response.status === 200) {
-      message.success('操作成功!');
+      onlyMessage('操作成功!');
       props.reload();
     }
   };

+ 3 - 2
src/pages/cloud/Aliyun/index.tsx

@@ -3,7 +3,7 @@ import BaseService from '@/utils/BaseService';
 import { useRef } from 'react';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import BaseCrud from '@/components/BaseCrud';
-import { message, Popconfirm, Tooltip } from 'antd';
+import { Popconfirm, Tooltip } from 'antd';
 import {
   CloseCircleOutlined,
   EditOutlined,
@@ -13,6 +13,7 @@ import {
 import { CurdModel } from '@/components/BaseCrud/model';
 import type { AliyunItem } from '@/pages/cloud/Aliyun/typings';
 import { useIntl } from '@@/plugin-locale/localeExports';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new BaseService<AliyunItem>('device/aliyun/bridge');
 
@@ -95,7 +96,7 @@ const Aliyun = () => {
             onConfirm={async () => {
               // const state = record.state.value === 'disabled' ? 'enable' : 'disable';
               // await service.changeStatus(record.id, state);
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',

+ 3 - 2
src/pages/cloud/Ctwing/index.tsx

@@ -4,10 +4,11 @@ import BaseService from '@/utils/BaseService';
 import { CloseCircleOutlined, EditOutlined, PlayCircleOutlined } from '@ant-design/icons';
 import { PageContainer } from '@ant-design/pro-layout';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { message, Popconfirm, Tooltip } from 'antd';
+import { Popconfirm, Tooltip } from 'antd';
 import { useRef } from 'react';
 import type { CtwingItem } from '@/pages/cloud/Ctwing/typings';
 import { useIntl } from '@@/plugin-locale/localeExports';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new BaseService<CtwingItem>('ctwing/product');
 
@@ -79,7 +80,7 @@ const Ctwing = () => {
             onConfirm={async () => {
               // const state = record.state.value === 'disabled' ? 'enable' : 'disable';
               // await service.changeStatus(record.id, state);
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',

+ 3 - 2
src/pages/cloud/Onenet/index.tsx

@@ -2,7 +2,7 @@ import { PageContainer } from '@ant-design/pro-layout';
 import BaseService from '@/utils/BaseService';
 import { useRef } from 'react';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { message, Popconfirm, Tooltip } from 'antd';
+import { Popconfirm, Tooltip } from 'antd';
 import {
   CloseCircleOutlined,
   EditOutlined,
@@ -13,6 +13,7 @@ import BaseCrud from '@/components/BaseCrud';
 import { CurdModel } from '@/components/BaseCrud/model';
 import type { OnenetItem } from '@/pages/cloud/Onenet/typings';
 import { useIntl } from '@@/plugin-locale/localeExports';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new BaseService<OnenetItem>('one-net/product');
 
@@ -82,7 +83,7 @@ const Onenet = () => {
               defaultMessage: `确认${record.state.value === 'disabled' ? '启' : '禁'}用?`,
             })}
             onConfirm={async () => {
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',

+ 4 - 3
src/pages/device/Alarm/index.tsx

@@ -3,12 +3,13 @@ import BaseService from '@/utils/BaseService';
 import { useRef } from 'react';
 import type { ProColumns, ActionType } from '@jetlinks/pro-table';
 import moment from 'moment';
-import { Form, Input, message, Modal, Tag, Tooltip } from 'antd';
+import { Form, Input, Modal, Tag, Tooltip } from 'antd';
 import { CheckOutlined, EyeOutlined } from '@ant-design/icons';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import ProTable from '@jetlinks/pro-table';
 import { request } from 'umi';
 import SystemConst from '@/utils/const';
+import { onlyMessage } from '@/utils/util';
 
 const service = new BaseService<AlarmItem>('device/alarm/history');
 const Alarm = () => {
@@ -142,9 +143,9 @@ const Alarm = () => {
                       },
                     );
                     if (resp.status === 200) {
-                      message.success('操作成功');
+                      onlyMessage('操作成功');
                     } else {
-                      message.error('操作失败');
+                      onlyMessage('操作失败', 'error');
                     }
                     actionRef.current?.reload();
                   },

+ 4 - 3
src/pages/device/Category/Save/index.tsx

@@ -17,12 +17,13 @@ import { createForm } from '@formily/core';
 import { createSchemaField } from '@formily/react';
 import FUpload from '@/components/Upload';
 import * as ICONS from '@ant-design/icons';
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import type { ISchema } from '@formily/json-schema';
 import type { CategoryItem } from '@/pages/visualization/Category/typings';
 import { service, state } from '@/pages/device/Category';
 import type { Response } from '@/utils/typings';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   visible: boolean;
@@ -70,12 +71,12 @@ const Save = (props: Props) => {
       ? await service.update(value as CategoryItem)
       : ((await service.save(value as any)) as Response<CategoryItem>);
     if (resp.status === 200) {
-      message.success('操作成功!');
+      onlyMessage('操作成功');
       if (props.reload) {
         props.reload();
       }
     } else {
-      message.error('操作失败');
+      onlyMessage('操作失败', 'error');
     }
     props.close();
   };

+ 3 - 3
src/pages/device/Category/index.tsx

@@ -3,7 +3,6 @@ import Service from '@/pages/device/Category/service';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import ProTable from '@jetlinks/pro-table';
 import { DeleteOutlined, EditOutlined, PlusCircleOutlined, PlusOutlined } from '@ant-design/icons';
-import { message } from 'antd';
 import { useRef, useState } from 'react';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import Save from '@/pages/device/Category/Save';
@@ -13,6 +12,7 @@ import type { Response } from '@/utils/typings';
 import SearchComponent from '@/components/SearchComponent';
 import { PermissionButton } from '@/components';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('device/category');
 
@@ -146,9 +146,9 @@ const Category = observer(() => {
             onConfirm: async () => {
               const resp = (await service.remove(record.id)) as Response<any>;
               if (resp.status === 200) {
-                message.success('操作成功');
+                onlyMessage('操作成功');
               } else {
-                message.error('操作失败');
+                onlyMessage('操作失败', 'error');
               }
               actionRef.current?.reload();
             },

+ 4 - 3
src/pages/device/Command/create/index.tsx

@@ -5,10 +5,11 @@ import { ArrayTable, Form, FormItem, Input, Select, Space } from '@formily/antd'
 import { action } from '@formily/reactive';
 import type { ISchema } from '@formily/json-schema';
 import { service } from '@/pages/device/Command';
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import FSelectDevices from '@/components/FSelectDevices';
 import { useRef } from 'react';
 import type { DeviceMetadata, ProductItem } from '@/pages/device/Product/typings';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   close: () => void;
@@ -235,9 +236,9 @@ const Create = (props: Props) => {
     }
     const resp = await service.task(values);
     if (resp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
     } else {
-      message.error('操作失败');
+      onlyMessage('操作失败', 'error');
     }
     close();
   };

+ 4 - 3
src/pages/device/Command/index.tsx

@@ -2,7 +2,7 @@ import { PageContainer } from '@ant-design/pro-layout';
 import { useRef } from 'react';
 import type { ProColumns, ActionType } from '@jetlinks/pro-table';
 import type { CommandItem } from '@/pages/device/Command/typings';
-import { Button, message, Tooltip } from 'antd';
+import { Button, Tooltip } from 'antd';
 import moment from 'moment';
 import { EyeOutlined, PlusOutlined, SyncOutlined } from '@ant-design/icons';
 import { useIntl } from '@@/plugin-locale/localeExports';
@@ -13,6 +13,7 @@ import encodeQuery from '@/utils/encodeQuery';
 import { model } from '@formily/reactive';
 import { observer } from '@formily/react';
 import Cat from '@/pages/device/Command/cat';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('device/message/task');
 
@@ -158,9 +159,9 @@ const Command = observer(() => {
             onClick={async () => {
               const resp = await service.resend(encodeQuery({ terms: { id: record.id } }));
               if (resp.status === 200) {
-                message.success('操作成功!');
+                onlyMessage('操作成功!');
               } else {
-                message.error('操作失败!');
+                onlyMessage('操作失败!', 'error');
               }
             }}
           >

+ 4 - 3
src/pages/device/Firmware/Detail/Task/Release/index.tsx

@@ -1,4 +1,4 @@
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import { createForm } from '@formily/core';
 import { createSchemaField } from '@formily/react';
 import { Form, FormItem, Select } from '@formily/antd';
@@ -6,6 +6,7 @@ import type { ISchema } from '@formily/json-schema';
 import FSelectDevices from '@/components/FSelectDevices';
 import { service, state } from '@/pages/device/Firmware';
 import type { DeviceInstance } from '@/pages/device/Instance/typings';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   close: () => void;
@@ -36,9 +37,9 @@ const Release = (props: Props) => {
       values?.part?.map((i) => i.id),
     );
     if (resp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
     } else {
-      message.error('操作失败');
+      onlyMessage('操作失败', 'error');
     }
     props.close();
   };

+ 4 - 3
src/pages/device/Firmware/Detail/Task/Save/index.tsx

@@ -1,9 +1,10 @@
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import { service, state } from '../../..';
 import { createForm } from '@formily/core';
 import { createSchemaField } from '@formily/react';
 import { Form, FormItem, Input, NumberPicker, Select } from '@formily/antd';
 import type { ISchema } from '@formily/json-schema';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   visible: boolean;
@@ -61,9 +62,9 @@ const Save = (props: Props) => {
     values.firmwareId = state.current?.id;
     const resp = await service.saveTask(values);
     if (resp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
     } else {
-      message.error('操作失败');
+      onlyMessage('操作失败', 'error');
     }
     props.close();
   };

+ 4 - 3
src/pages/device/Firmware/Save/index.tsx

@@ -1,4 +1,4 @@
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import type { FirmwareItem } from '@/pages/device/Firmware/typings';
 import { createSchemaField } from '@formily/react';
 import { Form, FormGrid, FormItem, Input, Select } from '@formily/antd';
@@ -11,6 +11,7 @@ import { service } from '@/pages/device/Firmware';
 import type { Response } from '@/utils/typings';
 import { useRef } from 'react';
 import type { ProductItem } from '@/pages/device/Product/typings';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   data?: FirmwareItem;
@@ -54,9 +55,9 @@ const Save = (props: Props) => {
     values.productName = product?.name || '';
     const resp = (await service.save(values)) as Response<FirmwareItem>;
     if (resp.status === 200) {
-      message.success('保存成功!');
+      onlyMessage('保存成功!');
     } else {
-      message.error('保存失败!');
+      onlyMessage('保存失败!', 'error');
     }
   };
   const schema: ISchema = {

+ 3 - 2
src/pages/device/Firmware/index.tsx

@@ -1,6 +1,6 @@
 import { PageContainer } from '@ant-design/pro-layout';
 import type { ProColumns, ActionType } from '@jetlinks/pro-table';
-import { Button, message, Popconfirm, Tooltip } from 'antd';
+import { Button, Popconfirm, Tooltip } from 'antd';
 import moment from 'moment';
 import { useRef } from 'react';
 import { useIntl } from '@@/plugin-locale/localeExports';
@@ -12,6 +12,7 @@ import { observer } from '@formily/react';
 import type { FirmwareItem, TaskItem } from '@/pages/device/Firmware/typings';
 import Service from '@/pages/device/Firmware/service';
 import Save from '@/pages/device/Firmware/Save';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('firmware');
 
@@ -131,7 +132,7 @@ const Firmware = observer(() => {
             })}
             onConfirm={async () => {
               await service.remove(record.id);
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',

+ 4 - 3
src/pages/device/Instance/Detail/ChildDevice/index.tsx

@@ -1,7 +1,7 @@
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import ProTable from '@jetlinks/pro-table';
 import type { LogItem } from '@/pages/device/Instance/Detail/Log/typings';
-import { Badge, Button, Card, message, Popconfirm, Tooltip } from 'antd';
+import { Badge, Button, Card, Popconfirm, Tooltip } from 'antd';
 import { DisconnectOutlined, SearchOutlined } from '@ant-design/icons';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import { InstanceModel, service, statusMap } from '@/pages/device/Instance';
@@ -12,6 +12,7 @@ import moment from 'moment';
 import { Link } from 'umi';
 import { getMenuPathByParams, MENUS_CODE } from '@/utils/menu';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 const ChildDevice = () => {
   const intl = useIntl();
@@ -27,7 +28,7 @@ const ChildDevice = () => {
     const resp = await service.unbindDevice(InstanceModel.detail.id!, id, {});
     if (resp.status === 200) {
       actionRef.current?.reset?.();
-      message.success('操作成功!');
+      onlyMessage('操作成功!');
     }
   };
 
@@ -173,7 +174,7 @@ const ChildDevice = () => {
             onConfirm={async () => {
               const resp = await service.unbindBatchDevice(InstanceModel.detail.id!, bindKeys);
               if (resp.status === 200) {
-                message.success('操作成功!');
+                onlyMessage('操作成功!');
                 setBindKeys([]);
                 actionRef.current?.reset?.();
               }

+ 3 - 2
src/pages/device/Instance/Detail/Config/Edit.tsx

@@ -3,8 +3,9 @@ import { createSchemaField } from '@formily/react';
 import { InstanceModel, service } from '@/pages/device/Instance';
 import type { ISchema } from '@formily/json-schema';
 import { Form, FormGrid, FormItem, Input, Password, PreviewText } from '@formily/antd';
-import { Button, Drawer, message, Space } from 'antd';
+import { Button, Drawer, Space } from 'antd';
 import { useParams } from 'umi';
+import { onlyMessage } from '@/utils/util';
 
 const componentMap = {
   string: 'Input',
@@ -100,7 +101,7 @@ const Edit = (props: Props) => {
                 configuration: { ...values },
               });
               if (resp.status === 200) {
-                message.success('操作成功!');
+                onlyMessage('操作成功!');
                 if ((window as any).onTabSaveSuccess) {
                   if (resp.result) {
                     (window as any).onTabSaveSuccess(resp);

+ 4 - 3
src/pages/device/Instance/Detail/Config/index.tsx

@@ -1,4 +1,4 @@
-import { Descriptions, message, Space, Tooltip } from 'antd';
+import { Descriptions, Space, Tooltip } from 'antd';
 import { InstanceModel, service } from '@/pages/device/Instance';
 import { useEffect, useState } from 'react';
 import type { ConfigMetadata } from '@/pages/device/Product/typings';
@@ -11,6 +11,7 @@ import {
 } from '@ant-design/icons';
 import Edit from './Edit';
 import { PermissionButton } from '@/components';
+import { onlyMessage } from '@/utils/util';
 
 const Config = () => {
   const params = useParams<{ id: string }>();
@@ -99,7 +100,7 @@ const Config = () => {
                 onConfirm: async () => {
                   const resp = await service.deployDevice(id || '');
                   if (resp.status === 200) {
-                    message.success('操作成功');
+                    onlyMessage('操作成功');
                     getDetail();
                   }
                 },
@@ -121,7 +122,7 @@ const Config = () => {
                 onConfirm: async () => {
                   const resp = await service.configurationReset(id || '');
                   if (resp.status === 200) {
-                    message.success('恢复默认配置成功');
+                    onlyMessage('恢复默认配置成功');
                     getDetail();
                   }
                 },

+ 6 - 5
src/pages/device/Instance/Detail/Diagnose/Status/index.tsx

@@ -1,5 +1,5 @@
 import TitleComponent from '@/components/TitleComponent';
-import { Badge, Button, Col, message, Popconfirm, Row } from 'antd';
+import { Badge, Button, Col, Popconfirm, Row } from 'antd';
 import { useEffect, useState } from 'react';
 import styles from './index.less';
 import { InstanceModel, service } from '@/pages/device/Instance';
@@ -10,6 +10,7 @@ import { DiagnoseStatusModel } from './model';
 import { PermissionButton } from '@/components';
 import DiagnosticAdvice from './DiagnosticAdvice';
 import ManualInspection from './ManualInspection';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   onChange: (type: string) => void;
@@ -215,7 +216,7 @@ const Status = observer((props: Props) => {
                                             DiagnoseStatusModel.gateway?.channelId,
                                           );
                                           if (res.status === 200) {
-                                            message.success('操作成功!');
+                                            onlyMessage('操作成功!');
                                             DiagnoseStatusModel.status.network = {
                                               status: 'success',
                                               text: '正常',
@@ -335,7 +336,7 @@ const Status = observer((props: Props) => {
                               InstanceModel.detail?.productId || '',
                             );
                             if (resp.status === 200) {
-                              message.success('操作成功!');
+                              onlyMessage('操作成功!');
                               DiagnoseStatusModel.status.product = {
                                 status: 'success',
                                 text: '正常',
@@ -389,7 +390,7 @@ const Status = observer((props: Props) => {
                         onConfirm={async () => {
                           const resp = await service.deployDevice(InstanceModel.detail?.id || '');
                           if (resp.status === 200) {
-                            message.success('操作成功!');
+                            onlyMessage('操作成功!');
                             DiagnoseStatusModel.status.device = {
                               status: 'success',
                               text: '正常',
@@ -567,7 +568,7 @@ const Status = observer((props: Props) => {
                           onConfirm={async () => {
                             const resp = await service.startGateway(gateway?.id || '');
                             if (resp.status === 200) {
-                              message.success('操作成功!');
+                              onlyMessage('操作成功!');
                               DiagnoseStatusModel.status.deviceAccess = {
                                 status: 'success',
                                 text: '正常',

+ 3 - 2
src/pages/device/Instance/Detail/MetadataMap/EditableTable/index.tsx

@@ -1,8 +1,9 @@
 import React, { useContext, useEffect, useState } from 'react';
-import { Badge, Col, Form, Input, message, Pagination, Row, Select, Table, Tooltip } from 'antd';
+import { Badge, Col, Form, Input, Pagination, Row, Select, Table, Tooltip } from 'antd';
 import { service } from '@/pages/device/Instance';
 import './index.less';
 import { QuestionCircleOutlined } from '@ant-design/icons';
+import { onlyMessage } from '@/utils/util';
 // import { throttle } from 'lodash';
 
 const defaultImage = require('/public/images/metadata-map.png');
@@ -260,7 +261,7 @@ const EditableTable = (props: Props) => {
         },
       ]);
       if (resp.status === 200) {
-        message.success('操作成功!');
+        onlyMessage('操作成功!');
         // 刷新
         initData(protocolMetadata);
       }

+ 5 - 4
src/pages/device/Instance/Detail/Modbus/index.tsx

@@ -1,5 +1,5 @@
 import PermissionButton from '@/components/PermissionButton';
-import { Badge, Card, Empty, Input, message, Tabs, Tooltip } from 'antd';
+import { Badge, Card, Empty, Input, Tabs, Tooltip } from 'antd';
 import { useEffect, useRef, useState } from 'react';
 import { useIntl } from 'umi';
 import styles from '@/pages/link/Channel/Opcua/Access/index.less';
@@ -18,6 +18,7 @@ import AddPoint from '@/pages/link/Channel/Modbus/Access/addPoint';
 import useSendWebsocketMessage from '@/hooks/websocket/useSendWebsocketMessage';
 import { map } from 'rxjs/operators';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 const Modbus = () => {
   const intl = useIntl();
@@ -111,7 +112,7 @@ const Modbus = () => {
                 state: record.state.value === 'enabled' ? 'disabled' : 'enabled',
               };
               await service.saveMetadataConfig(opcId, deviceId, item);
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',
@@ -149,7 +150,7 @@ const Modbus = () => {
             onConfirm: async () => {
               const resp: any = await service.removeMetadataConfig(record.id);
               if (resp.status === 200) {
-                message.success(
+                onlyMessage(
                   intl.formatMessage({
                     id: 'pages.data.option.success',
                     defaultMessage: '操作成功!',
@@ -315,7 +316,7 @@ const Modbus = () => {
                             const resp: any = await service.remove(item.id);
                             if (resp.status === 200) {
                               getModbus(deviceId);
-                              message.success(
+                              onlyMessage(
                                 intl.formatMessage({
                                   id: 'pages.data.option.success',
                                   defaultMessage: '操作成功!',

+ 5 - 4
src/pages/device/Instance/Detail/Opcua/index.tsx

@@ -1,5 +1,5 @@
 import PermissionButton from '@/components/PermissionButton';
-import { Badge, Card, Empty, Input, message, Tabs, Tooltip } from 'antd';
+import { Badge, Card, Empty, Input, Tabs, Tooltip } from 'antd';
 import { useEffect, useMemo, useRef, useState } from 'react';
 import { useIntl } from 'umi';
 import styles from '@/pages/link/Channel/Opcua/Access/index.less';
@@ -18,6 +18,7 @@ import AddPoint from '@/pages/link/Channel/Opcua/Access/addPoint';
 import useSendWebsocketMessage from '@/hooks/websocket/useSendWebsocketMessage';
 import { map } from 'rxjs/operators';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 const Opcua = () => {
   const intl = useIntl();
@@ -115,7 +116,7 @@ const Opcua = () => {
               } else {
                 await service.stopPoint(record.deviceId, [record.id]);
               }
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',
@@ -153,7 +154,7 @@ const Opcua = () => {
             onConfirm: async () => {
               const resp: any = await service.deletePoint(record.id);
               if (resp.status === 200) {
-                message.success(
+                onlyMessage(
                   intl.formatMessage({
                     id: 'pages.data.option.success',
                     defaultMessage: '操作成功!',
@@ -331,7 +332,7 @@ const Opcua = () => {
                               const resp: any = await service.remove(item.id);
                               if (resp.status === 200) {
                                 getOpc(deviceId);
-                                message.success(
+                                onlyMessage(
                                   intl.formatMessage({
                                     id: 'pages.data.option.success',
                                     defaultMessage: '操作成功!',

+ 3 - 2
src/pages/device/Instance/Detail/Reation/Edit.tsx

@@ -5,10 +5,11 @@ import { InstanceModel, service } from '@/pages/device/Instance';
 import type { ISchema } from '@formily/json-schema';
 import { Form, FormGrid, FormItem, PreviewText, Select } from '@formily/antd';
 import { useParams } from 'umi';
-import { Button, Drawer, message, Space } from 'antd';
+import { Button, Drawer, Space } from 'antd';
 import { action } from '@formily/reactive';
 import type { Response } from '@/utils/typings';
 import { useEffect, useMemo, useState } from 'react';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   close: () => void;
@@ -145,7 +146,7 @@ const Edit = (props: Props) => {
                 });
                 const resp = await service.saveRelations(id || '', param);
                 if (resp.status === 200) {
-                  message.success('操作成功!');
+                  onlyMessage('操作成功!');
                   props.close();
                   if (props.reload) {
                     props.reload();

+ 2 - 2
src/pages/device/Instance/Detail/Running/Property/EditProperty.tsx

@@ -1,4 +1,4 @@
-import { Alert, message, Modal } from 'antd';
+import { Alert, Modal } from 'antd';
 import { FormItem, Input } from '@formily/antd';
 import { createForm } from '@formily/core';
 import { createSchemaField, FormProvider } from '@formily/react';
@@ -39,7 +39,7 @@ const EditProperty = (props: Props) => {
   const handleSetPropertyValue = async (propertyValue: string) => {
     const resp = await service.setProperty(params.id, { [`${data.id}`]: propertyValue });
     if (resp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
     }
     props.onCancel();
   };

+ 3 - 2
src/pages/device/Instance/Detail/Running/Property/Indicators.tsx

@@ -1,4 +1,4 @@
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import {
   ArrayItems,
   Checkbox,
@@ -15,6 +15,7 @@ import { createSchemaField } from '@formily/react';
 import type { PropertyMetadata } from '@/pages/device/Product/typings';
 import { useEffect, useState } from 'react';
 import { InstanceModel, service } from '@/pages/device/Instance';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   data: Partial<PropertyMetadata>;
@@ -222,7 +223,7 @@ const Indicators = (props: Props) => {
         });
         const resp = await service.saveMetric(InstanceModel.detail.id || '', data.id || '', list);
         if (resp.status === 200) {
-          message.success('操作成功!');
+          onlyMessage('操作成功!');
           props.onCancel();
         }
       }}

+ 3 - 2
src/pages/device/Instance/Detail/Running/Property/PropertyCard.tsx

@@ -4,7 +4,7 @@ import {
   SyncOutlined,
   UnorderedListOutlined,
 } from '@ant-design/icons';
-import { Card, message, Space, Spin, Tooltip } from 'antd';
+import { Card, Space, Spin, Tooltip } from 'antd';
 import type { PropertyMetadata } from '@/pages/device/Product/typings';
 import { useEffect, useState } from 'react';
 import { service } from '@/pages/device/Instance';
@@ -15,6 +15,7 @@ import moment from 'moment';
 import Indicators from './Indicators';
 import './PropertyCard.less';
 import FileComponent from './FileComponent';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   data: Partial<PropertyMetadata>;
@@ -33,7 +34,7 @@ const Property = (props: Props) => {
     const resp = await service.getProperty(params.id, data.id);
     setLoading(false);
     if (resp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
     }
   };
 

+ 3 - 2
src/pages/device/Instance/Detail/Running/Property/index.tsx

@@ -1,4 +1,4 @@
-import { Col, Empty, Input, message, Pagination, Row, Space, Spin, Table } from 'antd';
+import { Col, Empty, Input, Pagination, Row, Space, Spin, Table } from 'antd';
 import CheckButton from '@/components/CheckButton';
 import { useCallback, useEffect, useRef, useState } from 'react';
 import type { PropertyMetadata } from '@/pages/device/Product/typings';
@@ -13,6 +13,7 @@ import PropertyLog from '../../MetadataLog/Property';
 import styles from './index.less';
 import { groupBy, throttle, toArray } from 'lodash';
 import PropertyTable from './PropertyTable';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   data: Partial<PropertyMetadata>[];
@@ -51,7 +52,7 @@ const Property = (props: Props) => {
     if (!id) return;
     const resp = await service.getProperty(params.id, id);
     if (resp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
     }
   };
 

+ 3 - 2
src/pages/device/Instance/Detail/Tags/Edit.tsx

@@ -2,9 +2,10 @@ import { createForm } from '@formily/core';
 import { createSchemaField, FormProvider } from '@formily/react';
 import { InstanceModel, service } from '@/pages/device/Instance';
 import { ArrayTable, FormItem, Input } from '@formily/antd';
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import { useIntl } from 'umi';
 import GeoComponent from './location/GeoComponent';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   close: () => void;
@@ -155,7 +156,7 @@ const Edit = (props: Props) => {
         const resp = await service.saveTags(InstanceModel.detail?.id || '', list);
         if (resp.status === 200) {
           InstanceModel.detail = { ...InstanceModel.detail, tags: values.tags };
-          message.success('操作成功!');
+          onlyMessage('操作成功!');
           props.close();
         }
       }}

+ 4 - 3
src/pages/device/Instance/Detail/index.tsx

@@ -1,7 +1,7 @@
 import { PageContainer } from '@ant-design/pro-layout';
 import { InstanceModel } from '@/pages/device/Instance';
 import { history, useParams } from 'umi';
-import { Badge, Card, Descriptions, Divider, message, Space, Tooltip } from 'antd';
+import { Badge, Card, Descriptions, Divider, Space, Tooltip } from 'antd';
 import type { ReactNode } from 'react';
 import { useEffect, useState } from 'react';
 import { observer } from '@formily/react';
@@ -27,6 +27,7 @@ import { PermissionButton } from '@/components';
 import { QuestionCircleOutlined } from '@ant-design/icons';
 import Service from '@/pages/device/Instance/service';
 import useLocation from '@/hooks/route/useLocation';
+import { onlyMessage } from '@/utils/util';
 
 export const deviceStatus = new Map();
 deviceStatus.set('online', <Badge status="success" text={'在线'} />);
@@ -298,7 +299,7 @@ const InstanceDetail = observer(() => {
                   onConfirm: async () => {
                     const resp = await service.deployDevice(params.id);
                     if (resp.status === 200) {
-                      message.success(
+                      onlyMessage(
                         intl.formatMessage({
                           id: 'pages.data.option.success',
                           defaultMessage: '操作成功!',
@@ -325,7 +326,7 @@ const InstanceDetail = observer(() => {
                   onConfirm: async () => {
                     const resp = await service.disconnectDevice(params.id);
                     if (resp.status === 200) {
-                      message.success(
+                      onlyMessage(
                         intl.formatMessage({
                           id: 'pages.data.option.success',
                           defaultMessage: '操作成功!',

+ 4 - 4
src/pages/device/Instance/Import/index.tsx

@@ -1,7 +1,7 @@
 import { FormItem, FormLayout, Select } from '@formily/antd';
 import { createForm, onFieldValueChange } from '@formily/core';
 import { createSchemaField, FormProvider } from '@formily/react';
-import { Badge, Button, Checkbox, message, Modal, Radio, Space, Upload } from 'antd';
+import { Badge, Button, Checkbox, Modal, Radio, Space, Upload } from 'antd';
 import 'antd/lib/tree-select/style/index.less';
 import { useEffect, useState } from 'react';
 import { service } from '@/pages/device/Instance';
@@ -11,7 +11,7 @@ import { UploadOutlined } from '@ant-design/icons';
 import SystemConst from '@/utils/const';
 import Token from '@/utils/token';
 import { EventSourcePolyfill } from 'event-source-polyfill';
-import { downloadFile } from '@/utils/util';
+import { downloadFile, onlyMessage } from '@/utils/util';
 import encodeQuery from '@/utils/encodeQuery';
 
 interface Props {
@@ -98,7 +98,7 @@ const NormalUpload = (props: any) => {
       };
       source.onopen = () => {};
     } else {
-      message.error('请先上传文件');
+      onlyMessage('请先上传文件', 'error');
     }
   };
   return (
@@ -112,7 +112,7 @@ const NormalUpload = (props: any) => {
           }}
           onChange={async (info) => {
             if (info.file.status === 'done') {
-              message.success('上传成功');
+              onlyMessage('上传成功');
               const resp: any = info.file.response || { result: '' };
               await submitData(resp?.result || '');
             }

+ 3 - 2
src/pages/device/Instance/Save/index.tsx

@@ -1,4 +1,4 @@
-import { Col, Form, Input, message, Modal, Row, Select } from 'antd';
+import { Col, Form, Input, Modal, Row, Select } from 'antd';
 import { service } from '@/pages/device/Instance';
 import type { DeviceInstance } from '../typings';
 import { useEffect, useState } from 'react';
@@ -6,6 +6,7 @@ import { useIntl } from '@@/plugin-locale/localeExports';
 import { UploadImage } from '@/components';
 import { debounce } from 'lodash';
 import encodeQuery from '@/utils/encodeQuery';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   visible: boolean;
@@ -85,7 +86,7 @@ const Save = (props: Props) => {
       const resp = (await service.update(values)) as any;
       setLoading(false);
       if (resp.status === 200) {
-        message.success('保存成功');
+        onlyMessage('保存成功');
         if (props.reload) {
           props.reload();
         }

+ 14 - 10
src/pages/device/Instance/index.tsx

@@ -2,7 +2,7 @@ import { PageContainer } from '@ant-design/pro-layout';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import type { DeviceInstance } from '@/pages/device/Instance/typings';
 import moment from 'moment';
-import { Badge, Button, Dropdown, Menu, message, Tooltip } from 'antd';
+import { Badge, Button, Dropdown, Menu, Tooltip } from 'antd';
 import { useEffect, useRef, useState } from 'react';
 import { useHistory, useIntl } from 'umi';
 import {
@@ -33,6 +33,7 @@ import { getMenuPathByParams, MENUS_CODE } from '@/utils/menu';
 import { useLocation } from '@/hooks';
 import { service as deptService } from '@/pages/system/Department';
 import { service as categoryService } from '@/pages/device/Category';
+import { onlyMessage } from '@/utils/util';
 
 export const statusMap = new Map();
 statusMap.set('在线', 'success');
@@ -134,7 +135,7 @@ const Instance = () => {
           if (record.state.value !== 'notActive') {
             service.undeployDevice(record.id).then((resp: any) => {
               if (resp.status === 200) {
-                message.success(
+                onlyMessage(
                   intl.formatMessage({
                     id: 'pages.data.option.success',
                     defaultMessage: '操作成功!',
@@ -146,7 +147,7 @@ const Instance = () => {
           } else {
             service.deployDevice(record.id).then((resp: any) => {
               if (resp.status === 200) {
-                message.success(
+                onlyMessage(
                   intl.formatMessage({
                     id: 'pages.data.option.success',
                     defaultMessage: '操作成功!',
@@ -187,7 +188,7 @@ const Instance = () => {
         onConfirm: async () => {
           if (record.state.value === 'notActive') {
             await service.remove(record.id);
-            message.success(
+            onlyMessage(
               intl.formatMessage({
                 id: 'pages.data.option.success',
                 defaultMessage: '操作成功!',
@@ -195,7 +196,7 @@ const Instance = () => {
             );
             actionRef.current?.reload();
           } else {
-            message.error(intl.formatMessage({ id: 'pages.device.instance.deleteTip' }));
+            onlyMessage(intl.formatMessage({ id: 'pages.device.instance.deleteTip' }), 'error');
           }
         },
       }}
@@ -475,7 +476,7 @@ const Instance = () => {
               onConfirm: () => {
                 service.batchDeleteDevice(bindKeys).then((resp) => {
                   if (resp.status === 200) {
-                    message.success('操作成功');
+                    onlyMessage('操作成功');
                     actionRef.current?.reset?.();
                   }
                 });
@@ -498,7 +499,7 @@ const Instance = () => {
               onConfirm() {
                 service.batchUndeployDevice(bindKeys).then((resp) => {
                   if (resp.status === 200) {
-                    message.success('操作成功');
+                    onlyMessage('操作成功');
                     actionRef.current?.reset?.();
                   }
                 });
@@ -624,7 +625,7 @@ const Instance = () => {
                     } else {
                       await service.deployDevice(record.id);
                     }
-                    message.success(
+                    onlyMessage(
                       intl.formatMessage({
                         id: 'pages.data.option.success',
                         defaultMessage: '操作成功!',
@@ -661,7 +662,7 @@ const Instance = () => {
                   onConfirm: async () => {
                     if (record.state.value === 'notActive') {
                       await service.remove(record.id);
-                      message.success(
+                      onlyMessage(
                         intl.formatMessage({
                           id: 'pages.data.option.success',
                           defaultMessage: '操作成功!',
@@ -669,7 +670,10 @@ const Instance = () => {
                       );
                       actionRef.current?.reload();
                     } else {
-                      message.error(intl.formatMessage({ id: 'pages.device.instance.deleteTip' }));
+                      onlyMessage(
+                        intl.formatMessage({ id: 'pages.device.instance.deleteTip' }),
+                        'error',
+                      );
                     }
                   },
                 }}

+ 4 - 3
src/pages/device/Product/Detail/Access/AccessConfig/index.tsx

@@ -1,5 +1,5 @@
 import { useEffect, useState } from 'react';
-import { Col, message, Modal, Pagination, Row } from 'antd';
+import { Col, Modal, Pagination, Row } from 'antd';
 import { service } from '@/pages/link/AccessConfig';
 import { productModel } from '@/pages/device/Product';
 import SearchComponent from '@/components/SearchComponent';
@@ -10,6 +10,7 @@ import Service from '@/pages/device/Product/service';
 import AccessConfigCard from '@/components/ProTableCard/CardItems/AccessConfig';
 import { getMenuPathByCode } from '@/utils/menu';
 import PermissionButton from '@/components/PermissionButton';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   close: () => void;
@@ -101,7 +102,7 @@ const AccessConfig = (props: Props) => {
             service1.detail(productModel.current?.id || '').then((res) => {
               if (res.status === 200) {
                 productModel.current = { ...res.result };
-                message.success('操作成功!');
+                onlyMessage('操作成功!');
               }
               close();
             });
@@ -120,7 +121,7 @@ const AccessConfig = (props: Props) => {
             //   });
           }
         } else {
-          message.success('请选择接入方式');
+          onlyMessage('请选择接入方式', 'error');
         }
       }}
     >

+ 3 - 2
src/pages/device/Product/Detail/Access/index.tsx

@@ -1,4 +1,4 @@
-import { Badge, Button, Col, Empty, message, Row, Table, Tooltip } from 'antd';
+import { Badge, Button, Col, Empty, Row, Table, Tooltip } from 'antd';
 import { service } from '@/pages/link/AccessConfig';
 import { productModel, service as productService } from '@/pages/device/Product';
 import styles from './index.less';
@@ -14,6 +14,7 @@ import { createForm } from '@formily/core';
 import { QuestionCircleOutlined } from '@ant-design/icons';
 import TitleComponent from '@/components/TitleComponent';
 import usePermissions from '@/hooks/permission';
+import { onlyMessage } from '@/utils/util';
 
 const componentMap = {
   string: 'Input',
@@ -312,7 +313,7 @@ const Access = () => {
                     configuration: { ...values },
                   });
                   if (resp.status === 200) {
-                    message.success('操作成功!');
+                    onlyMessage('操作成功!');
                     if ((window as any).onTabSaveSuccess) {
                       if (resp.result) {
                         (window as any).onTabSaveSuccess(resp);

+ 4 - 4
src/pages/device/Product/Detail/PropertyImport/index.tsx

@@ -1,4 +1,4 @@
-import { Button, message, Modal, Space, Upload } from 'antd';
+import { Button, Modal, Space, Upload } from 'antd';
 import MetadataModel from '@/pages/device/components/Metadata/Base/model';
 import { FormItem, FormLayout, Radio } from '@formily/antd';
 import { createForm, onFieldValueChange } from '@formily/core';
@@ -9,7 +9,7 @@ import SystemConst from '@/utils/const';
 import Token from '@/utils/token';
 import { useParams } from 'umi';
 import { productModel, service } from '../..';
-import { downloadFile } from '@/utils/util';
+import { downloadFile, onlyMessage } from '@/utils/util';
 import type { DeviceMetadata, ProductItem } from '@/pages/device/Product/typings';
 import { Store } from 'jetlinks-store';
 import { asyncUpdateMedata, updateMetadata } from '@/pages/device/components/Metadata/metadata';
@@ -35,7 +35,7 @@ const NormalUpload = (props: any) => {
     // const resp = await service.update(_product);
     const resp = await asyncUpdateMedata(props.type, _data);
     if (resp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
       // 刷新物模型
 
       if (props.type === 'product') {
@@ -61,7 +61,7 @@ const NormalUpload = (props: any) => {
           }}
           onChange={async (info) => {
             if (info.file.status === 'done') {
-              message.success('上传成功');
+              onlyMessage('上传成功');
               const resp: any = info.file.response || { result: '' };
               await mergeMetadata(resp?.result);
               // service.importProductProperty(param.id, resp?.result).then((r) => {

+ 2 - 1
src/pages/device/Product/Detail/index.tsx

@@ -17,6 +17,7 @@ import MetadataMap from '@/pages/device/Instance/Detail/MetadataMap';
 import SystemConst from '@/utils/const';
 import { PermissionButton } from '@/components';
 import { QuestionCircleOutlined } from '@ant-design/icons';
+import { onlyMessage } from '@/utils/util';
 
 export const ModelEnum = {
   base: 'base',
@@ -128,7 +129,7 @@ const ProductDetail = observer(() => {
           });
         },
         error: async () => {
-          message.success('操作失败');
+          onlyMessage('操作失败', 'error');
         },
         complete: () => {
           setLoading(false);

+ 3 - 2
src/pages/device/Product/Save/index.tsx

@@ -3,9 +3,10 @@ import { service } from '@/pages/device/Product';
 import type { ProductItem } from '@/pages/device/Product/typings';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import { RadioCard, UploadImage } from '@/components';
-import { Col, Form, Input, message, Modal, Row, TreeSelect } from 'antd';
+import { Col, Form, Input, Modal, Row, TreeSelect } from 'antd';
 import { useRequest } from 'umi';
 import { debounce } from 'lodash';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   visible: boolean;
@@ -81,7 +82,7 @@ const Save = (props: Props) => {
       const res = await service.update(extraFormData);
       setLoading(false);
       if (res.status === 200) {
-        message.success('保存成功');
+        onlyMessage('保存成功');
         if (props.reload) {
           props.reload();
         }

+ 9 - 9
src/pages/device/Product/index.tsx

@@ -1,5 +1,5 @@
 import { PageContainer } from '@ant-design/pro-layout';
-import { Badge, Button, message, Space, Tooltip, Upload } from 'antd';
+import { Badge, Button, Space, Tooltip, Upload } from 'antd';
 import type { ProductItem } from '@/pages/device/Product/typings';
 import {
   DeleteOutlined,
@@ -22,7 +22,7 @@ import SearchComponent from '@/components/SearchComponent';
 import { getMenuPathByParams, MENUS_CODE } from '@/utils/menu';
 import { PermissionButton, ProTableCard } from '@/components';
 import ProductCard from '@/components/ProTableCard/CardItems/product';
-import { downloadObject } from '@/utils/util';
+import { downloadObject, onlyMessage } from '@/utils/util';
 import { service as categoryService } from '@/pages/device/Category';
 import { service as deptService } from '@/pages/system/Department';
 import { omit } from 'lodash';
@@ -93,7 +93,7 @@ const Product = observer(() => {
   const deleteItem = async (id: string) => {
     const response: any = await service.remove(id);
     if (response.status === 200) {
-      message.success(
+      onlyMessage(
         intl.formatMessage({
           id: 'pages.data.option.success',
           defaultMessage: '操作成功!',
@@ -184,7 +184,7 @@ const Product = observer(() => {
             defaultMessage: '产品',
           }),
         );
-        message.success('操作成功');
+        onlyMessage('操作成功');
       }}
     >
       <DownloadOutlined />
@@ -457,7 +457,7 @@ const Product = observer(() => {
               reader.onload = async (result) => {
                 const text = result.target?.result as string;
                 if (!file.type.includes('json')) {
-                  message.error('请上传json格式文件');
+                  onlyMessage('请上传json格式文件', 'error');
                   return false;
                 }
                 try {
@@ -465,17 +465,17 @@ const Product = observer(() => {
                   // 设置导入的产品状态为未发布
                   data.state = 0;
                   if (Array.isArray(data)) {
-                    message.error('请上传json格式文件');
+                    onlyMessage('请上传json格式文件', 'error');
                     return false;
                   }
                   const res = await service.update(data);
                   if (res.status === 200) {
-                    message.success('操作成功');
+                    onlyMessage('操作成功');
                     actionRef.current?.reload();
                   }
                   return true;
                 } catch {
-                  message.error('请上传json格式文件');
+                  onlyMessage('请上传json格式文件', 'error');
                 }
                 return true;
               };
@@ -541,7 +541,7 @@ const Product = observer(() => {
                       defaultMessage: '产品',
                     }),
                   );
-                  message.success('操作成功');
+                  onlyMessage('操作成功');
                 }}
               >
                 <DownloadOutlined />

+ 3 - 2
src/pages/device/components/Alarm/Edit/index.tsx

@@ -1,4 +1,4 @@
-import { Button, Drawer, message } from 'antd';
+import { Button, Drawer } from 'antd';
 import type { Field } from '@formily/core';
 import { createForm } from '@formily/core';
 import {
@@ -29,6 +29,7 @@ import Trigger from '@/components/AlarmEditor/Trigger';
 import Action from '@/components/AlarmEditor/Action';
 import { service } from '@/pages/device/components/Alarm';
 import { useParams } from 'umi';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   visible: boolean;
@@ -304,7 +305,7 @@ const EditAlarm = (props: Props) => {
         },
       };
       await service.saveAlarm(type, id, data);
-      message.success('保存成功');
+      onlyMessage('保存成功');
       props.close();
     }
   };

+ 3 - 2
src/pages/device/components/Alarm/Record/index.tsx

@@ -4,9 +4,10 @@ import ProTable from '@jetlinks/pro-table';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import { service } from '@/pages/device/components/Alarm';
 import { useParams } from 'umi';
-import { Input, message, Modal, Tag, Tooltip } from 'antd';
+import { Input, Modal, Tag, Tooltip } from 'antd';
 import { AuditOutlined, EyeOutlined } from '@ant-design/icons';
 import { useRef, useState } from 'react';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   type: 'device' | 'product';
@@ -126,7 +127,7 @@ const Record = (props: Props) => {
         onCancel={() => setVisible(false)}
         onOk={async () => {
           if (handleText === '') {
-            message.success('请填写处理结果');
+            onlyMessage('请填写处理结果', 'error');
           } else {
             const resp = await service.solve(id, handleText);
             if (resp.status === 200) {

+ 4 - 3
src/pages/device/components/Alarm/Setting/index.tsx

@@ -1,7 +1,7 @@
 import type { ProColumns } from '@jetlinks/pro-table';
 import ProTable, { ActionType } from '@jetlinks/pro-table';
 import type { AlarmSetting } from '@/pages/device/Product/typings';
-import { Button, message, Popconfirm, Space, Tooltip } from 'antd';
+import { Button, Popconfirm, Space, Tooltip } from 'antd';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import { useParams } from 'umi';
 import {
@@ -15,6 +15,7 @@ import {
 import Edit from '../Edit';
 import { useRef, useState } from 'react';
 import { service } from '@/pages/device/components/Alarm';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   type: 'product' | 'device';
@@ -31,7 +32,7 @@ const Setting = (props: Props) => {
   const action = async (id: string, ac: 'start' | 'stop') => {
     const resp = await service.action(id, ac);
     if (resp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
     }
     actionRef.current?.reload();
   };
@@ -123,7 +124,7 @@ const Setting = (props: Props) => {
           onConfirm={async () => {
             const resp = await service.remove(record.id);
             if (resp.status === 200) {
-              message.success('操作成功');
+              onlyMessage('操作成功');
             }
             actionRef.current?.reload();
           }}

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

@@ -52,6 +52,7 @@ import { InstanceModel } from '@/pages/device/Instance';
 import FRuleEditor from '@/components/FRuleEditor';
 import { action } from '@formily/reactive';
 import { asyncUpdateMedata, updateMetadata } from '../../metadata';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   type: 'product' | 'device';
@@ -1058,7 +1059,7 @@ const Edit = observer((props: Props) => {
         MetadataModel.item = {};
       }
     } else {
-      message.error('操作失败!');
+      onlyMessage('操作失败!', 'error');
     }
     setLoading(false);
   };

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

@@ -5,7 +5,6 @@ import { useParams } from 'umi';
 import DB from '@/db';
 import type { MetadataItem, MetadataType } from '@/pages/device/Product/typings';
 import MetadataMapping from './columns';
-import { message } from 'antd';
 import { DeleteOutlined, EditOutlined, ImportOutlined, PlusOutlined } from '@ant-design/icons';
 import Edit from './Edit';
 import { observer } from '@formily/react';
@@ -19,6 +18,7 @@ import { InstanceModel } from '@/pages/device/Instance';
 import { asyncUpdateMedata, removeMetadata } from '../metadata';
 import type { permissionType } from '@/hooks/permission';
 import { PermissionButton } from '@/components';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   type: MetadataType;
@@ -45,12 +45,12 @@ const BaseMetadata = observer((props: Props) => {
     const _currentData = removeMetadata(type, [record], typeMap.get(target), removeDB);
     const result = await asyncUpdateMedata(target, _currentData);
     if (result.status === 200) {
-      message.success('操作成功!');
+      onlyMessage('操作成功!');
       Store.set(SystemConst.REFRESH_METADATA_TABLE, true);
       MetadataModel.edit = false;
       MetadataModel.item = {};
     } else {
-      message.error('操作失败!');
+      onlyMessage('操作失败!', 'error');
     }
   };
 

+ 5 - 4
src/pages/device/components/Metadata/Import/index.tsx

@@ -1,4 +1,4 @@
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import { createSchemaField } from '@formily/react';
 import type { Field } from '@formily/core';
 import { createForm } from '@formily/core';
@@ -10,6 +10,7 @@ import { service } from '@/pages/device/Product';
 import { useParams } from 'umi';
 import { Store } from 'jetlinks-store';
 import SystemConst from '@/utils/const';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   visible: boolean;
@@ -183,17 +184,17 @@ const Import = (props: Props) => {
     if (data.metadata === 'alink') {
       service.convertMetadata('from', 'alink', data.import).subscribe({
         next: async (meta) => {
-          message.success('导入成功');
+          onlyMessage('导入成功');
           await service.modify(param.id, { metadata: JSON.stringify(meta) });
         },
         error: () => {
-          message.error('发生错误!');
+          onlyMessage('发生错误!', 'error');
         },
       });
     } else {
       const resp = await service.modify(param.id, { metadata: data[data.type] });
       if (resp.status === '200') {
-        message.success('导入成功');
+        onlyMessage('导入成功');
       }
     }
     Store.set(SystemConst.GET_METADATA, true);

+ 3 - 2
src/pages/device/components/Metadata/index.tsx

@@ -1,5 +1,5 @@
 import { observer } from '@formily/react';
-import { message, Space, Tabs } from 'antd';
+import { Space, Tabs } from 'antd';
 import BaseMetadata from './Base';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import Import from './Import';
@@ -15,6 +15,7 @@ import { Store } from 'jetlinks-store';
 import SystemConst from '@/utils/const';
 import { useParams } from 'umi';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   tabAction?: ReactNode;
@@ -38,7 +39,7 @@ const Metadata = observer((props: Props) => {
   const resetMetadata = async () => {
     const resp = await instanceService.deleteMetadata(params.id);
     if (resp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
       Store.set(SystemConst.REFRESH_DEVICE, true);
       setTimeout(() => {
         Store.set(SystemConst.REFRESH_METADATA_TABLE, true);

+ 6 - 18
src/pages/link/AccessConfig/Detail/Access/index.tsx

@@ -1,17 +1,4 @@
-import {
-  Badge,
-  Button,
-  Card,
-  Col,
-  Empty,
-  Form,
-  Input,
-  message,
-  Row,
-  Steps,
-  Table,
-  Tooltip,
-} from 'antd';
+import { Badge, Button, Card, Col, Empty, Form, Input, Row, Steps, Table, Tooltip } from 'antd';
 import { useEffect, useState } from 'react';
 import styles from './index.less';
 import { service } from '@/pages/link/AccessConfig';
@@ -23,6 +10,7 @@ import { InfoCircleOutlined } from '@ant-design/icons';
 import TitleComponent from '@/components/TitleComponent';
 import { PermissionButton } from '@/components';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   change: () => void;
@@ -121,7 +109,7 @@ const Access = (props: Props) => {
   const next = () => {
     if (current === 0) {
       if (!networkCurrent) {
-        message.error('请选择网络组件!');
+        onlyMessage('请选择网络组件!', 'error');
       } else {
         queryProcotolList(props.provider?.id);
         setCurrent(current + 1);
@@ -129,7 +117,7 @@ const Access = (props: Props) => {
     }
     if (current === 1) {
       if (!procotolCurrent) {
-        message.error('请选择消息协议!');
+        onlyMessage('请选择消息协议!', 'error');
       } else {
         service
           .getConfigView(procotolCurrent, ProcotoleMapping.get(props.provider?.id))
@@ -531,7 +519,7 @@ const Access = (props: Props) => {
                             })
                             .then((resp: any) => {
                               if (resp.status === 200) {
-                                message.success('操作成功!');
+                                onlyMessage('操作成功!');
                                 history.goBack();
                                 if ((window as any).onTabSaveSuccess) {
                                   (window as any).onTabSaveSuccess(resp);
@@ -551,7 +539,7 @@ const Access = (props: Props) => {
                             })
                             .then((resp: any) => {
                               if (resp.status === 200) {
-                                message.success('操作成功!');
+                                onlyMessage('操作成功!');
                                 history.goBack();
                                 if ((window as any).onTabSaveSuccess) {
                                   (window as any).onTabSaveSuccess(resp);

+ 3 - 2
src/pages/link/AccessConfig/Detail/Channel/index.tsx

@@ -1,4 +1,4 @@
-import { Button, Card, Col, Form, Input, message, Row } from 'antd';
+import { Button, Card, Col, Form, Input, Row } from 'antd';
 import { useEffect, useState } from 'react';
 import { service } from '@/pages/link/AccessConfig';
 import { ProcotoleMapping } from '../Cloud/Protocol';
@@ -6,6 +6,7 @@ import TitleComponent from '@/components/TitleComponent';
 import { getButtonPermission } from '@/utils/menu';
 import ReactMarkdown from 'react-markdown';
 import { useHistory } from 'umi';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   change: () => void;
@@ -87,7 +88,7 @@ const Media = (props: Props) => {
                       };
                       const resp: any = await service[!props.data?.id ? 'save' : 'update'](param);
                       if (resp.status === 200) {
-                        message.success('操作成功!');
+                        onlyMessage('操作成功!');
                         history.goBack();
                       }
                     } catch (errorInfo) {

+ 3 - 2
src/pages/link/AccessConfig/Detail/Cloud/Finish/index.tsx

@@ -1,11 +1,12 @@
 import { TitleComponent } from '@/components';
 import { getButtonPermission } from '@/utils/menu';
-import { Button, Col, Form, Input, message, Row } from 'antd';
+import { Button, Col, Form, Input, Row } from 'antd';
 import { service } from '@/pages/link/AccessConfig';
 import { useHistory } from 'umi';
 import { useEffect, useState } from 'react';
 import ReactMarkdown from 'react-markdown';
 import { ProcotoleMapping } from '../Protocol';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   prev: () => void;
@@ -79,7 +80,7 @@ const Finish = (props: Props) => {
                   };
                   const resp: any = await service[!props.data?.id ? 'save' : 'update'](param);
                   if (resp.status === 200) {
-                    message.success('操作成功!');
+                    onlyMessage('操作成功!');
                     history.goBack();
                     if ((window as any).onTabSaveSuccess) {
                       (window as any).onTabSaveSuccess(resp);

+ 3 - 3
src/pages/link/AccessConfig/Detail/Media/index.tsx

@@ -1,4 +1,4 @@
-import { Button, Card, Col, Form, Input, message, Row, Steps } from 'antd';
+import { Button, Card, Col, Form, Input, Row, Steps } from 'antd';
 import { useEffect, useState } from 'react';
 import styles from './index.less';
 import {
@@ -20,7 +20,7 @@ import { useLocation } from 'umi';
 import SipComponent from '@/components/SipComponent';
 import TitleComponent from '@/components/TitleComponent';
 import { InfoCircleOutlined } from '@ant-design/icons';
-import { testIP } from '@/utils/util';
+import { onlyMessage, testIP } from '@/utils/util';
 import { getButtonPermission } from '@/utils/menu';
 
 type LocationType = {
@@ -507,7 +507,7 @@ const Media = (props: Props) => {
                     resp = await service.save({ ...param });
                   }
                   if (resp.status === 200) {
-                    message.success('操作成功!');
+                    onlyMessage('操作成功!');
                     if (params.get('save')) {
                       if ((window as any).onTabSaveSuccess) {
                         if (resp.result) {

+ 6 - 5
src/pages/link/AccessConfig/index.tsx

@@ -2,7 +2,7 @@ import SearchComponent from '@/components/SearchComponent';
 import { getMenuPathByCode, MENUS_CODE } from '@/utils/menu';
 import { PageContainer } from '@ant-design/pro-layout';
 import type { ProColumns } from '@jetlinks/pro-table';
-import { Card, Col, message, Pagination, Row } from 'antd';
+import { Card, Col, Pagination, Row } from 'antd';
 import { useEffect, useState } from 'react';
 import { useHistory } from 'umi';
 import Service from './service';
@@ -11,6 +11,7 @@ import AccessConfigCard from '@/components/ProTableCard/CardItems/AccessConfig';
 import { PermissionButton, Empty } from '@/components';
 import { useDomFullHeight } from '@/hooks';
 import { Store } from 'jetlinks-store';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('gateway/device');
 
@@ -146,14 +147,14 @@ const AccessConfig = () => {
                           if (item.state.value !== 'disabled') {
                             service.shutDown(item.id).then((resp) => {
                               if (resp.status === 200) {
-                                message.success('操作成功!');
+                                onlyMessage('操作成功!');
                                 handleSearch(param);
                               }
                             });
                           } else {
                             service.startUp(item.id).then((resp) => {
                               if (resp.status === 200) {
-                                message.success('操作成功!');
+                                onlyMessage('操作成功!');
                                 handleSearch(param);
                               }
                             });
@@ -180,10 +181,10 @@ const AccessConfig = () => {
                         onConfirm: () => {
                           service.remove(item.id).then((resp: any) => {
                             if (resp.status === 200) {
-                              message.success('操作成功!');
+                              onlyMessage('操作成功!');
                               handleSearch(param);
                             } else {
-                              message.error(resp?.message || '操作失败');
+                              onlyMessage(resp?.message || '操作失败', 'error');
                             }
                           });
                         },

+ 4 - 3
src/pages/link/Certificate/Detail/components/CertificateFile/index.tsx

@@ -1,7 +1,8 @@
 import SystemConst from '@/utils/const';
 import Token from '@/utils/token';
+import { onlyMessage } from '@/utils/util';
 import { UploadOutlined } from '@ant-design/icons';
-import { Button, Input, message, Upload } from 'antd';
+import { Button, Input, Upload } from 'antd';
 import type { UploadChangeParam } from 'antd/lib/upload';
 import { useEffect, useState } from 'react';
 
@@ -23,14 +24,14 @@ const CertificateFile = (props: Props) => {
         file: { response },
       } = info;
       if (response.status === 200) {
-        message.success('上传成功');
+        onlyMessage('上传成功');
         setKeystoreBase64(response.result);
         if (props.onChange) {
           props.onChange(response.result);
         }
       }
     } else if (info.file.status === 'error') {
-      message.error(`${info.file.name} file upload failed.`);
+      onlyMessage(`${info.file.name} file upload failed.`, 'error');
     }
   };
 

+ 3 - 2
src/pages/link/Certificate/Detail/index.tsx

@@ -3,7 +3,7 @@ import usePermissions from '@/hooks/permission';
 import { PageContainer } from '@ant-design/pro-layout';
 import { Form, FormButtonGroup, FormItem } from '@formily/antd';
 import type { ISchema } from '@formily/json-schema';
-import { Card, Col, Input, message, Row } from 'antd';
+import { Card, Col, Input, Row } from 'antd';
 import { createSchemaField, observer } from '@formily/react';
 import { useEffect, useMemo } from 'react';
 import { createForm } from '@formily/core';
@@ -12,6 +12,7 @@ import Standard from './components/Standard';
 import { service } from '@/pages/link/Certificate';
 import { useParams } from 'umi';
 import './index.less';
+import { onlyMessage } from '@/utils/util';
 
 const Detail = observer(() => {
   const params = useParams<{ id: string }>();
@@ -146,7 +147,7 @@ const Detail = observer(() => {
                         ? await service.update(data)
                         : await service.save(data);
                       if (response.status === 200) {
-                        message.success('操作成功');
+                        onlyMessage('操作成功');
                         history.back();
                       }
                     }}

+ 3 - 2
src/pages/link/Certificate/index.tsx

@@ -2,7 +2,7 @@ import { PageContainer } from '@ant-design/pro-layout';
 import { useRef, useState } from 'react';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import ProTable from '@jetlinks/pro-table';
-import { message, Tooltip } from 'antd';
+import { Tooltip } from 'antd';
 import { DeleteOutlined, EditOutlined, PlusOutlined } from '@ant-design/icons';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import SearchComponent from '@/components/SearchComponent';
@@ -12,6 +12,7 @@ import { getMenuPathByParams, MENUS_CODE } from '@/utils/menu';
 import { history } from 'umi';
 import Service from '../service';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('network/certificate');
 
@@ -85,7 +86,7 @@ const Certificate = () => {
             title: '确认删除?',
             onConfirm: async () => {
               await service.remove(record.id);
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',

+ 3 - 2
src/pages/link/Channel/Modbus/Access/addPoint/index.tsx

@@ -1,6 +1,7 @@
-import { Col, Form, Input, InputNumber, message, Modal, Row, Select } from 'antd';
+import { Col, Form, Input, InputNumber, Modal, Row, Select } from 'antd';
 import { useEffect, useState } from 'react';
 import { service } from '@/pages/link/Channel/Modbus';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   data: any;
@@ -25,7 +26,7 @@ const AddPoint = (props: Props) => {
       })
       .then((res: any) => {
         if (res.status === 200) {
-          message.success('操作成功!');
+          onlyMessage('操作成功!');
           props.close();
         }
       });

+ 4 - 3
src/pages/link/Channel/Modbus/Access/bindDevice/index.tsx

@@ -1,10 +1,11 @@
 import { Modal } from '@/components';
 import SearchComponent from '@/components/SearchComponent';
 import ProTable, { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { Badge, message } from 'antd';
+import { Badge } from 'antd';
 import { useRef, useState } from 'react';
 import { service } from '@/pages/link/Channel/Modbus';
 import moment from 'moment';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   id: string;
@@ -61,12 +62,12 @@ const BindDevice = (props: Props) => {
     if (keys && keys.length !== 0) {
       service.bind(keys, props.id).then((res) => {
         if (res.status === 200) {
-          message.success('绑定成功');
+          onlyMessage('绑定成功');
           props.close();
         }
       });
     } else {
-      message.error('请勾选数据');
+      onlyMessage('请勾选数据', 'error');
     }
   };
 

+ 5 - 4
src/pages/link/Channel/Modbus/Access/index.tsx

@@ -1,7 +1,7 @@
 import PermissionButton from '@/components/PermissionButton';
 import { PageContainer } from '@ant-design/pro-layout';
 import ProTable, { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { Badge, Card, Empty, Input, message, Popconfirm, Tabs, Tooltip } from 'antd';
+import { Badge, Card, Empty, Input, Popconfirm, Tabs, Tooltip } from 'antd';
 import { useIntl, useLocation } from 'umi';
 import { useEffect, useRef, useState } from 'react';
 import {
@@ -20,6 +20,7 @@ import AddPoint from './addPoint';
 import useSendWebsocketMessage from '@/hooks/websocket/useSendWebsocketMessage';
 import { map } from 'rxjs/operators';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 const Access = () => {
   const intl = useIntl();
@@ -112,7 +113,7 @@ const Access = () => {
                 state: record.state?.value === 'enabled' ? 'disabled' : 'enabled',
               };
               await service.saveMetadataConfig(opcUaId, deviceId, item);
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',
@@ -150,7 +151,7 @@ const Access = () => {
             onConfirm: async () => {
               const resp: any = await service.removeMetadataConfig(record.id);
               if (resp.status === 200) {
-                message.success(
+                onlyMessage(
                   intl.formatMessage({
                     id: 'pages.data.option.success',
                     defaultMessage: '操作成功!',
@@ -307,7 +308,7 @@ const Access = () => {
                           onConfirm={() => {
                             service.unbind([item.id], opcUaId).then((res: any) => {
                               if (res.status === 200) {
-                                message.success('解绑成功');
+                                onlyMessage('解绑成功');
                                 getBindList(opcUaId);
                               }
                             });

+ 4 - 4
src/pages/link/Channel/Modbus/Save/index.tsx

@@ -5,8 +5,8 @@ import { Form, FormGrid, FormItem, Input, NumberPicker, Select } from '@formily/
 import type { ISchema } from '@formily/json-schema';
 import { service } from '@/pages/link/Channel/Modbus';
 import { Modal } from '@/components';
-import { message } from 'antd';
 import { useEffect } from 'react';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   data: any;
@@ -137,7 +137,7 @@ const Save = (props: Props) => {
         })
         .then((res: any) => {
           if (res.status === 200) {
-            message.success('保存成功');
+            onlyMessage('保存成功');
             props.close();
           }
         });
@@ -147,7 +147,7 @@ const Save = (props: Props) => {
           if (res.status === 200) {
             service.bind([props.device.id], res.result.id).then((resp: any) => {
               if (resp.status === 200) {
-                message.success('保存成功');
+                onlyMessage('保存成功');
                 props.close();
               }
             });
@@ -156,7 +156,7 @@ const Save = (props: Props) => {
       } else {
         service.save(value).then((res: any) => {
           if (res.status === 200) {
-            message.success('保存成功');
+            onlyMessage('保存成功');
             props.close();
           }
         });

+ 4 - 3
src/pages/link/Channel/Modbus/index.tsx

@@ -1,6 +1,6 @@
 import { PageContainer } from '@ant-design/pro-layout';
 import ProTable, { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { Badge, Card, Col, message, Row } from 'antd';
+import { Badge, Card, Col, Row } from 'antd';
 import styles from './index.less';
 import { PermissionButton } from '@/components';
 import { history, useIntl } from 'umi';
@@ -18,6 +18,7 @@ import Service from './service';
 import Save from './Save';
 import { getMenuPathByCode } from '@/utils/menu';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('modbus/master');
 
@@ -123,7 +124,7 @@ const Modbus = () => {
                   state: 'disabled',
                 });
               }
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',
@@ -166,7 +167,7 @@ const Modbus = () => {
             onConfirm: async () => {
               const resp: any = await service.remove(record.id);
               if (resp.status === 200) {
-                message.success(
+                onlyMessage(
                   intl.formatMessage({
                     id: 'pages.data.option.success',
                     defaultMessage: '操作成功!',

+ 6 - 5
src/pages/link/Channel/Opcua/Access/addPoint/index.tsx

@@ -1,7 +1,8 @@
-import { Col, Form, Input, InputNumber, message, Modal, Radio, Row, Select } from 'antd';
+import { Col, Form, Input, InputNumber, Modal, Radio, Row, Select } from 'antd';
 import { useEffect, useState } from 'react';
 import { service } from '@/pages/link/Channel/Opcua';
 import { DataTypeList } from '@/pages/device/data';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   data: any;
@@ -37,7 +38,7 @@ const AddPoint = (props: Props) => {
           )
           .then((res) => {
             if (res.status === 200) {
-              message.success('保存成功');
+              onlyMessage('保存成功');
               props.close();
             }
           });
@@ -54,7 +55,7 @@ const AddPoint = (props: Props) => {
           )
           .then((res) => {
             if (res.status === 200) {
-              message.success('保存成功');
+              onlyMessage('保存成功');
               props.close();
             }
           });
@@ -75,7 +76,7 @@ const AddPoint = (props: Props) => {
           })
           .then((res) => {
             if (res.status === 200) {
-              message.success('保存成功');
+              onlyMessage('保存成功');
               props.close();
             }
           });
@@ -89,7 +90,7 @@ const AddPoint = (props: Props) => {
           })
           .then((res) => {
             if (res.status === 200) {
-              message.success('保存成功');
+              onlyMessage('保存成功');
               props.close();
             }
           });

+ 4 - 3
src/pages/link/Channel/Opcua/Access/bindDevice/index.tsx

@@ -1,10 +1,11 @@
 import { Modal } from '@/components';
 import SearchComponent from '@/components/SearchComponent';
 import ProTable, { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { Badge, message } from 'antd';
+import { Badge } from 'antd';
 import { useEffect, useRef, useState } from 'react';
 import { service } from '@/pages/link/Channel/Opcua';
 import moment from 'moment';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   id: string;
@@ -67,12 +68,12 @@ const BindDevice = (props: Props) => {
       }));
       service.bind(params).then((res) => {
         if (res.status === 200) {
-          message.success('绑定成功');
+          onlyMessage('绑定成功');
           props.close();
         }
       });
     } else {
-      message.error('请勾选数据');
+      onlyMessage('请勾选数据', 'error');
     }
   };
 

+ 5 - 4
src/pages/link/Channel/Opcua/Access/index.tsx

@@ -1,7 +1,7 @@
 import PermissionButton from '@/components/PermissionButton';
 import { PageContainer } from '@ant-design/pro-layout';
 import ProTable, { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { Badge, Card, Empty, Input, message, Popconfirm, Tabs, Tooltip } from 'antd';
+import { Badge, Card, Empty, Input, Popconfirm, Tabs, Tooltip } from 'antd';
 import { useIntl, useLocation } from 'umi';
 import { useEffect, useRef, useState } from 'react';
 import {
@@ -20,6 +20,7 @@ import AddPoint from './addPoint';
 import useSendWebsocketMessage from '@/hooks/websocket/useSendWebsocketMessage';
 import { map } from 'rxjs/operators';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 const Access = () => {
   const intl = useIntl();
@@ -119,7 +120,7 @@ const Access = () => {
               } else {
                 await service.stopPoint(bindDeviceId, [record.id]);
               }
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',
@@ -157,7 +158,7 @@ const Access = () => {
             onConfirm: async () => {
               const resp: any = await service.deletePoint(record.id);
               if (resp.status === 200) {
-                message.success(
+                onlyMessage(
                   intl.formatMessage({
                     id: 'pages.data.option.success',
                     defaultMessage: '操作成功!',
@@ -308,7 +309,7 @@ const Access = () => {
                           onConfirm={() => {
                             service.unbind([item.deviceId], opcUaId).then((res: any) => {
                               if (res.status === 200) {
-                                message.success('解绑成功');
+                                onlyMessage('解绑成功');
                                 getBindList(
                                   encodeQuery({
                                     terms: {

+ 4 - 4
src/pages/link/Channel/Opcua/Save/index.tsx

@@ -5,11 +5,11 @@ import { Form, FormGrid, FormItem, Input, Select } from '@formily/antd';
 import type { ISchema } from '@formily/json-schema';
 import { service } from '@/pages/link/Channel/Opcua';
 import { Modal } from '@/components';
-import { message } from 'antd';
 import { useMemo } from 'react';
 import { action } from '@formily/reactive';
 import type { Response } from '@/utils/typings';
 import type { Field } from '@formily/core';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   data: Partial<OpaUa>;
@@ -237,7 +237,7 @@ const Save = (props: Props) => {
     if (props.data.id) {
       service.modify(props.data.id, item).then((res: any) => {
         if (res.status === 200) {
-          message.success('保存成功');
+          onlyMessage('保存成功');
           props.close();
         }
       });
@@ -254,7 +254,7 @@ const Save = (props: Props) => {
             };
             service.bind(params).then((resp) => {
               if (resp.status === 200) {
-                message.success('保存成功');
+                onlyMessage('保存成功');
                 props.close();
               }
             });
@@ -263,7 +263,7 @@ const Save = (props: Props) => {
       } else {
         service.save(item).then((res: any) => {
           if (res.status === 200) {
-            message.success('保存成功');
+            onlyMessage('保存成功');
             props.close();
           }
         });

+ 5 - 4
src/pages/link/Channel/Opcua/index.tsx

@@ -1,6 +1,6 @@
 import { PageContainer } from '@ant-design/pro-layout';
 import ProTable, { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { Badge, Card, Col, message, Row } from 'antd';
+import { Badge, Card, Col, Row } from 'antd';
 import styles from './index.less';
 import { PermissionButton } from '@/components';
 import { history, useIntl } from 'umi';
@@ -18,6 +18,7 @@ import Service from './service';
 import Save from './Save';
 import { getMenuPathByCode } from '@/utils/menu';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('opc/client');
 
@@ -119,7 +120,7 @@ const Opcua = () => {
               if (record.state.value === 'disabled') {
                 const res = await service.enable(record.id);
                 if (res.status === 200) {
-                  message.success(
+                  onlyMessage(
                     intl.formatMessage({
                       id: 'pages.data.option.success',
                       defaultMessage: '操作成功!',
@@ -130,7 +131,7 @@ const Opcua = () => {
               } else {
                 const res = await service.disable(record.id);
                 if (res.status === 200) {
-                  message.success(
+                  onlyMessage(
                     intl.formatMessage({
                       id: 'pages.data.option.success',
                       defaultMessage: '操作成功!',
@@ -175,7 +176,7 @@ const Opcua = () => {
             onConfirm: async () => {
               const resp: any = await service.remove(record.id);
               if (resp.status === 200) {
-                message.success(
+                onlyMessage(
                   intl.formatMessage({
                     id: 'pages.data.option.success',
                     defaultMessage: '操作成功!',

+ 5 - 5
src/pages/link/Gateway/index.tsx

@@ -2,7 +2,7 @@ import { PageContainer } from '@ant-design/pro-layout';
 import type { GatewayItem } from '@/pages/link/Gateway/typings';
 import { useRef } from 'react';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { message, Popconfirm, Tooltip } from 'antd';
+import { Popconfirm, Tooltip } from 'antd';
 import {
   EditOutlined,
   MinusOutlined,
@@ -19,7 +19,7 @@ import { CurdModel } from '@/components/BaseCrud/model';
 import type { Field, FormPathPattern } from '@formily/core';
 import { onFieldReact, onFieldValueChange } from '@formily/core';
 import { action } from '@formily/reactive';
-import { useAsyncDataSource } from '@/utils/util';
+import { onlyMessage, useAsyncDataSource } from '@/utils/util';
 
 export const service = new Service('gateway/device');
 
@@ -30,9 +30,9 @@ const Gateway = () => {
   const handleAction = async (id: string, type: 'shutdown' | 'startup' | 'pause') => {
     const resp = await service.action(id, type);
     if (resp.status === 200) {
-      message.success('操作成功!');
+      onlyMessage('操作成功!');
     } else {
-      message.error('操作失败');
+      onlyMessage('操作失败', 'error');
     }
     actionRef.current?.reload();
   };
@@ -132,7 +132,7 @@ const Gateway = () => {
             <Popconfirm
               onConfirm={async () => {
                 await service.remove(record.id);
-                message.success(
+                onlyMessage(
                   intl.formatMessage({
                     id: 'pages.data.option.success',
                     defaultMessage: '操作成功!',

+ 3 - 2
src/pages/link/Protocol/FileUpload/index.tsx

@@ -2,8 +2,9 @@ import SystemConst from '@/utils/const';
 import Token from '@/utils/token';
 import { useState } from 'react';
 import { connect } from '@formily/react';
-import { Button, Input, message, Spin, Upload } from 'antd';
+import { Button, Input, Spin, Upload } from 'antd';
 import type { UploadChangeParam } from 'antd/lib/upload/interface';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   value: string;
@@ -18,7 +19,7 @@ const FileUpload = connect((props: Props) => {
   const handleChange = (info: UploadChangeParam) => {
     setLoading(true);
     if (info.file.status === 'done') {
-      message.success('上传成功!');
+      onlyMessage('上传成功!');
       info.file.url = info.file.response?.result;
       setUrl(info.file.response?.result);
       setLoading(false);

+ 8 - 7
src/pages/link/Protocol/index.tsx

@@ -1,7 +1,7 @@
 import { PageContainer } from '@ant-design/pro-layout';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import type { ProtocolItem } from '@/pages/link/Protocol/typings';
-import { Badge, message } from 'antd';
+import { Badge } from 'antd';
 import { useEffect, useRef, useState } from 'react';
 import {
   DeleteOutlined,
@@ -16,6 +16,7 @@ import SearchComponent from '@/components/SearchComponent';
 import { PermissionButton, ProTableCard } from '@/components';
 import ProcotolCard from '@/components/ProTableCard/CardItems/protocol';
 import Save from './save';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('protocol');
 
@@ -30,9 +31,9 @@ const Protocol = () => {
   const modifyState = async (id: string, type: 'deploy' | 'un-deploy') => {
     const resp = await service.modifyState(id, type);
     if (resp.status === 200) {
-      message.success('操作成功!');
+      onlyMessage('操作成功!');
     } else {
-      message.error(resp?.message || '操作失败');
+      onlyMessage(resp?.message || '操作失败', 'error');
     }
     actionRef.current?.reload();
   };
@@ -153,7 +154,7 @@ const Protocol = () => {
             onConfirm: async () => {
               const resp: any = await service.remove(record.id);
               if (resp.status === 200) {
-                message.success(
+                onlyMessage(
                   intl.formatMessage({
                     id: 'pages.data.option.success',
                     defaultMessage: '操作成功!',
@@ -161,7 +162,7 @@ const Protocol = () => {
                 );
                 actionRef.current?.reload();
               } else {
-                message.error(resp?.message || '操作失败');
+                onlyMessage(resp?.message || '操作失败', 'error');
               }
             },
           }}
@@ -288,7 +289,7 @@ const Protocol = () => {
                   onConfirm: async () => {
                     const resp: any = await service.remove(record.id);
                     if (resp.status === 200) {
-                      message.success(
+                      onlyMessage(
                         intl.formatMessage({
                           id: 'pages.data.option.success',
                           defaultMessage: '操作成功!',
@@ -296,7 +297,7 @@ const Protocol = () => {
                       );
                       actionRef.current?.reload();
                     } else {
-                      message.error(resp?.message || '操作失败');
+                      onlyMessage(resp?.message || '操作失败', 'error');
                     }
                   },
                 }}

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

@@ -17,9 +17,9 @@ import type { ISchema } from '@formily/json-schema';
 import { useEffect, useMemo, useRef } from 'react';
 import type { Field } from '@formily/core';
 import { createForm, onFieldReact, onFieldValueChange } from '@formily/core';
-import { Card, message } from 'antd';
+import { Card } from 'antd';
 import styles from './index.less';
-import { useAsyncDataSource } from '@/utils/util';
+import { onlyMessage, useAsyncDataSource } from '@/utils/util';
 import { service } from '../index';
 import _ from 'lodash';
 import FAutoComplete from '@/components/FAutoComplete';
@@ -714,7 +714,7 @@ const Save = observer(() => {
     }
     const response: any = data.id ? await service.update(data) : await service.save(data);
     if (response.status === 200) {
-      message.success('保存成功');
+      onlyMessage('保存成功');
       history.back();
       if ((window as any).onTabSaveSuccess) {
         if (response.result?.id) {

+ 6 - 5
src/pages/link/Type/index.tsx

@@ -1,6 +1,6 @@
 import { useRef, useState } from 'react';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { Badge, message, Popconfirm, Tooltip } from 'antd';
+import { Badge, Popconfirm, Tooltip } from 'antd';
 import {
   CloseCircleOutlined,
   DeleteOutlined,
@@ -19,6 +19,7 @@ import { Store } from 'jetlinks-store';
 import { PermissionButton, ProTableCard } from '@/components';
 import NetworkCard from '@/components/ProTableCard/CardItems/networkCard';
 import usePermissions from '@/hooks/permission';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('network/config');
 
@@ -185,7 +186,7 @@ const Network = () => {
                 enabled: 'shutdown',
               };
               await service.changeState(record.id, map[record.state.value]);
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',
@@ -219,7 +220,7 @@ const Network = () => {
             onConfirm={async () => {
               const response: any = await service.remove(record.id);
               if (response.status === 200) {
-                message.success('删除成功');
+                onlyMessage('删除成功');
                 actionRef.current?.reload();
               }
             }}
@@ -305,7 +306,7 @@ const Network = () => {
                       enabled: 'shutdown',
                     };
                     await service.changeState(record.id, map[record.state.value]);
-                    message.success(
+                    onlyMessage(
                       intl.formatMessage({
                         id: 'pages.data.option.success',
                         defaultMessage: '操作成功!',
@@ -342,7 +343,7 @@ const Network = () => {
                   onConfirm={async () => {
                     const response: any = await service.remove(record.id);
                     if (response.status === 200) {
-                      message.success('删除成功');
+                      onlyMessage('删除成功');
                       actionRef.current?.reload();
                     }
                   }}

+ 4 - 3
src/pages/media/Cascade/Channel/BindChannel/index.tsx

@@ -1,11 +1,12 @@
 import SearchComponent from '@/components/SearchComponent';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import ProTable from '@jetlinks/pro-table';
-import { message, Modal, Space } from 'antd';
+import { Modal, Space } from 'antd';
 import { useRef, useState } from 'react';
 import { service } from '@/pages/media/Cascade';
 import { useIntl } from 'umi';
 import BadgeStatus, { StatusColorEnum } from '@/components/BadgeStatus';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   data: string;
@@ -85,11 +86,11 @@ const BindChannel = (props: Props) => {
         if (selectedRowKey.length > 0) {
           const resp = await service.bindChannel(props.data, selectedRowKey);
           if (resp.status === 200) {
-            message.success('操作成功!');
+            onlyMessage('操作成功!');
             props.close();
           }
         } else {
-          message.error('请勾选数据');
+          onlyMessage('请勾选数据', 'error');
         }
       }}
       width={1200}

+ 6 - 5
src/pages/media/Cascade/Channel/index.tsx

@@ -4,13 +4,14 @@ import { CloseOutlined, DisconnectOutlined, EditOutlined } from '@ant-design/ico
 import { PageContainer } from '@ant-design/pro-layout';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import ProTable from '@jetlinks/pro-table';
-import { Button, Input, message, Popover, Space } from 'antd';
+import { Button, Input, Popover, Space } from 'antd';
 import { useRef, useState } from 'react';
 import { useIntl, useLocation } from 'umi';
 import BindChannel from './BindChannel';
 import BadgeStatus, { StatusColorEnum } from '@/components/BadgeStatus';
 import { PermissionButton } from '@/components';
 import { useDomFullHeight } from '@/hooks';
+import { onlyMessage } from '@/utils/util';
 
 const Channel = () => {
   const location: any = useLocation();
@@ -29,7 +30,7 @@ const Channel = () => {
     const resp = await service.unbindChannel(id, list);
     if (resp.status === 200) {
       actionRef.current?.reload();
-      message.success('操作成功!');
+      onlyMessage('操作成功!');
       if (list.length === 1) {
         const index = selectedRowKey.indexOf(list[0]);
         const dt = [...selectedRowKey];
@@ -58,12 +59,12 @@ const Channel = () => {
                 gbChannelId: data,
               });
               if (resp.status === 200) {
-                message.success('操作成功');
+                onlyMessage('操作成功');
                 actionRef.current?.reload();
                 setPopvisible('');
               }
             } else {
-              message.error('请输入国标ID');
+              onlyMessage('请输入国标ID', 'error');
             }
           }}
         >
@@ -265,7 +266,7 @@ const Channel = () => {
                   unbind(selectedRowKey);
                   setSelectedRowKey([]);
                 } else {
-                  message.error('请先选择需要解绑的通道列表');
+                  onlyMessage('请先选择需要解绑的通道列表', 'error');
                 }
               },
             }}

+ 3 - 15
src/pages/media/Cascade/Save/index.tsx

@@ -1,22 +1,10 @@
 import TitleComponent from '@/components/TitleComponent';
 import { QuestionCircleOutlined } from '@ant-design/icons';
 import { PageContainer } from '@ant-design/pro-layout';
-import {
-  Button,
-  Card,
-  Col,
-  Form,
-  Input,
-  InputNumber,
-  message,
-  Radio,
-  Row,
-  Select,
-  Tooltip,
-} from 'antd';
+import { Button, Card, Col, Form, Input, InputNumber, Radio, Row, Select, Tooltip } from 'antd';
 import SipComponent from '@/components/SipComponent';
 import SipSelectComponent from '@/components/SipSelectComponent';
-import { testIP } from '@/utils/util';
+import { onlyMessage, testIP } from '@/utils/util';
 import { useEffect, useState } from 'react';
 import { service } from '../index';
 import { useLocation } from 'umi';
@@ -135,7 +123,7 @@ const Save = () => {
               resp = await service.save(param);
             }
             if (resp && resp.status === 200) {
-              message.success('操作成功!');
+              onlyMessage('操作成功!');
               history.back();
             }
           }}

+ 6 - 5
src/pages/media/Cascade/index.tsx

@@ -1,7 +1,7 @@
 import { PageContainer } from '@ant-design/pro-layout';
 import { useRef, useState } from 'react';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { Badge, message } from 'antd';
+import { Badge } from 'antd';
 import {
   DeleteOutlined,
   EditOutlined,
@@ -21,6 +21,7 @@ import { useHistory } from 'umi';
 import Service from './service';
 import Publish from './Publish';
 import { lastValueFrom } from 'rxjs';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('media/gb28181-cascade');
 
@@ -91,7 +92,7 @@ const Cascade = () => {
             resp = await service.disabled(record.id);
           }
           if (resp?.status === 200) {
-            message.success('操作成功!');
+            onlyMessage('操作成功!');
             actionRef.current?.reset?.();
           }
         },
@@ -113,7 +114,7 @@ const Cascade = () => {
         onConfirm: async () => {
           const resp: any = await service.remove(record.id);
           if (resp.status === 200) {
-            message.success('操作成功!');
+            onlyMessage('操作成功!');
             actionRef.current?.reset?.();
           }
         },
@@ -271,7 +272,7 @@ const Cascade = () => {
                 resp = await service.disabled(record.id);
               }
               if (resp?.status === 200) {
-                message.success('操作成功!');
+                onlyMessage('操作成功!');
                 actionRef.current?.reset?.();
               }
             },
@@ -295,7 +296,7 @@ const Cascade = () => {
             onConfirm: async () => {
               const resp: any = await service.remove(record.id);
               if (resp.status === 200) {
-                message.success('操作成功!');
+                onlyMessage('操作成功!');
                 actionRef.current?.reset?.();
               }
             },

+ 4 - 3
src/pages/media/Device/Channel/Save.tsx

@@ -2,11 +2,12 @@
 import { createForm } from '@formily/core';
 import { createSchemaField } from '@formily/react';
 import { Form, FormGrid, FormItem, FormTab, Input, Select } from '@formily/antd';
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import type { ISchema } from '@formily/json-schema';
 import { useEffect, useState } from 'react';
 import { ProviderValue } from '../index';
+import { onlyMessage } from '@/utils/util';
 
 interface SaveModalProps {
   visible: boolean;
@@ -203,13 +204,13 @@ const Save = (props: SaveModalProps) => {
       setLoading(false);
 
       if (resp.status === 200) {
-        message.success('操作成功');
+        onlyMessage('操作成功');
         modalClose();
         if (props.onReload) {
           props.onReload();
         }
       } else {
-        message.error('操作失败');
+        onlyMessage('操作失败', 'error');
       }
     }
   };

+ 4 - 3
src/pages/media/Device/Save/index.tsx

@@ -1,5 +1,5 @@
 import { useCallback, useEffect, useState } from 'react';
-import { Button, Col, Form, Input, message, Modal, Radio, Row, Select, Tooltip } from 'antd';
+import { Button, Col, Form, Input, Modal, Radio, Row, Select, Tooltip } from 'antd';
 import { useIntl } from 'umi';
 import { RadioCard, UploadImage } from '@/components';
 import { PlusOutlined } from '@ant-design/icons';
@@ -7,6 +7,7 @@ import { service } from '../index';
 import SaveProductModal from './SaveProduct';
 import type { DeviceItem } from '../typings';
 import { getButtonPermission } from '@/utils/menu';
+import { onlyMessage } from '@/utils/util';
 
 interface SaveProps {
   visible: boolean;
@@ -82,9 +83,9 @@ export default (props: SaveProps) => {
         }
         form.resetFields();
         close();
-        message.success('操作成功');
+        onlyMessage('操作成功');
       } else {
-        message.error('操作失败');
+        onlyMessage('操作失败', 'error');
       }
     }
   }, [props.model, oldPassword]);

+ 7 - 6
src/pages/media/Device/index.tsx

@@ -2,7 +2,7 @@
 import { PageContainer } from '@ant-design/pro-layout';
 import { useEffect, useRef, useState } from 'react';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { Button, message, Tooltip } from 'antd';
+import { Button, Tooltip } from 'antd';
 import {
   DeleteOutlined,
   EditOutlined,
@@ -21,6 +21,7 @@ import MediaDevice from '@/components/ProTableCard/CardItems/mediaDevice';
 import { getMenuPathByCode, getMenuPathByParams, MENUS_CODE } from '@/utils/menu';
 import Service from './service';
 import Save from './Save';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('media/device');
 
@@ -62,7 +63,7 @@ const Device = () => {
   const deleteItem = async (id: string) => {
     const response: any = await service.remove(id);
     if (response.status === 200) {
-      message.success(
+      onlyMessage(
         intl.formatMessage({
           id: 'pages.data.option.success',
           defaultMessage: '操作成功!',
@@ -80,9 +81,9 @@ const Device = () => {
     const resp = await service.updateChannels(id);
     if (resp.status === 200) {
       actionRef.current?.reload();
-      message.success('通道更新成功');
+      onlyMessage('通道更新成功');
     } else {
-      message.error('通道更新失败');
+      onlyMessage('通道更新失败', 'error');
     }
   };
 
@@ -281,7 +282,7 @@ const Device = () => {
               if (record.state.value !== 'offline') {
                 await deleteItem(record.id);
               } else {
-                message.error('在线设备不能进行删除操作');
+                onlyMessage('在线设备不能进行删除操作', 'error');
               }
             },
           }}
@@ -421,7 +422,7 @@ const Device = () => {
                     if (record.state.value === 'offline') {
                       await deleteItem(record.id);
                     } else {
-                      message.error('在线设备不能进行删除操作');
+                      onlyMessage('在线设备不能进行删除操作', 'error');
                     }
                   },
                 }}

+ 3 - 15
src/pages/media/Stream/Detail/index.tsx

@@ -1,23 +1,11 @@
 import { PageContainer } from '@ant-design/pro-layout';
-import {
-  Button,
-  Card,
-  Checkbox,
-  Col,
-  Form,
-  Input,
-  InputNumber,
-  message,
-  Row,
-  Select,
-  Tooltip,
-} from 'antd';
+import { Button, Card, Checkbox, Col, Form, Input, InputNumber, Row, Select, Tooltip } from 'antd';
 import { useEffect, useState } from 'react';
 import { service, StreamModel } from '@/pages/media/Stream';
 import { useParams } from 'umi';
 import { QuestionCircleOutlined } from '@ant-design/icons';
 import SipComponent from '@/components/SipComponent';
-import { testIP } from '@/utils/util';
+import { onlyMessage, testIP } from '@/utils/util';
 
 interface RTPComponentProps {
   onChange?: (data: any) => void;
@@ -269,7 +257,7 @@ const Detail = () => {
               resp = await service.save(param);
             }
             if (resp && resp.status === 200) {
-              message.success('操作成功!');
+              onlyMessage('操作成功!');
               history.back();
             }
           }}

+ 3 - 2
src/pages/media/Stream/index.tsx

@@ -1,7 +1,7 @@
 import { PageContainer } from '@ant-design/pro-layout';
 import SearchComponent from '@/components/SearchComponent';
 import type { ProColumns } from '@jetlinks/pro-table';
-import { Button, Card, Col, Empty, message, Pagination, Row } from 'antd';
+import { Button, Card, Col, Empty, Pagination, Row } from 'antd';
 import { useEffect, useState } from 'react';
 import Service from '@/pages/media/Stream/service';
 import { getButtonPermission, getMenuPathByParams, MENUS_CODE } from '@/utils/menu';
@@ -11,6 +11,7 @@ import { model } from '@formily/reactive';
 import { PermissionButton } from '@/components';
 import { useDomFullHeight } from '@/hooks';
 import StreamCard from '@/components/ProTableCard/CardItems/Stream';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('media/server');
 
@@ -118,7 +119,7 @@ const Stream = () => {
                           onConfirm: () => {
                             service.remove(item.id).then((resp: any) => {
                               if (resp.status === 200) {
-                                message.success('操作成功!');
+                                onlyMessage('操作成功!');
                                 handleSearch({ pageSize: 10, terms: [] });
                               }
                             });

+ 3 - 2
src/pages/notice/Config/BindUser/index.tsx

@@ -1,9 +1,10 @@
 import { createForm } from '@formily/core';
 import { createSchemaField } from '@formily/react';
 import { Form, FormItem, Select } from '@formily/antd';
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import { service, state } from '..';
 import { useEffect, useState } from 'react';
+import { onlyMessage } from '@/utils/util';
 
 interface Props {
   close: () => void;
@@ -96,7 +97,7 @@ const BindUser = (props: Props) => {
           ],
         );
         if (resp.status === 200) {
-          message.success('操作成功!');
+          onlyMessage('操作成功!');
           props.reload();
         }
       }}

+ 3 - 3
src/pages/notice/Config/Debug/index.tsx

@@ -1,4 +1,4 @@
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import { useMemo } from 'react';
 import { createForm, Field, onFieldReact, onFieldValueChange } from '@formily/core';
 import { createSchemaField, observer } from '@formily/react';
@@ -15,7 +15,7 @@ import {
 import { ISchema } from '@formily/json-schema';
 import { service, state } from '@/pages/notice/Config';
 import { useLocation } from 'umi';
-import { useAsyncDataSource } from '@/utils/util';
+import { onlyMessage, useAsyncDataSource } from '@/utils/util';
 import { Store } from 'jetlinks-store';
 import FUpload from '@/components/Upload';
 
@@ -181,7 +181,7 @@ const Debug = observer(() => {
       ),
     });
     if (resp.status === 200) {
-      message.success('操作成功!');
+      onlyMessage('操作成功!');
     }
   };
   return (

+ 3 - 3
src/pages/notice/Config/Detail/index.tsx

@@ -1,6 +1,6 @@
 import { PageContainer } from '@ant-design/pro-layout';
 import { createForm, onFieldValueChange } from '@formily/core';
-import { Card, Col, Input, message, Row } from 'antd';
+import { Card, Col, Input, Row } from 'antd';
 import { ISchema } from '@formily/json-schema';
 import { useEffect, useMemo, useState } from 'react';
 import { createSchemaField, observer } from '@formily/react';
@@ -20,7 +20,7 @@ import {
 } from '@formily/antd';
 import styles from './index.less';
 import { service, state } from '@/pages/notice/Config';
-import { useAsyncDataSource } from '@/utils/util';
+import { onlyMessage, useAsyncDataSource } from '@/utils/util';
 import { useParams } from 'umi';
 import { typeList } from '@/pages/notice';
 import FUpload from '@/components/Upload';
@@ -571,7 +571,7 @@ const Detail = observer(() => {
     }
 
     if (response?.status === 200) {
-      message.success('保存成功');
+      onlyMessage('保存成功');
       history.back();
     }
   };

+ 4 - 15
src/pages/notice/Config/SyncUser/index.tsx

@@ -1,16 +1,4 @@
-import {
-  Badge,
-  Button,
-  Col,
-  Input,
-  message,
-  Modal,
-  Popconfirm,
-  Row,
-  Spin,
-  Tooltip,
-  Tree,
-} from 'antd';
+import { Badge, Button, Col, Input, Modal, Popconfirm, Row, Spin, Tooltip, Tree } from 'antd';
 import { observer } from '@formily/react';
 import { service, state } from '..';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
@@ -19,6 +7,7 @@ import { useEffect, useRef, useState } from 'react';
 import { history, useLocation } from 'umi';
 import { DisconnectOutlined, EditOutlined } from '@ant-design/icons';
 import BindUser from '../BindUser';
+import { onlyMessage } from '@/utils/util';
 
 const SyncUser = observer(() => {
   const [dept, setDept] = useState<string>();
@@ -83,7 +72,7 @@ const SyncUser = observer(() => {
                       bindingId: record.bindingId,
                     });
                     if (resp.status === 200) {
-                      message.success('操作成功!');
+                      onlyMessage('操作成功!');
                       actionRef.current?.reload();
                     }
                   }
@@ -233,7 +222,7 @@ const SyncUser = observer(() => {
                         [...arr],
                       );
                       if (resp.status === 200) {
-                        message.success('操作成功!');
+                        onlyMessage('操作成功!');
                         actionRef.current?.reload();
                       }
                     }}

+ 8 - 8
src/pages/notice/Config/index.tsx

@@ -11,10 +11,10 @@ import {
   TeamOutlined,
   UnorderedListOutlined,
 } from '@ant-design/icons';
-import { message, Space, Upload } from 'antd';
+import { Space, Upload } from 'antd';
 import { useRef, useState } from 'react';
 import { useIntl } from '@@/plugin-locale/localeExports';
-import { downloadObject } from '@/utils/util';
+import { downloadObject, onlyMessage } from '@/utils/util';
 import Service from '@/pages/notice/Config/service';
 import { observer } from '@formily/react';
 import SearchComponent from '@/components/SearchComponent';
@@ -173,7 +173,7 @@ const Config = observer(() => {
           popConfirm={{
             onConfirm: async () => {
               await service.remove(record.id);
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',
@@ -242,18 +242,18 @@ const Config = observer(() => {
                 reader.onload = async (result) => {
                   const text = result.target?.result as string;
                   if (!file.type.includes('json')) {
-                    message.warning('文件内容格式错误');
+                    onlyMessage('文件内容格式错误', 'warning');
                     return;
                   }
                   try {
                     const data = JSON.parse(text || '{}');
                     const res: any = await service.savePatch(data);
                     if (res.status === 200) {
-                      message.success('操作成功');
+                      onlyMessage('操作成功');
                       actionRef.current?.reload();
                     }
                   } catch {
-                    message.warning('文件内容格式错误');
+                    onlyMessage('文件内容格式错误', 'warning');
                   }
                 };
                 return false;
@@ -270,9 +270,9 @@ const Config = observer(() => {
                   const resp: any = await service.queryNoPagingPost({ ...param, paging: false });
                   if (resp.status === 200) {
                     downloadObject(resp.result, '通知配置数据');
-                    message.success('导出成功');
+                    onlyMessage('导出成功');
                   } else {
-                    message.error('导出错误');
+                    onlyMessage('导出错误', 'error');
                   }
                 },
               }}

+ 3 - 3
src/pages/notice/Template/Debug/index.tsx

@@ -1,4 +1,4 @@
-import { message, Modal } from 'antd';
+import { Modal } from 'antd';
 import { useEffect, useMemo, useRef } from 'react';
 import { createForm, Field, onFieldReact, onFieldValueChange } from '@formily/core';
 import { createSchemaField, observer } from '@formily/react';
@@ -15,7 +15,7 @@ import {
 import { ISchema } from '@formily/json-schema';
 import { configService, service, state } from '@/pages/notice/Template';
 import { useLocation } from 'umi';
-import { useAsyncDataSource } from '@/utils/util';
+import { onlyMessage, useAsyncDataSource } from '@/utils/util';
 import { Store } from 'jetlinks-store';
 import FUpload from '@/components/Upload';
 
@@ -251,7 +251,7 @@ const Debug = observer(() => {
       ),
     );
     if (resp.status === 200) {
-      message.success('操作成功!');
+      onlyMessage('操作成功!');
     }
   };
   return (

+ 3 - 3
src/pages/notice/Template/Detail/index.tsx

@@ -30,11 +30,11 @@ import { useEffect, useMemo, useRef, useState } from 'react';
 import FUpload from '@/components/Upload';
 import { useParams } from 'umi';
 import { PageContainer } from '@ant-design/pro-layout';
-import { Card, Col, message, Row } from 'antd';
+import { Card, Col, Row } from 'antd';
 import { typeList } from '@/pages/notice';
 import { configService, service, state } from '@/pages/notice/Template';
 import FBraftEditor from '@/components/FBraftEditor';
-import { useAsyncDataSource } from '@/utils/util';
+import { onlyMessage, useAsyncDataSource } from '@/utils/util';
 import WeixinCorp from '@/pages/notice/Template/Detail/doc/WeixinCorp';
 import WeixinApp from '@/pages/notice/Template/Detail/doc/WeixinApp';
 import DingTalk from '@/pages/notice/Template/Detail/doc/DingTalk';
@@ -457,7 +457,7 @@ const Detail = observer(() => {
     }
 
     if (response?.status === 200) {
-      message.success('保存成功');
+      onlyMessage('保存成功');
       history.back();
     }
   };

+ 7 - 7
src/pages/notice/Template/index.tsx

@@ -10,7 +10,7 @@ import {
   PlusOutlined,
   UnorderedListOutlined,
 } from '@ant-design/icons';
-import { message, Space, Upload } from 'antd';
+import { Space, Upload } from 'antd';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import Service from '@/pages/notice/Template/service';
 import ConfigService from '@/pages/notice/Config/service';
@@ -20,7 +20,7 @@ import { getMenuPathByParams, MENUS_CODE } from '@/utils/menu';
 import { model } from '@formily/reactive';
 import Debug from './Debug';
 import Log from '@/pages/notice/Template/Log';
-import { downloadObject } from '@/utils/util';
+import { downloadObject, onlyMessage } from '@/utils/util';
 import moment from 'moment';
 import { PermissionButton, ProTableCard } from '@/components';
 import NoticeCard, { typeList } from '@/components/ProTableCard/CardItems/noticeTemplate';
@@ -255,18 +255,18 @@ const Template = observer(() => {
                 reader.onload = async (result) => {
                   const text = result.target?.result as string;
                   if (!file.type.includes('json')) {
-                    message.warning('文件内容格式错误');
+                    onlyMessage('文件内容格式错误', 'warning');
                     return;
                   }
                   try {
                     const data = JSON.parse(text || '{}');
                     const res: any = await service.savePatch(data);
                     if (res.status === 200) {
-                      message.success('操作成功');
+                      onlyMessage('操作成功');
                       actionRef.current?.reload();
                     }
                   } catch {
-                    message.warning('文件内容格式错误');
+                    onlyMessage('文件内容格式错误', 'warning');
                   }
                 };
                 return false;
@@ -284,9 +284,9 @@ const Template = observer(() => {
                   const resp: any = await service.queryNoPagingPost({ ...param, paging: false });
                   if (resp.status === 200) {
                     downloadObject(resp.result, '通知模版数据');
-                    message.success('导出成功');
+                    onlyMessage('导出成功');
                   } else {
-                    message.error('导出错误');
+                    onlyMessage('导出错误', 'error');
                   }
                 },
               }}

+ 4 - 3
src/pages/rule-engine/Alarm/Config/index.tsx

@@ -1,5 +1,5 @@
 import { PageContainer } from '@ant-design/pro-layout';
-import { Button, Card, Col, Divider, Image, message, Row, Table, Tooltip } from 'antd';
+import { Button, Card, Col, Divider, Image, Row, Table, Tooltip } from 'antd';
 import TitleComponent from '@/components/TitleComponent';
 import { createSchemaField } from '@formily/react';
 import { ArrayItems, Form, FormButtonGroup, FormGrid, FormItem, Input } from '@formily/antd';
@@ -12,6 +12,7 @@ import Service from '@/pages/rule-engine/Alarm/Config/service';
 import styles from './index.less';
 import ReactMarkdown from 'react-markdown';
 import { QuestionCircleOutlined } from '@ant-design/icons';
+import { onlyMessage } from '@/utils/util';
 
 export const service = new Service('alarm/config');
 const ioImg = require('/public/images/alarm/io.png');
@@ -356,7 +357,7 @@ const Config = () => {
     });
 
     if (inputResp.status === 200 && outputResp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
     }
   };
 
@@ -365,7 +366,7 @@ const Config = () => {
     const _level = values?.level.map((l: string, i: number) => ({ level: i + 1, title: l }));
     const resp = await service.saveLevel(_level);
     if (resp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
     }
   };
 

+ 3 - 3
src/pages/rule-engine/Alarm/Configuration/Save/index.tsx

@@ -1,4 +1,4 @@
-import { message, Modal, Typography } from 'antd';
+import { Modal, Typography } from 'antd';
 import { useMemo } from 'react';
 import { createForm, Field, onFieldInit, onFieldValueChange } from '@formily/core';
 import { createSchemaField } from '@formily/react';
@@ -7,7 +7,7 @@ import { ISchema } from '@formily/json-schema';
 import { PermissionButton } from '@/components';
 import { PlusOutlined } from '@ant-design/icons';
 import Service from '@/pages/rule-engine/Alarm/Configuration/service';
-import { useAsyncDataSource } from '@/utils/util';
+import { onlyMessage, useAsyncDataSource } from '@/utils/util';
 import styles from './index.less';
 import { service as ConfigService } from '../../Config';
 import { Store } from 'jetlinks-store';
@@ -135,7 +135,7 @@ const Save = (props: Props) => {
     });
 
     if (resp.status === 200) {
-      message.success('操作成功');
+      onlyMessage('操作成功');
       props.close();
     }
   };

+ 6 - 5
src/pages/rule-engine/Alarm/Configuration/index.tsx

@@ -12,7 +12,7 @@ import {
 } from '@ant-design/icons';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import { useEffect, useRef, useState } from 'react';
-import { Badge, message, Space, Tooltip } from 'antd';
+import { Badge, Space, Tooltip } from 'antd';
 import ProTableCard from '@/components/ProTableCard';
 import Save from './Save';
 import Service from '@/pages/rule-engine/Alarm/Configuration/service';
@@ -20,6 +20,7 @@ import AlarmConfig from '@/components/ProTableCard/CardItems/AlarmConfig';
 import { Store } from 'jetlinks-store';
 import { getMenuPathByCode, MENUS_CODE } from '@/utils/menu';
 import { useHistory } from 'umi';
+import { onlyMessage } from '@/utils/util';
 
 const service = new Service('alarm/config');
 
@@ -135,7 +136,7 @@ const Configuration = () => {
               title: '确认手动触发?',
               onConfirm: async () => {
                 await service._execute(record.sceneId);
-                message.success(
+                onlyMessage(
                   intl.formatMessage({
                     id: 'pages.data.option.success',
                     defaultMessage: '操作成功!',
@@ -182,7 +183,7 @@ const Configuration = () => {
               } else {
                 await service._disable(record.id);
               }
-              message.success(
+              onlyMessage(
                 intl.formatMessage({
                   id: 'pages.data.option.success',
                   defaultMessage: '操作成功!',
@@ -272,7 +273,7 @@ const Configuration = () => {
                     disabled: record.state?.value === 'disabled',
                     onConfirm: async () => {
                       await service._execute(record.sceneId);
-                      message.success(
+                      onlyMessage(
                         intl.formatMessage({
                           id: 'pages.data.option.success',
                           defaultMessage: '操作成功!',
@@ -313,7 +314,7 @@ const Configuration = () => {
                     } else {
                       await service._disable(record.id);
                     }
-                    message.success(
+                    onlyMessage(
                       intl.formatMessage({
                         id: 'pages.data.option.success',
                         defaultMessage: '操作成功!',

+ 0 - 0
src/pages/rule-engine/Alarm/Log/SolveComponent/index.tsx


Some files were not shown because too many files changed in this diff