taskQuery.jsx 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288
  1. import React from 'react';
  2. import $ from 'jquery';
  3. import '@/manageCenter/financialManage/distribute/public.less';
  4. import { Button, Form, Input, Select, Upload,Spin, Table, message, Modal} from 'antd';
  5. import Assign from '@/manageCenter/publicComponent/assign';
  6. import './table.less';
  7. import {getProcessStatus,getApproval,getTaskStatus,getLiquidationStatus,splitUrl,getProjectStatus,getboutique,getprovince} from '@/tools';
  8. const FormItem =Form.Item;
  9. const Task = React.createClass({
  10. loadData(pageNo) {
  11. this.state.data = [];
  12. this.setState({
  13. page:pageNo,
  14. loading: true
  15. });
  16. $.ajax({
  17. method: "get",
  18. dataType: "json",
  19. crossDomain: false,
  20. url: globalConfig.context + "/api/admin/orderProject/selectTaskList",
  21. data: {
  22. pageNo: pageNo || 1,
  23. pageSize: this.state.pagination.pageSize,
  24. specially:1,//经理
  25. name: this.state.nameSearch,//客户名称
  26. orderNo:this.state.orderNoSearch,//订单编号
  27. depId: this.state.departmenttSearch,//订单部门
  28. taskId:this.state.taskId, //任务编号
  29. adminName:this.state.adminName,//任务受理人
  30. },
  31. success: function (data) {
  32. let theArr = [];
  33. if (!data.data || !data.data.list) {
  34. if (data.error && data.error.length) {
  35. message.warning(data.error[0].message);
  36. };
  37. } else {
  38. for (let i = 0; i < data.data.list.length; i++) {
  39. let thisdata = data.data.list[i];
  40. theArr.push({
  41. key: i,
  42. orderNo: thisdata.orderNo,//订单编号
  43. id:thisdata.id,//任务ID
  44. taskName:thisdata.taskName,//名称
  45. cname:thisdata.cname,//项目品类
  46. receiverName:thisdata.receiverName,//受理人
  47. projectStatus:thisdata.projectStatus,//项目状态
  48. taskStatus:thisdata.taskStatus,//任务状态
  49. taskDate:thisdata.taskDate,//分配时间
  50. commodityQuantity:thisdata.commodityQuantity,//软著数量
  51. alreadyNumber:thisdata.alreadyNumber,//下证数量
  52. userName:thisdata.taskName.substring(0,5) === '软件著作权'?thisdata.userName+'('+thisdata.commodityQuantity.toString()+'/'+thisdata.alreadyNumber+')':thisdata.userName,//用户名
  53. depName:thisdata.depName,//部门名称
  54. receiverName:thisdata.receiverName,//任务责任人
  55. });
  56. };
  57. }
  58. this.state.pagination.current = data.data.pageNo;
  59. this.state.pagination.total = data.data.totalCount;
  60. if(data.data&&data.data.list&&!data.data.list.length){
  61. this.state.pagination.current=0
  62. this.state.pagination.total=0
  63. }
  64. this.setState({
  65. dataSource: theArr,
  66. pagination: this.state.pagination
  67. });
  68. }.bind(this),
  69. }).always(function () {
  70. this.setState({
  71. loading: false
  72. });
  73. }.bind(this));
  74. },
  75. getInitialState() {
  76. return {
  77. searchMore: true,
  78. assignVisible:false,
  79. releaseDate: [],
  80. roleName:'',
  81. testFlag:true,
  82. departmentArr: [],
  83. boHuivisible:false,
  84. selectedRowKeys: [],
  85. selectedRows: [],
  86. paginations:false,
  87. loading: false,
  88. pagination: {
  89. defaultCurrent: 1,
  90. defaultPageSize: 10,
  91. showQuickJumper: true,
  92. pageSize: 10,
  93. onChange: function (page) {
  94. this.loadData(page);
  95. }.bind(this),
  96. showTotal: function (total) {
  97. return '共' + total + '条数据';
  98. }
  99. },
  100. columns: [
  101. {
  102. title: '任务编号',
  103. dataIndex: 'id',
  104. key: 'id',
  105. }, {
  106. title: '任务名称',
  107. dataIndex: 'taskName',
  108. key: 'taskName',
  109. className: 'taskName'
  110. }, {
  111. title: '订单编号',
  112. dataIndex: 'orderNo',
  113. key: 'orderNo',
  114. },
  115. {
  116. title: '业务类别',
  117. dataIndex: 'cname',
  118. key: 'cname',
  119. },
  120. {
  121. title: '客户名称',
  122. dataIndex: 'userName',
  123. key: 'userName',
  124. className: '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. {
  144. title: '任务数量',
  145. dataIndex: 'commodityQuantity',
  146. key: 'commodityQuantity'
  147. },
  148. {
  149. title: '任务责任人',
  150. dataIndex: 'receiverName',
  151. key: 'receiverName'
  152. },{
  153. title: '订单部门',
  154. dataIndex: 'depName',
  155. key: 'depName'
  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. columnsA: [
  202. {
  203. title: '流程',
  204. dataIndex: 'content',
  205. key: 'content',
  206. align:'center'
  207. }, {
  208. title: '操作人',
  209. dataIndex: 'aName',
  210. key: 'aName',
  211. align:'center'
  212. }, {
  213. title: '时间',
  214. dataIndex: 'createTimes',
  215. key: 'createTimes',
  216. align:'center'
  217. }
  218. ],
  219. dataSourceX: [],
  220. dataSourceA: [],
  221. ContactsLists: [{
  222. title: '批次',
  223. dataIndex: 'num',
  224. key: 'num',
  225. },{
  226. title: '下证时间',
  227. dataIndex: 'licenceTimes',
  228. key: 'licenceTimes',
  229. }, {
  230. title: '下证数量',
  231. dataIndex: 'alreadyNumber',
  232. key: 'alreadyNumber',
  233. },
  234. {
  235. title: '未下证数量',
  236. dataIndex: 'notCount',
  237. key: 'notCount',
  238. }
  239. ],
  240. }
  241. },
  242. /* 分派 */
  243. evaluate(record,nub){
  244. this.state.assignData=record;
  245. this.setState({
  246. nub,
  247. assignVisible:true
  248. })
  249. },
  250. componentDidMount(){
  251. this.setColor()
  252. },
  253. componentWillMount() {
  254. this.departmentList();
  255. this.loadData();
  256. },
  257. tableRowClick(record) {
  258. this.state.RowData = record;
  259. if(record.taskName.substring(0,5) === '软件著作权'){
  260. this.setState({
  261. speVisible: true,
  262. id: record.id,
  263. dataArr:record,
  264. commodityQuantity:record.commodityQuantity
  265. });
  266. }else{
  267. this.setState({
  268. visible: true,
  269. });
  270. }
  271. this.xiangqing(record.id,record.taskName);
  272. this.xiangqings(record.orderNo);
  273. this.xiangmu(record.orderNo);
  274. this.loaduserss(record);
  275. },
  276. //订单详情
  277. xiangqing(id) {
  278. $.ajax({
  279. method: "get",
  280. dataType: "json",
  281. crossDomain: false,
  282. url: globalConfig.context +"/api/admin/orderProject/orderTaskDetail",
  283. data: {
  284. id:id
  285. },
  286. success: function(data) {
  287. if(data.error.length || data.data.list == "") {
  288. if(data.error && data.error.length) {
  289. message.warning(data.error[0].message);
  290. };
  291. } else {
  292. let thisdata=data.data;
  293. this.setState({
  294. id: thisdata.id,//ID
  295. orderNo: thisdata.orderNo,//订单编号
  296. userName:thisdata.userName,//客户名称
  297. taskName: thisdata.taskName,//任务名称
  298. cname:thisdata.cname,//项目品类
  299. contractNo:thisdata.contractNo,//合同编号
  300. projectStatus:thisdata.projectStatus,//项目状态
  301. taskStatus:thisdata.taskStatus,//任务状态
  302. taskDate:thisdata.taskDate,//分配时间
  303. taskComment:thisdata.taskComment,//说明
  304. attachmentUrl: thisdata.attachmentUrl ? splitUrl(thisdata.attachmentUrl, ',', globalConfig.avatarHost + '/upload') : [],//图片地址
  305. salesmanName:thisdata.salesmanName,//订单负责人
  306. startDate:thisdata.startDate,//启动日期
  307. endDate:thisdata.endDate,//结束日期
  308. acceptDate:thisdata.acceptDate,//受理日期
  309. reviewDate:thisdata.reviewDate,//评审日期
  310. publicityDate:thisdata.publicityDate,//公示日期
  311. licenceDate:thisdata.licenceDate,//发证日期
  312. contacts:thisdata.contacts,//联系人
  313. contactMobile:thisdata.contactMobile,//联系人电话
  314. legalPerson:thisdata.legalPerson,//法人
  315. legalPersonTel:thisdata.legalPersonTel,//法人电话
  316. certificateNumber:thisdata.certificateNumber,//证书编号
  317. status:thisdata.status,//状态
  318. formRetrieve:thisdata.formRetrieve,//满意度表格
  319. taskRefund:thisdata.taskRefund,//退单
  320. refundContent:thisdata.refundContent,//退单信息
  321. retrieveContent:thisdata.retrieveContent,//回收信息
  322. arrivalMoney:thisdata.arrivalMoney,//是否到款
  323. setUpAmount:thisdata.setUpAmount,//立项金额
  324. declareUser:thisdata.declareUser,//账号
  325. declarePwd:thisdata.declarePwd,//密码
  326. depName:thisdata.depName,//订单部门
  327. outsourceName:thisdata.outsourceName,//外包公司名称
  328. outsourcePrice:thisdata.outsourcePrice,//外包价格
  329. })
  330. };
  331. }.bind(this),
  332. }).always(function() {
  333. this.setState({
  334. loading: false
  335. });
  336. }.bind(this));
  337. },
  338. //订单详情
  339. xiangqings(orderNos) {
  340. $.ajax({
  341. method: "get",
  342. dataType: "json",
  343. crossDomain: false,
  344. url: globalConfig.context +"/api/admin/newOrder/getOrderNewDetail",
  345. data: {
  346. orderNo:orderNos
  347. },
  348. success: function(data) {
  349. let thisdata=data.data;
  350. let ProvinceCityArr = [];
  351. let ProvinceS = thisdata.locationProvince; //省
  352. let citys = thisdata.locationCity;//市
  353. let Areas = thisdata.locationArea;//区
  354. ProvinceCityArr.push(ProvinceS, citys, Areas);
  355. if(data.error.length || data.data.list == "") {
  356. if(data.error && data.error.length) {
  357. message.warning(data.error[0].message);
  358. };
  359. } else {
  360. this.setState({
  361. processStatus:thisdata.processStatus,//流程状态
  362. liquidationStatus:thisdata.liquidationStatus,//结算状态
  363. approval:thisdata.approval,//特批状态
  364. orderRemarks:thisdata.orderRemarks,//订单留言
  365. salesmanName:thisdata.salesmanName,//营销员名称
  366. salesmanMobile:thisdata.salesmanMobile,//营销员电话
  367. financeName:thisdata.financeName,//财务名称
  368. financeMobile:thisdata.financeMobile,//财务电话
  369. depName:thisdata.depName,//订单部门
  370. locationProvince:thisdata.locationProvince,
  371. locationCity:thisdata.locationCity,
  372. locationArea:thisdata.locationArea,
  373. ProvinceCity:ProvinceCityArr,
  374. postalAddress:thisdata.postalAddress,//详细地址
  375. outsource:thisdata.outsource,
  376. })
  377. };
  378. }.bind(this),
  379. }).always(function() {
  380. this.setState({
  381. loading: false
  382. });
  383. }.bind(this));
  384. },
  385. //查看下证信息
  386. loaduserss(record){
  387. $.ajax({
  388. method: "get",
  389. dataType: "json",
  390. crossDomain: false,
  391. url: globalConfig.context + '/api/admin/orderProject/selectTaskProgress',
  392. data: {
  393. tid:record.id
  394. },
  395. success: function (data) {
  396. let theArr=[];
  397. let thisData=[];
  398. if (!thisData) {
  399. if (data.error && data.error.length) {
  400. message.warning(data.error[0].message);
  401. };
  402. thisData = {};
  403. }else{
  404. for(let i = 0; i < data.data.length; i++) {
  405. thisData= data.data[i];
  406. theArr.push({
  407. num:i+1,
  408. key:i,
  409. id:thisData.id,//编号
  410. alreadyNumber:thisData.alreadyNumber,//下证数
  411. licenceTimes:thisData.licenceTimes,//下证时间
  412. notCount:thisData.notCount,//未下证数
  413. flag:true
  414. })
  415. }
  416. this.setState({
  417. contactList:theArr
  418. })
  419. };
  420. }.bind(this),
  421. }).always(function () {
  422. this.setState({
  423. loading: false
  424. });
  425. }.bind(this));
  426. },
  427. //项目列表
  428. xiangmu(orderNos) {
  429. $.ajax({
  430. method: "get",
  431. dataType: "json",
  432. crossDomain: false,
  433. url: globalConfig.context +"/api/admin/newOrder/getOrderTask",
  434. data: {
  435. orderNo:orderNos
  436. },
  437. success: function(data) {
  438. let theArr = [];
  439. if(data.error.length || data.data.list == "") {
  440. if(data.error && data.error.length) {
  441. message.warning(data.error[0].message);
  442. };
  443. } else {
  444. for (let i = 0; i < data.data.length; i++) {
  445. let thisdata = data.data[i];
  446. theArr.push({
  447. key: i,
  448. id:thisdata.id,
  449. orderNo:thisdata.orderNo,//订单编号
  450. commodityId:thisdata.commodityId,//项目ID
  451. commodityName:thisdata.commodityName,//项目名称
  452. cname:thisdata.cname,//项目类别
  453. commodityPrice:thisdata.commodityPrice,//项目价格
  454. commodityQuantity:thisdata.commodityQuantity,//项目数量
  455. main:thisdata.main,//是否为主要任务
  456. taskComment:thisdata.taskComment,//任务说明
  457. contacts:thisdata.contacts,//联系人
  458. contactsMobile:thisdata.contactsMobile,//联系人电话
  459. taskStatus:thisdata.taskStatus,//是否分配
  460. });
  461. };
  462. };
  463. this.setState({
  464. dataSourceX: theArr,
  465. });
  466. }.bind(this),
  467. }).always(function() {
  468. this.setState({
  469. loading: false
  470. });
  471. }.bind(this));
  472. },
  473. caozuorizhi(){
  474. this.setState({
  475. visibleA:true
  476. })
  477. $.ajax({
  478. method: "get",
  479. dataType: "json",
  480. crossDomain: false,
  481. url: globalConfig.context +"/api/admin/orderProject/TaskLogList",
  482. data: {
  483. id:this.state.id
  484. },
  485. success: function(data) {
  486. let theArr = [];
  487. if(data.error.length || data.data.list == "") {
  488. if(data.error && data.error.length) {
  489. message.warning(data.error[0].message);
  490. };
  491. } else {
  492. for (let i = 0; i < data.data.length; i++) {
  493. let thisdata = data.data[i];
  494. theArr.push({
  495. key: i,
  496. id:thisdata.id,//日志ID
  497. content:thisdata.content,//流程
  498. taskId:thisdata.taskId,//任务ID
  499. aName:thisdata.aName,//负责人
  500. createTimes:thisdata.createTimes,//时间
  501. });
  502. };
  503. };
  504. this.setState({
  505. dataSourceA: theArr,
  506. });
  507. }.bind(this),
  508. }).always(function() {
  509. this.setState({
  510. loading: false
  511. });
  512. }.bind(this));
  513. },
  514. //关闭操作工时
  515. visitCancelA(){
  516. this.setState({
  517. visibleA:false
  518. })
  519. },
  520. //关闭详情
  521. visitCancel(){
  522. this.setState({
  523. visible:false,
  524. speVisible:false,
  525. })
  526. this.reset();
  527. },
  528. visitOk(){
  529. this.setState({
  530. visible:false
  531. })
  532. this.reset();
  533. },
  534. setColor(){
  535. $(".userName span").after("(<span class='ruanzhu'>软著数</span>/<span class='xiazheng'>下证数</span>)")
  536. },
  537. closeDesc(e, s) {
  538. this.state.showDesc = e;
  539. if (s) {
  540. this.loadData(this.state.page);
  541. };
  542. },
  543. closeAssign(e, s) {
  544. this.state.roleName='';
  545. this.state.assignVisible = e;
  546. if (s) {
  547. this.loadData(this.state.page);
  548. };
  549. },
  550. nextCancel() {
  551. this.setState({
  552. addnextVisible: false
  553. })
  554. },
  555. //点击打卡项目详情
  556. tableRowClickX(record) {
  557. this.setState({
  558. jid:record.id,//项目ID
  559. kid:record.commodityId,//商品ID
  560. commodityName:record.commodityName,//金额
  561. commodityPrice:record.commodityPrice,//金额
  562. commodityQuantity:record.commodityQuantity,//数量
  563. taskComment:record.taskComment,//备注
  564. main:record.main.toString(),//是否为主要
  565. addnextVisible:true,
  566. addState:0,
  567. });
  568. },
  569. search() {
  570. this.loadData();
  571. },
  572. reset() {
  573. this.state.nameSearch = '';
  574. this.state.releaseDate = [];
  575. this.state.orderNoSearch='';
  576. this.state.taskNoSearch='';
  577. this.state.departmenttSearch=undefined;
  578. this.loadData(this.state.page);
  579. },
  580. searchSwitch() {
  581. this.setState({
  582. searchMore: !this.state.searchMore
  583. });
  584. },
  585. //部门
  586. departmentList() {
  587. this.setState({
  588. loading: true
  589. });
  590. $.ajax({
  591. method: "get",
  592. dataType: "json",
  593. crossDomain: false,
  594. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  595. data: {
  596. },
  597. success: function(data) {
  598. let thedata = data.data;
  599. let theArr = [];
  600. if(!thedata) {
  601. if(data.error && data.error.length) {
  602. message.warning(data.error[0].message);
  603. };
  604. thedata = {};
  605. } else {
  606. thedata.map(function(item, index) {
  607. theArr.push({
  608. key: index,
  609. name: item.name,
  610. id: item.id,
  611. })
  612. })
  613. }
  614. this.setState({
  615. departmentArr: theArr,
  616. })
  617. }.bind(this),
  618. }).always(function() {
  619. this.setState({
  620. loading: false
  621. });
  622. }.bind(this));
  623. },
  624. render() {
  625. const utils = {
  626. getSatisfaction:function(num){
  627. switch(num){
  628. case 0:
  629. return '未收回';
  630. case 1:
  631. return '已收回';
  632. default:
  633. return '其它';
  634. }
  635. },
  636. getChargeback:function(num){
  637. switch(num){
  638. case 0:
  639. return '已完成';
  640. case 1:
  641. return '未完成';
  642. default:
  643. return '其它';
  644. }
  645. }
  646. }
  647. const formItemLayout = {
  648. labelCol: { span: 8 },
  649. wrapperCol: { span: 14 },
  650. };
  651. let departmentArr = this.state.departmentArr || [];
  652. return ( <div className="user-content">
  653. <div className="content-title">
  654. <span>任务查询</span>
  655. </div>
  656. <div className="user-search">
  657. <Input placeholder="客户名称"
  658. value={this.state.nameSearch}
  659. onChange={(e) => { this.setState({ nameSearch: e.target.value }); }} />
  660. <Input placeholder="订单编号"
  661. value={this.state.orderNoSearch}
  662. onChange={(e) => { this.setState({ orderNoSearch: e.target.value }); }} />
  663. <Input placeholder="任务编号"
  664. value={this.state.taskNoSearch}
  665. onChange={(e) => { this.setState({ taskNoSearch: e.target.value }); }} />
  666. <Select placeholder="选择部门"
  667. style={{ width: 150 ,marginRight:'10px'}}
  668. value={this.state.departmenttSearch}
  669. onChange={(e) => { this.setState({ departmenttSearch: e }) }}>
  670. {
  671. departmentArr.map(function (item) {
  672. return <Select.Option key={item.id} >{item.name}</Select.Option>
  673. })
  674. }
  675. </Select>
  676. <Button type="primary" onClick={this.search}>搜索</Button>
  677. <Button onClick={this.reset}>重置</Button>
  678. {/* <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  679. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  680. <span>订单时间 :</span>
  681. <RangePicker
  682. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  683. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  684. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  685. </div> */}
  686. </div>
  687. <div className="patent-table">
  688. <Spin spinning={this.state.loading}>
  689. <Table columns={this.state.columns}
  690. dataSource={this.state.dataSource}
  691. onHeaderRow={(column) =>{console.log(column.index)}}
  692. pagination={this.state.pagination}
  693. onRowClick={this.tableRowClick.bind(this)} />
  694. </Spin>
  695. </div>
  696. <Assign
  697. title="任务"
  698. selApi={"/api/admin/orderProject/projectDistribution"}
  699. data={this.state.assignData}
  700. showDesc={this.state.assignVisible}
  701. closeDesc={this.closeAssign.bind(this)}
  702. fenpaiData={8}
  703. specially={0}
  704. roleName={this.state.nub}
  705. />
  706. <Modal
  707. className="customeDetails"
  708. footer=''
  709. title="项目概况"
  710. width='900px'
  711. visible={this.state.visible}
  712. onOk={this.visitOk}
  713. onCancel={this.visitCancel}
  714. >
  715. <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form" style={{paddingBottom:'00px'}} >
  716. <Spin spinning={this.state.loading}>
  717. <div className="clearfix">
  718. <div className="clearfix">
  719. <FormItem className="half-item"
  720. {...formItemLayout}
  721. label="当前项目情况">
  722. <span>{this.state.status?'暂停':'开启'}</span>
  723. <Button type='primary' size='small' style={{marginTop:'5px',position:'absolute'}} onClick={this.caozuorizhi}>操作日志</Button>
  724. </FormItem>
  725. <FormItem className="half-item"
  726. {...formItemLayout}
  727. label="合同编号">
  728. <span>{this.state.contractNo}</span>
  729. </FormItem>
  730. </div>
  731. <div className="clearfix">
  732. <FormItem className="half-item"
  733. {...formItemLayout}
  734. label="项目状态">
  735. <span>{getProcessStatus(this.state.projectStatus)}</span>
  736. </FormItem>
  737. <FormItem className="half-item"
  738. {...formItemLayout}
  739. label="是否特批">
  740. <span>{getApproval(this.state.approval)}</span>
  741. </FormItem>
  742. <FormItem className="half-item"
  743. {...formItemLayout}
  744. label="结算状态">
  745. <span>{getLiquidationStatus(this.state.liquidationStatus)}</span>
  746. </FormItem>
  747. <FormItem className="half-item"
  748. {...formItemLayout}
  749. label="流程状态">
  750. <span>{getProcessStatus(this.state.processStatus)}</span>
  751. </FormItem>
  752. <FormItem className="half-item"
  753. {...formItemLayout}
  754. label="订单编号">
  755. <span>{this.state.orderNo}</span>
  756. </FormItem>
  757. </div>
  758. <div className="clearfix">
  759. <FormItem className="half-item"
  760. {...formItemLayout}
  761. label="满意度表格">
  762. <span>{utils.getSatisfaction(this.state.formRetrieve)}</span>
  763. </FormItem>
  764. <FormItem className="half-item"
  765. {...formItemLayout}
  766. label="退单">
  767. <span>{utils.getChargeback(this.state.taskRefund)}</span>
  768. </FormItem>
  769. </div>
  770. <div className="clearfix">
  771. {<FormItem className='half-item'
  772. {...formItemLayout}
  773. label="(满意度)备注">
  774. <span>{this.state.retrieveContent}</span>
  775. </FormItem>}
  776. {<FormItem className='half-item'
  777. {...formItemLayout}
  778. label="(退单)备注">
  779. <span>{this.state.refundContent}</span>
  780. </FormItem>}
  781. </div>
  782. <div className="clearfix">
  783. <h3 className='sub-title'>任务信息</h3>
  784. <FormItem className="half-item"
  785. {...formItemLayout}
  786. label="任务编号">
  787. <span>{this.state.id}</span>
  788. </FormItem>
  789. <FormItem className="half-item"
  790. {...formItemLayout}
  791. label="任务名称">
  792. <span>{this.state.taskName}</span>
  793. </FormItem>
  794. <FormItem className="half-item"
  795. {...formItemLayout}
  796. label="任务状态">
  797. <span>{getTaskStatus(this.state.taskStatus)}</span>
  798. </FormItem>
  799. <FormItem className="half-item"
  800. {...formItemLayout}
  801. label="任务类别">
  802. <span>{this.state.cname}</span>
  803. </FormItem>
  804. <FormItem className="half-item"
  805. {...formItemLayout}
  806. label="证书编号" >
  807. <span>{this.state.certificateNumber}</span>
  808. </FormItem>
  809. </div>
  810. {this.state.outsource === 1?<div className="clearfix">
  811. <h3 className='sub-title'>外包信息</h3>
  812. <FormItem className="half-item"
  813. {...formItemLayout}
  814. label="外包公司">
  815. <span>{this.state.outsourceName}</span>
  816. </FormItem>
  817. <FormItem className="half-item"
  818. {...formItemLayout}
  819. label="外包成本(万元)">
  820. <span>{this.state.outsourcePrice}</span>
  821. </FormItem>
  822. </div>:''}
  823. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  824. <div className="clearfix">
  825. <h3 className='sub-title'>联系信息</h3>
  826. <FormItem className="half-item"
  827. {...formItemLayout}
  828. label="客户名称">
  829. <span>{this.state.userName}</span>
  830. </FormItem>
  831. <FormItem className="half-item"
  832. {...formItemLayout}
  833. label="企业法人">
  834. <span>{this.state.legalPerson}</span>
  835. </FormItem>
  836. <FormItem className="half-item"
  837. {...formItemLayout}
  838. label="法人电话">
  839. <span>{this.state.legalPersonTel}</span>
  840. </FormItem>
  841. <FormItem className="half-item"
  842. {...formItemLayout}
  843. label="客户联系人">
  844. <span>{this.state.contacts}</span>
  845. </FormItem>
  846. <FormItem className="half-item"
  847. {...formItemLayout}
  848. label="联系人电话">
  849. <span>{this.state.contactMobile}</span>
  850. </FormItem>
  851. <FormItem className="half-item"
  852. {...formItemLayout}
  853. label="企业地址">
  854. <span>{getprovince(this.state.locationProvince)}/{getprovince(this.state.locationCity)}/{getprovince(this.state.locationArea)}</span>
  855. </FormItem>
  856. <FormItem className="half-item"
  857. {...formItemLayout}
  858. label="">
  859. </FormItem>
  860. <FormItem className="half-item"
  861. {...formItemLayout}>
  862. <span style={{paddingLeft:'12em'}}>{this.state.postalAddress}</span>
  863. </FormItem>
  864. </div>
  865. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  866. <div className="clearfix">
  867. <h3 className='sub-title'>订单负责人信息</h3>
  868. <FormItem className="half-item"
  869. {...formItemLayout}
  870. label="负责人">
  871. <span>{this.state.salesmanName+'('+this.state.depName+')'}</span>
  872. </FormItem>
  873. <FormItem className="half-item"
  874. {...formItemLayout}
  875. label="负责人电话">
  876. <span>{this.state.salesmanMobile}</span>
  877. </FormItem>
  878. <FormItem className="half-item"
  879. {...formItemLayout}
  880. label="财务负责人">
  881. <span>{this.state.financeName}</span>
  882. </FormItem>
  883. <FormItem className="half-item"
  884. {...formItemLayout}
  885. label="财务负责人电话">
  886. <span>{this.state.financeMobile}</span>
  887. </FormItem>
  888. </div>
  889. <div className="clearfix">
  890. <h3 className='sub-title'>申报系统账户信息</h3>
  891. {/*<span style={{color:'red'}}>注:仅技术部可见</span>*/}
  892. <FormItem className="half-item"
  893. {...formItemLayout}
  894. label="用户名" >
  895. <span>{this.state.declareUser?'*':''}</span>
  896. </FormItem>
  897. <FormItem className="half-item"
  898. {...formItemLayout}
  899. label="密码" >
  900. <span>{this.state.declarePwd?'*':''}</span>
  901. </FormItem>
  902. </div>
  903. <div className="clearfix">
  904. <h3 className='sub-title'>项目申报进度</h3>
  905. <FormItem className="half-item" {...formItemLayout} label="启动时间">
  906. <span>{this.state.startDate}</span>
  907. </FormItem>
  908. <FormItem className="half-item" {...formItemLayout} label="完成时间">
  909. <span>{this.state.endDate}</span>
  910. </FormItem>
  911. <FormItem className="half-item" {...formItemLayout} label="受理时间">
  912. <span>{this.state.acceptDate}</span>
  913. </FormItem>
  914. <FormItem className="half-item" {...formItemLayout} label="评审时间">
  915. <span>{this.state.reviewDate}</span>
  916. </FormItem>
  917. <FormItem className="half-item" {...formItemLayout} label="公示时间">
  918. <span>{this.state.publicityDate}</span>
  919. </FormItem>
  920. <FormItem className="half-item" {...formItemLayout} label="发证时间">
  921. <span>{this.state.licenceDate}</span>
  922. </FormItem>
  923. <FormItem className="half-item"
  924. {...formItemLayout}
  925. label="立项金额(万元)" >
  926. <span>{this.state.setUpAmount}</span>
  927. </FormItem>
  928. <FormItem className="half-item"
  929. {...formItemLayout}
  930. label="是否到款">
  931. <span>{this.state.arrivalMoney?'已到企业':'未到企业'}</span>
  932. </FormItem>
  933. </div>
  934. <div className='clearfix'>
  935. <FormItem
  936. labelCol={{ span: 3 }}
  937. wrapperCol={{ span: 18 }}
  938. label='附件'
  939. >
  940. <Upload className="demandDetailShow-upload"
  941. listType="picture-card"
  942. fileList={this.state.attachmentUrl}
  943. onPreview={(file) => {
  944. this.setState({
  945. previewImage: file.url || file.thumbUrl,
  946. previewVisible: true,
  947. });
  948. }} >
  949. </Upload>
  950. <Modal maskClosable={false} footer={null}
  951. visible={this.state.previewVisible}
  952. onCancel={() => { this.setState({ previewVisible: false }) }}>
  953. <img alt="" style={{ width: '100%' }} src={this.state.previewImage || ''} />
  954. </Modal>
  955. </FormItem>
  956. </div>
  957. <div className='clearfix'>
  958. <FormItem
  959. labelCol={{ span: 3 }}
  960. wrapperCol={{ span: 16 }}
  961. label="备注" >
  962. <span>{this.state.taskComment}</span>
  963. </FormItem>
  964. </div>
  965. <div>
  966. <h3 className='sub-title'>项目业务</h3>
  967. {this.state.processStatus==0?<Button type='primary' onClick={this.addDetailed} style={{float:'right',marginRight:'50px',marginBottom:'15px'}}>添加项目明细</Button>:""}
  968. </div>
  969. <div className="patent-table">
  970. <Spin spinning={this.state.loading}>
  971. <Table columns={this.state.columnsX}
  972. dataSource={this.state.dataSourceX}
  973. pagination={this.state.paginations}
  974. onRowClick={this.tableRowClickX}
  975. />
  976. </Spin>
  977. </div>
  978. </div>
  979. </Spin>
  980. </Form>
  981. </Modal>
  982. <Modal maskClosable={false} visible={this.state.addnextVisible}
  983. onOk={this.nextCancel} onCancel={this.nextCancel}
  984. width='900px'
  985. title='项目任务详情'
  986. footer=''
  987. className="admin-desc-content">
  988. <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form">
  989. <Spin spinning={this.state.loading}>
  990. <div className='clearfix'>
  991. <FormItem className="half-item"
  992. {...formItemLayout}
  993. label="项目名称" >
  994. <span>{this.state.commodityName}</span>
  995. </FormItem>
  996. <FormItem className="half-item"
  997. {...formItemLayout}
  998. label="项目数量" >
  999. <span>{this.state.commodityQuantity}</span>
  1000. </FormItem>
  1001. <FormItem className="half-item"
  1002. {...formItemLayout}
  1003. label="金额(万元)" >
  1004. <span>{this.state.commodityPrice}</span>
  1005. </FormItem>
  1006. <FormItem className="half-item"
  1007. {...formItemLayout}
  1008. label="主要项目" >
  1009. <span>{getboutique(this.state.main)}</span>
  1010. </FormItem>
  1011. <div className='clearfix'>
  1012. <FormItem
  1013. labelCol={{ span: 4 }}
  1014. wrapperCol={{ span: 16 }}
  1015. label="服务说明" >
  1016. <span>{this.state.taskComment}</span>
  1017. </FormItem>
  1018. </div>
  1019. </div>
  1020. </Spin>
  1021. </Form >
  1022. </Modal>
  1023. <Modal width='800px'
  1024. title='操作日志'
  1025. footer=''
  1026. className="admin-desc-content">
  1027. <div className="patent-table patent-table-center">
  1028. <Spin spinning={this.state.loading}>
  1029. <Table columns={this.state.columnsY}/>
  1030. </Spin>
  1031. </div>
  1032. </Modal>
  1033. <Modal maskClosable={false} visible={this.state.speVisible}
  1034. onOk={this.visitOk} onCancel={this.visitCancel}
  1035. width='900px'
  1036. title='项目概况'
  1037. footer=''
  1038. className="admin-desc-content">
  1039. <div className="clearfix">
  1040. <FormItem className="half-item"
  1041. {...formItemLayout}
  1042. label="当前项目情况">
  1043. <span>{this.state.status?'暂停':'开启'}</span>
  1044. <Button type='primary' size='small' style={{marginTop:'5px',position:'absolute'}} onClick={this.caozuorizhi}>操作日志</Button>
  1045. </FormItem>
  1046. <FormItem className="half-item"
  1047. {...formItemLayout}
  1048. label="合同编号">
  1049. <span>{this.state.contractNo}</span>
  1050. </FormItem>
  1051. </div>
  1052. <div className="clearfix">
  1053. <FormItem className="half-item"
  1054. {...formItemLayout}
  1055. label="项目状态">
  1056. <span>{getProcessStatus(this.state.projectStatus)}</span>
  1057. </FormItem>
  1058. <FormItem className="half-item"
  1059. {...formItemLayout}
  1060. label="是否特批">
  1061. <span>{getApproval(this.state.approval)}</span>
  1062. </FormItem>
  1063. <FormItem className="half-item"
  1064. {...formItemLayout}
  1065. label="结算状态">
  1066. <span>{getLiquidationStatus(this.state.liquidationStatus)}</span>
  1067. </FormItem>
  1068. <FormItem className="half-item"
  1069. {...formItemLayout}
  1070. label="流程状态">
  1071. <span>{getProcessStatus(this.state.processStatus)}</span>
  1072. </FormItem>
  1073. <FormItem className="half-item"
  1074. {...formItemLayout}
  1075. label="订单编号">
  1076. <span>{this.state.orderNo}</span>
  1077. </FormItem>
  1078. </div>
  1079. <div className="clearfix">
  1080. <FormItem className="half-item"
  1081. {...formItemLayout}
  1082. label="满意度表格">
  1083. <span>{utils.getSatisfaction(this.state.formRetrieve)}</span>
  1084. </FormItem>
  1085. <FormItem className="half-item"
  1086. {...formItemLayout}
  1087. label="退单">
  1088. <span>{utils.getChargeback(this.state.taskRefund)}</span>
  1089. </FormItem>
  1090. </div>
  1091. <div className="clearfix">
  1092. {<FormItem className='half-item'
  1093. {...formItemLayout}
  1094. label="(满意度)备注">
  1095. <span>{this.state.retrieveContent}</span>
  1096. </FormItem>}
  1097. {<FormItem className='half-item'
  1098. {...formItemLayout}
  1099. label="(退单)备注">
  1100. <span>{this.state.refundContent}</span>
  1101. </FormItem>}
  1102. </div>
  1103. <div className="clearfix">
  1104. <h3 className='sub-title'>任务信息</h3>
  1105. <FormItem className="half-item"
  1106. {...formItemLayout}
  1107. label="任务编号">
  1108. <span>{this.state.id}</span>
  1109. </FormItem>
  1110. <FormItem className="half-item"
  1111. {...formItemLayout}
  1112. label="任务名称">
  1113. <span>{this.state.taskName}</span>
  1114. </FormItem>
  1115. <FormItem className="half-item"
  1116. {...formItemLayout}
  1117. label="任务状态">
  1118. <span>{getTaskStatus(this.state.taskStatus)}</span>
  1119. </FormItem>
  1120. <FormItem className="half-item"
  1121. {...formItemLayout}
  1122. label="任务类别">
  1123. <span>{this.state.cname}</span>
  1124. </FormItem>
  1125. <FormItem className="half-item"
  1126. {...formItemLayout}
  1127. label="证书编号" >
  1128. <span>{this.state.certificateNumber}</span>
  1129. </FormItem>
  1130. </div>
  1131. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1132. <div className="clearfix">
  1133. <h3 className='sub-title'>联系信息</h3>
  1134. <FormItem className="half-item"
  1135. {...formItemLayout}
  1136. label="客户名称">
  1137. <span>{this.state.userName}</span>
  1138. </FormItem>
  1139. <FormItem className="half-item"
  1140. {...formItemLayout}
  1141. label="企业法人">
  1142. <span>{this.state.legalPerson}</span>
  1143. </FormItem>
  1144. <FormItem className="half-item"
  1145. {...formItemLayout}
  1146. label="法人电话">
  1147. <span>{this.state.legalPersonTel}</span>
  1148. </FormItem>
  1149. <FormItem className="half-item"
  1150. {...formItemLayout}
  1151. label="客户联系人">
  1152. <span>{this.state.contacts}</span>
  1153. </FormItem>
  1154. <FormItem className="half-item"
  1155. {...formItemLayout}
  1156. label="联系人电话">
  1157. <span>{this.state.contactMobile}</span>
  1158. </FormItem>
  1159. <FormItem className="half-item"
  1160. {...formItemLayout}
  1161. label="企业地址">
  1162. <span>{getprovince(this.state.locationProvince)}/{getprovince(this.state.locationCity)}/{getprovince(this.state.locationArea)}</span>
  1163. </FormItem>
  1164. <FormItem className="half-item"
  1165. {...formItemLayout}
  1166. label="">
  1167. </FormItem>
  1168. <FormItem className="half-item"
  1169. {...formItemLayout}
  1170. label="">
  1171. <span style={{paddingLeft:'12em'}}>{this.state.postalAddress}</span>
  1172. </FormItem>
  1173. </div>
  1174. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1175. <div className="clearfix">
  1176. <h3 className='sub-title'>订单负责人信息</h3>
  1177. <FormItem className="half-item"
  1178. {...formItemLayout}
  1179. label="负责人">
  1180. <span>{this.state.salesmanName+'('+this.state.depName+')'}</span>
  1181. </FormItem>
  1182. <FormItem className="half-item"
  1183. {...formItemLayout}
  1184. label="负责人电话">
  1185. <span>{this.state.salesmanMobile}</span>
  1186. </FormItem>
  1187. <FormItem className="half-item"
  1188. {...formItemLayout}
  1189. label="财务负责人">
  1190. <span>{this.state.financeName}</span>
  1191. </FormItem>
  1192. <FormItem className="half-item"
  1193. {...formItemLayout}
  1194. label="财务负责人电话">
  1195. <span>{this.state.financeMobile}</span>
  1196. </FormItem>
  1197. </div>
  1198. <div className="clearfix" style={{marginTop:'10px'}}>
  1199. <FormItem
  1200. labelCol={{ span: 3 }}
  1201. wrapperCol={{ span: 18 }}
  1202. label='附件'
  1203. >
  1204. <Upload className="demandDetailShow-upload"
  1205. listType="picture-card"
  1206. fileList={this.state.attachmentUrl}
  1207. onPreview={(file) => {
  1208. this.setState({
  1209. previewImage: file.url || file.thumbUrl,
  1210. previewVisible: true,
  1211. });
  1212. }} >
  1213. </Upload>
  1214. <Modal maskClosable={false} footer={null}
  1215. visible={this.state.previewVisible}
  1216. onCancel={() => { this.setState({ previewVisible: false }) }}>
  1217. <img alt="" style={{ width: '100%' }} src={this.state.previewImage || ''} />
  1218. </Modal>
  1219. </FormItem>
  1220. </div>
  1221. <div className="clearfix">
  1222. <FormItem
  1223. labelCol={{ span: 3 }}
  1224. wrapperCol={{ span: 16 }}
  1225. label="备注">
  1226. <span>{this.state.taskComment}</span>
  1227. </FormItem>
  1228. </div>
  1229. <div className="clearfix">
  1230. <h3 className='sub-title'>项目申报进度</h3>
  1231. <FormItem className="half-item"
  1232. {...formItemLayout}
  1233. label="启动时间">
  1234. <span>{this.state.startDate}</span>
  1235. </FormItem>
  1236. <FormItem className="half-item"
  1237. {...formItemLayout}
  1238. label="软著派单数量">
  1239. <span>{this.state.commodityQuantity}</span>
  1240. </FormItem>
  1241. <div className="patent-table patent-table-center">
  1242. <Spin spinning={this.state.loading}>
  1243. <Table columns={this.state.ContactsLists}
  1244. dataSource={this.state.contactList}
  1245. pagination={false}/>
  1246. </Spin>
  1247. </div>
  1248. </div>
  1249. <div className="clearfix">
  1250. <h3 className='sub-title'>项目业务</h3>
  1251. <div className="patent-table">
  1252. <Spin spinning={this.state.loading}>
  1253. <Table columns={this.state.columnsX}
  1254. dataSource={this.state.dataSourceX}
  1255. pagination={this.state.paginations}
  1256. onRowClick={this.tableRowClickX}
  1257. />
  1258. </Spin>
  1259. </div>
  1260. </div>
  1261. </Modal>
  1262. <Modal width='800px' visible={this.state.visibleA}
  1263. onCancel={this.visitCancelA}
  1264. title='操作日志'
  1265. footer=''
  1266. className="admin-desc-content">
  1267. <div className="patent-table patent-table-center">
  1268. <Spin spinning={this.state.loading}>
  1269. <Table columns={this.state.columnsA}
  1270. dataSource={this.state.dataSourceA}
  1271. pagination={false}/>
  1272. </Spin>
  1273. </div>
  1274. </Modal>
  1275. </div> )
  1276. }
  1277. })
  1278. export default Task;