123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- import React, { useState, useEffect } from 'react';
- import { Form, Select, Modal, Button, Table, Divider, Tag, Input,Row,Col,Icon,Pagination } from 'antd';
- import request from '../../../../utils/request';
- import apis from '../../../../services/apis';
- import styles from '../style.less';
-
- const { Column, ColumnGroup } = Table;
- const SelectContact = props => {
-
- const [data, setData] = useState([]);
- const [visible, setVisible] = useState(false);
- const [group, setGroup] = useState({ groupId: undefined, groupName: '请选择' })
- const [selectedData, setSelectedData ] = useState([]);
-
- useEffect(() => {
- if (props.value && props.value != selectedData) {
- setSelectedData(props.value)
- }
- }, [props.value])
-
- // 查询列表
- const getList = (params) => {
- request({ ...apis.contact.list, params: { ...params } }).then((data) => {
- console.log(data)
- setData(data)
- })
- }
-
- useEffect(() => {
- getList({ pageNum: 1, pageSize: 10,})
- }, []);
-
-
-
- const handleChange = val => {
- }
-
- const selectData = val => {
- const list = selectedData.filter(x => x.contactId !== val.contactId).concat(val)
- setSelectedData(list)
- props.onSelected(list)
- setVisible(false)
- }
-
-
- // 提交事件
- const handleSubmit = (e, props) => {
- e.preventDefault();
- e.stopPropagation();
- props.form.validateFields((err, values) => {
- if (!err) {
- getList({ pageNum: 1, pageSize: 10, ...values })
- }
- });
- }
-
- function handleReset() {
- props.form.resetFields();
- getList({ pageNum: 1, pageSize: 10 })
- }
-
- const changePageNum = (pageNumber) => {
- getList({ pageNum: pageNumber, pageSize: 10 })
- }
-
- const removeSelected = (val) => {
- const list = selectedData.filter(x => x.contactId !== val.contactId)
- setSelectedData(list)
- props.onSelected(list)
- }
-
- const columns = [
- {
- title: '姓名',
- dataIndex: 'contactName',
- key: 'drainageId',
- align: 'center',
- ellipsis: true,
- },
- {
- title: '性别',
- dataIndex: 'sex',
- key: 'drainageId',
- align: 'center',
- ellipsis: true,
- render: text => <span>{text == 1 ? '男' : text == 2 ? '女' : '' }</span>,
- },
- {
- title: '头像',
- dataIndex: 'avatar',
- key: 'drainageId',
- align: 'center',
- ellipsis: true,
- render: text => <img src={text} width="40px" height="40px"/>,
- },
- {
- title: '固话',
- dataIndex: 'telephone',
- key: 'drainageId',
- align: 'center',
- ellipsis: true,
- render: text => <a>{text}</a>,
- },
- {
- title: '手机号',
- dataIndex: 'phone',
- key: 'drainageId',
- align: 'center',
- ellipsis: true,
- render: text => <a>{text}</a>,
- },
- {
- title: '内部岗位',
- dataIndex: 'job',
- key: 'drainageId',
- align: 'center',
- ellipsis: true,
- render: text => <a>{text}</a>,
- },
- {
- title: '操作',
- align: 'center',
- width: '20%',
- render: (text, record) => (
- <span>
- <a onClick={() => selectData(record)} style={{ color: 'blue' }}>选择</a>
- </span>
- ),
- },
- ];
-
- const { getFieldDecorator } = props.form
-
- return (
- <div>
- <Row gutter={24}>
- <Col span={2}><div onClick={() => setVisible(true)}><a>{group.groupName}</a></div></Col>
- <Col span={16}><div>
- {selectedData.map(x => {
- return <Tag size="large" key={x.contactId} closable onClose={() => removeSelected(x)}>{x.contactName}</Tag>
- })}
- </div></Col>
- </Row>
-
- <Modal
- title="请选择"
- width="1200px"
- visible={visible}
- onCancel={() => setVisible(false)}
- footer={[]}
- >
-
- <Form layout="inline" onSubmit={e => handleSubmit(e, props)}>
- <Form.Item>
- {getFieldDecorator('contactName')(
- <Input
- prefix={<Icon type="text" style={{ color: 'rgba(0,0,0,.25)' }} />}
- placeholder="姓名"
- />,
- )}
- </Form.Item>
- <Form.Item>
- {getFieldDecorator('telephone')(
- <Input
- prefix={<Icon type="text" style={{ color: 'rgba(0,0,0,.25)' }} />}
- placeholder="固话"
- />,
- )}
- </Form.Item>
- <Form.Item>
- {getFieldDecorator('phone')(
- <Input
- prefix={<Icon type="text" style={{ color: 'rgba(0,0,0,.25)' }} />}
- placeholder="手机号"
- />,
- )}
- </Form.Item>
- <Form.Item>
- {getFieldDecorator('job')(
- <Input
- prefix={<Icon type="text" style={{ color: 'rgba(0,0,0,.25)' }} />}
- placeholder="内部岗位"
- />,
- )}
- </Form.Item>
- <Form.Item>
- <Button type="primary" htmlType="submit" className={styles.searchBtn}>
- 搜索
- </Button>
- <Button style={{ marginLeft: 8 }} onClick={handleReset}>
- 重置
- </Button>
- </Form.Item>
- </Form>
-
- <Table dataSource={data.records || []} columns={columns} pagination={false} />
- <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
- <Pagination showQuickJumper defaultCurrent={1} total={data.total} onChange={changePageNum} current={data.current}/>
- </div>
-
- </Modal>
- </div>
- )
- }
-
- const WrappedRegistrationForm = Form.create()(SelectContact);
- export default WrappedRegistrationForm;
|