xieyonghong vor 3 Jahren
Ursprung
Commit
be22969e27
28 geänderte Dateien mit 232 neuen und 86 gelöschten Zeilen
  1. 2 2
      src/components/Metadata/EnumParam/index.tsx
  2. 15 2
      src/components/SearchComponent/index.tsx
  3. 6 3
      src/pages/device/Instance/Detail/Info/index.tsx
  4. 4 2
      src/pages/device/Instance/Detail/Reation/index.tsx
  5. 6 1
      src/pages/device/Instance/Detail/Running/index.tsx
  6. 1 0
      src/pages/device/Product/Save/index.tsx
  7. 15 5
      src/pages/init-home/components/data/save/index.tsx
  8. 1 1
      src/pages/link/Certificate/index.tsx
  9. 1 1
      src/pages/link/DataCollect/DataGathering/index.tsx
  10. 80 23
      src/pages/link/DataCollect/components/Channel/Save/index.tsx
  11. 8 12
      src/pages/link/DataCollect/components/Device/Save/index.tsx
  12. 2 0
      src/pages/link/DataCollect/components/Device/index.tsx
  13. 1 1
      src/pages/link/DataCollect/components/Tree/index.tsx
  14. 7 0
      src/pages/link/DataCollect/service.ts
  15. 4 4
      src/pages/link/Type/Detail/index.tsx
  16. 41 11
      src/pages/media/Cascade/Save/index.tsx
  17. 1 1
      src/pages/media/Device/Channel/index.tsx
  18. 1 0
      src/pages/media/Device/Save/index.tsx
  19. 6 8
      src/pages/media/Device/index.tsx
  20. 1 1
      src/pages/media/Home/deviceModal.tsx
  21. 1 1
      src/pages/media/Home/index.tsx
  22. 2 0
      src/pages/media/Home/service.tsx
  23. 3 1
      src/pages/notice/Template/Detail/doc/AliyunVoice.tsx
  24. 4 4
      src/pages/notice/Template/Detail/index.tsx
  25. 1 1
      src/pages/notice/Template/index.tsx
  26. 6 0
      src/pages/rule-engine/Alarm/Config/index.tsx
  27. 1 1
      src/pages/system/Role/Detail/UserManage/index.tsx
  28. 11 0
      src/utils/util.ts

+ 2 - 2
src/components/Metadata/EnumParam/index.tsx

@@ -55,7 +55,7 @@ const EnumParam = () => {
                     },
                     {
                       required: true,
-                      message: '请输入标识',
+                      message: '请输入Text',
                     },
                   ],
                 },
@@ -74,7 +74,7 @@ const EnumParam = () => {
                     },
                     {
                       required: true,
-                      message: '请输入描述',
+                      message: '请输入Value',
                     },
                   ],
                 },

+ 15 - 2
src/components/SearchComponent/index.tsx

@@ -212,7 +212,12 @@ const SearchComponent = <T extends Record<string, any>>(props: Props<T>) => {
               }
               f.setFieldState(typeFiled.query('.value'), async (state) => {
                 state.componentType = 'Input';
-                state.componentProps = { allowClear: true };
+                state.componentProps = {
+                  allowClear: true,
+                  // onchange:(event:any)=>{
+                  //   console.log(event.target?.value)
+                  // }
+                };
               });
             } else {
               switch (_field?.valueType) {
@@ -710,6 +715,7 @@ const SearchComponent = <T extends Record<string, any>>(props: Props<T>) => {
               handleSearch(false);
             }}
             type="primary"
+            htmlType={'submit'}
           >
             搜索
           </Button>
@@ -732,6 +738,7 @@ const SearchComponent = <T extends Record<string, any>>(props: Props<T>) => {
         }}
         type="primary"
         overlay={historyDom}
+        htmlType={'submit'}
       >
         搜索
       </Dropdown.Button>
