/* eslint-disable @typescript-eslint/no-use-before-define */ import CustomTree from '@/pages/components/customTree'; import { TeamOutlined } from '@ant-design/icons'; import type { PopoverProps } from 'antd'; import { Alert, Button, Popconfirm, Popover, Space, Tabs } from 'antd'; import type { ColumnsType } from 'antd/es/table'; import React, { useEffect, useState } from 'react'; import SelectConponents from '../selectConponents'; import CustomTable from './table'; interface SelectedTableProps { placement?: PopoverProps['placement']; selectedOrg?: number; onCancel?: () => void; onOk?: (values: any) => void; orgTreeData?: User.OrganizationNode[]; value?: any; onChange?: (values: any) => void; } const SelectedTable: React.FC = (props) => { const { placement = 'bottomLeft', orgTreeData, value: formValue, onChange: onBindUserChange, } = props; const [open, setOpen] = useState(false); const [tableData, setTableData] = useState([]); //用户选择列表 const [selectedRowKeys, setSelectedRowKeys] = useState<[]>([]); const [selectedRows, setSelectedRows] = useState([]); // 用户组 const [checkedKeys, setCheckedKeys] = useState([]); const [checkedRow, setCheckedRow] = useState([]); // 已绑定用户列表选择 const [bindTableKeys, setBindTableKeys] = useState([]); useEffect(() => { console.log('formValue==========', formValue); const userList: any = []; const groupList: any = []; const userId: any = []; const groupId: any = []; if (formValue && formValue.length > 0) { formValue.forEach((item: any) => { if (item.type === 1) { userList.push(item); userId.push(item.record_id); } else { groupList.push(item); groupId.push(item.record_id); } }); setTableData(formValue); setSelectedRowKeys(userId); setSelectedRows(userList); setCheckedKeys(groupId); setCheckedRow(groupList); } }, [formValue]); // const onOrgSelect = (selectedKeys: React.Key[], info: any) => {}; const onCheckChange = (keys: any[], info: any) => { // const { checkedNodes } = info; console.log('info=========', info); setCheckedKeys(keys); setCheckedRow(info); }; const onHnadleCancel = () => { setOpen(false); setSelectedRowKeys([]); setSelectedRows([]); setCheckedKeys([]); setCheckedRow([]); }; const onHandleOk = () => { const list: any[] = []; // 用户 (selectedRows || []).forEach((item) => { list.push({ record_id: item.id, name: item.user_name, type: 1, }); }); // 用户组 (checkedRow || []).forEach((item) => { list.push({ record_id: item.id, name: item.name, type: 2, }); }); setTableData(list); if (onBindUserChange) onBindUserChange(list); onHnadleCancel(); }; const onUserTableSelect = (keys: any[], row: any[]) => { console.log('selectedRowKeys changed: ', keys); console.log('selectedRowKeys rows: ', row); setSelectedRowKeys(keys as any); setSelectedRows(row); }; const onSelectChange = (keys: any[]) => { console.log('selectedRowKeys changed: ', keys); setBindTableKeys(keys as any); }; const handleDelete = (record?: any) => { console.log('record=====handleDelete', record); if (record) { // 单个删除 const { record_id } = record || {}; const newData = tableData.filter((item) => item.record_id !== record_id); setTableData(newData); if (onBindUserChange) onBindUserChange(newData); } else { // 批量删除 const newData = tableData.filter( (item) => !bindTableKeys.includes(item.record_id), ); setTableData(newData); if (onBindUserChange) onBindUserChange(newData); setSelectedRowKeys([]); setSelectedRows([]); } }; const getColumns = (): ColumnsType => { const columns: ColumnsType = [ { title: '序号', dataIndex: 'order', key: 'order', width: 80, render: (_, record, index) => {index + 1}, }, { title: '名称', dataIndex: 'name', key: 'name', }, { title: '类型', dataIndex: 'type', key: 'type', render: (text) => ( {text == 1 ? '用户' : text == 2 ? '用户组' : ''} ), }, { title: '操作', key: 'action', render: (_, record) => ( ), }, ]; return columns; }; const accessPopover = (
} />
); return ( <>
handleDelete()} disabled={bindTableKeys.length === 0} okText="删除" cancelText="取消" >
); }; export default SelectedTable;