myTask.jsx 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917
  1. import React,{Component} from 'react';
  2. import ajax from 'jquery/src/ajax/xhr.js';
  3. import $ from 'jquery/src/ajax';
  4. import moment from 'moment';
  5. import Picture from '@/manageCenter/publicComponent/picture';
  6. import '@/manageCenter/financialManage/distribute/public.less';
  7. import { Icon, Button,Form, Input, Select, Upload,Col,Spin, Table, Switch, message, DatePicker, Modal } from 'antd';
  8. import OrderDesc from '@/manageCenter/financialManage/orderDetail/orderDesc'
  9. import Assign from '@/manageCenter/publicComponent/assign';
  10. import {getProcessStatus,getApproval,getTaskStatus,getLiquidationStatus,getApprovedState,getProjectStatus,splitUrl,getjiedian} from '@/tools';
  11. import {projectStates,taskStatus ,projectStatus} from '@/dataDic.js';
  12. const FormItem =Form.Item;
  13. const Task = React.createClass({
  14. loadData(pageNo) {
  15. this.state.data = [];
  16. this.setState({
  17. page:pageNo,
  18. loading: true
  19. });
  20. $.ajax({
  21. method: "get",
  22. dataType: "json",
  23. crossDomain: false,
  24. url: globalConfig.context + "/api/admin/orderProject/orderTaskList",
  25. data: {
  26. pageNo: pageNo || 1,
  27. pageSize: this.state.pagination.pageSize,
  28. specially:0,//个人
  29. name: this.state.nameSearch,//客户名称
  30. depId: this.state.departmenttSearch,//订单部门
  31. orderNo:this.state.orderNoSearch,//订单编号
  32. taskId:this.state.taskNoSearch, //任务编号
  33. taskStatus:this.state.taskStatus,//任务状态
  34. adminName:this.state.adminName,//任务受理人
  35. },
  36. success: function (data) {
  37. let theArr = [];
  38. if (!data.data || !data.data.list) {
  39. if (data.error && data.error.length) {
  40. message.warning(data.error[0].message);
  41. };
  42. } else {
  43. for (let i = 0; i < data.data.list.length; i++) {
  44. let thisdata = data.data.list[i];
  45. theArr.push({
  46. key: i,
  47. orderNo: thisdata.orderNo,//订单编号
  48. id:thisdata.id,//任务ID
  49. taskName:thisdata.taskName,//名称
  50. cname:thisdata.cname,//项目品类
  51. receiverName:thisdata.receiverName,//受理人
  52. projectStatus:thisdata.projectStatus,//项目状态
  53. taskStatus:thisdata.taskStatus,//任务状态
  54. taskDate:thisdata.taskDate,//分配时间
  55. userName:thisdata.userName,//用户名
  56. depName:thisdata.depName,//部门名称
  57. });
  58. };
  59. }
  60. this.state.pagination.current = data.data.pageNo;
  61. this.state.pagination.total = data.data.totalCount;
  62. if(data.data&&data.data.list&&!data.data.list.length){
  63. this.state.pagination.current=0
  64. this.state.pagination.total=0
  65. }
  66. this.setState({
  67. dataSource: theArr,
  68. pagination: this.state.pagination
  69. });
  70. }.bind(this),
  71. }).always(function () {
  72. this.setState({
  73. loading: false
  74. });
  75. }.bind(this));
  76. },
  77. getInitialState() {
  78. return {
  79. searchMore: true,
  80. assignVisible:false,
  81. releaseDate: [],
  82. roleName:'',
  83. boHuivisible:false,
  84. selectedRowKeys: [],
  85. departmentArr: [],
  86. selectedRows: [],
  87. attachmentUrl:[],
  88. paginations:false,
  89. loading: false,
  90. pagination: {
  91. defaultCurrent: 1,
  92. defaultPageSize: 10,
  93. showQuickJumper: true,
  94. pageSize: 10,
  95. onChange: function (page) {
  96. this.loadData(page);
  97. }.bind(this),
  98. showTotal: function (total) {
  99. return '共' + total + '条数据';
  100. }
  101. },
  102. columns: [
  103. {
  104. title: '任务编号',
  105. dataIndex: 'id',
  106. key: 'id',
  107. }, {
  108. title: '任务名称',
  109. dataIndex: 'taskName',
  110. key: 'taskName',
  111. }, {
  112. title: '订单编号',
  113. dataIndex: 'orderNo',
  114. key: 'orderNo',
  115. },
  116. {
  117. title: '业务类别',
  118. dataIndex: 'cname',
  119. key: 'cname',
  120. },
  121. {
  122. title: '客户名称',
  123. dataIndex: 'userName',
  124. key: 'userName',
  125. },
  126. {
  127. title: '任务状态',
  128. dataIndex: 'taskStatus',
  129. key: 'taskStatus',
  130. render: text => { return getTaskStatus(text)}
  131. },
  132. {
  133. title: '项目状态',
  134. dataIndex: 'projectStatus',
  135. key: 'projectStatus',
  136. render: text => { return getProjectStatus(text)}
  137. },
  138. {
  139. title: '分配时间',
  140. dataIndex: 'taskDate',
  141. key: 'taskDate'
  142. },{
  143. title: '订单部门',
  144. dataIndex: 'depName',
  145. key: 'depName'
  146. },
  147. {
  148. title:'操作',
  149. dataIndex: 'caozuo',
  150. key: 'caouzo',
  151. render:(text,record)=>{
  152. return <div>
  153. <Button type="primary" style={{margin:'0 10px'}} onClick={(e)=>{e.stopPropagation(),this.okCancel(record)}}>添加工时</Button>
  154. </div>
  155. }
  156. }
  157. ],
  158. dataSource: [],
  159. searchTime: [],
  160. columnsX: [
  161. {
  162. title: '业务项目名称',
  163. dataIndex: 'commodityName',
  164. key: 'commodityName'
  165. }, {
  166. title: '项目类别',
  167. dataIndex: 'cname',
  168. key: 'cname',
  169. },{
  170. title: '项目数量',
  171. dataIndex: 'commodityQuantity',
  172. key: 'commodityQuantity'
  173. }, {
  174. title: '金额(万元)',
  175. dataIndex: 'commodityPrice',
  176. key: 'commodityPrice'
  177. }, {
  178. title: '负责人',
  179. dataIndex: 'contacts',
  180. key: 'contacts'
  181. }, {
  182. title: '负责人电话',
  183. dataIndex: 'contactsMobile',
  184. key: 'contactsMobile'
  185. }, {
  186. title: '主要项目',
  187. dataIndex: 'main',
  188. key: 'main',
  189. render:(text)=>{
  190. return (text?'是':'否')
  191. }
  192. }, {
  193. title: '项目说明',
  194. dataIndex: 'taskComment',
  195. key: 'taskComment',
  196. render:(text)=>{
  197. return (text&&text.length>8?text.substr(0,8)+'…':text)
  198. }
  199. },
  200. {
  201. title:'操作',
  202. dataIndex: 'caozuo',
  203. key: 'caouzo',
  204. render:(text,record)=>{
  205. return <div>
  206. {record.taskStatus==0?
  207. <Button type="primary" style={{margin:'0 10px'}} onClick={(e)=>{e.stopPropagation(),this.evaluate(record)}}>分配任务</Button>
  208. :''}
  209. </div>
  210. }
  211. }
  212. ],
  213. dataSourceX: [],
  214. }
  215. },
  216. /* 分派 */
  217. evaluate(record,nub){
  218. this.state.assignData=record;
  219. this.setState({
  220. nub,
  221. assignVisible:true
  222. })
  223. },
  224. componentWillMount() {
  225. this.departmentList();
  226. this.loadData();
  227. },
  228. tableRowClick(record, index) {
  229. this.state.RowData = record;
  230. this.setState({
  231. visible: true,
  232. });
  233. this.xiangqing(record.id);
  234. this.xiangqings(record.orderNo);
  235. this.xiangmu(record.orderNo);
  236. },
  237. //点击修改任务详情
  238. tijiaoOk(){
  239. let attachmentUrls = [];
  240. if (this.state.attachmentUrl.length) {
  241. let picArr = [];
  242. this.state.attachmentUrl.map(function (item) {
  243. if ( item.response && item.response.data && item.response.data.length ){
  244. picArr.push(item.response.data);
  245. }
  246. });
  247. attachmentUrls = picArr.join(",");
  248. };
  249. $.ajax({
  250. method: "POST",
  251. dataType: "json",
  252. crossDomain: false,
  253. url: globalConfig.context +'/api/admin/orderProject/updateOrderTask' ,
  254. data: {
  255. id:this.state.id,//任务编号
  256. orderNo:this.state.orderNo,//订单编号
  257. projectStatus:this.state.projectStatus,//项目状态
  258. taskStatus:this.state.taskStatus,//任务状态
  259. taskComment:this.state.taskComment,//说明
  260. startDate:this.state.startDate,//启动日期
  261. endDate:this.state.endDate,//结束日期
  262. acceptDate:this.state.acceptDate,//受理日期
  263. reviewDate:this.state.reviewDate,//评审日期
  264. publicityDate:this.state.publicityDate,//公示日期
  265. licenceDate:this.state.licenceDate,//发证日期
  266. attachmentUrl:attachmentUrls.length?attachmentUrls:'',//附件
  267. contacts:this.state.contacts,//联系人
  268. contactMobile:this.state.contactMobile,//联系人电话
  269. legalPerson:this.state.legalPerson,//法人
  270. legalPersonTel:this.state.legalPersonTel,//法人电话
  271. }
  272. }).done(function(data) {
  273. this.setState({
  274. loading: false
  275. });
  276. if(!data.error.length) {
  277. message.success('保存成功!');
  278. this.visitCancel();
  279. } else {
  280. message.warning(data.error[0].message);
  281. }
  282. }.bind(this));
  283. },
  284. //点击修改任务详情
  285. tianjiaOk(){
  286. let attachmentUrls = [];
  287. if (this.state.attachmentUrl.length) {
  288. let picArr = [];
  289. this.state.attachmentUrl.map(function (item) {
  290. if ( item.response && item.response.data && item.response.data.length ){
  291. picArr.push(item.response.data);
  292. }
  293. });
  294. attachmentUrls = picArr.join(",");
  295. };
  296. $.ajax({
  297. method: "POST",
  298. dataType: "json",
  299. crossDomain: false,
  300. url: globalConfig.context +'/api/admin/orderProject/addTaskHours' ,
  301. data: {
  302. taskId:this.state.taskId,//任务编号
  303. hours:this.state.hours,//工时
  304. remarks:this.state.remarks,//说明
  305. taskDate:this.state.taskDate,//日期
  306. taskComment:this.state.taskComment,//说明
  307. }
  308. }).done(function(data) {
  309. this.setState({
  310. loading: false
  311. });
  312. if(!data.error.length) {
  313. message.success('保存成功!');
  314. this.noCancel();
  315. } else {
  316. message.warning(data.error[0].message);
  317. }
  318. }.bind(this));
  319. },
  320. //订单详情
  321. xiangqing(id) {
  322. $.ajax({
  323. method: "get",
  324. dataType: "json",
  325. crossDomain: false,
  326. url: globalConfig.context +"/api/admin/orderProject/orderTaskDetail",
  327. data: {
  328. id:id
  329. },
  330. success: function(data) {
  331. let theArr = [];
  332. if(data.error.length || data.data.list == "") {
  333. if(data.error && data.error.length) {
  334. message.warning(data.error[0].message);
  335. };
  336. } else {
  337. let thisdata=data.data;
  338. this.setState({
  339. id: thisdata.id,//ID
  340. orderNo: thisdata.orderNo,//订单编号
  341. userName:thisdata.userName,//客户名称
  342. taskName: thisdata.taskName,//任务名称
  343. cname:thisdata.cname,//项目品类
  344. projectStatus:thisdata.projectStatus.toString(),//项目状态
  345. taskStatus:thisdata.taskStatus.toString(),//任务状态
  346. taskDate:thisdata.taskDate,//分配时间
  347. taskComment:thisdata.taskComment,//说明
  348. attachmentUrl: thisdata.attachmentUrl ? splitUrl(thisdata.attachmentUrl, ',', globalConfig.avatarHost + '/upload') : [],//图片地址
  349. salesmanName:thisdata.salesmanName,//订单负责人
  350. startDate:thisdata.startDate,//启动日期
  351. endDate:thisdata.endDate,//结束日期
  352. acceptDate:thisdata.acceptDate,//受理日期
  353. reviewDate:thisdata.reviewDate,//评审日期
  354. publicityDate:thisdata.publicityDate,//公示日期
  355. licenceDate:thisdata.licenceDate,//发证日期
  356. contacts:thisdata.contacts,//联系人
  357. contactMobile:thisdata.contactMobile,//联系人电话
  358. legalPerson:thisdata.legalPerson,//法人
  359. legalPersonTel:thisdata.legalPersonTel,//法人电话
  360. })
  361. };
  362. }.bind(this),
  363. }).always(function() {
  364. this.setState({
  365. loading: false
  366. });
  367. }.bind(this));
  368. },
  369. //订单详情
  370. xiangqings(orderNos) {
  371. $.ajax({
  372. method: "get",
  373. dataType: "json",
  374. crossDomain: false,
  375. url: globalConfig.context +"/api/admin/newOrder/getOrderNewDetail",
  376. data: {
  377. orderNo:orderNos
  378. },
  379. success: function(data) {
  380. let theArr = [];
  381. if(data.error.length || data.data.list == "") {
  382. if(data.error && data.error.length) {
  383. message.warning(data.error[0].message);
  384. };
  385. } else {
  386. let thisdata=data.data;
  387. this.setState({
  388. processStatus:thisdata.processStatus,//流程状态
  389. liquidationStatus:thisdata.liquidationStatus,//结算状态
  390. approval:thisdata.approval,//特批状态
  391. orderRemarks:thisdata.orderRemarks,//订单留言
  392. salesmanName:thisdata.salesmanName,//营销员名称
  393. salesmanMobile:thisdata.salesmanMobile,//营销员电话
  394. financeName:thisdata.financeName,//财务名称
  395. financeMobile:thisdata.financeMobile,//财务电话
  396. })
  397. };
  398. }.bind(this),
  399. }).always(function() {
  400. this.setState({
  401. loading: false
  402. });
  403. }.bind(this));
  404. },
  405. //项目列表
  406. xiangmu(orderNos) {
  407. $.ajax({
  408. method: "get",
  409. dataType: "json",
  410. crossDomain: false,
  411. url: globalConfig.context +"/api/admin/newOrder/getOrderTask",
  412. data: {
  413. orderNo:orderNos
  414. },
  415. success: function(data) {
  416. let theArr = [];
  417. if(data.error.length || data.data.list == "") {
  418. if(data.error && data.error.length) {
  419. message.warning(data.error[0].message);
  420. };
  421. } else {
  422. for (let i = 0; i < data.data.length; i++) {
  423. let thisdata = data.data[i];
  424. theArr.push({
  425. key: i,
  426. id:thisdata.id,
  427. orderNo:thisdata.orderNo,//订单编号
  428. commodityId:thisdata.commodityId,//项目ID
  429. commodityName:thisdata.commodityName,//项目名称
  430. cname:thisdata.cname,//项目类别
  431. commodityPrice:thisdata.commodityPrice,//项目价格
  432. commodityQuantity:thisdata.commodityQuantity,//项目数量
  433. main:thisdata.main,//是否为主要任务
  434. taskComment:thisdata.taskComment,//任务说明
  435. contacts:thisdata.contacts,//联系人
  436. contactsMobile:thisdata.contactsMobile,//联系人电话
  437. taskStatus:thisdata.taskStatus,//是否分配
  438. });
  439. };
  440. };
  441. this.setState({
  442. dataSourceX: theArr,
  443. });
  444. }.bind(this),
  445. }).always(function() {
  446. this.setState({
  447. loading: false
  448. });
  449. }.bind(this));
  450. },
  451. //关闭详情
  452. visitCancel(e){
  453. this.setState({
  454. visible:false
  455. })
  456. this.reset();
  457. },
  458. visitOk(e){
  459. this.setState({
  460. visible:false
  461. })
  462. this.reset();
  463. },
  464. closeDesc(e, s) {
  465. this.state.showDesc = e;
  466. if (s) {
  467. this.loadData(this.state.page);
  468. };
  469. },
  470. closeAssign(e, s) {
  471. this.state.roleName='';
  472. this.state.assignVisible = e;
  473. if (s) {
  474. this.loadData(this.state.page);
  475. };
  476. },
  477. //添加工时
  478. okCancel(record){
  479. this.setState({
  480. lookVisible:true,
  481. taskId:record.id
  482. })
  483. },
  484. //关闭添加工时
  485. noCancel(){
  486. this.setState({
  487. lookVisible:false
  488. })
  489. this.reset();
  490. },
  491. search() {
  492. this.loadData();
  493. },
  494. reset() {
  495. this.state.id='';//任务编号
  496. this.state.orderNo='';//订单编号
  497. this.state.projectStatus=undefined;//项目状态
  498. this.state.taskStatus=undefined;//任务状态
  499. this.state.taskComment='';//说明
  500. this.state.startDate='';//启动日期
  501. this.state.endDate='';//结束日期
  502. this.state.acceptDate='';//受理日期
  503. this.state.reviewDate='';//评审日期
  504. this.state.publicityDate='';//公示日期
  505. this.state.licenceDate='';//发证日期
  506. attachmentUrl:[];//附件
  507. this.state.contacts='';//联系人
  508. this.state.contactMobile='';//联系人电话
  509. this.state.legalPerson='';//法人
  510. this.state.legalPersonTel='';//法人电话
  511. this.state.taskId='';//任务编号
  512. this.state.hours='';//工时
  513. this.state.remarks='';//说明
  514. this.state.taskDate='';//日期
  515. this.state.taskComment='';//说明
  516. this.state.nameSearch = '';
  517. this.state.releaseDate = [];
  518. this.state.orderNoSearch='';
  519. this.state.taskNoSearch='';
  520. this.state.distribution=undefined;
  521. this.state.departmenttSearch=undefined;
  522. this.loadData(this.state.page);
  523. },
  524. searchSwitch() {
  525. this.setState({
  526. searchMore: !this.state.searchMore
  527. });
  528. },
  529. //部门
  530. departmentList() {
  531. this.setState({
  532. loading: true
  533. });
  534. $.ajax({
  535. method: "get",
  536. dataType: "json",
  537. crossDomain: false,
  538. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  539. data: {
  540. },
  541. success: function(data) {
  542. let thedata = data.data;
  543. let theArr = [];
  544. if(!thedata) {
  545. if(data.error && data.error.length) {
  546. message.warning(data.error[0].message);
  547. };
  548. thedata = {};
  549. } else {
  550. thedata.map(function(item, index) {
  551. theArr.push({
  552. key: index,
  553. name: item.name,
  554. id: item.id,
  555. })
  556. })
  557. }
  558. this.setState({
  559. departmentArr: theArr,
  560. })
  561. }.bind(this),
  562. }).always(function() {
  563. this.setState({
  564. loading: false
  565. });
  566. }.bind(this));
  567. },
  568. render() {
  569. const rowSelection = {
  570. selectedRowKeys: this.state.selectedRowKeys,
  571. onChange: (selectedRowKeys, selectedRows) => {
  572. this.setState({
  573. selectedRows: selectedRows.slice(-1),
  574. selectedRowKeys: selectedRowKeys.slice(-1)
  575. });
  576. }
  577. };
  578. const formItemLayout = {
  579. labelCol: { span: 6 },
  580. wrapperCol: { span: 12 },
  581. };
  582. const hasSelected = this.state.selectedRowKeys.length > 0;
  583. const { RangePicker } = DatePicker;
  584. let departmentArr = this.state.departmentArr || [];
  585. return ( <div className="user-content">
  586. <div className="content-title">
  587. <span>任务派单管理</span>
  588. </div>
  589. <div className="user-search">
  590. <Input placeholder="客户名称"
  591. value={this.state.nameSearch}
  592. onChange={(e) => { this.setState({ nameSearch: e.target.value }); }} />
  593. <Input placeholder="订单编号"
  594. value={this.state.orderNoSearch}
  595. onChange={(e) => { this.setState({ orderNoSearch: e.target.value }); }} />
  596. <Input placeholder="任务编号"
  597. value={this.state.taskNoSearch}
  598. onChange={(e) => { this.setState({ taskNoSearch: e.target.value }); }} />
  599. <Select placeholder="选择部门"
  600. style={{ width: 150 ,marginRight:'10px'}}
  601. value={this.state.departmenttSearch}
  602. onChange={(e) => { this.setState({ departmenttSearch: e }) }}>
  603. {
  604. departmentArr.map(function (item) {
  605. return <Select.Option key={item.id} >{item.name}</Select.Option>
  606. })
  607. }
  608. </Select>
  609. <Button type="primary" onClick={this.search}>搜索</Button>
  610. <Button onClick={this.reset}>重置</Button>
  611. {/* <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  612. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  613. <span>订单时间 :</span>
  614. <RangePicker
  615. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  616. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  617. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  618. </div> */}
  619. </div>
  620. <div className="patent-table">
  621. <Spin spinning={this.state.loading}>
  622. <Table columns={this.state.columns}
  623. dataSource={this.state.dataSource}
  624. rowSelection={rowSelection}
  625. pagination={this.state.pagination}
  626. onRowClick={this.tableRowClick.bind(this)} />
  627. </Spin>
  628. </div>
  629. <Assign
  630. title="任务"
  631. selApi={"/api/admin/orderProject/projectDistribution"}
  632. data={this.state.assignData}
  633. showDesc={this.state.assignVisible}
  634. closeDesc={this.closeAssign.bind(this)}
  635. fenpaiData={8}
  636. specially={0}
  637. roleName={this.state.nub}
  638. />
  639. <Modal
  640. className="customeDetails"
  641. footer=''
  642. title="订单详情"
  643. width='900px'
  644. visible={this.state.visible}
  645. onOk={this.visitOk}
  646. onCancel={this.visitCancel}
  647. >
  648. <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form" style={{paddingBottom:'00px'}} >
  649. <Spin spinning={this.state.loading}>
  650. <div className="clearfix">
  651. <FormItem className="half-item"
  652. {...formItemLayout}
  653. label="任务编号" >
  654. <span>{this.state.id}</span>
  655. </FormItem>
  656. <FormItem className="half-item"
  657. {...formItemLayout}
  658. label="任务名称" >
  659. <span>{this.state.taskName}</span>
  660. </FormItem>
  661. <FormItem className="half-item"
  662. {...formItemLayout}
  663. label="订单编号" >
  664. <span>{this.state.orderNo}</span>
  665. </FormItem>
  666. <FormItem className="half-item"
  667. {...formItemLayout}
  668. label="业务类别" >
  669. <span>{this.state.cname}</span>
  670. </FormItem>
  671. <FormItem className="half-item"
  672. {...formItemLayout}
  673. label="客户名称" >
  674. <span>{this.state.userName}</span>
  675. </FormItem>
  676. <FormItem className="half-item"
  677. {...formItemLayout}
  678. label="特批立项" >
  679. <span>{getApprovedState(this.state.approval)}</span>
  680. </FormItem>
  681. <FormItem className="half-item"
  682. {...formItemLayout}
  683. label="流程状态" >
  684. <span>{getProcessStatus(this.state.processStatus)}</span>
  685. </FormItem>
  686. <FormItem className="half-item"
  687. {...formItemLayout}
  688. label="结算状态" >
  689. <span>{getLiquidationStatus(this.state.liquidationStatus)}</span>
  690. </FormItem>
  691. <FormItem className="half-item"
  692. {...formItemLayout}
  693. label="订单负责人" >
  694. <span>{this.state.salesmanName}</span>
  695. </FormItem>
  696. <FormItem className="half-item"
  697. {...formItemLayout}
  698. label="订单负责人电话" >
  699. <span>{this.state.salesmanMobile}</span>
  700. </FormItem>
  701. <FormItem className="half-item"
  702. {...formItemLayout}
  703. label="财务负责人" >
  704. <span>{this.state.financeName}</span>
  705. </FormItem>
  706. <FormItem className="half-item"
  707. {...formItemLayout}
  708. label="财务负责人电话" >
  709. <span>{this.state.financeMobile}</span>
  710. </FormItem>
  711. <FormItem className="half-item"
  712. {...formItemLayout}
  713. label="客户联系人" >
  714. <Input placeholder="请输入联系人名称" value={this.state.contacts} style={{width:'200px'}}
  715. onChange={(e)=>{this.setState({contacts:e.target.value})}} ref="commodityQuantity"/>
  716. </FormItem>
  717. <FormItem className="half-item"
  718. {...formItemLayout}
  719. label="联系人电话" >
  720. <Input placeholder="请输入联系人电话" value={this.state.contactMobile} style={{width:'200px'}}
  721. onChange={(e)=>{this.setState({contactMobile:e.target.value})}} ref="commodityQuantity"/>
  722. </FormItem>
  723. <FormItem className="half-item"
  724. {...formItemLayout}
  725. label="企业法人" >
  726. <Input placeholder="请输入法人名称" value={this.state.legalPerson} style={{width:'200px'}}
  727. onChange={(e)=>{this.setState({legalPerson:e.target.value})}} ref="commodityQuantity"/>
  728. </FormItem>
  729. <FormItem className="half-item"
  730. {...formItemLayout}
  731. label="法人电话" >
  732. <Input placeholder="请输入法人电话" value={this.state.legalPersonTel} style={{width:'200px'}}
  733. onChange={(e)=>{this.setState({legalPersonTel:e.target.value})}} ref="commodityQuantity"/>
  734. </FormItem>
  735. <FormItem className="half-item"
  736. {...formItemLayout}
  737. label="任务状态" >
  738. <Select placeholder="选择任务状态"
  739. style={{ width:'200px'}}
  740. value={this.state.taskStatus}
  741. onChange={(e)=>{this.setState({taskStatus:e})}}>
  742. {
  743. taskStatus.map(function (item) {
  744. return <Select.Option key={item.value} >{item.key}</Select.Option>
  745. })
  746. }
  747. </Select>
  748. </FormItem>
  749. <FormItem className="half-item"
  750. {...formItemLayout}
  751. label="项目状态" >
  752. <Select placeholder="选择项目状态"
  753. style={{ width:'200px'}}
  754. value={this.state.projectStatus}
  755. onChange={(e)=>{this.setState({projectStatus:e})}}>
  756. {
  757. projectStatus.map(function (item) {
  758. return <Select.Option key={item.value} >{item.key}</Select.Option>
  759. })
  760. }
  761. </Select>
  762. </FormItem>
  763. <FormItem className="half-item" {...formItemLayout} label="启动时间">
  764. <DatePicker
  765. style={{marginTop:"2px",width: '200px',height:"32px" }}
  766. showTime
  767. format="YYYY-MM-DD"
  768. onOk={(e)=>{}}
  769. value={this.state.startDate ? moment(this.state.startDate) : null}
  770. onChange={(data, dataString) => { this.setState({ startDate: dataString }); }} />
  771. </FormItem>
  772. <FormItem className="half-item" {...formItemLayout} label="完成时间">
  773. <DatePicker
  774. style={{marginTop:"2px",width: '200px',height:"32px" }}
  775. showTime
  776. format="YYYY-MM-DD"
  777. onOk={(e)=>{}}
  778. value={this.state.endDate ? moment(this.state.endDate) : null}
  779. onChange={(data, dataString) => { this.setState({ endDate: dataString }); }} />
  780. </FormItem>
  781. <FormItem className="half-item" {...formItemLayout} label="受理时间">
  782. <DatePicker
  783. style={{marginTop:"2px",width: '200px',height:"32px" }}
  784. showTime
  785. format="YYYY-MM-DD"
  786. onOk={(e)=>{}}
  787. value={this.state.acceptDate ? moment(this.state.acceptDate) : null}
  788. onChange={(data, dataString) => { this.setState({ acceptDate: dataString }); }} />
  789. </FormItem>
  790. <FormItem className="half-item" {...formItemLayout} label="评审时间">
  791. <DatePicker
  792. style={{marginTop:"2px",width: '200px',height:"32px" }}
  793. showTime
  794. format="YYYY-MM-DD"
  795. onOk={(e)=>{}}
  796. value={this.state.reviewDate ? moment(this.state.reviewDate) : null}
  797. onChange={(data, dataString) => { this.setState({ reviewDate: dataString }); }} />
  798. </FormItem>
  799. <FormItem className="half-item" {...formItemLayout} label="公示时间">
  800. <DatePicker
  801. style={{marginTop:"2px",width: '200px',height:"32px" }}
  802. showTime
  803. format="YYYY-MM-DD"
  804. onOk={(e)=>{}}
  805. value={this.state.publicityDate ? moment(this.state.publicityDate) : null}
  806. onChange={(data, dataString) => { this.setState({ publicityDate: dataString }); }} />
  807. </FormItem>
  808. <FormItem className="half-item" {...formItemLayout} label="发证时间">
  809. <DatePicker
  810. style={{marginTop:"2px",width: '200px',height:"32px" }}
  811. showTime
  812. format="YYYY-MM-DD"
  813. onOk={(e)=>{}}
  814. value={this.state.licenceDate ? moment(this.state.licenceDate) : null}
  815. onChange={(data, dataString) => { this.setState({ licenceDate: dataString }); }} />
  816. </FormItem>
  817. <div className='clearfix'>
  818. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 16 }} label="附件">
  819. <Picture
  820. fileList={(e)=>{this.setState({attachmentUrl:e})}}
  821. pictureUrl={this.state.attachmentUrl}
  822. visible={this.props.visible}
  823. data={{'sign':'order_task_file',url:'/api/admin/orderProject/uploadOrderTaskFile',number:8}}
  824. />
  825. </FormItem>
  826. </div>
  827. <div className='clearfix'>
  828. <FormItem
  829. labelCol={{ span: 3 }}
  830. wrapperCol={{ span: 16 }}
  831. label="备注" >
  832. <Input type="textarea" placeholder="请输入备注" rows={4} value={this.state.taskComment}
  833. onChange={(e)=>{this.setState({taskComment:e.target.value})}}/>
  834. </FormItem>
  835. </div>
  836. <div>
  837. <span style={{marginLeft:'50px',fontSize:'20px'}}>项目业务</span>
  838. {this.state.processStatus==0?<Button type='primary' onClick={this.addDetailed} style={{float:'right',marginRight:'50px',marginBottom:'15px'}}>添加项目明细</Button>:""}
  839. </div>
  840. <div className="patent-table">
  841. <Spin spinning={this.state.loading}>
  842. <Table columns={this.state.columnsX}
  843. dataSource={this.state.dataSourceX}
  844. pagination={this.state.paginations}
  845. onRowClick={this.tableRowClickX}
  846. />
  847. </Spin>
  848. </div>
  849. <div className='clearfix'>
  850. <Button className="cancel" type="primary" onClick={this.tijiaoOk} style={{marginLeft:"200px"}} htmlType="submit">保存</Button>
  851. <Button className="cancel" type="ghost" onClick={this.visitCancel} style={{marginLeft:"50px"}}>取消</Button>
  852. </div>
  853. </div>
  854. </Spin>
  855. </Form>
  856. </Modal>
  857. <Modal maskClosable={false} visible={this.state.lookVisible}
  858. onOk={this.noCancel} onCancel={this.noCancel}
  859. width='500px'
  860. title={'添加工时'}
  861. footer=''
  862. className="admin-desc-content">
  863. <Form layout="horizontal" id="demand-form">
  864. <Spin spinning={this.state.loading}>
  865. <div className='clearfix'>
  866. <FormItem {...formItemLayout} label="工作日期">
  867. <DatePicker
  868. style={{marginTop:"2px",width: '200px',height:"32px" }}
  869. showTime
  870. format="YYYY-MM-DD"
  871. onOk={(e)=>{}}
  872. value={this.state.taskDate ? moment(this.state.taskDate) : null}
  873. onChange={(data, dataString) => { this.setState({ taskDate: dataString }); }} />
  874. </FormItem>
  875. </div>
  876. <div className='clearfix'>
  877. <FormItem
  878. {...formItemLayout}
  879. label="工作时长" >
  880. <Input placeholder="请输入工作时长" value={this.state.hours} style={{width:'200px'}}
  881. onChange={(e)=>{this.setState({hours:e.target.value})}} ref="commodityQuantity"/>
  882. </FormItem>
  883. </div>
  884. <div className='clearfix'>
  885. <FormItem
  886. {...formItemLayout}
  887. label="工作内容" >
  888. <Input type="textarea" placeholder="请输入备注" rows={4} value={this.state.remarks}
  889. onChange={(e)=>{this.setState({remarks:e.target.value})}}/>
  890. </FormItem>
  891. </div>
  892. <div className='clearfix'>
  893. <Button className="cancel" type="primary" onClick={this.tianjiaOk} style={{marginLeft:"100px"}} htmlType="submit">确定</Button>
  894. <Button className="cancel" type="ghost" onClick={this.noCancel} style={{marginLeft:"50px"}}>取消</Button>
  895. </div>
  896. </Spin>
  897. </Form >
  898. </Modal>
  899. </div> )
  900. }
  901. })
  902. export default Task;