import React, { useState } from 'react'; import { Button, Card, ConfigProvider, theme, Flex, Input, InputProps, TransferProps, TreeDataNode, TreeProps, Tree } from 'antd'; import './index.less' import { DeleteOutlined, DoubleRightOutlined, SearchOutlined } from '@ant-design/icons'; const componentName = 'zhst-biz-treeTransfer' export interface TreeTransferProps { dataSource: TreeDataNode[] treeProps?: TreeProps searchInputProps?: InputProps targetItems: TreeDataNode[]; checkedKeys: string[]; onTreeSelect?: TreeProps['onSelect'] onTreeCheck?: TreeProps['onCheck'] onItemDelete?: (key: string, info?: TreeDataNode) => void onChange?: TransferProps['onChange']; onOk?: (data: any) => void; onReset?: () => void; } const { useToken } = theme const TreeTransfer: React.FC = ({ dataSource, treeProps, searchInputProps, targetItems = [], checkedKeys = [], onTreeCheck, onTreeSelect, onItemDelete, onOk, onReset }) => { const { token } = useToken() const [keyWords, setKeyWords ] = useState('') function findNodesWithKeyword(_keyWords: string, _treeData: TreeDataNode[]) { // @ts-ignore function dfs(node: any) { return node.filter((item: { title: string | string[]; }) => item.title.includes(_keyWords)) } const data = dfs(_treeData) return data || []; } return (
可选择的范围
} > } onChange={e => setKeyWords(e.target.value)} placeholder='请输入设备名称' {...searchInputProps} /> onTreeCheck?.(keys, info)} onSelect={(keys, info) => onTreeSelect?.(keys, info)} {...treeProps} />
已选择的范围
} >
{targetItems.map(item => (
{ e.target.style.backgroundColor = token.colorPrimaryBg e.target.style.color = token.colorPrimary }} onMouseLeave={(e: any) => { e.target.style.color = token.colorText e.target.style.backgroundColor = null }} > {item.title as any}
{ // const { root, keys } = getAllRootKeyById(item.key as string, dataSource) onItemDelete?.(item.key as string, item) }} />
))}
); } export default TreeTransfer