import React, { useState, useEffect } from 'react'; import { Modal, Radio, Transfer } from 'antd'; // import SelectDevice from '@/components/select-device'; import classNames from '@pansy/classnames'; import styles from './select-device-modal.less'; import { Table, Empty, MapDeviceSelection } from '@sensoro/sensoro-design'; import { difference } from 'lodash'; import { ModalProps } from 'antd/es/modal'; import { DeviceInfo } from '../../common/types/map-device'; import SensorIcon from '@sensoro/library/lib/components/sensor-icon'; import { iconMap } from '../select-device/config'; const TableTransfer = ({ getColumns, deviceKey, ...restProps }: any) => { return ( {({ direction, filteredItems, onItemSelectAll, onItemSelect, selectedKeys: listSelectedKeys, }) => { const rowSelection = { onChange: () => {}, onSelectAll(selected: boolean, selectedRows: any[]) { const treeSelectedKeys = selectedRows .filter(item => !item.disabled) .map(item => item?.[deviceKey]); const diffKeys = selected ? difference(treeSelectedKeys, listSelectedKeys) : difference(listSelectedKeys, treeSelectedKeys); onItemSelectAll(diffKeys, selected); }, onSelect(item: any, selected: boolean) { onItemSelect(item?.[deviceKey], selected); }, selectedRowKeys: listSelectedKeys, }; return ( ), }} size="small" pagination={{ // size: 'small', pageSize: direction === 'left' ? 7 : 8, showQuickJumper: false, showSizeChanger: false, }} /> ); }} ); }; export interface Data { devices?: DeviceInfo[]; relatedCameraIds?: string[]; } export interface SelectDeviceModalProps extends ModalProps { data?: Data; onChange?: (value: string[]) => void; deviceKey?: string; } const SelectDeviceModal: React.FC = props => { const { onChange, onCancel, data = {}, visible, deviceKey = 'cid', ...rest } = props; const { devices, relatedCameraIds } = data; const [mode, setMode] = useState('map'); const [targetIds, setTargetIds] = useState(relatedCameraIds); // @ts-ignore const handleModeChange = e => { const mode = e.target.value; setMode(mode); }; useEffect(() => { setTargetIds(relatedCameraIds); }, [relatedCameraIds]); const getColumns = (position: string) => [ { title: position === 'left' ? '摄像机列表' : '已选择摄像机', dataIndex: 'name', ellipsis: true, render: (text, row) => { return ( {row.name} ); }, }, ]; const handleChange = (nextTargetKeys: string[]) => { setTargetIds(nextTargetKeys); }; const handleCancel = (e: any) => { setTargetIds(relatedCameraIds); onCancel?.(e); }; return ( { onChange?.(targetIds || []); onCancel?.(e); }} > 列表模式 地图模式
{visible && ( item.name.indexOf(inputValue) !== -1 } rowKey={(record: any) => record[deviceKey]} /> )}
); }; export default SelectDeviceModal;