100011797 пре 3 година
родитељ
комит
e0eebddcbe

+ 2 - 2
src/pages/link/DataCollect/Dashboard/index.tsx

@@ -165,8 +165,8 @@ const DeviceBoard = () => {
         grid: {
           top: '2%',
           bottom: '5%',
-          left: '50px',
-          right: '50px',
+          // left: '50px',
+          // right: '50px',
         },
         series: [
           {

+ 14 - 3
src/pages/link/DataCollect/DataGathering/index.tsx

@@ -10,16 +10,18 @@ import { Empty } from '@/components';
 
 const DataCollectModel = model<{
   id: Partial<string>;
-  type: 'channel' | 'device';
+  type: 'channel' | 'device' | undefined;
   provider: 'OPC_UA' | 'MODBUS_TCP';
   data: any;
   reload: boolean;
+  refresh: boolean;
 }>({
   type: 'channel',
   id: '',
   provider: 'MODBUS_TCP',
   data: {},
   reload: false,
+  refresh: false,
 });
 
 export default observer(() => {
@@ -34,6 +36,7 @@ export default observer(() => {
         type={false}
         id={DataCollectModel.id}
         provider={DataCollectModel.provider}
+        refresh={DataCollectModel.refresh}
       />
     ),
     device: (
@@ -48,16 +51,24 @@ export default observer(() => {
           <div className={styles.left}>
             <ChannelTree
               change={(key, type, provider, data) => {
+                DataCollectModel.type = undefined;
                 DataCollectModel.id = key;
-                DataCollectModel.type = type;
                 DataCollectModel.provider = provider;
                 DataCollectModel.data = data || {};
+                setTimeout(() => {
+                  DataCollectModel.type = type;
+                }, 0);
               }}
               reload={DataCollectModel.reload}
+              onReload={() => {
+                DataCollectModel.refresh = !DataCollectModel.refresh;
+              }}
             />
           </div>
           {DataCollectModel?.id ? (
-            <div className={styles.right}>{obj[DataCollectModel.type]}</div>
+            <div className={styles.right}>
+              {DataCollectModel.type ? obj[DataCollectModel.type] : ''}
+            </div>
           ) : (
             <Empty style={{ marginTop: 100 }} />
           )}

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

@@ -18,6 +18,7 @@ interface Props {
   id?: any;
   provider?: 'OPC_UA' | 'MODBUS_TCP';
   reload?: () => void;
+  refresh?: boolean;
 }
 
 const CollectorModel = model<{
@@ -177,7 +178,7 @@ export default observer((props: Props) => {
 
   useEffect(() => {
     handleSearch(param);
-  }, [props.id]);
+  }, [props.id, props.refresh]);
 
   const getState = (record: Partial<CollectorItem>) => {
     if (record) {

+ 3 - 3
src/pages/link/DataCollect/components/Point/Save/BatchUpdate.tsx

@@ -169,10 +169,10 @@ export default (props: Props) => {
           onClick={async () => {
             const value = await form.submit<any>();
             const obj = props.data[0];
-            if (value.accessModes.length) {
+            if (value?.accessModes && value?.accessModes?.length) {
               obj.accessModes = value.accessModes;
             }
-            if (value.features.length) {
+            if (value?.features && value?.features?.length) {
               obj.features = value.features;
             }
             if (Number(value.interval) >= 0) {
@@ -185,7 +185,7 @@ export default (props: Props) => {
               return {
                 ...item,
                 ...obj,
-                pointKey: obj?.configuration?.nodeId,
+                pointKey: item?.pointKey || item?.configuration?.nodeId,
               };
             });
             const response = await service.savePointBatch(arr);

+ 169 - 153
src/pages/link/DataCollect/components/Point/index.tsx

@@ -28,6 +28,7 @@ interface PointCardProps {
   data?: Partial<CollectorItem>;
   provider?: 'OPC_UA' | 'MODBUS_TCP';
   reload: boolean; // 变化时刷新
+  columns: ProColumns<PointItem>[];
 }
 
 const PointModel = model<{
@@ -85,157 +86,6 @@ const PointCard = observer((props: PointCardProps) => {
     }
   };
 
-  const columns: ProColumns<PointItem>[] = props.type
-    ? [
-        {
-          title: '名称',
-          dataIndex: 'name',
-        },
-        {
-          title: '通讯协议',
-          dataIndex: 'provider',
-          valueType: 'select',
-          valueEnum: {
-            OPC_UA: {
-              text: 'OPC_UA',
-              status: 'OPC_UA',
-            },
-            MODBUS_TCP: {
-              text: 'MODBUS_TCP',
-              status: 'MODBUS_TCP',
-            },
-          },
-        },
-        {
-          title: '访问类型',
-          dataIndex: 'accessModes',
-          valueType: 'select',
-          valueEnum: {
-            read: {
-              text: '读',
-              status: 'read',
-            },
-            write: {
-              text: '写',
-              status: 'write',
-            },
-            subscribe: {
-              text: '订阅',
-              status: 'subscribe',
-            },
-          },
-        },
-        {
-          title: '状态',
-          dataIndex: 'state',
-          valueType: 'select',
-          valueEnum: {
-            enabled: {
-              text: '正常',
-              status: 'enabled',
-            },
-            disabled: {
-              text: '禁用',
-              status: 'disabled',
-            },
-          },
-        },
-        {
-          title: '运行状态',
-          dataIndex: 'runningState',
-          valueType: 'select',
-          valueEnum: {
-            running: {
-              text: '运行中',
-              status: 'running',
-            },
-            partialError: {
-              text: '部分错误',
-              status: 'partialError',
-            },
-            failed: {
-              text: '错误',
-              status: 'failed',
-            },
-            stopped: {
-              text: '已停止',
-              status: 'stopped',
-            },
-          },
-        },
-        {
-          title: '说明',
-          dataIndex: 'description',
-        },
-      ]
-    : [
-        {
-          title: '名称',
-          dataIndex: 'name',
-        },
-        {
-          title: '访问类型',
-          dataIndex: 'accessModes',
-          valueType: 'select',
-          valueEnum: {
-            read: {
-              text: '读',
-              status: 'read',
-            },
-            write: {
-              text: '写',
-              status: 'write',
-            },
-            subscribe: {
-              text: '订阅',
-              status: 'subscribe',
-            },
-          },
-        },
-        {
-          title: '状态',
-          dataIndex: 'state',
-          valueType: 'select',
-          valueEnum: {
-            enabled: {
-              text: '正常',
-              status: 'enabled',
-            },
-            disabled: {
-              text: '禁用',
-              status: 'disabled',
-            },
-          },
-        },
-        {
-          title: '运行状态',
-          dataIndex: 'runningState',
-          valueType: 'select',
-          valueEnum: {
-            running: {
-              text: '运行中',
-              status: 'running',
-            },
-            partialError: {
-              text: '部分错误',
-              status: 'partialError',
-            },
-            failed: {
-              text: '错误',
-              status: 'failed',
-            },
-            stopped: {
-              text: '已停止',
-              status: 'stopped',
-            },
-          },
-        },
-        {
-          title: '说明',
-          dataIndex: 'description',
-        },
-      ];
-
   const subRef = useRef<any>(null);
 
   const subscribeProperty = (list: any) => {
@@ -255,6 +105,7 @@ const PointCard = observer((props: PointCardProps) => {
   const handleSearch = (params: any) => {
     PointModel.checkAll = false;
     PointModel.selectKey = [];
+    PointModel.list = [];
     setLoading(true);
     setParam(params);
     service
@@ -330,6 +181,7 @@ const PointCard = observer((props: PointCardProps) => {
           icon={<RedoOutlined />}
           onClick={() => {
             PointModel.selectKey = [];
+            PointModel.list = [];
             PointModel.checkAll = false;
           }}
         >
@@ -342,7 +194,7 @@ const PointCard = observer((props: PointCardProps) => {
   return (
     <div>
       <SearchComponent<PointItem>
-        field={columns}
+        field={props.columns}
         target="data-collect-point"
         onSearch={(data) => {
           const dt = {
@@ -394,8 +246,10 @@ const PointCard = observer((props: PointCardProps) => {
                         PointModel.checkAll = e.target.checked;
                         if (e.target.checked) {
                           PointModel.selectKey = [...dataSource?.data.map((item: any) => item.id)];
+                          PointModel.list = [...dataSource?.data];
                         } else {
                           PointModel.selectKey = [];
+                          PointModel.list = [];
                         }
                       }}
                     >
@@ -497,9 +351,171 @@ const PointCard = observer((props: PointCardProps) => {
 });
 
 export default observer((props: Props) => {
+  const columns: ProColumns<PointItem>[] = props.type
+    ? [
+        {
+          title: '名称',
+          dataIndex: 'name',
+        },
+        {
+          title: '通讯协议',
+          dataIndex: 'provider',
+          valueType: 'select',
+          valueEnum: {
+            OPC_UA: {
+              text: 'OPC_UA',
+              status: 'OPC_UA',
+            },
+            MODBUS_TCP: {
+              text: 'MODBUS_TCP',
+              status: 'MODBUS_TCP',
+            },
+          },
+        },
+        {
+          title: '访问类型',
+          dataIndex: 'accessModes',
+          valueType: 'select',
+          valueEnum: {
+            read: {
+              text: '读',
+              status: 'read',
+            },
+            write: {
+              text: '写',
+              status: 'write',
+            },
+            subscribe: {
+              text: '订阅',
+              status: 'subscribe',
+            },
+          },
+        },
+        {
+          title: '状态',
+          dataIndex: 'state',
+          valueType: 'select',
+          valueEnum: {
+            enabled: {
+              text: '正常',
+              status: 'enabled',
+            },
+            disabled: {
+              text: '禁用',
+              status: 'disabled',
+            },
+          },
+        },
+        {
+          title: '运行状态',
+          dataIndex: 'runningState',
+          valueType: 'select',
+          valueEnum: {
+            running: {
+              text: '运行中',
+              status: 'running',
+            },
+            partialError: {
+              text: '部分错误',
+              status: 'partialError',
+            },
+            failed: {
+              text: '错误',
+              status: 'failed',
+            },
+            stopped: {
+              text: '已停止',
+              status: 'stopped',
+            },
+          },
+        },
+        {
+          title: '说明',
+          dataIndex: 'description',
+        },
+      ]
+    : [
+        {
+          title: '名称',
+          dataIndex: 'name',
+        },
+        {
+          title: '访问类型',
+          dataIndex: 'accessModes',
+          valueType: 'select',
+          valueEnum:
+            props?.provider === 'MODBUS_TCP'
+              ? {
+                  read: {
+                    text: '读',
+                    status: 'read',
+                  },
+                  write: {
+                    text: '写',
+                    status: 'write',
+                  },
+                }
+              : {
+                  read: {
+                    text: '读',
+                    status: 'read',
+                  },
+                  write: {
+                    text: '写',
+                    status: 'write',
+                  },
+                  subscribe: {
+                    text: '订阅',
+                    status: 'subscribe',
+                  },
+                },
+        },
+        {
+          title: '状态',
+          dataIndex: 'state',
+          valueType: 'select',
+          valueEnum: {
+            enabled: {
+              text: '正常',
+              status: 'enabled',
+            },
+            disabled: {
+              text: '禁用',
+              status: 'disabled',
+            },
+          },
+        },
+        {
+          title: '运行状态',
+          dataIndex: 'runningState',
+          valueType: 'select',
+          valueEnum: {
+            running: {
+              text: '运行中',
+              status: 'running',
+            },
+            partialError: {
+              text: '部分错误',
+              status: 'partialError',
+            },
+            failed: {
+              text: '错误',
+              status: 'failed',
+            },
+            stopped: {
+              text: '已停止',
+              status: 'stopped',
+            },
+          },
+        },
+        {
+          title: '说明',
+          dataIndex: 'description',
+        },
+      ];
   return (
     <div>
-      <PointCard {...props} reload={PointModel.reload} />
+      <PointCard columns={columns} {...props} reload={PointModel.reload} />
       {PointModel.m_visible && (
         <ModbusSave
           data={PointModel.current}

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

@@ -46,6 +46,7 @@ interface Props {
     data?: any,
   ) => void;
   reload?: boolean;
+  onReload: () => void;
 }
 
 export default observer((props: Props) => {
@@ -245,6 +246,7 @@ export default observer((props: Props) => {
                                   if (resp.status === 200) {
                                     TreeModel.param = {};
                                     handleSearch(TreeModel.param);
+                                    props.onReload();
                                     onlyMessage('操作成功');
                                   } else {
                                     onlyMessage('操作失败!', 'error');
@@ -260,7 +262,7 @@ export default observer((props: Props) => {
                                 </Tooltip>
                               </Popconfirm>
                               <Popconfirm
-                                title={'该操作将会删除下属采集器与点位,确定删除?'}
+                                title={'该操作将会删除下属点位,确定删除?'}
                                 onConfirm={async () => {
                                   const resp = await service.removeCollector(i.id);
                                   if (resp.status === 200) {