import React from "react"
import { useContext, useState, useEffect, useRef } from 'react';
import { Table, Input, Button, Popconfirm, Form, InputRef, Tag, Space, Modal } from 'antd';
import Icon, { SearchOutlined } from '@ant-design/icons';
import { FormInstance } from 'antd/lib/form';
import MainPage from './../mainPage/index'
export default function Home() {
const [isModalVisible, setIsModalVisible] = useState(false);
// const [searchInput, setSearchInput] = useState('');
const [state, setState] = useState({
searchText: '',
searchedColumn: '',
});
const [modelKey, setModelKey] = useState('');
const [selectKey, setSelectKey] = useState([]);
const [selectModel, setSelectModel] = useState('');
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
const [data, setData] = useState([
{
key: '1',
name: 'John Brown',
age: 32,
address: 'New York No. 1 Lake Park',
cachange: []
},
{
key: '2',
name: 'Jim Green',
age: 42,
address: 'London No. 1 Lake Park',
cachange: []
},
{
key: '3',
name: 'Joe Black',
age: 32,
address: 'Sidney No. 1 Lake Park',
cachange: []
},
]);
const [userList, setUserList] = useState([
{title: 'name1', id: 1, isChecked: false},
{title: 'name2', id: 2, isChecked: false},
{title: 'name3', id: 3, isChecked: false},
{title: 'name4', id: 4, isChecked: false}
]);
const handleSearch = (selectedKeys, confirm, dataIndex) => {
confirm();
setState({
searchText: selectedKeys[0],
searchedColumn: dataIndex,
});
};
const handleReset = clearFilters => {
clearFilters();
setState({ searchText: '' });
};
let searchInput = ''
const getColumnSearchProps = dataIndex => ({
filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters }) => (
<div style={{ padding: 8 }}>
<Input
ref={node => {
searchInput = node;
// setSearchInput(node)
}}
placeholder={`Search ${dataIndex}`}
value={selectedKeys[0]}
onChange={e => setSelectedKeys(e.target.value ? [e.target.value] : [])}
onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}
style={{ marginBottom: 8, display: 'block' }}
/>
<Space>
<Button
type="primary"
onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}
icon={<SearchOutlined />}
size="small"
style={{ width: 90 }}
>
Search
</Button>
<Button onClick={() => handleReset(clearFilters)} size="small" style={{ width: 90 }}>
Reset
</Button>
<Button
type="link"
size="small"
onClick={() => {
confirm({ closeDropdown: false });
setState({
searchText: selectedKeys[0],
searchedColumn: dataIndex,
});
console.log({
searchText: selectedKeys[0],
searchedColumn: dataIndex,
})
}}
>
Filter
</Button>
</Space>
</div>
),
filterIcon: filtered => <SearchOutlined style={{ color: filtered ? '#1890ff' : undefined }} />,
onFilter: (value, record) =>
record[dataIndex]
? record[dataIndex].toString().toLowerCase().includes(value.toLowerCase())
: '',
onFilterDropdownVisibleChange: visible => {
if (visible) {
setTimeout(() => searchInput && searchInput.select(), 100);
}
}
});
const columns = [
{
title: 'Name',
dataIndex: 'name',
key: 'name',
...getColumnSearchProps('name'),
render: text => <a>{text}</a>,
},
{
title: 'Age',
dataIndex: 'age',
key: 'age',
...getColumnSearchProps('age')
},
{
title: 'Address',
dataIndex: 'address',
key: 'address',
...getColumnSearchProps('address')
},
{
title: 'Action',
key: 'cachange',
dataIndex: 'cachange',
...getColumnSearchProps('cachange'),
render: (cachange, record) => (
<Space size="middle">
<a onClick={() => {showModal(record, 2)}}><SearchOutlined /></a>
<span>{cachange.map(v => v.title).join(',')}</span>
{/* {
cachange.map((v, i) => {
return <span key={i + 'cachange'}>{(v.title + ',').slice(0, -1) ||''}</span>
})
} */}
</Space>
),
},
];
const rowSelection = {
selectedRowKeys: selectKey,
onChange: (selectedRowKeys, selectedRows) => {
setSelectKey(selectedRowKeys)
// console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
}
// onSelect: (record, selected, selectedRows) => {
// console.log(record, selected, selectedRows);
// },
// onSelectAll: (selected, selectedRows, changeRows) => {
// console.log(selected, selectedRows, changeRows);
// },
};
const showModal = (record, type) => {
let newList = [...userList]
newList.forEach((v1) => {
v1.isChecked = false
})
setUserList(newList)
setModelKey(record.key)
setSelectModel(type)
setIsModalVisible(true);
};
const handleOk = () => {
let selectPerson = userList.filter((v) => { return v.isChecked})
if (selectPerson && selectPerson.length) {
let newData = [...data]
if (selectModel === 2) {
newData.forEach((v) => {
if (v.key === modelKey) {
v.cachange = selectPerson
}
})
} else if (selectModel === 1) {
newData.forEach((v, i) => {
if (selectKey.includes(`${i + 1}`)) {
v.cachange = selectPerson
}
})
}
setData(newData)
}
setModelKey('')
setSelectModel('')
setSelectKey([])
setIsModalVisible(false);
}
const handleCancel = () => {
setModelKey('')
setSelectModel('')
setIsModalVisible(false);
};
const pClick = (v) => {
let newList = [...userList]
newList.forEach((v1) => {
// v1.isChecked = false
if (v1.id === v.id) {
v1.isChecked = !v1.isChecked
}
})
setUserList(newList)
};
const handleOk = (file) => {
// const formData = new FormData();//创建formData对象
// fileList.forEach(item => {
// formData.append('file', item.originFileObj);
// });
// axios({
// method: 'post',
// url: '',
// data: formData
// }).then(res => {
// console.log(res.data.msg)
// onSuccess(response, file);
// if (res.data.msg === 'success') {
// //上传成功后执行的函数
// }
// })
//清空fileList
// fileList.length = 0;
console.log(file)
};
const handleChange = (info) => {
props.callBack(info)
setFileList(info.fileList)
}
<Upload
customRequest = {myUpload}
// name="file"
// action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
// headers={{
// authorization: 'authorization-text',
// }}
// multiple={true}
// //陈列样式,现在是卡片式
// // listType="picture"
// beforeUpload={() => {
// //阻止上传
// return false;
// }}
onChange={(info) => { handleChange(info) }}
>
<Button>上传文件</Button>
</Upload>
return (
<div>
<MainPage callBack={(data) => console.log(data)}></MainPage>
<Button onClick={() => {showModal({key: ''}, 1)}}>批量变更</Button>
<Table rowSelection={rowSelection} columns={columns} dataSource={data} />
<Modal title="Basic Modal" visible={isModalVisible} onOk={handleOk} onCancel={handleCancel}>
{
userList.map((v, i) => {
return <p key={i + 'userList'} className={v.isChecked ? 'bg' : ''} onClick={() => {pClick(v)}}>{v.title}</p>
})
}
</Modal>
</div>
)
}
// function Home() {
// return (
// <div>
// <p>hhh</p>
// </div>
// )
// }
// export default Home;