| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467 | import React from 'react';import ajax from 'jquery/src/ajax/xhr.js';import $ from 'jquery/src/ajax';import { Form, Radio, Button, Input, Select, Spin, Table, message, Modal, Popconfirm } from 'antd';import { getPost } from '@/tools';const Assign = React.createClass({    departmentList() {        this.setState({            loading: true        });        $.ajax({            method: "get",            dataType: "json",            crossDomain: false,            url: globalConfig.context + "/api/admin/organization/selectSuperId",            data: {            },            success: function (data) {                let thedata = data.data;                let theArr = [];                if (!thedata) {                    if (data.error && data.error.length) {                        message.warning(data.error[0].message);                    };                    thedata = {};                } else {                    thedata.map(function (item, index) {                        theArr.push({                            key: index,                            name: item.name,                            id: item.id,                        })                    })                }                this.setState({                    departmentArr: theArr,                })            }.bind(this),        }).always(function () {            this.setState({                loading: false            });        }.bind(this));    },    getInitialState() {        return {            contact: 0,            selectedRows: [],            searchMore: true,            loading: false,            visible: false,            showDesc: false,            pagination: {                defaultCurrent: 1,                defaultPageSize: 10,                showQuickJumper: true,                pageSize: 10,                onChange: function (page) {                    this.loadData(page);                }.bind(this),                showTotal: function (total) {                    return '共' + total + '条数据';                }            },            userList: [                {                    title: '用户姓名',                    dataIndex: 'name',                    key: 'name',                    width: 100                }, {                    title: '部门机构',                    dataIndex: 'departmentName',                    key: 'departmentName',                    width: 150,                    render: text => {                        return text && text.length > 12 ? <span title={text}>{text.substr(0, 12) + '...'}</span> : text                    }                }, {                    title: '职务',                    dataIndex: 'position',                    key: 'position',                    width: 100,                }, {                    title: '联系手机',                    dataIndex: 'contactMobile',                    key: 'contactMobile',                    width: 100                }, {                    title: '操作',                    dataIndex: 'abc',                    key: 'abc',                    width: 100,                    render: (text, record, index) => {                        if (this.props.data.length) {                            return (                                // <Popconfirm title={'您确认将所选订单分配给【'+record.departmentName+'-'+record.name+'】?'} onConfirm={(e)=>{this.confirmSelect1(record)}} okText="确认" cancelText="取消">                                //     <Button style={{marginRight:'5px'}} type="primary">选定</Button>                                                 // </Popconfirm>                                <Popconfirm title={'您确认将所选订单分配给【' + record.departmentName + '-' + record.name + '】?'} onConfirm={(e) => { this.setState({ remarksVisible: true, remarks: "", fn: this.confirmSelect1, record }) }} okText="确认" cancelText="取消">                                    <Button style={{ marginRight: '5px' }} type="primary">选定</Button>                                </Popconfirm>                            )                        } else {                            return (                                // <Popconfirm title={'您确认将' + this.props.title + ' 【' + this.props.data.orderNo + '】 分配给【' + record.departmentName + '-' + record.name + '】?'} onConfirm={(e) => { this.confirmSelect(record) }} okText="确认" cancelText="取消">                                //     <Button style={{ marginRight: '5px' }} type="primary">选定</Button>                                // </Popconfirm>                                <Popconfirm title={'您确认将' + this.props.title + ' 【' + this.props.data.orderNo + '】 分配给【' + record.departmentName + '-' + record.name + '】?'} onConfirm={(e) => { this.setState({ remarksVisible: true, remarks: "", fn: this.confirmSelect, record }) }} okText="确认" cancelText="取消">                                    <Button style={{ marginRight: '5px' }} type="primary">选定</Button>                                </Popconfirm>                            )                        }                    }                }            ],            dataSource: [],        };    },    //操作分配    confirmDelet(index) {        this.setState({            orderNos: index.orderNo,        });    },    onCancel() {        this.setState({            visible: false        })        this.props.closeDesc(false, false);    },    onShow() {        this.setState({            visible: false,        });        this.props.closeDesc(false, true);    },    //分配对象列表    contactList(item = {}, nub) {        this.setState({            loading: true        });        let api = !nub ? '/api/admin/frequentContactsList' : '/api/admin/superviser/adminList';        $.ajax({            method: "get",            dataType: "json",            crossDomain: false,            url: globalConfig.context + api,            data: {                pageNo: 1,                pageSize: 99,                departmentId: this.state.departmenttList,                name: this.state.financeNameSearch,                roleName: this.props.roleName            },            success: function (data) {                let theArr = [];                if (!data.data) {                    if (data.error && data.error.length) {                        message.warning(data.error[0].message);                    };                } else {                    for (let i = 0; i < data.data.list.length; i++) {                        let thisdata = data.data.list[i];                        theArr.push({                            key: i,                            id: thisdata.id,                            contactId: thisdata.contactId,                            userNo: thisdata.userNo,                            name: thisdata.name,                            departmentName: thisdata.departmentName,                            departmentId: thisdata.departmentId,                            position: thisdata.roles[0],                            contactMobile: thisdata.contactMobile,                        });                    };                };                this.setState({                    distributionList: theArr,                });            }.bind(this),        }).always(function () {            this.setState({                loading: false            });        }.bind(this));    },    //选定对象    confirmSelect(record) {        if (this.state.remarks == "") {            message.warning("请填写备注信息")            return        }        this.setState({            loading: true        });        $.ajax({            method: this.props.requestMethod,            dataType: "json",            crossDomain: false,            url: globalConfig.context + this.props.selApi,            // 			data:{            // 				taskId:this.props.data.id,//任务ID            // 				taskReceiverId:this.state.contact?record.id:record.contactId,//分配人物ID            // 				specially:this.props.specially,//是否是咨询师管理员            // 				orderNo:this.state.orderNo,            // 				financeId: this.state.contact?record.id:record.contactId,    //分配人物id            // 				approval:this.props.data.approval,   //是否特批            // 				newFinance:this.state.contact?record.id:record.contactId            // 				            // 			}            data: this.judge(this.props, record)        }).done(function (data) {            if (!data.error.length) {                message.success('派单成功');                this.setState({                    remarksVisible: false                })                this.onShow();                if (this.props.reset) {                    this.props.reset()                }            } else {                message.warning(data.error[0].message);            };            this.setState({                loading: false,            });        }.bind(this));    },    confirmSelect1(record) {        if (this.state.remarks == "") {            message.warning("请填写备注信息")            return        }        let orderNo = this.props.data.join(",")        this.setState({            loading: true        });        $.ajax({            method: this.props.requestMethod,            dataType: "json",            crossDomain: false,            url: globalConfig.context + this.props.selApi,            // 			data:{            // 				taskId:this.props.data.id,//任务ID            // 				taskReceiverId:this.state.contact?record.id:record.contactId,//分配人物ID            // 				specially:this.props.specially,//是否是咨询师管理员            // 				orderNo:this.state.orderNo,            // 				financeId: this.state.contact?record.id:record.contactId,    //分配人物id            // 				approval:this.props.data.approval,   //是否特批            // 				newFinance:this.state.contact?record.id:record.contactId            //            // 			}            data: {                orderNo,                financeId: record.id,                remarks: this.state.remarks            }        }).done(            function (data) {                if (!data.error.length) {                    message.success("派单成功");                    this.onShow();                    this.setState({                        remarksVisible: false                    })                    if (this.props.reset) {                        this.props.reset();                    }                } else {                    message.warning(data.error[0].message);                }                this.setState({                    loading: false                });            }.bind(this)        );    },    /* 区分分派和两种转交 */    judge(props, record) {        if (props.fenpaiData === 8) {            if (props.flag === true) {                return {                    taskId: props.data.id, //任务ID                    taskReceiverId: this.state.contact                        ? record.id                        : record.contactId, //分配人物ID                    specially: 2, //退给咨询师经理                    remarks: this.state.remarks                };            }            return {                taskId: props.data.id,//任务ID                taskReceiverId: this.state.contact ? record.id : record.contactId,//分配人物ID                specially: props.specially,//是否是咨询师管理员                remarks: this.state.remarks            };        } else if (props.fenpaiData === 4) {            return {                orderNo: this.state.orderNo,                financeId: this.state.contact ? record.id : record.contactId,    //分配人物id                approval: props.data.approval,   //是否特批                remarks: this.state.remarks            };        } else {            return {                orderNo: this.state.orderNo,                newFinance: this.state.contact ? record.id : record.contactId,                remarks: this.state.remarks            };        }    },    searchOrder() {        this.contactList({}, this.state.contact);    },    resetOrder() {        this.state.departmenttList = undefined;        this.state.financeNameSearch = '';        this.state.contact = 0;        this.setState({            distributionList: []        });    },    //初始加载组件,和主页面一起加载    componentDidMount() {},    //组件调用初始加载函数,可用条件控制,在调用组件时可以拿到参数    componentWillReceiveProps(nextProps) {        this.state.visible = nextProps.showDesc;        if (nextProps.showDesc) {            this.contactList(nextProps, 0);            this.departmentList()            this.setState({                orderNo: nextProps.data.orderNo            })        }        this.setState({            contact: 0        })        // console.log("kan", this.props.specially);        // console.log("kan22", this.state);    },    render() {        const FormItem = Form.Item;        let departmentArr = this.state.departmentArr || [];        return (            <div className="user-content" >                <Modal maskClosable={false} visible={this.state.visible}                    onOk={this.onShow} onCancel={this.onCancel}                    width='800px'                    title='选择'                    footer=''                    className="admin-desc-content">                    <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form" style={{ paddingBottom: '40px' }} >                        <Spin spinning={this.state.loading}>                            <div>                                <span style={{ marginRight: 5 }}>常用联系人:</span>                                <Radio.Group onChange={(e) => { this.setState({ contact: e.target.value }) }} value={this.state.contact}>                                    <Radio value={0}>是</Radio>                                    <Radio value={1}>否</Radio>                                </Radio.Group>                                <Select placeholder="部门"                                    style={{ width: 150, marginRight: '10px', marginLeft: '10px' }}                                    value={this.state.departmenttList}                                    onChange={(e) => { this.setState({ departmenttList: e }) }}>                                    {                                        departmentArr.map(function (item) {                                            return <Select.Option key={item.id} >{item.name}</Select.Option>                                        })                                    }                                </Select>                                <Input placeholder="姓名" style={{ width: '150px', marginLeft: '10px' }}                                    value={this.state.financeNameSearch}                                    onChange={(e) => { this.setState({ financeNameSearch: e.target.value }); }} />                                <Button type="primary" onClick={this.searchOrder} style={{ marginLeft: '10px', marginRight: '10px' }}>搜索</Button>                                <Button onClick={this.resetOrder}>重置</Button>                            </div>                            <div className="patent-table" style={{ marginTop: '10px' }}>                                <Spin spinning={this.state.loading}>                                    <Table size="middle" columns={this.state.userList}                                        dataSource={this.state.distributionList}                                        pagination={false}                                        scroll={{ y: 400 }}                                    />                                </Spin>                            </div>                        </Spin>                    </Form>                </Modal>                <Modal                    maskClosable={false}                    visible={this.state.remarksVisible}                    onOk={e => {                        this.setState({                            remarksVisible: false                        })                    }}                    onCancel={e => {                        this.setState({                            remarksVisible: false                        })                    }}                    width="400px"                    title={"备注"}                    footer=""                    className="admin-desc-content"                >                    <Form layout="horizontal" id="demand-form">                        <Spin spinning={this.state.loading}>                            <div className="clearfix">                                <FormItem                                    labelCol={{ span: 4 }}                                    wrapperCol={{ span: 16 }}                                    label="备注"                                >                                    <Input                                        type="textarea"                                        placeholder="请输入备注"                                        rows={4}                                        value={this.state.remarks}                                        onChange={e => {                                            this.setState({ remarks: e.target.value });                                        }}                                    />                                </FormItem>                            </div>                            <div className="clearfix">                                <Button                                    className="cancel"                                    type="primary"                                    onClick={e => {                                        // console.log(this.state.fn, this.state.record)                                        this.state.fn(this.state.record)                                    }}                                    style={{ marginLeft: "50px" }}                                    htmlType="submit"                                >                                    确定                    </Button>                                <Button                                    className="cancel"                                    type="ghost"                                    onClick={e => {                                        this.setState({                                            remarksVisible: false                                        })                                    }}                                    style={{ marginLeft: "50px" }}                                >                                    取消                    </Button>                            </div>                        </Spin>                    </Form>                </Modal>            </div>        );    }});export default Assign;
 |