assign.jsx 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. import React from 'react';
  2. import ajax from 'jquery/src/ajax/xhr.js';
  3. import $ from 'jquery/src/ajax';
  4. import { Form,Radio, Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker, Modal, Upload ,Popconfirm} from 'antd';
  5. import {orderState,orderChannel,orderType} from '@/dataDic.js';
  6. import {getOrderState,getOrderChannel,getPaymentState,getOrderType} from '@/tools.js';
  7. const Assign=React.createClass({
  8. departmentList() {
  9. this.setState({
  10. loading: true
  11. });
  12. $.ajax({
  13. method: "get",
  14. dataType: "json",
  15. crossDomain: false,
  16. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  17. data: {
  18. },
  19. success: function(data) {
  20. let thedata = data.data;
  21. let theArr=[];
  22. if(!thedata) {
  23. if(data.error && data.error.length) {
  24. message.warning(data.error[0].message);
  25. };
  26. thedata = {};
  27. }else{
  28. thedata.map(function(item,index){
  29. theArr.push({
  30. key:index,
  31. name:item.name,
  32. id:item.id,
  33. })
  34. })
  35. }
  36. this.setState({
  37. departmentArr:theArr,
  38. })
  39. }.bind(this),
  40. }).always(function() {
  41. this.setState({
  42. loading: false
  43. });
  44. }.bind(this));
  45. },
  46. getInitialState() {
  47. return {
  48. datauser:{},
  49. selectedRowKeys: [],
  50. releaseDate: [],
  51. contact:0,
  52. selectedRows: [],
  53. searchMore: true,
  54. loading: false,
  55. distributionVisible:false,
  56. visible:false,
  57. showDesc:false,
  58. pagination: {
  59. defaultCurrent: 1,
  60. defaultPageSize: 10,
  61. showQuickJumper: true,
  62. pageSize: 10,
  63. onChange: function (page) {
  64. this.loadData(page);
  65. }.bind(this),
  66. showTotal: function (total) {
  67. return '共' + total + '条数据';
  68. }
  69. },
  70. userList:[
  71. {
  72. title: '用户姓名',
  73. dataIndex: 'name',
  74. key: 'name'
  75. },{
  76. title: '部门机构',
  77. dataIndex: 'departmentName',
  78. key: 'departmentName'
  79. }, {
  80. title: '职务',
  81. dataIndex: 'position',
  82. key: 'position'
  83. },{
  84. title: '联系手机',
  85. dataIndex: 'mobile',
  86. key: 'mobile'
  87. }, {
  88. title: '操作',
  89. dataIndex: 'abc',
  90. key: 'abc',
  91. render:(text,record,index)=>{
  92. return (
  93. <Popconfirm title={'您确认将订单 【'+this.props.data.orderNo+'】 分配给【'+record.departmentName+'-'+record.name+'】?'} onConfirm={(e)=>{this.confirmSelect(record)}} okText="确认" cancelText="取消">
  94. <Button style={{marginRight:'5px'}} type="primary">选定</Button>
  95. </Popconfirm>
  96. )
  97. }
  98. }
  99. ],
  100. dataSource: [],
  101. };
  102. },
  103. //操作分配
  104. confirmDelet(index){
  105. this.setState({
  106. orderNos:index.orderNo,
  107. });
  108. },
  109. onCancel(){
  110. this.setState({
  111. visible:false
  112. })
  113. this.props.closeDesc(false,false);
  114. },
  115. onShow() {
  116. this.setState({
  117. visible: false,
  118. });
  119. this.props.closeDesc(false, true);
  120. },
  121. //分配对象列表
  122. contactList(){
  123. $.ajax({
  124. method: "get",
  125. dataType: "json",
  126. crossDomain: false,
  127. url: globalConfig.context + '/api/admin/superviser/adminList',
  128. data: {
  129. pageNo: 1,
  130. pageSize: 99,
  131. departmentId:this.state.departmenttList,
  132. name:this.state.financeNameSearch,
  133. },
  134. success: function (data) {
  135. let theArr = [];
  136. if (!data.data) {
  137. if (data.error && data.error.length) {
  138. message.warning(data.error[0].message);
  139. };
  140. } else {
  141. for (let i = 0; i < data.data.list.length; i++) {
  142. let thisdata = data.data.list[i];
  143. theArr.push({
  144. key: i,
  145. id: thisdata.id,
  146. userNo: thisdata.userNo,
  147. name:thisdata.name,
  148. departmentName:thisdata.departmentName,
  149. departmentId:thisdata.departmentId,
  150. position:thisdata.position,
  151. mobile:thisdata.mobile,
  152. });
  153. };
  154. };
  155. this.setState({
  156. distributionList: theArr,
  157. });
  158. }.bind(this),
  159. }).always(function () {
  160. this.setState({
  161. loading: false
  162. });
  163. }.bind(this));
  164. },
  165. //选定对象
  166. confirmSelect(record){
  167. this.setState({
  168. loading: true
  169. });
  170. console.log(this.props.data)
  171. $.ajax({
  172. method: "get",
  173. dataType: "json",
  174. crossDomain: false,
  175. url: globalConfig.context +this.props.selApi,
  176. data: {
  177. orderNo:this.props.data.orderNo,
  178. salesmanId:record.id
  179. }
  180. }).done(function (data) {
  181. if (!data.error.length) {
  182. message.success('派单成功');
  183. this.onShow();
  184. this.setState({
  185. loading: false,
  186. });
  187. } else {
  188. message.warning(data.error[0].message);
  189. };
  190. }.bind(this));
  191. },
  192. searchOrder(){
  193. this.contactList();
  194. },
  195. resetOrder(){
  196. this.state.departmenttList=undefined;
  197. this.state.financeNameSearch='';
  198. this.setState({
  199. distributionList:[]
  200. });
  201. },
  202. componentWillMount() {
  203. this.departmentList();
  204. },
  205. componentWillReceiveProps(nextProps) {
  206. this.state.visible=nextProps.showDesc;
  207. this.setState({
  208. contact:0
  209. })
  210. },
  211. render() {
  212. const rowSelection = {
  213. selectedRowKeys: this.state.selectedRowKeys,
  214. onChange: (selectedRowKeys, selectedRows) => {
  215. this.setState({
  216. selectedRows: selectedRows.slice(-1),
  217. selectedRowKeys: selectedRowKeys.slice(-1)
  218. });
  219. },
  220. onSelectAll: (selected, selectedRows, changeRows) => {
  221. this.setState({
  222. selectedRowKeys:[]
  223. })
  224. },
  225. };
  226. let departmentArr = this.state.departmentArr || [];
  227. const hasSelected = this.state.selectedRowKeys.length > 0;
  228. return (
  229. <div className="user-content" >
  230. <Modal maskClosable={false} visible={this.state.visible}
  231. onOk={this.onShow} onCancel={this.onCancel}
  232. width='800px'
  233. title='派单'
  234. footer=''
  235. className="admin-desc-content">
  236. <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form" style={{paddingBottom:'40px'}} >
  237. <Spin spinning={this.state.loading}>
  238. <div>
  239. <span style={{marginRight:5}}>常用联系人:</span>
  240. <Radio.Group onChange={(e)=>{this.setState({contact:e.target.value})}} value={this.state.contact}>
  241. <Radio value={0}>否</Radio>
  242. <Radio value={1}>是</Radio>
  243. </Radio.Group>
  244. <Select placeholder="订单部门"
  245. style={{ width: 150 ,marginRight:'10px',marginLeft:'10px'}}
  246. value={this.state.departmenttList}
  247. onChange={(e) => { this.setState({ departmenttList: e }) }}>
  248. {
  249. departmentArr.map(function (item) {
  250. return <Select.Option key={item.id} >{item.name}</Select.Option>
  251. })
  252. }
  253. </Select>
  254. <Input placeholder="任务负责人" style={{width:'150px',marginLeft:'10px'}}
  255. value={this.state.financeNameSearch}
  256. onChange={(e) => { this.setState({ financeNameSearch: e.target.value }); }} />
  257. <Button type="primary" onClick={this.searchOrder} style={{marginLeft:'10px',marginRight:'10px'}}>搜索</Button>
  258. <Button onClick={this.resetOrder}>重置</Button>
  259. </div>
  260. <div className="patent-table" style={{marginTop:'10px'}}>
  261. <Spin spinning={this.state.loading}>
  262. <Table columns={this.state.userList}
  263. dataSource={this.state.distributionList}
  264. pagination={false}
  265. />
  266. </Spin>
  267. </div>
  268. </Spin>
  269. </Form>
  270. </Modal>
  271. </div>
  272. );
  273. }
  274. });
  275. export default Assign;