user.jsx 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764
  1. import React from 'react';
  2. import ReactDom from 'react-dom';
  3. import ajax from 'jquery/src/ajax/xhr.js';
  4. import $ from 'jquery/src/ajax';
  5. import { Form, Radio, Icon, Button, Input, Select, AutoComplete, Spin, Table, Switch, message, DatePicker, Modal, Upload,Popconfirm } from 'antd';
  6. import Newuser from "./newUser.jsx"
  7. import './userMangagement.less'
  8. import { techAuditStatusList, station, post } from '../../../dataDic.js';
  9. import {getPost,getStation} from '../../../tools.js';
  10. const User = Form.create()(React.createClass({
  11. loadData(pageNo) {
  12. this.state.data = [];
  13. this.setState({
  14. userDetaile:false,
  15. loading: true,
  16. page:pageNo
  17. });
  18. var admin=window.adminData.isSuperAdmin||'';
  19. var departmentId=window.adminData.departmentId||'';
  20. $.ajax({
  21. method: "get",
  22. dataType: "json",
  23. crossDomain: false,
  24. url: globalConfig.context + '/api/admin/superviser/adminList',
  25. data: {
  26. pageNo: pageNo || 1,
  27. pageSize: this.state.pagination.pageSize,
  28. name: this.state.userNameSearch,
  29. departmentId: admin?this.state.organizationSearch:departmentId,
  30. rid: this.state.rolesSearch,
  31. duty: this.state.postSearch,
  32. position: this.state.stationSearch,
  33. status: this.state.statusSeach,
  34. mobile: this.state.signNameSearch,
  35. superiorId: this.state.theTypes
  36. },
  37. success: function(data) {
  38. let theArr = [];
  39. if(!data.data || !data.data.list) {
  40. if(data.error && data.error.length) {
  41. message.warning(data.error[0].message);
  42. };
  43. } else {
  44. for(let i = 0; i < data.data.list.length; i++) {
  45. let thisdata = data.data.list[i];
  46. theArr.push({
  47. key: i,
  48. id: thisdata.id,
  49. mobile: thisdata.mobile,
  50. name: thisdata.name,
  51. email: thisdata.email,
  52. createTime: thisdata.createTime,
  53. province: thisdata.province,
  54. position: thisdata.position,
  55. superior: thisdata.superior, //上级名称
  56. superiorId: thisdata.superiorId, //上级Id
  57. duty: thisdata.duty, //职务
  58. status: thisdata.status,
  59. userNo: thisdata.userNo,
  60. departmentName: thisdata.departmentName, //部门名称
  61. departmentId: thisdata.departmentId, //部门id
  62. roles:thisdata.roles[0],
  63. rolesId:thisdata.rolesId
  64. });
  65. };
  66. this.state.pagination.current = data.data.pageNo ? data.data.pageNo : '0';
  67. this.state.pagination.total = data.data.totalCount ? data.data.totalCount : '0';
  68. };
  69. if(!data.data.list.length){
  70. this.state.pagination.current=0
  71. this.state.pagination.total=0
  72. }
  73. this.setState({
  74. dataSource: theArr,
  75. pagination: this.state.pagination,
  76. selectedRowKeys:[]
  77. });
  78. }.bind(this),
  79. }).always(function() {
  80. this.setState({
  81. loading: false
  82. });
  83. }.bind(this));
  84. },
  85. getInitialState() {
  86. return {
  87. datauser: {},
  88. searchMore: true,
  89. selectedRowKeys: [],
  90. selectedRows: [],
  91. userDetaile: false,
  92. departmentArr: [],
  93. loading: false,
  94. roleArr:[],
  95. pagination: {
  96. defaultCurrent: 1,
  97. defaultPageSize: 10,
  98. showQuickJumper: true,
  99. pageSize: 10,
  100. onChange: function(page) {
  101. this.loadData(page);
  102. }.bind(this),
  103. showTotal: function(total) {
  104. return '共' + total + '条数据';
  105. }
  106. },
  107. columns: [{
  108. title: '用户编号',
  109. dataIndex: 'userNo',
  110. key: 'userNo',
  111. }, {
  112. title: '登录用户名',
  113. dataIndex: 'mobile',
  114. key: 'mobile',
  115. }, {
  116. title: '角色',
  117. dataIndex: 'roles',
  118. key: 'roles',
  119. }, {
  120. title: '用户姓名',
  121. dataIndex: 'name',
  122. key: 'name',
  123. }, {
  124. title: '部门',
  125. dataIndex: 'departmentName',
  126. key: 'departmentName',
  127. }, {
  128. title: '职务',
  129. dataIndex: 'duty',
  130. key: 'duty',
  131. render: text => { return getPost(text) }
  132. },
  133. {
  134. title: '岗位',
  135. dataIndex: 'position',
  136. key: 'position',
  137. render: text => { return getStation(text) }
  138. },
  139. {
  140. title: '上级主管姓名',
  141. dataIndex: 'superior',
  142. key: 'superior',
  143. },
  144. {
  145. title: '状态',
  146. dataIndex: 'status',
  147. key: 'status',
  148. }
  149. ],
  150. column: [{
  151. title: '用户编号',
  152. dataIndex: 'userNo',
  153. key: 'userNo',
  154. }, {
  155. title: '登录用户名',
  156. dataIndex: 'mobile',
  157. key: 'mobile',
  158. }, {
  159. title: '角色',
  160. dataIndex: 'roles',
  161. key: 'roles',
  162. }, {
  163. title: '用户姓名',
  164. dataIndex: 'name',
  165. key: 'name',
  166. }, {
  167. title: '转交',
  168. dataIndex: 'ee',
  169. key: 'ee',
  170. render: (text, record, index) => {
  171. return <div>
  172. <Popconfirm title={'请确认转交【'+record.name+'】'} onConfirm={(e)=>{this.examineOK(record)}} okText="确认" cancelText="取消">
  173. <Button style={{marginRight:'5px'}} onClick={(e) =>{ e.stopPropagation()}} type="primary">转交</Button>
  174. </Popconfirm>
  175. </div>
  176. }
  177. },
  178. ],
  179. dataSource: [],
  180. };
  181. },
  182. //点击离职一键转交
  183. resources() {
  184. let deletedIds;
  185. let rowItem;
  186. for(let idx = 0; idx < this.state.selectedRows.length; idx++) {
  187. rowItem = this.state.selectedRows[idx];
  188. console.log(rowItem.id);
  189. if(rowItem.id) {
  190. deletedIds = rowItem.id;
  191. };
  192. };
  193. this.setState({
  194. visible: true,
  195. aid:deletedIds
  196. });
  197. },
  198. //关闭离职一键转交
  199. handleCancel(){
  200. this.setState({
  201. visible: false
  202. });
  203. },
  204. //一键离职
  205. examineOK(record){
  206. console.log(record);
  207. this.setState({
  208. selectedRowKeys: [],
  209. loading: true
  210. });
  211. $.ajax({
  212. method: "POST",
  213. dataType: "json",
  214. crossDomain: false,
  215. url: globalConfig.context + "/api/admin/role/dimission",
  216. data: {
  217. aid:this.state.aid,
  218. transferId:record.id,
  219. }
  220. }).done(function (data) {
  221. if (!data.error.length) {
  222. message.success('转交成功!');
  223. } else {
  224. message.warning(data.error[0].message);
  225. };
  226. this.setState({
  227. loading: false,
  228. visible2: false
  229. });
  230. }.bind(this));
  231. },
  232. componentWillMount() {
  233. this.loadData();
  234. this.departmentList();
  235. this.rolesList();
  236. },
  237. tableRowClick(record, index) {
  238. this.rolesArrS(record)
  239. this.setState({
  240. userDetaile:true,
  241. showDesc: true,
  242. datauser:record
  243. });
  244. },
  245. //新建获取id
  246. addIdS() {
  247. $.ajax({
  248. method: "post",
  249. dataType: "json",
  250. crossDomain: false,
  251. url: globalConfig.context + '/api/admin/superviser/newId',
  252. data: {},
  253. success: function(data) {
  254. this.setState({
  255. addId: data.data
  256. });
  257. }.bind(this),
  258. }).always(function() {
  259. this.setState({
  260. loading: false
  261. });
  262. }.bind(this));
  263. },
  264. //部门
  265. departmentList() {
  266. this.setState({
  267. loading: true
  268. });
  269. $.ajax({
  270. method: "post",
  271. dataType: "json",
  272. crossDomain: false,
  273. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  274. data: {
  275. },
  276. success: function(data) {
  277. let thedata = data.data;
  278. let theArr = [];
  279. if(!thedata) {
  280. if(data.error && data.error.length) {
  281. message.warning(data.error[0].message);
  282. };
  283. thedata = {};
  284. } else {
  285. thedata.map(function(item, index) {
  286. theArr.push({
  287. key: index,
  288. name: item.name,
  289. id: item.id,
  290. depNo: item.depNo
  291. })
  292. })
  293. }
  294. this.setState({
  295. departmentArr: theArr,
  296. })
  297. }.bind(this),
  298. }).always(function() {
  299. this.setState({
  300. loading: false
  301. });
  302. }.bind(this));
  303. },
  304. //修改时获取角色数组
  305. rolesArrS(e) {
  306. $.ajax({
  307. method: "get",
  308. dataType: "json",
  309. crossDomain: false,
  310. url: globalConfig.context + "/api/admin/role",
  311. data: {
  312. uid:e.id
  313. },
  314. success: function(data) {
  315. let thedata = data.data;
  316. let theArr = [];
  317. let theId=[]
  318. if(!thedata) {
  319. if(data.error && data.error.length) {
  320. message.warning(data.error[0].message);
  321. };
  322. thedata = {};
  323. } else {
  324. }
  325. this.setState({
  326. role:thedata
  327. })
  328. }.bind(this),
  329. }).always(function() {
  330. }.bind(this));
  331. },
  332. //角色
  333. rolesList() {
  334. this.setState({
  335. loading: true
  336. });
  337. $.ajax({
  338. method: "get",
  339. dataType: "json",
  340. crossDomain: false,
  341. url: globalConfig.context + "/api/roles",
  342. data: {
  343. },
  344. success: function(data) {
  345. let thedata = data.data;
  346. let theArr = [];
  347. if(!thedata) {
  348. if(data.error && data.error.length) {
  349. message.warning(data.error[0].message);
  350. };
  351. thedata = {};
  352. } else {
  353. thedata.map(function(item, index) {
  354. theArr.push({
  355. key: index,
  356. roleName: item.roleName,
  357. id: item.id,
  358. })
  359. })
  360. }
  361. this.setState({
  362. roleArr: theArr,
  363. })
  364. }.bind(this),
  365. }).always(function() {
  366. this.setState({
  367. loading: false
  368. });
  369. }.bind(this));
  370. },
  371. //锁定
  372. locking() {
  373. let deletedIds;
  374. let statust;
  375. let mobiles;
  376. let names;
  377. let rolesId=[];
  378. for(let idx = 0; idx < this.state.selectedRows.length; idx++) {
  379. let rowItem = this.state.selectedRows[idx];
  380. if(rowItem.id) {
  381. deletedIds=rowItem.id;
  382. statust=rowItem.status;
  383. names=rowItem.name;
  384. mobiles=rowItem.mobile;
  385. rolesId=rowItem.rolesId
  386. };
  387. };
  388. this.setState({
  389. selectedRowKeys: [],
  390. loading: true
  391. });
  392. $.ajax({
  393. method: "POST",
  394. dataType: "json",
  395. crossDomain: false,
  396. url: globalConfig.context + "/api/admin/superviser/updateAdmin",
  397. data: {
  398. roles:rolesId,
  399. data:JSON.stringify({
  400. id: deletedIds,
  401. status: '锁定',
  402. name: names,
  403. mobile: mobiles,
  404. }),
  405. }
  406. }).done(function(data) {
  407. if(!data.error.length) {
  408. message.success('锁定成功!');
  409. this.setState({
  410. loading: false,
  411. });
  412. } else {
  413. message.warning(data.error[0].message);
  414. };
  415. this.loadData();
  416. }.bind(this));
  417. },
  418. //激活
  419. activation() {
  420. let deletedIds;
  421. let statust;
  422. let mobiles;
  423. let names;
  424. let rolesId=[]
  425. for(let idx = 0; idx < this.state.selectedRows.length; idx++) {
  426. let rowItem = this.state.selectedRows[idx];
  427. if(rowItem.id) {
  428. deletedIds=rowItem.id;
  429. statust=rowItem.status;
  430. names=rowItem.name;
  431. mobiles=rowItem.mobile;
  432. rolesId=rowItem.rolesId
  433. };
  434. };
  435. this.setState({
  436. selectedRowKeys: [],
  437. loading: true
  438. });
  439. $.ajax({
  440. method: "POST",
  441. dataType: "json",
  442. crossDomain: false,
  443. url: globalConfig.context + "/api/admin/superviser/updateAdmin",
  444. data: {
  445. roles:rolesId,
  446. data:JSON.stringify({
  447. id: deletedIds,
  448. status: '正常',
  449. name: names,
  450. mobile: mobiles,
  451. })
  452. }
  453. }).done(function(data) {
  454. if(!data.error.length) {
  455. message.success('激活成功!');
  456. this.setState({
  457. loading: false,
  458. });
  459. } else {
  460. message.warning(data.error[0].message);
  461. };
  462. this.loadData();
  463. }.bind(this));
  464. },
  465. //删除
  466. delectRow() {
  467. let deletedIds;
  468. for(let idx = 0; idx < this.state.selectedRows.length; idx++) {
  469. let rowItem = this.state.selectedRows[idx];
  470. if(rowItem.id) {
  471. deletedIds=rowItem.id;
  472. };
  473. };
  474. this.setState({
  475. selectedRowKeys: [],
  476. loading: true
  477. });
  478. $.ajax({
  479. method: "POST",
  480. dataType: "json",
  481. crossDomain: false,
  482. url: globalConfig.context + "/api/admin/superviser/deleteById",
  483. data: {
  484. id: deletedIds,
  485. }
  486. }).done(function(data) {
  487. if(!data.error.length) {
  488. message.success('删除成功!');
  489. this.setState({
  490. loading: false,
  491. });
  492. } else {
  493. message.warning(data.error[0].message);
  494. };
  495. this.loadData(this.state.page);
  496. }.bind(this));
  497. },
  498. addClick() {
  499. this.addIdS()
  500. this.state.userDetaile = false;
  501. this.setState({
  502. showDesc: true
  503. });
  504. },
  505. closeDesc(e, s) {
  506. this.state.userDetaile=false;
  507. this.state.showDesc = e;
  508. if(s) {
  509. this.loadData(this.state.page);
  510. };
  511. },
  512. search() {
  513. this.state.userDetaile = false
  514. this.loadData();
  515. },
  516. reset() {
  517. this.state.userNameSearch = '';
  518. this.state.organizationSearch = undefined;
  519. this.state.rolesSearch = undefined;
  520. this.state.postSearch = undefined;
  521. this.state.stationSearch = undefined;
  522. this.state.statusSeach = undefined;
  523. this.state.signNameSearch = '';
  524. this.state.mobileSearch = '';
  525. this.state.auto = '';
  526. this.state.theTypes='';
  527. this.loadData();
  528. },
  529. searchSwitch() {
  530. this.setState({
  531. searchMore: !this.state.searchMore
  532. });
  533. },
  534. //主管初始加载(自动补全)
  535. supervisor(e) {
  536. $.ajax({
  537. method: "post",
  538. dataType: "json",
  539. crossDomain: false,
  540. url: globalConfig.context + "/api/admin/organization/selectName",
  541. data: {
  542. name: e
  543. },
  544. success: function(data) {
  545. let thedata = data.data;
  546. if(!thedata) {
  547. if(data.error && data.error.length) {
  548. message.warning(data.error[0].message);
  549. };
  550. thedata = {};
  551. };
  552. this.setState({
  553. customerArr: thedata,
  554. });
  555. }.bind(this),
  556. }).always(function() {
  557. this.setState({
  558. loading: false
  559. });
  560. }.bind(this));
  561. },
  562. //上级主管输入框失去焦点是判断客户是否存在
  563. selectAuto(value, options) {
  564. this.setState({
  565. auto: value
  566. })
  567. },
  568. blurChange(e) {
  569. let theType = '';
  570. let contactLists = this.state.customerArr || [];
  571. if(e) {
  572. contactLists.map(function(item) {
  573. if(item.name == e.toString()) {
  574. theType = item.id;
  575. }
  576. });
  577. }
  578. this.setState({
  579. theTypes: theType
  580. })
  581. },
  582. //值改变时请求客户名称
  583. httpChange(e) {
  584. if(e.length >= 1) {
  585. this.supervisor(e);
  586. }
  587. this.setState({
  588. auto: e
  589. })
  590. },
  591. render() {
  592. const rowSelection = {
  593. selectedRowKeys: this.state.selectedRowKeys,
  594. onChange: (selectedRowKeys, selectedRows) => {
  595. this.setState({
  596. selectedRows: selectedRows.slice(-1),
  597. selectedRowKeys: selectedRowKeys.slice(-1)
  598. });
  599. },
  600. onSelectAll: (selected, selectedRows, changeRows) => {
  601. this.setState({
  602. selectedRowKeys: []
  603. })
  604. },
  605. };
  606. const dataSources = this.state.customerArr || [];
  607. const options = dataSources.map((group, index) =>
  608. <Select.Option key={index} value={group.name}>{group.name}</Select.Option>
  609. )
  610. const hasSelected = this.state.selectedRowKeys.length > 0;
  611. const { RangePicker } = DatePicker;
  612. let departmentArr = this.state.departmentArr || [];
  613. let roleArr = this.state.roleArr || [];
  614. return(
  615. <div className="user-content" >
  616. <div className="content-title">
  617. <div className="user-search">
  618. <Input placeholder="用户姓名" style={{width:'150px'}}
  619. value={this.state.userNameSearch}
  620. onChange={(e) => { this.setState({ userNameSearch: e.target.value }); }} />
  621. {window.adminData.isSuperAdmin?<Select placeholder="部门"
  622. style={{ width: 160 }}
  623. value={this.state.organizationSearch}
  624. onChange={(e) => { this.setState({ organizationSearch: e }) }}>
  625. {
  626. departmentArr.map(function (item) {
  627. return <Select.Option key={item.id} >{item.name}</Select.Option>
  628. })
  629. }
  630. </Select>:''}
  631. <Select placeholder="角色"
  632. style={{ width: 160 }}
  633. value={this.state.rolesSearch}
  634. onChange={(e) => { this.setState({ rolesSearch: e }) }}>
  635. {
  636. roleArr.map(function (item) {
  637. return <Select.Option key={item.id} >{item.roleName}</Select.Option>
  638. })
  639. }
  640. </Select>
  641. <Button type="primary" onClick={this.search}>搜索</Button>
  642. <Button onClick={this.reset}>重置</Button>
  643. <Button style={{ background: "red", border: "none", color: "#fff" }}
  644. disabled={!hasSelected}
  645. onClick={this.delectRow} style={{display:"none"}}>删除<Icon type="minus" /></Button>
  646. <Button style={{ background: "#333333", border: "none", color: "#fff" }}
  647. disabled={!hasSelected}
  648. onClick={this.locking}>锁定<Icon type="lock" /></Button>
  649. <Button style={{ background: "green", border: "none", color: "#fff" }}
  650. disabled={!hasSelected}
  651. onClick={this.activation}>激活<Icon type="unlock" /></Button>
  652. <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
  653. <Button type="primary" className="addButton" onClick={this.resources} disabled={!hasSelected} >离职一键转交<Icon type="user" /></Button>
  654. <Button type="primary" className="addButton" onClick={this.addClick} >新增用户<Icon type="user" /></Button>
  655. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  656. <Select placeholder="职务"
  657. style={{ width: 160 }}
  658. value={this.state.postSearch}
  659. onChange={(e) => { this.setState({ postSearch: e }) }}>
  660. {
  661. post.map(function (item) {
  662. return <Select.Option key={item.value} >{item.key}</Select.Option>
  663. })
  664. }
  665. </Select>
  666. <Select placeholder="岗位"
  667. style={{ width: 160 }}
  668. value={this.state.stationSearch}
  669. onChange={(e) => { this.setState({ stationSearch: e }) }}>
  670. {
  671. station.map(function (item) {
  672. return <Select.Option key={item.value} >{item.key}</Select.Option>
  673. })
  674. }
  675. </Select>
  676. <Select placeholder="状态"
  677. style={{ width: 160 }}
  678. value={this.state.statusSeach}
  679. onChange={(e) => { this.setState({ statusSeach: e }) }}>
  680. <Select.Option value="正常" >正常</Select.Option>
  681. <Select.Option value="锁定" >锁定</Select.Option>
  682. </Select>
  683. <Input placeholder="登录用户名" style={{width:'150px'}}
  684. value={this.state.signNameSearch}
  685. onChange={(e) => { this.setState({ signNameSearch: e.target.value }); }} />
  686. <AutoComplete
  687. className="certain-category-search"
  688. dropdownClassName="certain-category-search-dropdown"
  689. dropdownMatchSelectWidth={false}
  690. dropdownStyle={{ width: 200 }}
  691. size="large"
  692. style={{ width: '150px',height:'28px' ,marginLeft:'10px'}}
  693. dataSource={options}
  694. placeholder="输入上级主管名字"
  695. value={this.state.auto}
  696. onChange={this.httpChange}
  697. filterOption={true}
  698. onBlur={this.blurChange}
  699. onSelect={this.selectAuto}
  700. >
  701. <Input/>
  702. </AutoComplete>
  703. </div>
  704. </div>
  705. <div className="patent-table">
  706. <Spin spinning={this.state.loading}>
  707. <Table columns={this.state.columns}
  708. dataSource={this.state.dataSource}
  709. rowSelection={rowSelection}
  710. pagination={this.state.pagination}
  711. onRowClick={this.tableRowClick} />
  712. </Spin>
  713. </div>
  714. <Newuser
  715. role={this.state.role}
  716. addId={this.state.addId}
  717. roleArr={this.state.roleArr}
  718. departmentArr={this.state.departmentArr}
  719. userDetaile={this.state.userDetaile}
  720. datauser={this.state.datauser}
  721. showDesc={this.state.showDesc}
  722. closeDesc={this.closeDesc} />
  723. <div className="patent-desc">
  724. <Modal maskClosable={false} visible={this.state.visible}
  725. onOk={this.checkResources} onCancel={this.handleCancel}
  726. width='800px'
  727. title='离职一键转交'
  728. footer=''
  729. className="admin-desc-content">
  730. <Input placeholder="用户姓名" style={{width:'150px',marginRight:"10px",marginBottom:"10px"}}
  731. value={this.state.userNameSearch}
  732. onChange={(e) => { this.setState({ userNameSearch: e.target.value }); }} />
  733. <Button type="primary" onClick={this.search}>搜索</Button>
  734. <div className="patent-table">
  735. <Spin spinning={this.state.loading}>
  736. <Table columns={this.state.column}
  737. dataSource={this.state.dataSource}
  738. pagination={this.state.pagination}
  739. onRowClick={this.tableRowClick} />
  740. </Spin>
  741. </div>
  742. </Modal>
  743. </div>
  744. </div >
  745. </div>
  746. );
  747. }
  748. }));
  749. export default User;