@@ -784,7 +791,13 @@ const SearchComponent = <T extends Record<string, any>>(props: Props<T>) => {
 
   return (
     <Card bordered={false} className={styles.container}>
-      <Form form={form} className={styles.form} labelCol={4} wrapperCol={18}>
+      <Form
+        form={form}
+        className={styles.form}
+        labelCol={4}
+        wrapperCol={18}
+        onAutoSubmit={() => (SearchBtn.advance ? handleSearch : handleSearch(false))}
+      >
         <div className={expand && styles.simple}>
           <SchemaField schema={expand ? simpleSchema : schema} />
           <div className={styles.action} style={{ marginTop: expand ? 0 : -12 }}>

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

@@ -120,7 +120,9 @@ const Info = observer(() => {
               defaultMessage: '创建时间',
             })}
           >
-            {moment(InstanceModel.detail?.createTime).format('YYYY-MM-DD HH:mm:ss')}
+            {InstanceModel.detail?.createTime
+              ? moment(InstanceModel.detail?.createTime).format('YYYY-MM-DD HH:mm:ss')
+              : ''}
           </Descriptions.Item>
           <Descriptions.Item
             label={intl.formatMessage({
@@ -128,8 +130,9 @@ const Info = observer(() => {
               defaultMessage: '注册时间',
             })}
           >
-            {InstanceModel.detail?.registerTime &&
-              moment(InstanceModel.detail?.registerTime).format('YYYY-MM-DD HH:mm:ss')}
+            {InstanceModel.detail?.registerTime
+              ? moment(InstanceModel.detail?.registerTime).format('YYYY-MM-DD HH:mm:ss')
+              : ''}
           </Descriptions.Item>
           <Descriptions.Item
             label={intl.formatMessage({

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

@@ -25,7 +25,9 @@ const Reation = () => {
 
   useEffect(() => {
     if (id) {
-      setData(InstanceModel.detail?.relations || []);
+      const item = InstanceModel.detail?.relations?.reverse();
+      setData(item || []);
+      // console.log(InstanceModel.detail?.relations?.reverse() )
     }
   }, [InstanceModel.detail?.relations]);
 
@@ -55,7 +57,7 @@ const Reation = () => {
           </span>
         }
       >
-        {(data.reverse() || [])?.map((item: any) => (
+        {(data || [])?.map((item: any) => (
           <Descriptions.Item span={1} label={item.relationName} key={item.objectId}>
             <Ellipsis
               title={item?.related ? _.map(item?.related || [], 'name').join(',') : ''}

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

@@ -64,7 +64,12 @@ const Running = () => {
               </Tabs.TabPane>
             ))}
           </Tabs>
-          {list.length === 0 && <Empty description="暂无数据" style={{ marginTop: '10%' }} />}
+          {list.length === 0 && (
+            <div style={{ display: 'flex', justifyContent: 'flex-start' }}>
+              <Empty description="暂无数据" style={{ marginTop: '10%' }} />
+              <Empty description="暂无数据" style={{ marginTop: '10%', marginLeft: '30%' }} />
+            </div>
+          )}
         </div>
       )}
     </Card>

+ 1 - 0
src/pages/device/Product/Save/index.tsx

@@ -313,6 +313,7 @@ const Save = (props: Props) => {
             >
               <RadioCard
                 model={'singular'}
+                disabled={!!props.data?.accessId}
                 options={[
                   {
                     label: intlFormat('pages.device.type.device', '直连设备'),

+ 15 - 5
src/pages/init-home/components/data/save/index.tsx

@@ -94,11 +94,11 @@ const Save = (props: Props) => {
             'x-validator': [
               {
                 max: 65535,
-                message: '请输入1-65535之间的整数',
+                message: '请输入1-65535之间的整数',
               },
               {
                 min: 1,
-                message: '请输入1-65535之间的整数',
+                message: '请输入1-65535之间的整数',
               },
             ],
           },
@@ -117,7 +117,13 @@ const Save = (props: Props) => {
             required: true,
             'x-decorator': 'FormItem',
             'x-component': 'Input',
-            'x-validator': ['ipv4'],
+            'x-validator': [
+              'ipv4',
+              {
+                required: true,
+                message: '请输入域名或IP',
+              },
+            ],
             'x-component-props': {
               placeholder: '请输入公网地址',
             },
@@ -139,11 +145,15 @@ const Save = (props: Props) => {
             'x-validator': [
               {
                 max: 65535,
-                message: '请输入1-65535之间的整数',
+                message: '请输入1-65535之间的整数',
               },
               {
                 min: 1,
-                message: '请输入1-65535之间的整整数',
+                message: '请输入1-65535之间的正整数',
+              },
+              {
+                required: true,
+                message: '请输入公网端口',
               },
             ],
           },

+ 1 - 1
src/pages/link/Certificate/index.tsx

@@ -47,7 +47,7 @@ const Certificate = () => {
     {
       dataIndex: 'description',
       title: '说明',
-      ellipsis: true,
+      // ellipsis: true,
       render: (text: any) => (
         <div style={{ width: '100%' }} className="ellipsis">
           <Tooltip placement="topLeft" title={text}>

+ 1 - 1
src/pages/link/DataCollect/DataGathering/index.tsx

@@ -22,7 +22,7 @@ const DataCollectModel = model<{
 
 export default observer(() => {
   const obj = {
-    channel: <Device type={false} id={DataCollectModel.id} />,
+    channel: <Device type={false} id={DataCollectModel.id} provider={DataCollectModel.provider} />,
     device: (
       <Point type={false} provider={DataCollectModel.provider} data={DataCollectModel.data} />
     ),

+ 80 - 23
src/pages/link/DataCollect/components/Channel/Save/index.tsx

@@ -1,12 +1,12 @@
 import { Button, Modal } from 'antd';
-import { createForm, Field } from '@formily/core';
+import { createForm, Field, registerValidateRules } from '@formily/core';
 import { createSchemaField } from '@formily/react';
 import React, { useEffect, useState } from 'react';
 import * as ICONS from '@ant-design/icons';
 import { Form, FormGrid, FormItem, Input, Select, NumberPicker, Password } from '@formily/antd';
 import type { ISchema } from '@formily/json-schema';
 import service from '@/pages/link/DataCollect/service';
-import { onlyMessage } from '@/utils/util';
+import { onlyMessage, testDomain, testIP, testIPv6 } from '@/utils/util';
 import { action } from '@formily/reactive';
 
 interface Props {
@@ -35,14 +35,15 @@ export default (props: Props) => {
   });
 
   const getSecurityPolicyList = () => service.querySecurityPolicyList({});
+  const getAuthTypeList = () => service.queryAuthTypeList({});
 
   const useAsyncDataSource = (services: (arg0: Field) => Promise<any>) => (field: Field) => {
     field.loading = true;
     services(field).then(
       action.bound!((resp: any) => {
         field.dataSource = (resp?.result || []).map((item: any) => ({
-          label: item,
-          value: item,
+          label: item?.text || item,
+          value: item?.value || item,
         }));
         field.loading = false;
       }),
@@ -65,6 +66,19 @@ export default (props: Props) => {
     },
   });
 
+  registerValidateRules({
+    testHost(val: string) {
+      if (val) return '';
+      if (!testIP(val) || !testIPv6(val) || !testDomain(val)) {
+        return {
+          type: 'error',
+          message: '请输入正确格式的IP地址',
+        };
+      }
+      return '';
+    },
+  });
+
   const schema: ISchema = {
     type: 'object',
     properties: {
@@ -108,6 +122,7 @@ export default (props: Props) => {
             'x-component-props': {
               placeholder: '请选择通讯协议',
             },
+            'x-disabled': props.data?.id,
             enum: [
               { label: 'OPC_UA', value: 'OPC_UA' },
               { label: 'MODBUS_TCP', value: 'MODBUS_TCP' },
@@ -134,6 +149,9 @@ export default (props: Props) => {
                 required: true,
                 message: '请输入Modbus主机IP',
               },
+              {
+                testHost: true,
+              },
             ],
             'x-reactions': {
               dependencies: ['..provider'],
@@ -162,11 +180,11 @@ export default (props: Props) => {
               },
               {
                 max: 65535,
-                message: '请输入0-65535之间的整数',
+                message: '请输入0-65535之间的整数',
               },
               {
                 min: 0,
-                message: '请输入0-65535之间的整数',
+                message: '请输入0-65535之间的整数',
               },
             ],
             'x-reactions': {
@@ -231,6 +249,34 @@ export default (props: Props) => {
               },
             ],
           },
+          'configuration.authType': {
+            title: '权限认证',
+            'x-component': 'Select',
+            'x-decorator': 'FormItem',
+            'x-decorator-props': {
+              gridSpan: 2,
+            },
+            'x-component-props': {
+              placeholder: '请选择权限认证',
+            },
+            'x-validator': [
+              {
+                required: true,
+                message: '请选择权限认证',
+              },
+            ],
+            'x-reactions': [
+              '{{useAsyncDataSource(getAuthTypeList)}}',
+              {
+                dependencies: ['..provider'],
+                fulfill: {
+                  state: {
+                    visible: '{{$deps[0]==="OPC_UA"}}',
+                  },
+                },
+              },
+            ],
+          },
           'configuration.username': {
             title: '用户名',
             'x-component': 'Input',
@@ -241,17 +287,21 @@ export default (props: Props) => {
             'x-component-props': {
               placeholder: '请输入用户名',
             },
-            // 'x-validator': [
-            //   {
-            //     required: true,
-            //     message: '请输入用户名',
-            //   },
-            // ],
+            'x-validator': [
+              {
+                required: true,
+                message: '请输入用户名',
+              },
+              {
+                max: 64,
+                message: '最多可输入64个字符',
+              },
+            ],
             'x-reactions': {
-              dependencies: ['..provider'],
+              dependencies: ['.authType'],
               fulfill: {
                 state: {
-                  visible: '{{$deps[0]==="OPC_UA"}}',
+                  visible: '{{$deps[0]==="username"}}',
                 },
               },
             },
@@ -266,17 +316,21 @@ export default (props: Props) => {
             'x-component-props': {
               placeholder: '请输入密码',
             },
-            // 'x-validator': [
-            //   {
-            //     required: true,
-            //     message: '请输入密码',
-            //   },
-            // ],
+            'x-validator': [
+              {
+                required: true,
+                message: '请输入密码',
+              },
+              {
+                max: 64,
+                message: '最多可输入64个字符',
+              },
+            ],
             'x-reactions': {
-              dependencies: ['..provider'],
+              dependencies: ['.authType'],
               fulfill: {
                 state: {
-                  visible: '{{$deps[0]==="OPC_UA"}}',
+                  visible: '{{$deps[0]==="username"}}',
                 },
               },
             },
@@ -337,7 +391,10 @@ export default (props: Props) => {
       ]}
     >
       <Form form={form} layout="vertical">
-        <SchemaField schema={schema} scope={{ useAsyncDataSource, getSecurityPolicyList }} />
+        <SchemaField
+          schema={schema}
+          scope={{ useAsyncDataSource, getSecurityPolicyList, getAuthTypeList }}
+        />
       </Form>
     </Modal>
   );

+ 8 - 12
src/pages/link/DataCollect/components/Device/Save/index.tsx

@@ -13,6 +13,7 @@ interface Props {
   data: Partial<CollectorItem>;
   close: () => void;
   reload: () => void;
+  provider?: 'OPC_UA' | 'MODBUS_TCP';
 }
 
 export default (props: Props) => {
@@ -86,14 +87,7 @@ export default (props: Props) => {
             'x-component-props': {
               placeholder: '请输入从机地址',
             },
-            'x-reactions': {
-              dependencies: ['..provider'],
-              fulfill: {
-                state: {
-                  visible: '{{$deps[0]==="MODBUS_TCP"}}',
-                },
-              },
-            },
+            'x-visible': props.provider === 'MODBUS_TCP',
             'x-validator': [
               {
                 required: true,
@@ -101,11 +95,11 @@ export default (props: Props) => {
               },
               {
                 max: 255,
-                message: '请输入0-255之间的整数',
+                message: '请输入0-255之间的整数',
               },
               {
                 min: 0,
-                message: '请输入0-255之间的整数',
+                message: '请输入0-255之间的整数',
               },
             ],
           },
@@ -163,8 +157,10 @@ export default (props: Props) => {
           const obj = {
             ...value,
             provider: resp.result.provider,
-            channelId: resp.result.channelId,
-            configuration: {},
+            channelId: props.channelId,
+            configuration: {
+              ...value.configuration,
+            },
           };
           response = await service.saveCollector({ ...obj });
         }

+ 2 - 0
src/pages/link/DataCollect/components/Device/index.tsx

@@ -16,6 +16,7 @@ import Save from '@/pages/link/DataCollect/components/Device/Save/index';
 interface Props {
   type: boolean; // true: 综合查询  false: 数据采集
   id?: any;
+  provider?: 'OPC_UA' | 'MODBUS_TCP';
 }
 
 const CollectorModel = model<{
@@ -292,6 +293,7 @@ export default observer((props: Props) => {
         <Save
           data={CollectorModel.current}
           channelId={props.id}
+          provider={props.provider}
           close={() => {
             CollectorModel.visible = false;
           }}

+ 1 - 1
src/pages/link/DataCollect/components/Tree/index.tsx

@@ -75,7 +75,6 @@ export default observer((props: Props) => {
       <div style={{ margin: '16px 0' }}>
         <Button
           type="primary"
-          ghost
           style={{ width: '100%' }}
           icon={<PlusOutlined />}
           onClick={() => {
@@ -166,6 +165,7 @@ export default observer((props: Props) => {
           }}
           reload={() => {
             TreeModel.visible = false;
+            handleSearch(TreeModel.param);
           }}
         />
       )}

+ 7 - 0
src/pages/link/DataCollect/service.ts

@@ -109,6 +109,13 @@ class Service {
       method: 'GET',
       params,
     });
+
+  public queryAuthTypeList = (params?: any) =>
+    request(`/${SystemConst.API_BASE}/data-collect/opc/auth-types`, {
+      method: 'GET',
+      params,
+    });
+
   public scanOpcUAList = (params: any) =>
     request(
       `/${SystemConst.API_BASE}/data-collect/opc/channel/${params.id}/nodes?nodeId=${

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

@@ -337,11 +337,11 @@ const Save = observer(() => {
         'x-validator': [
           {
             max: 65535,
-            message: '请输入1-65535之间的整数',
+            message: '请输入1-65535之间的整数',
           },
           {
             min: 1,
-            message: '请输入1-65535之间的整数',
+            message: '请输入1-65535之间的整数',
           },
         ],
       },
@@ -404,11 +404,11 @@ const Save = observer(() => {
         'x-validator': [
           {
             max: 65535,
-            message: '请输入1-65535之间的整数',
+            message: '请输入1-65535之间的整数',
           },
           {
             min: 1,
-            message: '请输入1-65535之间的整数',
+            message: '请输入1-65535之间的整数',
           },
         ],
       },

+ 41 - 11
src/pages/media/Cascade/Save/index.tsx

@@ -120,7 +120,7 @@ const Save = () => {
                 sipConfigs: {
                   transport: 'UDP',
                   keepaliveInterval: 60,
-                  registerInterval: 3000,
+                  registerInterval: 3600,
                 },
               }}
               onFinish={async (values: any) => {
@@ -155,7 +155,10 @@ const Save = () => {
                   <Form.Item
                     label="名称"
                     name="name"
-                    rules={[{ required: true, message: '请输入名称' }]}
+                    rules={[
+                      { required: true, message: '请输入名称' },
+                      { max: 64, message: '最大长度64字符' },
+                    ]}
                   >
                     <Input placeholder="请输入名称" />
                   </Form.Item>
@@ -199,7 +202,10 @@ const Save = () => {
                   <Form.Item
                     label="信令名称"
                     name={['sipConfigs', 'name']}
-                    rules={[{ required: true, message: '请输入信令名称' }]}
+                    rules={[
+                      { required: true, message: '请输入信令名称' },
+                      { max: 64, message: '最大长度64字符' },
+                    ]}
                   >
                     <Input placeholder="请输入信令名称" />
                   </Form.Item>
@@ -208,7 +214,10 @@ const Save = () => {
                   <Form.Item
                     label="上级SIP ID"
                     name={['sipConfigs', 'sipId']}
-                    rules={[{ required: true, message: '请输入上级SIP ID' }]}
+                    rules={[
+                      { required: true, message: '请输入上级SIP ID' },
+                      { max: 64, message: '最大长度64字符' },
+                    ]}
                   >
                     <Input placeholder="请输入上级SIP ID" />
                   </Form.Item>
@@ -217,7 +226,10 @@ const Save = () => {
                   <Form.Item
                     label="上级SIP域"
                     name={['sipConfigs', 'domain']}
-                    rules={[{ required: true, message: '请输入上级平台SIP域' }]}
+                    rules={[
+                      { required: true, message: '请输入上级平台SIP域' },
+                      { max: 64, message: '最大长度64字符' },
+                    ]}
                   >
                     <Input placeholder="请输入上级平台SIP域" />
                   </Form.Item>
@@ -238,7 +250,10 @@ const Save = () => {
                   <Form.Item
                     label="本地SIP ID"
                     name={['sipConfigs', 'localSipId']}
-                    rules={[{ required: true, message: '请输入网关侧的SIP ID' }]}
+                    rules={[
+                      { required: true, message: '请输入网关侧的SIP ID' },
+                      { max: 64, message: '最大长度64字符' },
+                    ]}
                   >
                     <Input placeholder="网关侧的SIP ID" />
                   </Form.Item>
@@ -296,7 +311,10 @@ const Save = () => {
                   <Form.Item
                     label="用户"
                     name={['sipConfigs', 'user']}
-                    rules={[{ required: true, message: '请输入用户' }]}
+                    rules={[
+                      { required: true, message: '请输入用户' },
+                      { max: 64, message: '最大长度64字符' },
+                    ]}
                   >
                     <Input placeholder="请输入用户" />
                   </Form.Item>
@@ -305,7 +323,10 @@ const Save = () => {
                   <Form.Item
                     label="接入密码"
                     name={['sipConfigs', 'password']}
-                    rules={[{ required: true, message: '请输入接入密码' }]}
+                    rules={[
+                      { required: true, message: '请输入接入密码' },
+                      { max: 64, message: '最大长度64字符' },
+                    ]}
                   >
                     <Input.Password placeholder="请输入接入密码" />
                   </Form.Item>
@@ -314,7 +335,10 @@ const Save = () => {
                   <Form.Item
                     label="厂商"
                     name={['sipConfigs', 'manufacturer']}
-                    rules={[{ required: true, message: '请输入厂商' }]}
+                    rules={[
+                      { required: true, message: '请输入厂商' },
+                      { max: 64, message: '最大长度64字符' },
+                    ]}
                   >
                     <Input placeholder="请输入厂商" />
                   </Form.Item>
@@ -323,7 +347,10 @@ const Save = () => {
                   <Form.Item
                     label="型号"
                     name={['sipConfigs', 'model']}
-                    rules={[{ required: true, message: '请输入型号' }]}
+                    rules={[
+                      { required: true, message: '请输入型号' },
+                      { max: 64, message: '最大长度64字符' },
+                    ]}
                   >
                     <Input placeholder="请输入型号" />
                   </Form.Item>
@@ -332,7 +359,10 @@ const Save = () => {
                   <Form.Item
                     label="版本号"
                     name={['sipConfigs', 'firmware']}
-                    rules={[{ required: true, message: '请输入版本号' }]}
+                    rules={[
+                      { required: true, message: '请输入版本号' },
+                      { max: 64, message: '最大长度64字符' },
+                    ]}
                   >
                     <Input placeholder="请输入版本号" />
                   </Form.Item>

+ 1 - 1
src/pages/media/Device/Channel/index.tsx

@@ -116,7 +116,7 @@ export default () => {
           status: 'online',
         },
         offline: {
-          text: '离线',
+          text: '未连接',
           status: 'offline',
         },
       },

+ 1 - 0
src/pages/media/Device/Save/index.tsx

@@ -147,6 +147,7 @@ const Save = () => {
                           console.log(key);
                           setAccessType(key);
                           queryProduct(key);
+                          form.resetFields(['id']);
                         }}
                         disabled={id}
                         options={[

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

@@ -272,10 +272,10 @@ const Device = () => {
           tooltip={
             record.state.value === 'offline' ||
             record.state.value === 'notActive' ||
-            record.provider === providerType['fixed-media']
+            record.provider === 'fixed-media'
               ? {
                   title:
-                    record.provider === providerType['fixed-media']
+                    record.provider === 'fixed-media'
                       ? '固定地址无法更新通道'
                       : record.state.value === 'offline'
                       ? '设备已离线'
@@ -290,7 +290,7 @@ const Device = () => {
           disabled={
             record.state.value === 'offline' ||
             record.state.value === 'notActive' ||
-            record.provider === providerType['fixed-media']
+            record.provider === 'fixed-media'
           }
           style={{ padding: 0 }}
           type={'link'}
@@ -426,10 +426,10 @@ const Device = () => {
                 key={'updateChannel'}
                 isPermission={permission.update}
                 tooltip={
-                  record.state.value !== 'online' || record.provider === providerType['fixed-media']
+                  record.state.value !== 'online' || record.provider === 'fixed-media'
                     ? {
                         title:
-                          record.provider === providerType['fixed-media']
+                          record.provider === 'fixed-media'
                             ? '固定地址无法更新通道'
                             : record.state.value === 'offline'
                             ? '设备已离线'
@@ -439,9 +439,7 @@ const Device = () => {
                       }
                     : undefined
                 }
-                disabled={
-                  record.state.value !== 'online' || record.provider === providerType['fixed-media']
-                }
+                disabled={record.state.value !== 'online' || record.provider === 'fixed-media'}
                 onClick={() => {
                   updateChannel(record.id);
                 }}

+ 1 - 1
src/pages/media/Home/deviceModal.tsx

@@ -129,7 +129,7 @@ export default (props: DeviceModalProps) => {
         search={false}
         columnEmptyText={''}
         request={(params) =>
-          service.query({
+          service.getDevice({
             ...params,
             sorts: [
               {

+ 1 - 1
src/pages/media/Home/index.tsx

@@ -18,7 +18,7 @@ export const service = new Service('media');
 
 export default () => {
   const dashBoardUrl = getMenuPathByCode('media/DashBoard');
-  const deviceUrl = getMenuPathByCode('media/Device');
+  const deviceUrl = getMenuPathByCode('media/Device/Save');
   const channelUrl = getMenuPathByCode('media/Device/Channel');
   const cascadeUrl = getMenuPathByCode('media/Cascade');
   const splitScreenUrl = getMenuPathByCode('media/SplitScreen');

+ 2 - 0
src/pages/media/Home/service.tsx

@@ -8,6 +8,8 @@ class Service extends BaseService<DeviceItem> {
 
   channelCount = (data: any = {}) =>
     request(`${this.uri}/channel/_count`, { method: 'POST', data: data });
+  getDevice = (data: any = {}) =>
+    request(`${this.uri}/device/_query/`, { method: 'POST', data: data });
 }
 
 export default Service;

+ 3 - 1
src/pages/notice/Template/Detail/doc/AliyunVoice.tsx

@@ -21,7 +21,9 @@ const AliyunVoice = () => {
         <h2> 2、模板ID</h2>
         <div> 阿里云语音对每一条语音通知分配的唯一ID标识</div>
         <h2> 3、被叫号码</h2>
-        <div> 当前仅支持国内手机号,此处若不填,则在模板调试和配置告警通知时手动填写</div>
+        <div> 当前仅支持国内手机号,此处若不填,则在模板调试和配置告警通知时手动填写。</div>
+        <div>若您使用的语音通知文件为公共模式外呼,则该参数值不填。</div>
+        <div>若您使用的语音通知文件为专属模式外呼,则必须传入已购买的号码,仅支持一个号码。</div>
         <h2> 4、被叫显号</h2>
         <div> 用户呼叫号码显示,必须是在阿里云购买的号码。</div>
         <h2> 5、播放次数</h2>

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

@@ -617,7 +617,7 @@ const Detail = observer(() => {
                         },
                       },
                       toParty: {
-                        title: '收信组织',
+                        title: '收信部门',
                         'x-component': 'Select',
                         'x-decorator': 'FormItem',
                         // 'x-decorator-props': {
@@ -625,7 +625,7 @@ const Detail = observer(() => {
                         //   gridSpan: 1,
                         // },
                         'x-component-props': {
-                          placeholder: '请选择收信组织',
+                          placeholder: '请选择收信部门',
                         },
                       },
                     },
@@ -835,7 +835,7 @@ const Detail = observer(() => {
                     },
                     properties: {
                       departmentIdList: {
-                        title: '收信组织',
+                        title: '收信部门',
                         // required: true,
                         'x-component': 'Select',
                         'x-decorator': 'FormItem',
@@ -844,7 +844,7 @@ const Detail = observer(() => {
                         //   gridSpan: 1,
                         // },
                         'x-component-props': {
-                          placeholder: '请选择收信组织',
+                          placeholder: '请选择收信部门',
                         },
                         // 'x-reactions': {
                         //   dependencies: ['configId'],

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

@@ -283,7 +283,7 @@ const Template = observer(() => {
 
             <PermissionButton
               popConfirm={{
-                title: '确认导出当前页数据?',
+                title: '确认导出?',
                 onConfirm: async () => {
                   const resp: any = await service.queryNoPagingPost({ ...param, paging: false });
                   if (resp.status === 200) {

+ 6 - 0
src/pages/rule-engine/Alarm/Config/index.tsx

@@ -215,6 +215,12 @@ const Config = () => {
               'x-decorator-props': {
                 gridSpan: 23,
               },
+              'x-validator': [
+                {
+                  max: 64,
+                  message: '最多输入64个字符',
+                },
+              ],
             },
             // remove: {
             //   type: 'void',

+ 1 - 1
src/pages/system/Role/Detail/UserManage/index.tsx

@@ -118,7 +118,7 @@ const UserManage = () => {
         tableAlertOptionRender={() => (
           <Space size={16}>
             <Popconfirm
-              title="确认解绑"
+              title="确认解绑"
               onConfirm={() => {
                 setSelectedRowKeys([]);
                 unBindUser(params.id, [...selectedRowKeys]);

Datei-Diff unterdrückt, da er zu groß ist
+ 11 - 0
src/utils/util.ts