|
@@ -1,6 +1,5 @@
|
|
|
import { useRef, useState } from 'react';
|
|
import { useRef, useState } from 'react';
|
|
|
import type { ActionType, ProColumns } from '@jetlinks/pro-table';
|
|
import type { ActionType, ProColumns } from '@jetlinks/pro-table';
|
|
|
-import ProTable from '@jetlinks/pro-table';
|
|
|
|
|
import { Badge, Button, message, Popconfirm, Tooltip } from 'antd';
|
|
import { Badge, Button, message, Popconfirm, Tooltip } from 'antd';
|
|
|
import {
|
|
import {
|
|
|
CloseCircleOutlined,
|
|
CloseCircleOutlined,
|
|
@@ -17,6 +16,8 @@ import { getButtonPermission, getMenuPathByParams, MENUS_CODE } from '@/utils/me
|
|
|
import { history } from 'umi';
|
|
import { history } from 'umi';
|
|
|
import Service from '@/pages/link/service';
|
|
import Service from '@/pages/link/service';
|
|
|
import { Store } from 'jetlinks-store';
|
|
import { Store } from 'jetlinks-store';
|
|
|
|
|
+import { ProTableCard } from '@/components';
|
|
|
|
|
+import NetworkCard from '@/components/ProTableCard/CardItems/networkCard';
|
|
|
|
|
|
|
|
export const service = new Service('network/config');
|
|
export const service = new Service('network/config');
|
|
|
|
|
|
|
@@ -29,6 +30,16 @@ const pageJump = (id?: string) => {
|
|
|
history.push(`${getMenuPathByParams(MENUS_CODE['link/Type/Detail'], id)}`);
|
|
history.push(`${getMenuPathByParams(MENUS_CODE['link/Type/Detail'], id)}`);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+export const networkMap = {
|
|
|
|
|
+ UDP: 'udp://',
|
|
|
|
|
+ TCP_SERVER: 'tcp://',
|
|
|
|
|
+ WEB_SOCKET_SERVER: 'ws://',
|
|
|
|
|
+ MQTT_CLIENT: 'mqtt://',
|
|
|
|
|
+ HTTP_SERVER: 'http://',
|
|
|
|
|
+ MQTT_SERVER: 'mqtt://',
|
|
|
|
|
+ COAP_SERVER: 'coap://',
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
const Network = () => {
|
|
const Network = () => {
|
|
|
const intl = useIntl();
|
|
const intl = useIntl();
|
|
|
const actionRef = useRef<ActionType>();
|
|
const actionRef = useRef<ActionType>();
|
|
@@ -60,11 +71,12 @@ const Network = () => {
|
|
|
if (record.shareCluster) {
|
|
if (record.shareCluster) {
|
|
|
const publicHost = record.configuration.publicHost;
|
|
const publicHost = record.configuration.publicHost;
|
|
|
const publicPort = record.configuration.publicPort;
|
|
const publicPort = record.configuration.publicPort;
|
|
|
- return (
|
|
|
|
|
|
|
+ return publicHost ? (
|
|
|
<>
|
|
<>
|
|
|
- 公网: {publicHost}:{publicPort}
|
|
|
|
|
|
|
+ {networkMap[record.type]}
|
|
|
|
|
+ {publicHost}:{publicPort}
|
|
|
</>
|
|
</>
|
|
|
- );
|
|
|
|
|
|
|
+ ) : null;
|
|
|
} else {
|
|
} else {
|
|
|
const log = record.cluster?.map(
|
|
const log = record.cluster?.map(
|
|
|
(item) => `${item.configuration.publicHost}:${item.configuration.publicPort}`,
|
|
(item) => `${item.configuration.publicHost}:${item.configuration.publicPort}`,
|
|
@@ -72,7 +84,9 @@ const Network = () => {
|
|
|
return (
|
|
return (
|
|
|
<>
|
|
<>
|
|
|
{log.map((item) => (
|
|
{log.map((item) => (
|
|
|
- <div key={item}>公网:{item}</div>
|
|
|
|
|
|
|
+ <div key={item}>
|
|
|
|
|
+ `${networkMap[record.type]}${item}`
|
|
|
|
|
+ </div>
|
|
|
))}
|
|
))}
|
|
|
</>
|
|
</>
|
|
|
);
|
|
);
|
|
@@ -114,7 +128,7 @@ const Network = () => {
|
|
|
pageJump(record.id);
|
|
pageJump(record.id);
|
|
|
}}
|
|
}}
|
|
|
>
|
|
>
|
|
|
- <Tooltip title="查看">
|
|
|
|
|
|
|
+ <Tooltip title="编辑">
|
|
|
<EditOutlined />
|
|
<EditOutlined />
|
|
|
</Tooltip>
|
|
</Tooltip>
|
|
|
</Button>,
|
|
</Button>,
|
|
@@ -198,7 +212,7 @@ const Network = () => {
|
|
|
setParam(data);
|
|
setParam(data);
|
|
|
}}
|
|
}}
|
|
|
/>
|
|
/>
|
|
|
- <ProTable<NetworkItem>
|
|
|
|
|
|
|
+ <ProTableCard<NetworkItem>
|
|
|
actionRef={actionRef}
|
|
actionRef={actionRef}
|
|
|
params={param}
|
|
params={param}
|
|
|
columns={columns}
|
|
columns={columns}
|
|
@@ -222,6 +236,77 @@ const Network = () => {
|
|
|
request={async (params) =>
|
|
request={async (params) =>
|
|
|
service.query({ ...params, sorts: [{ name: 'createTime', order: 'desc' }] })
|
|
service.query({ ...params, sorts: [{ name: 'createTime', order: 'desc' }] })
|
|
|
}
|
|
}
|
|
|
|
|
+ gridColumn={3}
|
|
|
|
|
+ cardRender={(record) => (
|
|
|
|
|
+ <NetworkCard
|
|
|
|
|
+ {...record}
|
|
|
|
|
+ actions={[
|
|
|
|
|
+ <Button
|
|
|
|
|
+ key="edit"
|
|
|
|
|
+ onClick={() => {
|
|
|
|
|
+ Store.set('current-network-data', record);
|
|
|
|
|
+ pageJump(record.id);
|
|
|
|
|
+ }}
|
|
|
|
|
+ >
|
|
|
|
|
+ <EditOutlined />
|
|
|
|
|
+ 编辑
|
|
|
|
|
+ </Button>,
|
|
|
|
|
+ <Tooltip title={record.state.value === 'enabled' ? '禁用' : '启用'}>
|
|
|
|
|
+ <Popconfirm
|
|
|
|
|
+ disabled={getButtonPermission('link/Type', ['action'])}
|
|
|
|
|
+ title={`确认${record.state.value === 'enabled' ? '禁用' : '启用'}?`}
|
|
|
|
|
+ onConfirm={async () => {
|
|
|
|
|
+ // await service.update({
|
|
|
|
|
+ // id: record.id,
|
|
|
|
|
+ // status: record.status ? 0 : 1,
|
|
|
|
|
+ // });
|
|
|
|
|
+ const map = {
|
|
|
|
|
+ disabled: 'start',
|
|
|
|
|
+ enabled: 'shutdown',
|
|
|
|
|
+ };
|
|
|
|
|
+ await service.changeState(record.id, map[record.state.value]);
|
|
|
|
|
+ message.success(
|
|
|
|
|
+ intl.formatMessage({
|
|
|
|
|
+ id: 'pages.data.option.success',
|
|
|
|
|
+ defaultMessage: '操作成功!',
|
|
|
|
|
+ }),
|
|
|
|
|
+ );
|
|
|
|
|
+ actionRef.current?.reload();
|
|
|
|
|
+ }}
|
|
|
|
|
+ >
|
|
|
|
|
+ <Button
|
|
|
|
|
+ type="link"
|
|
|
|
|
+ style={{ padding: 0 }}
|
|
|
|
|
+ disabled={getButtonPermission('link/Type', ['action'])}
|
|
|
|
|
+ key="changeState"
|
|
|
|
|
+ >
|
|
|
|
|
+ {record.state.value === 'enabled' ? (
|
|
|
|
|
+ <CloseCircleOutlined />
|
|
|
|
|
+ ) : (
|
|
|
|
|
+ <PlayCircleOutlined />
|
|
|
|
|
+ )}
|
|
|
|
|
+ {record.state.value === 'enabled' ? '禁用' : '启用'}
|
|
|
|
|
+ </Button>
|
|
|
|
|
+ </Popconfirm>
|
|
|
|
|
+ </Tooltip>,
|
|
|
|
|
+ <Popconfirm
|
|
|
|
|
+ key="delete"
|
|
|
|
|
+ title="确认删除?"
|
|
|
|
|
+ onConfirm={async () => {
|
|
|
|
|
+ const response: any = await service.remove(record.id);
|
|
|
|
|
+ if (response.status === 200) {
|
|
|
|
|
+ message.success('删除成功');
|
|
|
|
|
+ actionRef.current?.reload();
|
|
|
|
|
+ }
|
|
|
|
|
+ }}
|
|
|
|
|
+ >
|
|
|
|
|
+ <Button key="delete">
|
|
|
|
|
+ <DeleteOutlined />
|
|
|
|
|
+ </Button>
|
|
|
|
|
+ </Popconfirm>,
|
|
|
|
|
+ ]}
|
|
|
|
|
+ />
|
|
|
|
|
+ )}
|
|
|
/>
|
|
/>
|
|
|
</PageContainer>
|
|
</PageContainer>
|
|
|
);
|
|
);
|