sun-chaochao 3 лет назад
Родитель
Сommit
b0bd80066c

+ 17 - 12
src/components/AMapComponent/PathSimplifier/PathNavigator.tsx

@@ -47,21 +47,26 @@ export default (props: PathNavigatorProps) => {
   const createPathNavigator = useCallback(
     (path?: PathSimplifier) => {
       if (path) {
-        PathNavigatorRef.current = path.createPathNavigator(navKey!, {
-          speed: props.speed || 10000,
-          ...omit(extraProps, Object.values(EventMap)),
-        });
+        const pathData = path.getPathData(navKey!);
+        if (pathData?.path && pathData?.path.length) {
+          // 避免path为空数组时,导致创建巡航器异常
 
-        if (PathNavigatorRef.current) {
-          createEvent();
-        }
+          PathNavigatorRef.current = path.createPathNavigator(navKey!, {
+            speed: props.speed || 10000,
+            ...omit(extraProps, Object.values(EventMap)),
+          });
 
-        if (onCreate && PathNavigatorRef.current) {
-          onCreate(PathNavigatorRef.current);
-        }
+          if (PathNavigatorRef.current) {
+            createEvent();
+          }
+
+          if (onCreate && PathNavigatorRef.current) {
+            onCreate(PathNavigatorRef.current);
+          }
 
-        if (props.isAuto !== false) {
-          PathNavigatorRef.current?.start();
+          if (props.isAuto !== false) {
+            PathNavigatorRef.current?.start();
+          }
         }
       }
     },

+ 1 - 0
src/components/AMapComponent/PathSimplifier/index.tsx

@@ -34,6 +34,7 @@ const PathSimplifier = (props: PathSimplifierProps) => {
       }
 
       if (props.pathData) {
+        console.log(props.pathData.map((item) => ({ name: item.name || '路线', path: item.path })));
         pathSimplifierRef.current?.setData(
           props.pathData.map((item) => ({ name: item.name || '路线', path: item.path })),
         );

+ 2 - 14
src/pages/device/Instance/Detail/MetadataLog/Property/Charts.tsx

@@ -1,7 +1,6 @@
-import { Spin } from 'antd';
 import * as echarts from 'echarts';
 import _ from 'lodash';
-import { useEffect, useRef, useState } from 'react';
+import { useEffect, useRef } from 'react';
 
 interface Props {
   data: any[];
@@ -11,10 +10,8 @@ interface Props {
 
 const Charts = (props: Props) => {
   const myChart: any = useRef(null);
-  const [loading, setLoading] = useState<boolean>(true);
 
   useEffect(() => {
-    setLoading(true);
     if ((props?.data || []).length > 2) {
       const dom = document.getElementById('charts');
       if (dom) {
@@ -57,20 +54,11 @@ const Charts = (props: Props) => {
         };
         myChart.current = myChart.current || echarts.init(dom);
         myChart.current.setOption(option);
-        setLoading(false);
       }
-    } else {
-      setTimeout(() => {
-        setLoading(false);
-      }, 5000);
     }
   }, [props.data]);
 
-  return (
-    <Spin spinning={loading}>
-      <div id="charts" style={{ width: '100%', height: 500 }}></div>
-    </Spin>
-  );
+  return <div id="charts" style={{ width: '100%', height: 500 }}></div>;
 };
 
 export default Charts;

+ 132 - 108
src/pages/device/Instance/Detail/MetadataLog/Property/index.tsx

@@ -1,6 +1,16 @@
 import { InstanceModel, service } from '@/pages/device/Instance';
 import { useParams } from 'umi';
-import { DatePicker, Modal, Radio, Select, Space, Table, Tabs, Tooltip as ATooltip } from 'antd';
+import {
+  DatePicker,
+  Modal,
+  Radio,
+  Select,
+  Space,
+  Spin,
+  Table,
+  Tabs,
+  Tooltip as ATooltip,
+} from 'antd';
 import type { PropertyMetadata } from '@/pages/device/Product/typings';
 import encodeQuery from '@/utils/encodeQuery';
 import { useEffect, useState } from 'react';
@@ -34,6 +44,7 @@ const PropertyLog = (props: Props) => {
   const [current, setCurrent] = useState<any>('');
 
   const [geoList, setGeoList] = useState<any>({});
+  const [loading, setLoading] = useState<boolean>(true);
 
   const columns = [
     {
@@ -119,6 +130,7 @@ const PropertyLog = (props: Props) => {
   ];
 
   const handleSearch = (param: any, startTime?: number, endTime?: number) => {
+    setLoading(true);
     service
       .getPropertyData(
         params.id,
@@ -132,6 +144,7 @@ const PropertyLog = (props: Props) => {
         }),
       )
       .then((resp) => {
+        setLoading(false);
         if (resp.status === 200) {
           setDataSource(resp.result);
         }
@@ -139,6 +152,7 @@ const PropertyLog = (props: Props) => {
   };
 
   const queryChartsList = async (startTime?: number, endTime?: number) => {
+    setLoading(true);
     const resp = await service.queryPropertieList(params.id, data.id || '', {
       paging: false,
       terms: [
@@ -150,6 +164,7 @@ const PropertyLog = (props: Props) => {
       ],
       sorts: [{ name: 'timestamp', order: 'asc' }],
     });
+    setLoading(false);
     if (resp.status === 200) {
       const dataList: any[] = [
         {
@@ -171,12 +186,15 @@ const PropertyLog = (props: Props) => {
         value: undefined,
         type: data?.name || '',
       });
+      console.log(dataList.length);
       setChartsList(dataList || []);
     }
   };
 
   const queryChartsAggList = async (datas: any) => {
+    setLoading(true);
     const resp = await service.queryPropertieInfo(params.id, datas);
+    setLoading(false);
     if (resp.status === 200) {
       const dataList: any[] = [
         {
@@ -352,6 +370,7 @@ const PropertyLog = (props: Props) => {
         });
       }
     } else if (tab === 'geo') {
+      setLoading(true);
       service
         .getPropertyData(
           params.id,
@@ -362,6 +381,7 @@ const PropertyLog = (props: Props) => {
           }),
         )
         .then((resp) => {
+          setLoading(false);
           if (resp.status === 200) {
             setGeoList(resp.result);
           }
@@ -380,118 +400,122 @@ const PropertyLog = (props: Props) => {
       onOk={() => close()}
       width="50vw"
     >
-      <div style={{ marginBottom: '20px' }}>
-        <Space>
-          <Radio.Group
-            value={radioValue}
-            buttonStyle="solid"
-            onChange={(e) => {
-              const value = e.target.value;
-              setRadioValue(value);
-              let st: number = 0;
-              const et = new Date().getTime();
-              if (value === 'today') {
-                st = moment().startOf('day').valueOf();
-              } else if (value === 'week') {
-                st = moment().subtract(6, 'days').valueOf();
-              } else if (value === 'month') {
-                st = moment().subtract(29, 'days').valueOf();
-              }
-              setDateValue(undefined);
-              setStart(st);
-              setEnd(et);
-            }}
-            style={{ minWidth: 220 }}
-          >
-            <Radio.Button value="today">今日</Radio.Button>
-            <Radio.Button value="week">近一周</Radio.Button>
-            <Radio.Button value="month">近一月</Radio.Button>
-          </Radio.Group>
-          {
-            // @ts-ignore
-            <DatePicker.RangePicker
-              value={dateValue}
-              showTime
-              onChange={(dates: any) => {
-                if (dates) {
-                  setRadioValue(undefined);
-                  setDateValue(dates);
-                  const st = dates[0]?.valueOf();
-                  const et = dates[1]?.valueOf();
-                  setStart(st);
-                  setEnd(et);
+      <Spin spinning={loading}>
+        <div style={{ marginBottom: '20px' }}>
+          <Space>
+            <Radio.Group
+              value={radioValue}
+              buttonStyle="solid"
+              onChange={(e) => {
+                const value = e.target.value;
+                setRadioValue(value);
+                let st: number = 0;
+                const et = new Date().getTime();
+                if (value === 'today') {
+                  st = moment().startOf('day').valueOf();
+                } else if (value === 'week') {
+                  st = moment().subtract(6, 'days').valueOf();
+                } else if (value === 'month') {
+                  st = moment().subtract(29, 'days').valueOf();
                 }
+                setDateValue(undefined);
+                setStart(st);
+                setEnd(et);
               }}
-            />
-          }
-        </Space>
-      </div>
-      <Tabs
-        activeKey={tab}
-        onChange={(key: string) => {
-          setTab(key);
-          if (key === 'charts' && !!data.valueType?.type) {
-            if (list.includes(data.valueType?.type)) {
-              queryChartsList(start, end);
-            } else {
-              setCycle('1m');
-              setAgg('COUNT');
-              queryChartsAggList({
-                columns: [
-                  {
-                    property: data.id,
-                    alias: data.id,
-                    agg: 'COUNT',
+              style={{ minWidth: 220 }}
+            >
+              <Radio.Button value="today">今日</Radio.Button>
+              <Radio.Button value="week">近一周</Radio.Button>
+              <Radio.Button value="month">近一月</Radio.Button>
+            </Radio.Group>
+            {
+              // @ts-ignore
+              <DatePicker.RangePicker
+                value={dateValue}
+                showTime
+                onChange={(dates: any) => {
+                  if (dates) {
+                    setRadioValue(undefined);
+                    setDateValue(dates);
+                    const st = dates[0]?.valueOf();
+                    const et = dates[1]?.valueOf();
+                    setStart(st);
+                    setEnd(et);
+                  }
+                }}
+              />
+            }
+          </Space>
+        </div>
+        <Tabs
+          activeKey={tab}
+          onChange={(key: string) => {
+            setTab(key);
+            if (key === 'charts' && !!data.valueType?.type) {
+              if (list.includes(data.valueType?.type)) {
+                queryChartsList(start, end);
+              } else {
+                setCycle('1m');
+                setAgg('COUNT');
+                queryChartsAggList({
+                  columns: [
+                    {
+                      property: data.id,
+                      alias: data.id,
+                      agg: 'COUNT',
+                    },
+                  ],
+                  query: {
+                    interval: '1m',
+                    format: 'yyyy-MM-dd HH:mm:ss',
+                    from: start,
+                    to: end,
                   },
-                ],
-                query: {
-                  interval: '1m',
-                  format: 'yyyy-MM-dd HH:mm:ss',
-                  from: start,
-                  to: end,
+                });
+              }
+            }
+            if (key === 'geo') {
+              setLoading(true);
+              service
+                .getPropertyData(
+                  params.id,
+                  encodeQuery({
+                    paging: false,
+                    terms: { property: data.id, timestamp$BTW: start && end ? [start, end] : [] },
+                    sorts: { timestamp: 'asc' },
+                  }),
+                )
+                .then((resp) => {
+                  setLoading(false);
+                  if (resp.status === 200) {
+                    setGeoList(resp.result);
+                  }
+                });
+            }
+            if (key === 'table') {
+              handleSearch(
+                {
+                  pageSize: 10,
+                  pageIndex: 0,
                 },
-              });
+                start,
+                end,
+              );
             }
-          }
-          if (key === 'geo') {
-            service
-              .getPropertyData(
-                params.id,
-                encodeQuery({
-                  paging: false,
-                  terms: { property: data.id, timestamp$BTW: start && end ? [start, end] : [] },
-                  sorts: { timestamp: 'asc' },
-                }),
-              )
-              .then((resp) => {
-                if (resp.status === 200) {
-                  setGeoList(resp.result);
-                }
-              });
-          }
-          if (key === 'table') {
-            handleSearch(
-              {
-                pageSize: 10,
-                pageIndex: 0,
-              },
-              start,
-              end,
-            );
-          }
-        }}
-      >
-        {tabList.map((item) => (
-          <Tabs.TabPane tab={item.tab} key={item.key}>
-            {renderComponent(item.key)}
-          </Tabs.TabPane>
-        ))}
-        {data?.valueType?.type === 'geoPoint' && (
-          <Tabs.TabPane tab="轨迹" key="geo">
-            <AMap value={geoList} name={data?.name || ''} />
-          </Tabs.TabPane>
-        )}
-      </Tabs>
+          }}
+        >
+          {tabList.map((item) => (
+            <Tabs.TabPane tab={item.tab} key={item.key}>
+              {renderComponent(item.key)}
+            </Tabs.TabPane>
+          ))}
+          {data?.valueType?.type === 'geoPoint' && (
+            <Tabs.TabPane tab="轨迹" key="geo">
+              <AMap value={geoList} name={data?.name || ''} />
+            </Tabs.TabPane>
+          )}
+        </Tabs>
+      </Spin>
       {detailVisible && (
         <Detail
           close={() => {

+ 13 - 7
src/pages/device/Instance/Detail/Modbus/index.tsx

@@ -134,7 +134,7 @@ const Modbus = () => {
                     id: 'pages.data.option.remove',
                     defaultMessage: '删除',
                   })
-                : '请先禁用该组件,再删除。',
+                : '请先禁用该点位,再删除。',
           }}
           popConfirm={{
             title: '确认删除',
@@ -161,14 +161,20 @@ const Modbus = () => {
     },
   ];
 
-  const getModbus = () => {
+  const getModbus = (id: string) => {
     service
-      .query({
+      .queryMetadatabyId({
         paging: false,
+        terms: [
+          {
+            column: 'id$bind-modbus',
+            value: id,
+          },
+        ],
       })
       .then((res) => {
-        setBindList(res.result.data);
-        setOpcId(res.result?.data?.[0].id);
+        setBindList(res.result);
+        setOpcId(res.result?.[0]?.id);
       });
   };
 
@@ -176,7 +182,7 @@ const Modbus = () => {
     const { id } = InstanceModel.detail;
     setDeviceId(id);
     if (id) {
-      getModbus();
+      getModbus(id);
     }
   }, [visible]);
 
@@ -261,7 +267,7 @@ const Modbus = () => {
                           onConfirm: async () => {
                             const resp: any = await service.remove(item.id);
                             if (resp.status === 200) {
-                              getModbus();
+                              getModbus(deviceId);
                               message.success(
                                 intl.formatMessage({
                                   id: 'pages.data.option.success',

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

@@ -29,10 +29,10 @@ const AddPoint = (props: Props) => {
           props.close();
         }
       });
-    console.log(formData);
   };
 
   useEffect(() => {
+    console.log(props.data);
     service.deviceDetail(props.deviceId).then((res: any) => {
       if (res.result.metadata) {
         const item = JSON.parse(res.result?.metadata);
@@ -56,7 +56,10 @@ const AddPoint = (props: Props) => {
         layout="vertical"
         initialValues={{
           ...props.data,
-          // readIndex:props.data?.readIndex || 0,
+          codecConfig: {
+            readIndex: props.data?.codecConfig?.readIndex || 0,
+            scaleFactor: props.data?.codecConfig?.scaleFactor || 1,
+          },
         }}
       >
         <Row gutter={[24, 24]}>

+ 10 - 6
src/pages/link/Channel/Modbus/Access/bindDevice/index.tsx

@@ -52,12 +52,16 @@ const BindDevice = (props: Props) => {
   ];
 
   const save = () => {
-    service.bind(keys, props.id).then((res) => {
-      if (res.status === 200) {
-        message.success('绑定成功');
-        props.close();
-      }
-    });
+    if (keys && keys.length !== 0) {
+      service.bind(keys, props.id).then((res) => {
+        if (res.status === 200) {
+          message.success('绑定成功');
+          props.close();
+        }
+      });
+    } else {
+      message.error('请勾选数据');
+    }
   };
 
   return (

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

@@ -97,14 +97,14 @@ const Access = () => {
           popConfirm={{
             title: intl.formatMessage({
               id: `pages.data.option.${
-                record.state.value !== 'disabled' ? 'disabled' : 'enabled'
+                record.state?.value !== 'disabled' ? 'disabled' : 'enabled'
               }.tips`,
               defaultMessage: '确认禁用?',
             }),
             onConfirm: async () => {
               const item = {
                 ...record,
-                state: record.state.value === 'enabled' ? 'disabled' : 'enabled',
+                state: record.state?.value === 'enabled' ? 'disabled' : 'enabled',
               };
               await service.saveMetadataConfig(opcUaId, deviceId, item);
               message.success(
@@ -120,24 +120,24 @@ const Access = () => {
           tooltip={{
             title: intl.formatMessage({
               id: `pages.data.option.${record.state.value !== 'disabled' ? 'disabled' : 'enabled'}`,
-              defaultMessage: record.state.value !== 'disabled' ? '禁用' : '启用',
+              defaultMessage: record.state?.value !== 'disabled' ? '禁用' : '启用',
             }),
           }}
         >
-          {record.state.value !== 'disabled' ? <StopOutlined /> : <PlayCircleOutlined />}
+          {record.state?.value !== 'disabled' ? <StopOutlined /> : <PlayCircleOutlined />}
         </PermissionButton>,
         <PermissionButton
           isPermission={permission.delete}
           style={{ padding: 0 }}
-          disabled={record.state.value === 'enabled'}
+          disabled={record.state?.value === 'enabled'}
           tooltip={{
             title:
-              record.state.value === 'disabled'
+              record.state?.value === 'disabled'
                 ? intl.formatMessage({
                     id: 'pages.data.option.remove',
                     defaultMessage: '删除',
                   })
-                : '请先禁用该组件,再删除。',
+                : '请先禁用该点位,再删除。',
           }}
           popConfirm={{
             title: '确认删除',
@@ -264,8 +264,8 @@ const Access = () => {
                               }
                             });
                           }}
-                          okText="Yes"
-                          cancelText="No"
+                          okText=""
+                          cancelText=""
                         >
                           <DisconnectOutlined className={styles.icon} />
                         </Popconfirm>

+ 6 - 0
src/pages/link/Channel/Modbus/service.ts

@@ -46,6 +46,12 @@ class Service extends BaseService<OpaUa> {
     request(`/${SystemConst.API_BASE}/modbus/master/metadata/${metadataId}`, {
       method: 'DELETE',
     });
+  //设备id查modbus通道
+  queryMetadatabyId = (data: any) =>
+    request(`/${SystemConst.API_BASE}/modbus/master/_query/no-paging`, {
+      method: 'POST',
+      data,
+    });
 }
 
 export default Service;

+ 17 - 13
src/pages/link/Channel/Opcua/Access/bindDevice/index.tsx

@@ -53,19 +53,23 @@ const BindDevice = (props: Props) => {
   ];
 
   const save = () => {
-    const params = bindDevice.map((item: any) => ({
-      opcUaId: props.id,
-      deviceId: item.id,
-      deviceName: item.name,
-      productId: item.productId,
-      productName: item.productName,
-    }));
-    service.bind(params).then((res) => {
-      if (res.status === 200) {
-        message.success('绑定成功');
-        props.close();
-      }
-    });
+    if (bindDevice && bindDevice.length !== 0) {
+      const params = bindDevice.map((item: any) => ({
+        opcUaId: props.id,
+        deviceId: item.id,
+        deviceName: item.name,
+        productId: item.productId,
+        productName: item.productName,
+      }));
+      service.bind(params).then((res) => {
+        if (res.status === 200) {
+          message.success('绑定成功');
+          props.close();
+        }
+      });
+    } else {
+      message.error('请勾选数据');
+    }
   };
 
   useEffect(() => {

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

@@ -267,8 +267,8 @@ const Access = () => {
                               }
                             });
                           }}
-                          okText="Yes"
-                          cancelText="No"
+                          okText=""
+                          cancelText=""
                         >
                           <DisconnectOutlined className={styles.icon} />
                         </Popconfirm>

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

@@ -94,7 +94,7 @@ const Save = (props: Props) => {
               {
                 pattern:
                   '(opc.tcp|http|https|opc.http|opc.https|opc.ws|opc.wss)://([^:/]+|\\[.*])(:\\d+)?(/.*)?',
-                message: '格式错误(opc.tcp://127.0.0.1:49320)',
+                message: '以固定协议(http,https,opc.tcp等)字段开头,并用://与IP地址连接',
               },
             ],
             name: 'endpoint',

+ 1 - 1
src/pages/link/Channel/Opcua/index.tsx

@@ -244,7 +244,7 @@ const Opcua = () => {
           </PermissionButton>
         }
         request={async (params) =>
-          service.query({ ...params, sorts: [{ name: 'createTime', order: 'desc' }] })
+          service.query({ ...params, sorts: [{ name: 'id', order: 'desc' }] })
         }
       />
       {visible && (

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

@@ -314,7 +314,7 @@ const Config = () => {
           username: {
             title: '用户名',
             type: 'string',
-            required: true,
+            // required: true,
             'x-decorator': 'FormItem',
             'x-component': 'Input',
             'x-component-props': {
@@ -327,7 +327,7 @@ const Config = () => {
           password: {
             title: '密码',
             type: 'string',
-            required: true,
+            // required: true,
             'x-decorator': 'FormItem',
             'x-component': 'Input',
             'x-decorator-props': {

+ 4 - 2
src/pages/rule-engine/Scene/Save/components/InputUpload/index.tsx

@@ -13,7 +13,7 @@ interface InputUploadProps {
 export default (props: InputUploadProps) => {
   const { onChange } = props;
 
-  const [url, setUrl] = useState(props.value);
+  const [url, setUrl] = useState(props.value || undefined);
   const [loading, setLoading] = useState<boolean>(false);
 
   useEffect(() => {
@@ -28,7 +28,9 @@ export default (props: InputUploadProps) => {
       info.file.url = info.file.response?.result;
       setLoading(false);
       if (onChange) {
-        onChange(info.file.response?.result);
+        const result = info.file.response?.result;
+        setUrl(result);
+        onChange(result);
       }
     }
   };

+ 0 - 15
src/pages/rule-engine/Scene/index.tsx

@@ -190,21 +190,6 @@ const Scene = () => {
         },
       },
       renderText: (record) => TriggerWayType[record],
-      valueType: 'select',
-      valueEnum: {
-        manual: {
-          text: '手动触发',
-          status: 'manual',
-        },
-        timer: {
-          text: '定时触发',
-          status: 'timer',
-        },
-        device: {
-          text: '设备触发',
-          status: 'device',
-        },
-      },
     },
     {
       dataIndex: 'description',

+ 30 - 7
src/pages/system/Platforms/index.tsx

@@ -8,6 +8,7 @@ import SearchComponent from '@/components/SearchComponent';
 import {
   DeleteOutlined,
   EditOutlined,
+  ExclamationCircleOutlined,
   PlayCircleOutlined,
   PlusOutlined,
   StopOutlined,
@@ -225,17 +226,17 @@ export default () => {
           type={'link'}
           style={{ padding: 0 }}
           isPermission={permission.delete}
-          disabled={record.state.value === 'started'}
+          disabled={record.state.value === 'enabled'}
           popConfirm={{
             title: '确认删除?',
-            disabled: record.state.value === 'started',
+            disabled: record.state.value === 'enabled',
             onConfirm: () => {
               deleteById(record.id);
             },
           }}
           tooltip={{
             title:
-              record.state.value === 'started' ? <span>请先禁用,再删除</span> : <span>删除</span>,
+              record.state.value === 'enabled' ? <span>请先禁用,再删除</span> : <span>删除</span>,
           }}
           onClick={() => {}}
         >
@@ -261,8 +262,18 @@ export default () => {
         params={param}
         columns={columns}
         actionRef={actionRef}
-        request={(params: any) => service.query(params)}
-        headerTitle={
+        request={(params: any) =>
+          service.query({
+            ...params,
+            sorts: [
+              {
+                name: 'createTime',
+                order: 'desc',
+              },
+            ],
+          })
+        }
+        headerTitle={[
           <PermissionButton
             key="button"
             type="primary"
@@ -277,8 +288,20 @@ export default () => {
               id: 'pages.data.option.add',
               defaultMessage: '新增',
             })}
-          </PermissionButton>
-        }
+          </PermissionButton>,
+          <div
+            style={{
+              paddingLeft: 24,
+              background: '#fff',
+              fontSize: 14,
+            }}
+          >
+            <span style={{ marginRight: 8, fontSize: 16 }}>
+              <ExclamationCircleOutlined />
+            </span>
+            第三方平台用户是一个身份实体,代表您的组织中需要访问物联网平台资源的用户或应用程序。
+          </div>,
+        ]}
       />
       <SaveModal
         visible={saveVisible}

+ 2 - 1
src/pages/system/Platforms/save.tsx

@@ -106,7 +106,7 @@ export default (props: SaveProps) => {
         getDetail(props.data.id);
       } else {
         form.setValues({
-          enableOAuth2: true,
+          enableOAuth2: false,
           id: randomString(16),
           secureKey: randomString(),
         });
@@ -378,6 +378,7 @@ export default (props: SaveProps) => {
             'x-component-props': {
               placeholder: '请输入redirectUrl',
             },
+            'x-hidden': true,
             'x-decorator-props': {
               gridSpan: 2,
               tooltip: '授权后自动跳转的页面地址',