import React from 'react'; import ReactDom from 'react-dom'; import ajax from 'jquery/src/ajax/xhr.js'; import $ from 'jquery/src/ajax'; import { Form,Radio, Icon, Button, Input, Select, Spin, Table, Switch, message, Modal, Upload ,Popconfirm,DatePicker} from 'antd'; import MySettlementDetaile from "./projectManageDetaile.jsx"; import moment from 'moment'; import '../userMangagement.less'; import {projectState,taskStatus} from '../../../../dataDic.js'; import {getProjectState,getOrderState,getOrderType,getPaymentState,getTaskStatus} from '../../../../tools.js'; const TaskManagement=Form.create()(React.createClass({ loadData(pageNo) { this.setState({ loading: true }); $.ajax({ method: "post", dataType: "json", crossDomain: false, url: globalConfig.context + '/api/admin/techproject/listTask', data: { pageNo: pageNo || 1, pageSize: this.state.pagination.pageSize, startDate: this.state.releaseDate[0], endDate: this.state.releaseDate[1], buyerName:this.state.buyerNameSearch,//客户名称 taskStatus:this.state.orderStatusSearch, //订单状态 projectNo:this.state.orderNoSearch,//订单编号 deleteSign:this.state.deleteSignSearch,//锁定激活 categoryId:this.state.categoryIdSearch, taskReceiverName:this.state.salesmanNameSearch }, 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, taskId: thisdata.taskId, taskNo: thisdata.taskNo, commodityName:thisdata.commodityName, categoryName:thisdata.categoryName, buyerName:thisdata.buyerName, taskDistributionTimes:thisdata.taskDistributionTimes, deleteSign:thisdata.deleteSign, taskStatus:thisdata.taskStatus, taskReceiverName:thisdata.taskReceiverName, projectNo:thisdata.projectNo, }); }; this.state.pagination.current = data.data.pageNo; this.state.pagination.total = data.data.totalCount; }; if(!data.data.list.length){ this.state.pagination.current=0 this.state.pagination.total=0 } this.setState({ pageNo:pageNo, dataSource: theArr, pagination: this.state.pagination, selectedRowKeys:[] }); }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); }, //部门 departmentList() { this.setState({ loading: true }); $.ajax({ method: "post", 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 { datauser:{}, selectedRowKeys: [], selectedRows: [], searchMore: true, releaseDate: [], 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 + '条数据'; } }, columns: [ { title: '任务编号', dataIndex: 'taskNo', key: 'taskNo' },{ title: '项目编号', dataIndex: 'projectNo', key: 'projectNo' },{ title: '任务名称', dataIndex: 'commodityName', key: 'commodityName' }, { title: '业务类别', dataIndex: 'categoryName', key: 'categoryName', },{ title: '客户名称', dataIndex: 'buyerName', key: 'buyerName', }, { title: '任务负责人', dataIndex: 'taskReceiverName', key: 'taskReceiverName', },{ title: '任务状态', dataIndex: 'taskStatus', key: 'taskStatus', render:(text)=>{return getTaskStatus(text) } },{ title: '是否锁定', dataIndex: 'deleteSign', key: 'deleteSign', render:(text)=>{ return text==2?'锁定':'未锁定' } },{ title: '任务创建时间', dataIndex: 'taskDistributionTimes', key: 'taskDistributionTimes', },{ title: '操作', dataIndex: 'rr', key: 'rr', render:(text,record,index)=>{ return ( <div> {record.taskStatus<=1?<Popconfirm title={'请确认是否作废【'+record.commodityName+'】任务?'} onConfirm={(e)=>{this.startUp(record)}} okText="确认" cancelText="取消"> <Button style={{marginRight:'5px'}} onClick={(e) =>{ e.stopPropagation()}} type="danger">作废</Button> </Popconfirm>:''} {record.taskStatus<1&&<Button style={{marginRight:'5px'}} onClick={(e) =>{ e.stopPropagation(),this.confirmDelet(record)}} type="primary">派单</Button>} {record.deleteSign!=2?<Popconfirm title={'请确认是否锁定【'+record.commodityName+'】任务?'} onConfirm={(e)=>{this.endUp(record)}} okText="确认" cancelText="取消"> <Button style={{marginRight:'5px'}} onClick={(e) =>{ e.stopPropagation()}} type="danger">锁定</Button> </Popconfirm>:''} </div> ) } } ], userList:[ { title: '用户编号', dataIndex: 'userNo', key: 'userNo' }, { title: '用户姓名', dataIndex: 'name', key: 'name' },{ title: '部门机构', dataIndex: 'departmentName', key: 'departmentName' }, { title: '职务', dataIndex: 'position', key: 'position' },{ title: '联系手机', dataIndex: 'mobile', key: 'mobile' }, { title: '操作', dataIndex: 'abc', key: 'abc', render:(text,record,index)=>{ return ( <Popconfirm title={'您确认将订单 【'+this.state.uname+'】 分配给【'+record.departmentName+'-'+record.name+'】?'} onConfirm={(e)=>{this.confirmSelect(record)}} okText="确认" cancelText="取消"> <Button style={{marginRight:'5px'}} type="primary">选定</Button> </Popconfirm> ) } } ], dataSource: [], }; }, //转交 confirmDelet(index){ this.setState({ showDesc:false, taskIds:index.taskId, uname:index.commodityName, distributionVisible:true }); this.departmentList() }, distributionCancel(){ this.setState({ distributionVisible:false }) }, //分配对象列表 contactList(){ $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + '/api/admin/superviser/adminList', data: { pageNo: 1, pageSize: 99, departmentId:this.state.departmenttList, name:this.state.financeNameSearch, }, 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, userNo: thisdata.userNo, name:thisdata.name, departmentName:thisdata.departmentName, departmentId:thisdata.departmentId, position:thisdata.position, mobile:thisdata.mobile, }); }; }; this.setState({ distributionList: theArr, }); }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); }, //选定对象 confirmSelect(record){ this.setState({ loading: true }); $.ajax({ method: "POST", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/techproject/distributionTask", data: { taskId:this.state.taskIds, taskReceiverId:record.id } }).done(function (data) { if (!data.error.length) { message.success('分派成功!'); this.setState({ loading: false, }); this.distributionCancel(); this.loadData(this.state.pageNo); } else { message.warning(data.error[0].message); }; }.bind(this)); }, //业务类型 businessList() { this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/order/getBusinessProjectCatalog", 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.cname, id:item.id, }) }) } this.setState({ businessArr:theArr, }) }.bind(this), }).always(function() { this.setState({ loading: false }); }.bind(this)); }, componentWillMount() { this.loadData(); this.businessList() }, //启动 startUp(record){ this.removeList(true,record) }, //完成 endUp(){ this.removeList(false,record) }, removeList(state,record){ this.setState({ loading: true }); let api=state?'/api/admin/techproject/startTask':'/api/admin/techproject//completeTask'; $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + api, data: { taskId:record.taskId } }).done(function(data) { this.setState({ loading: false }); if(!data.error.length) { message.success('操作成功!'); this.loadData(this.state.pageNo) } else { message.warning(data.error[0].message); } }.bind(this)); }, searchSwitch() { this.setState({ searchMore: !this.state.searchMore }); }, search() { this.loadData(); }, tableRowClick(record, index) { this.state.datauser = record; this.setState({ showDesc: true }); }, searchOrder(){ this.contactList(); }, resetOrder(){ this.state.departmenttList=undefined; this.state.financeNameSearch=''; this.setState({ distributionList:[] }); }, reset() { this.state.buyerNameSearch=''; this.state.releaseDate[0] = undefined; this.state.releaseDate[1] = undefined; this.state.departmentt=undefined; this.state.orderStatusSearch = undefined; this.state.salesmanNameSearch = ''; this.state.orderNoSearch=''; this.state.deleteSignSearch=undefined; this.state.categoryIdSearch=undefined; this.loadData(); }, render() { const FormItem = Form.Item; const formItemLayout = { labelCol: { span: 8 }, wrapperCol: { span: 14 }, }; const { RangePicker } = DatePicker; const rowSelection = { selectedRowKeys: this.state.selectedRowKeys, onChange: (selectedRowKeys, selectedRows) => { this.setState({ selectedRows: selectedRows.slice(-1), selectedRowKeys: selectedRowKeys.slice(-1) }); }, onSelectAll: (selected, selectedRows, changeRows) => { this.setState({ selectedRowKeys:[] }) }, }; const hasSelected = this.state.selectedRowKeys.length > 0; let departmentArr = this.state.departmentArr || []; let businessArr = this.state.businessArr || [] return ( <div className="user-content" > <div className="content-title"> <span style={{fontSize:'16px'}}>项目任务管理</span> <div className="user-search"> <Input placeholder="客户名称" style={{width:'150px'}} value={this.state.buyerNameSearch} onChange={(e) => { this.setState({ buyerNameSearch: e.target.value }); }} /> <RangePicker value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null, this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]} onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} /> <Button type="primary" onClick={this.search} style={{marginLeft:'10px'}}>搜索</Button> <Button onClick={this.reset}>重置</Button> <span style={{marginLeft:'10px',marginRight:'20px'}}>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span> </div> <div className='clearfix' style={{marginTop:'5px'}}> <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}> <Select placeholder="任务状态" style={{ width: 150 ,marginRight:'10px'}} value={this.state.orderStatusSearch} onChange={(e) => { this.setState({ orderStatusSearch: e }) }}> { taskStatus.map(function (item) { return <Select.Option key={item.value} >{item.key}</Select.Option> }) } </Select> <Select placeholder="是否锁定" style={{ width: 150 ,marginRight:'10px'}} value={this.state.deleteSignSearch} onChange={(e) => { this.setState({ deleteSignSearch: e }) }}> <Select.Option value='0'>未锁定</Select.Option> <Select.Option value='2'>锁定</Select.Option> </Select> <Select placeholder="业务类别" style={{ width: 150 ,marginRight:'10px'}} value={this.state.categoryIdSearch} onChange={(e) => { this.setState({ categoryIdSearch: e }) }}> { businessArr.map(function (item) { return <Select.Option key={item.id} >{item.name}</Select.Option> }) } </Select> <Input placeholder="项目编号" style={{width:'150px',margin:'10px'}} value={this.state.orderNoSearch} onChange={(e) => { this.setState({ orderNoSearch: e.target.value }); }} /> <Input placeholder="任务名称" style={{width:'150px',margin:'10px'}} value={this.state.salesmanNameSearch} onChange={(e) => { this.setState({ salesmanNameSearch: e.target.value }); }} /> </div> </div> <div className="patent-table"> <Spin spinning={this.state.loading}> <Table columns={this.state.columns} dataSource={this.state.dataSource} rowSelection={rowSelection} pagination={this.state.pagination} onRowClick={this.tableRowClick} /> </Spin> </div> <MySettlementDetaile datauser={this.state.datauser} showDesc={this.state.showDesc} /> </div > <Modal maskClosable={false} visible={this.state.distributionVisible} onOk={this.distributionCancel} onCancel={this.distributionCancel} 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> <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 columns={this.state.userList} dataSource={this.state.distributionList} pagination={false} /> </Spin> </div> </Spin> </Form> </Modal> </div> ); } })); export default TaskManagement;