import React, {useState} from 'react'; import {Badge, Col, Divider, Layout, Row, Space, Table, Tag, Tooltip, Typography} from "antd"; import {ProTable} from "@ant-design/pro-components"; import {PROTOCOL_COLORS} from "../../common/constants"; import assetApi from "../../api/asset"; import {isEmpty} from "../../utils/utils"; import dayjs from "dayjs"; const {Title} = Typography; const {Content} = Layout; const actionRef = React.createRef(); const BatchCommand = () => { let [rows, setRows] = useState([]); const addRows = (selectedRows) => { selectedRows.forEach(selectedRow => { let exist = rows.some(row => { return row.id === selectedRow.id; }); if (exist === false) { rows.push(selectedRow); } }); setRows(rows.slice()); } const removeRows = (selectedRows) => { selectedRows.forEach(selectedRow => { rows = rows.filter(row => row.id !== selectedRow.id); }); setRows(rows.slice()); } const removeRow = (rowKey) => { let items = rows.filter(row => row.id !== rowKey); setRows(items.slice()); } const columns = [{ title: '资产名称', dataIndex: 'name', key: 'name', render: (name, record) => { let short = name; if (short && short.length > 20) { short = short.substring(0, 20) + " ..."; } return ( {short} ); } }, { title: '连接协议', dataIndex: 'protocol', key: 'protocol', render: (text, record) => { const title = `${record['ip'] + ':' + record['port']}` return ( {text} ) } }, { title: '标签', dataIndex: 'tags', key: 'tags', render: tags => { if (!isEmpty(tags)) { let tagDocuments = [] let tagArr = tags.split(','); for (let i = 0; i < tagArr.length; i++) { if (tags[i] === '-') { continue; } tagDocuments.push({tagArr[i]}) } return tagDocuments; } } }, { title: '状态', dataIndex: 'active', key: 'active', render: text => { if (text) { return ( ) } else { return ( ) } } }, { title: '所有者', dataIndex: 'ownerName', key: 'ownerName' }, { title: '创建时间', dataIndex: 'created', key: 'created', render: (text, record) => { return ( {dayjs(text).fromNow()} ) } }, ]; return ( 待执行资产列表 { rows.map(item => { return removeRow(item['id'])} key={item['id']}>{item['name']} }) } ( 已选 {selectedRowKeys.length} 项 addRows(selectedRows)}> 加入待执行列表 removeRows(selectedRows)}> 从待执行列表移除 )} request={async (params = {}, sort, filter) => { let field = ''; let order = ''; if (Object.keys(sort).length > 0) { field = Object.keys(sort)[0]; order = Object.values(sort)[0]; } let queryParams = { pageIndex: params.current, pageSize: params.pageSize, name: params.name, protocol: 'ssh', field: field, order: order } let result = await assetApi.getPaging(queryParams); return { data: result['items'], success: true, total: result['total'] }; }} rowKey="id" search={{ labelWidth: 'auto', }} pagination={{ pageSize: 5, }} dateFormatter="string" headerTitle="资产列表" /> ); }; export default BatchCommand;