import React, { Key, useEffect, useState } from "react"; import { Input, Select } from 'antd' import { KCIMTable } from "@/components/KCIMTable"; import { createFromIconfontCN } from "@ant-design/icons"; import { ModalForm, ProColumns, ProFormSelect, ProFormText } from "@ant-design/pro-components"; import { set } from "lodash"; import { getAddableTableData } from "./service"; // import './style.less'; interface TableSelecterProps { record: any } const IconFont = createFromIconfontCN({ scriptUrl: '', }); const TableSelecter = ({ record, open, title, onVisibleChange, rowKey = 'id', request, onFinish, defaultSelectedKeys }: { record: any, open: boolean, title: string, onVisibleChange: (bool: boolean) => void, defaultSelectedKeys: Key[], rowKey?: string, request?: (params: any) => Promise, onFinish?: (selectedKeys: React.Key[], selectedRows: any[]) => void }) => { const Table = React.forwardRef(({ }: TableSelecterProps, ref) => { const [datasource, set_datasource] = useState([]); const [selectedKeys, setSelectedKeys] = useState([]); const [selectedRows, set_selectedRows] = useState([]); const [showList, set_showList] = useState([]); const [type, set_type] = useState(3); const [keyword, set_keyword] = useState(undefined); const columns: ProColumns[] = [ { title: '收费项目代码', ellipsis:true, dataIndex: 'itemCode', }, { title: '收费项目名称', ellipsis:true, dataIndex: 'itemName', } ]; const onSelectChange = (newSelectedRowKeys: React.Key[], selectedRows: any) => { setSelectedKeys([...newSelectedRowKeys]); set_selectedRows([...selectedRows]); }; const saveHandle = async () => { const selectedRowCodes = selectedRows.map((a) => a[`${rowKey}`]); const rows = datasource.filter((a) => selectedRowCodes.includes(a[`${rowKey}`])); onFinish && onFinish(selectedKeys, rows); } const getTableData = async () => { const resp = await getAddableTableData(type); let selectedCodes: string[] = []; let selectedRows: any[] = []; if (resp) { const data = resp.map((a: any) => { if (defaultSelectedKeys.includes(a[`${rowKey}`])) { selectedCodes.push(a[`${rowKey}`]); selectedRows.push(a); const needItem = record.departList.filter((b: any) => a[`${rowKey}`] == b[`${rowKey}`]); return { ...a, flag: needItem[0].isManager ? true : false } } else { return a } }); set_showList(data); set_selectedRows([...selectedRows]); setSelectedKeys([...selectedCodes]); set_datasource([...datasource, ...data]); } return Promise.resolve([]); } useEffect(() => { // console.log({code, keyword}); const result = datasource.filter((a) => { return a.itemName.indexOf(keyword) != -1 }); set_showList([...result]); }, [keyword]); useEffect(()=>{ getTableData() },[type]); return (
, onChange: (e) => { if (e.target.value.length != 0) { set_keyword(e.target.value); } else { set_keyword(''); } } }} />
close()}>取消 saveHandle()}>{`确认(${selectedKeys.length > 0 && selectedKeys.length})`}
) }); const close = () => { onVisibleChange && onVisibleChange(false); } return (
) } export default TableSelecter