taskCount.jsx 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589
  1. import React from 'react';
  2. import { Button, Input, Spin, Table, message,DatePicker, Upload, Form ,Modal} from 'antd';
  3. import $ from 'jquery/src/ajax';
  4. import moment from 'moment';
  5. import {
  6. getLiquidationStatus,
  7. getProcessStatus,
  8. splitUrl,
  9. getboutique,
  10. getTaskStatus,
  11. getApproval,
  12. getprovince,
  13. ShowModal
  14. } from "@/tools.js";
  15. import ShowModalDiv from "@/showModal.jsx";
  16. const IntentionCustomer = Form.create()(React.createClass({
  17. loadData(pageNo) {
  18. this.setState({
  19. visitModul:false,
  20. loading: true,
  21. ispage:pageNo,
  22. modalVisible:false
  23. });
  24. $.ajax({
  25. method: "get",
  26. dataType: "json",
  27. crossDomain: false,
  28. url: globalConfig.context +"/api/admin/orderProject/taskHoursList",
  29. data: {
  30. pageNo: pageNo || 1,
  31. pageSize: this.state.pagination.pageSize,
  32. name: this.state.customerName,//名称
  33. taskId: this.state.orderNoSearch,//订单编号
  34. starTime: this.state.releaseDate[0],//开始时间
  35. endTime: this.state.releaseDate[1],//结束时间
  36. },
  37. success: function(data) {
  38. ShowModal(this);
  39. let theArr = [];
  40. if(data.error.length || data.data.list == "") {
  41. if(data.error && data.error.length) {
  42. message.warning(data.error[0].message);
  43. };
  44. } else {
  45. for(let i = 0; i < data.data.list.length; i++) {
  46. let thisdata = data.data.list[i];
  47. theArr.push({
  48. key: i,
  49. id:thisdata.id,//ID
  50. orderNo: thisdata.orderNo,//订单编号
  51. taskName:thisdata.taskName,//任务名称
  52. userName:thisdata.userName,//客户名称
  53. cname:thisdata.cname,//项目品类
  54. taskStatus:thisdata.taskStatus,//任务状态
  55. receiverName:thisdata.receiverName,//负责人
  56. hours:thisdata.hours,//任务工时
  57. depName:thisdata.depName,//派单公司
  58. contractNo:thisdata.contractNo,
  59. signTime:thisdata.signTime,
  60. creteTime:thisdata.creteTime
  61. });
  62. };
  63. this.state.pagination.total = data.data.totalCount;
  64. };
  65. if(data.data&&data.data.list&&!data.data.list.length){
  66. this.state.pagination.total=0
  67. }
  68. this.setState({
  69. dataSource: theArr,
  70. pageNo: pageNo,
  71. pagination: this.state.pagination,
  72. selectedRowKeys:[]
  73. });
  74. }.bind(this),
  75. }).always(function() {
  76. this.setState({
  77. loading: false
  78. });
  79. }.bind(this));
  80. },
  81. getInitialState() {
  82. return {
  83. page:1,
  84. releaseDate: [],
  85. selectedRowKeys: [],
  86. orgCodeUrl:[],
  87. paginations: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. },{
  110. title: '订单编号',
  111. dataIndex: 'orderNo',
  112. key: 'orderNo'
  113. }, {
  114. title: '业务类别',
  115. dataIndex: 'cname',
  116. key: 'cname'
  117. },{
  118. title: '客户名称',
  119. dataIndex: 'userName',
  120. key: 'userName',
  121. render:(text)=>{
  122. return (text&&text.length>9?text.substr(0,9)+'...':text)
  123. }
  124. },{
  125. title: '任务负责人',
  126. dataIndex: 'receiverName',
  127. key: 'receiverName'
  128. },{
  129. title: '派单公司',
  130. dataIndex: 'depName',
  131. key: 'depName'
  132. },{
  133. title: '任务状态',
  134. dataIndex: 'taskStatus',
  135. key: 'taskStatus',
  136. render:text=>{return getTaskStatus(text)}
  137. }, {
  138. title: '工时',
  139. dataIndex: 'hours',
  140. key: 'hours'
  141. }, {
  142. title: '合同编号',
  143. dataIndex: 'contractNo',
  144. key: 'contractNo'
  145. }, {
  146. title: '签单日期',
  147. dataIndex: 'signTime',
  148. key: 'signTime'
  149. }, {
  150. title: '派单日期',
  151. dataIndex: 'creteTime',
  152. key: 'creteTime'
  153. },
  154. ],
  155. data: [],
  156. dataSource: [],
  157. columnsX: [
  158. {
  159. title: '业务项目名称',
  160. dataIndex: 'commodityName',
  161. key: 'commodityName'
  162. }, {
  163. title: '项目类别',
  164. dataIndex: 'cname',
  165. key: 'cname',
  166. },{
  167. title: '项目数量',
  168. dataIndex: 'commodityQuantity',
  169. key: 'commodityQuantity'
  170. }, {
  171. title: '金额(万元)',
  172. dataIndex: 'commodityPrice',
  173. key: 'commodityPrice'
  174. }, {
  175. title: '负责人',
  176. dataIndex: 'contacts',
  177. key: 'contacts'
  178. }, {
  179. title: '负责人电话',
  180. dataIndex: 'contactsMobile',
  181. key: 'contactsMobile'
  182. }, {
  183. title: '主要项目',
  184. dataIndex: 'main',
  185. key: 'main',
  186. render:(text)=>{
  187. return (text?'是':'否')
  188. }
  189. }, {
  190. title: '项目说明',
  191. dataIndex: 'taskComment',
  192. key: 'taskComment',
  193. render:(text)=>{
  194. return (text&&text.length>8?text.substr(0,8)+'…':text)
  195. }
  196. }
  197. ],
  198. columnsA: [
  199. {
  200. title: '流程',
  201. dataIndex: 'content',
  202. key: 'content',
  203. align:'center'
  204. }, {
  205. title: '操作人',
  206. dataIndex: 'aName',
  207. key: 'aName',
  208. align:'center'
  209. }, {
  210. title: '时间',
  211. dataIndex: 'createTimes',
  212. key: 'createTimes',
  213. align:'center'
  214. }
  215. ],
  216. dataSourceX: [],
  217. dataSourceA: [],
  218. ContactsLists: [{
  219. title: '批次',
  220. dataIndex: 'num',
  221. key: 'num',
  222. },{
  223. title: '下证时间',
  224. dataIndex: 'licenceTimes',
  225. key: 'licenceTimes',
  226. }, {
  227. title: '下证数量',
  228. dataIndex: 'alreadyNumber',
  229. key: 'alreadyNumber',
  230. },
  231. {
  232. title: '未下证数量',
  233. dataIndex: 'notCount',
  234. key: 'notCount',
  235. }
  236. ],
  237. }
  238. },
  239. //页面加载函数
  240. componentWillMount() {
  241. this.loadData();
  242. },
  243. // //整行点击
  244. tableRowClick(record) {
  245. this.state.RowData = record;
  246. if(record.taskName.substring(0,5) === '软件著作权'){
  247. this.setState({
  248. speVisible: true,
  249. id: record.id,
  250. dataArr:record,
  251. commodityQuantity:record.commodityQuantity
  252. });
  253. }else{
  254. this.setState({
  255. visible: true,
  256. });
  257. }
  258. this.xiangqing(record.id,record.taskName);
  259. this.xiangqings(record.orderNo);
  260. this.xiangmu(record.orderNo);
  261. this.loaduserss(record);
  262. },
  263. //订单详情
  264. xiangqing(id) {
  265. $.ajax({
  266. method: "get",
  267. dataType: "json",
  268. crossDomain: false,
  269. url: globalConfig.context +"/api/admin/orderProject/orderTaskDetail",
  270. data: {
  271. id:id
  272. },
  273. success: function(data) {
  274. if(data.error.length || data.data.list == "") {
  275. if(data.error && data.error.length) {
  276. message.warning(data.error[0].message);
  277. };
  278. } else {
  279. let thisdata=data.data;
  280. this.setState({
  281. id: thisdata.id,//ID
  282. orderNo: thisdata.orderNo,//订单编号
  283. userName:thisdata.userName,//客户名称
  284. taskName: thisdata.taskName,//任务名称
  285. cname:thisdata.cname,//项目品类
  286. contractNo:thisdata.contractNo,//合同编号
  287. projectStatus:thisdata.projectStatus,//项目状态
  288. taskStatus:thisdata.taskStatus,//任务状态
  289. taskDate:thisdata.taskDate,//分配时间
  290. taskComment:thisdata.taskComment,//说明
  291. attachmentUrl: thisdata.attachmentUrl ? splitUrl(thisdata.attachmentUrl, ',', globalConfig.avatarHost + '/upload') : [],//图片地址
  292. salesmanName:thisdata.salesmanName,//订单负责人
  293. startDate:thisdata.startDate,//启动日期
  294. endDate:thisdata.endDate,//结束日期
  295. acceptDate:thisdata.acceptDate,//受理日期
  296. reviewDate:thisdata.reviewDate,//评审日期
  297. publicityDate:thisdata.publicityDate,//公示日期
  298. licenceDate:thisdata.licenceDate,//发证日期
  299. contacts:thisdata.contacts,//联系人
  300. contactMobile:thisdata.contactMobile,//联系人电话
  301. legalPerson:thisdata.legalPerson,//法人
  302. legalPersonTel:thisdata.legalPersonTel,//法人电话
  303. certificateNumber:thisdata.certificateNumber,//证书编号
  304. status:thisdata.status,//状态
  305. formRetrieve:thisdata.formRetrieve,//满意度表格
  306. taskRefund:thisdata.taskRefund,//退单
  307. refundContent:thisdata.refundContent,//退单信息
  308. retrieveContent:thisdata.retrieveContent,//回收信息
  309. arrivalMoney:thisdata.arrivalMoney,//是否到款
  310. setUpAmount:thisdata.setUpAmount,//立项金额
  311. declareUser:thisdata.declareUser,//账号
  312. declarePwd:thisdata.declarePwd,//密码
  313. depName:thisdata.depName,//订单部门
  314. outsourceName:thisdata.outsourceName,//外包公司名称
  315. outsourcePrice:thisdata.outsourcePrice,//外包价格
  316. })
  317. };
  318. }.bind(this),
  319. }).always(function() {
  320. this.setState({
  321. loading: false
  322. });
  323. }.bind(this));
  324. },
  325. //订单详情
  326. xiangqings(orderNos) {
  327. $.ajax({
  328. method: "get",
  329. dataType: "json",
  330. crossDomain: false,
  331. url: globalConfig.context +"/api/admin/newOrder/getOrderNewDetail",
  332. data: {
  333. orderNo:orderNos
  334. },
  335. success: function(data) {
  336. let thisdata=data.data;
  337. let ProvinceCityArr = [];
  338. let ProvinceS = thisdata.locationProvince; //省
  339. let citys = thisdata.locationCity;//市
  340. let Areas = thisdata.locationArea;//区
  341. ProvinceCityArr.push(ProvinceS, citys, Areas);
  342. if(data.error.length || data.data.list == "") {
  343. if(data.error && data.error.length) {
  344. message.warning(data.error[0].message);
  345. };
  346. } else {
  347. this.setState({
  348. processStatus: thisdata.processStatus, //流程状态
  349. liquidationStatus: thisdata.liquidationStatus, //结算状态
  350. approval: thisdata.approval, //特批状态
  351. orderRemarks: thisdata.orderRemarks, //订单留言
  352. salesmanName: thisdata.salesmanName, //营销员名称
  353. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  354. financeName: thisdata.financeName, //财务名称
  355. financeMobile: thisdata.financeMobile, //财务电话
  356. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  357. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  358. nowFinance: thisdata.nowFinance, //财务名称
  359. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  360. depName: thisdata.depName, //订单部门
  361. locationProvince: thisdata.locationProvince,
  362. locationCity: thisdata.locationCity,
  363. locationArea: thisdata.locationArea,
  364. ProvinceCity: ProvinceCityArr,
  365. postalAddress: thisdata.postalAddress, //详细地址
  366. outsource: thisdata.outsource
  367. });
  368. };
  369. }.bind(this),
  370. }).always(function() {
  371. this.setState({
  372. loading: false
  373. });
  374. }.bind(this));
  375. },
  376. //查看下证信息
  377. loaduserss(record){
  378. $.ajax({
  379. method: "get",
  380. dataType: "json",
  381. crossDomain: false,
  382. url: globalConfig.context + '/api/admin/orderProject/selectTaskProgress',
  383. data: {
  384. tid:record.id
  385. },
  386. success: function (data) {
  387. let theArr=[];
  388. let thisData=[];
  389. if (!thisData) {
  390. if (data.error && data.error.length) {
  391. message.warning(data.error[0].message);
  392. };
  393. thisData = {};
  394. }else{
  395. for(let i = 0; i < data.data.length; i++) {
  396. thisData= data.data[i];
  397. theArr.push({
  398. num:i+1,
  399. key:i,
  400. id:thisData.id,//编号
  401. alreadyNumber:thisData.alreadyNumber,//下证数
  402. licenceTimes:thisData.licenceTimes,//下证时间
  403. notCount:thisData.notCount,//未下证数
  404. flag:true
  405. })
  406. }
  407. this.setState({
  408. contactList:theArr
  409. })
  410. };
  411. }.bind(this),
  412. }).always(function () {
  413. this.setState({
  414. loading: false
  415. });
  416. }.bind(this));
  417. },
  418. caozuorizhi(){
  419. this.setState({
  420. visibleA:true
  421. })
  422. $.ajax({
  423. method: "get",
  424. dataType: "json",
  425. crossDomain: false,
  426. url: globalConfig.context +"/api/admin/orderProject/TaskLogList",
  427. data: {
  428. id:this.state.id
  429. },
  430. success: function(data) {
  431. let theArr = [];
  432. if(data.error.length || data.data.list == "") {
  433. if(data.error && data.error.length) {
  434. message.warning(data.error[0].message);
  435. };
  436. } else {
  437. for (let i = 0; i < data.data.length; i++) {
  438. let thisdata = data.data[i];
  439. theArr.push({
  440. key: i,
  441. id:thisdata.id,//日志ID
  442. content:thisdata.content,//流程
  443. taskId:thisdata.taskId,//任务ID
  444. aName:thisdata.aName,//负责人
  445. createTimes:thisdata.createTimes,//时间
  446. });
  447. };
  448. };
  449. this.setState({
  450. dataSourceA: theArr,
  451. });
  452. }.bind(this),
  453. }).always(function() {
  454. this.setState({
  455. loading: false
  456. });
  457. }.bind(this));
  458. },
  459. //关闭操作工时
  460. visitCancelA(){
  461. this.setState({
  462. visibleA:false
  463. })
  464. },
  465. //项目列表
  466. xiangmu(orderNos) {
  467. $.ajax({
  468. method: "get",
  469. dataType: "json",
  470. crossDomain: false,
  471. url: globalConfig.context +"/api/admin/newOrder/getOrderTask",
  472. data: {
  473. orderNo:orderNos
  474. },
  475. success: function(data) {
  476. let theArr = [];
  477. if(data.error.length || data.data.list == "") {
  478. if(data.error && data.error.length) {
  479. message.warning(data.error[0].message);
  480. };
  481. } else {
  482. for (let i = 0; i < data.data.length; i++) {
  483. let thisdata = data.data[i];
  484. theArr.push({
  485. key: i,
  486. id:thisdata.id,
  487. orderNo:thisdata.orderNo,//订单编号
  488. commodityId:thisdata.commodityId,//项目ID
  489. commodityName:thisdata.commodityName,//项目名称
  490. cname:thisdata.cname,//项目类别
  491. commodityPrice:thisdata.commodityPrice,//项目价格
  492. commodityQuantity:thisdata.commodityQuantity,//项目数量
  493. main:thisdata.main,//是否为主要任务
  494. taskComment:thisdata.taskComment,//任务说明
  495. contacts:thisdata.contacts,//联系人
  496. contactsMobile:thisdata.contactsMobile,//联系人电话
  497. taskStatus:thisdata.taskStatus,//是否分配
  498. });
  499. };
  500. };
  501. this.setState({
  502. dataSourceX: theArr,
  503. });
  504. }.bind(this),
  505. }).always(function() {
  506. this.setState({
  507. loading: false
  508. });
  509. }.bind(this));
  510. },
  511. //关闭输入理由框
  512. noCancel(){
  513. this.setState({
  514. noVisible:false
  515. })
  516. },
  517. //搜索
  518. search() {
  519. this.setState({
  520. //signBillVisible:false
  521. })
  522. this.loadData();
  523. },
  524. //重置
  525. reset() {
  526. this.setState({
  527. signBillVisible:false
  528. })
  529. this.state.orderNo='';
  530. this.state.customerName='';
  531. this.state.releaseDate[0] = undefined;
  532. this.state.releaseDate[1] = undefined;
  533. this.loadData(this.state.page);
  534. },
  535. resets(){
  536. this.state.orderNo='';
  537. this.state.customerName='';
  538. this.state.releaseDate[0] = undefined;
  539. this.state.releaseDate[1] = undefined;
  540. },
  541. getOrgCodeUrl(e) {
  542. this.setState({ orgCodeUrl: e });
  543. },
  544. //关闭操作工时
  545. visitCancelA(){
  546. this.setState({
  547. visibleA:false
  548. })
  549. },
  550. setColor(){
  551. $(".userName span").after("(<span class='ruanzhu'>软著数</span>/<span class='xiazheng'>下证数</span>)")
  552. },
  553. closeDesc(e, s) {
  554. this.state.showDesc = e;
  555. if (s) {
  556. this.loadData(this.state.page);
  557. };
  558. },
  559. closeAssign(e, s) {
  560. this.state.roleName='';
  561. this.state.assignVisible = e;
  562. if (s) {
  563. this.loadData(this.state.page);
  564. };
  565. },
  566. nextCancel() {
  567. this.setState({
  568. addnextVisible: false
  569. })
  570. },
  571. //点击打卡项目详情
  572. tableRowClickX(record) {
  573. this.setState({
  574. jid:record.id,//项目ID
  575. kid:record.commodityId,//商品ID
  576. commodityName:record.commodityName,//金额
  577. commodityPrice:record.commodityPrice,//金额
  578. commodityQuantity:record.commodityQuantity,//数量
  579. taskComment:record.taskComment,//备注
  580. main:record.main.toString(),//是否为主要
  581. addnextVisible:true,
  582. addState:0,
  583. });
  584. },
  585. //关闭详情
  586. visitCancel(){
  587. this.setState({
  588. visible:false,
  589. speVisible:false,
  590. })
  591. this.resets();
  592. },
  593. visitOk(){
  594. this.setState({
  595. visible:false
  596. })
  597. this.resets();
  598. },
  599. //关闭详情
  600. visitCancels(){
  601. this.setState({
  602. visibles:false
  603. })
  604. this.resets();
  605. },
  606. //导出
  607. exportExec(){
  608. var data = {
  609. name: this.state.customerName?this.state.customerName:undefined,//订单负责人
  610. taskId: this.state.orderNo?this.state.orderNo:undefined,//订单编号
  611. starTime: this.state.releaseDate[0]?this.state.releaseDate[0]:undefined,
  612. endTime: this.state.releaseDate[1]?this.state.releaseDate[1]:undefined,
  613. }
  614. window.location.href=(globalConfig.context+'/api/admin/orderProject/exportTaskHoursListData?'+$.param(data));
  615. },
  616. visitOks(){
  617. this.setState({
  618. visibles:false
  619. })
  620. this.resets();
  621. },
  622. render() {
  623. const formItemLayout = {
  624. labelCol: { span: 8 },
  625. wrapperCol: { span: 14 },
  626. };
  627. const utils = {
  628. getSatisfaction:function(num){
  629. switch(num){
  630. case 0:
  631. return '未收回';
  632. case 1:
  633. return '已收回';
  634. default:
  635. return '其它';
  636. }
  637. },
  638. getChargeback:function(num){
  639. switch(num){
  640. case 0:
  641. return '已完成';
  642. case 1:
  643. return '未完成';
  644. default:
  645. return '其它';
  646. }
  647. }
  648. }
  649. const FormItem = Form.Item;
  650. const { RangePicker } = DatePicker;
  651. return (
  652. <div className="user-content">
  653. <ShowModalDiv ShowModal={this.state.showModal} />
  654. <div className="content-title">
  655. <span>工时数据统计</span>
  656. </div>
  657. <div className="user-search">
  658. <Input
  659. placeholder="客户名称"
  660. style={{ width: "150px", marginBottom: "10px" }}
  661. value={this.state.customerName}
  662. onChange={e => {
  663. this.setState({ customerName: e.target.value });
  664. }}
  665. />
  666. <Input
  667. placeholder="任务编号"
  668. style={{ width: "150px" }}
  669. value={this.state.orderNoSearch}
  670. onChange={e => {
  671. this.setState({ orderNoSearch: e.target.value });
  672. }}
  673. />
  674. <span style={{ marginRight: "10px" }}>合同签订时间 :</span>
  675. <RangePicker
  676. value={[
  677. this.state.releaseDate[0]
  678. ? moment(this.state.releaseDate[0])
  679. : null,
  680. this.state.releaseDate[1]
  681. ? moment(this.state.releaseDate[1])
  682. : null
  683. ]}
  684. onChange={(data, dataString) => {
  685. this.setState({ releaseDate: dataString });
  686. }}
  687. />
  688. <Button
  689. type="primary"
  690. onClick={this.search}
  691. style={{ marginLeft: "10px" }}
  692. >
  693. 搜索
  694. </Button>
  695. <Button onClick={this.reset}>重置</Button>
  696. <Button type="primary" onClick={this.exportExec}>
  697. 导出工时数据
  698. </Button>
  699. <div className="patent-table">
  700. <Spin spinning={this.state.loading}>
  701. <Table
  702. columns={this.state.columns}
  703. dataSource={this.state.dataSource}
  704. pagination={this.state.pagination}
  705. onRowClick={this.tableRowClick.bind(this)}
  706. />
  707. </Spin>
  708. </div>
  709. </div>
  710. <Modal
  711. className="customeDetails"
  712. footer=""
  713. title="项目概况"
  714. width="900px"
  715. visible={this.state.visible}
  716. onOk={this.visitOk}
  717. onCancel={this.visitCancel}
  718. >
  719. <Form
  720. layout="horizontal"
  721. onSubmit={this.handleSubmit}
  722. id="demand-form"
  723. style={{ paddingBottom: "00px" }}
  724. >
  725. <Spin spinning={this.state.loading}>
  726. <div className="clearfix">
  727. <div className="clearfix">
  728. <FormItem
  729. className="half-item"
  730. {...formItemLayout}
  731. label="当前项目情况"
  732. >
  733. <span>{this.state.status ? "暂停" : "开启"}</span>
  734. <Button
  735. type="primary"
  736. size="small"
  737. style={{ marginTop: "5px", position: "absolute" }}
  738. onClick={this.caozuorizhi}
  739. >
  740. 操作日志
  741. </Button>
  742. </FormItem>
  743. <FormItem
  744. className="half-item"
  745. {...formItemLayout}
  746. label="合同编号"
  747. >
  748. <span>{this.state.contractNo}</span>
  749. </FormItem>
  750. </div>
  751. <div className="clearfix">
  752. <FormItem
  753. className="half-item"
  754. {...formItemLayout}
  755. label="项目状态"
  756. >
  757. <span>{getProcessStatus(this.state.projectStatus)}</span>
  758. </FormItem>
  759. <FormItem
  760. className="half-item"
  761. {...formItemLayout}
  762. label="是否特批"
  763. >
  764. <span>{getApproval(this.state.approval)}</span>
  765. </FormItem>
  766. <FormItem
  767. className="half-item"
  768. {...formItemLayout}
  769. label="结算状态"
  770. >
  771. <span>
  772. {getLiquidationStatus(this.state.liquidationStatus)}
  773. </span>
  774. </FormItem>
  775. <FormItem
  776. className="half-item"
  777. {...formItemLayout}
  778. label="流程状态"
  779. >
  780. <span>{getProcessStatus(this.state.processStatus)}</span>
  781. </FormItem>
  782. <FormItem
  783. className="half-item"
  784. {...formItemLayout}
  785. label="订单编号"
  786. >
  787. <span>{this.state.orderNo}</span>
  788. </FormItem>
  789. </div>
  790. <div className="clearfix">
  791. <FormItem
  792. className="half-item"
  793. {...formItemLayout}
  794. label="满意度表格"
  795. >
  796. <span>
  797. {utils.getSatisfaction(this.state.formRetrieve)}
  798. </span>
  799. </FormItem>
  800. <FormItem
  801. className="half-item"
  802. {...formItemLayout}
  803. label="退单"
  804. >
  805. <span>{utils.getChargeback(this.state.taskRefund)}</span>
  806. </FormItem>
  807. </div>
  808. <div className="clearfix">
  809. {
  810. <FormItem
  811. className="half-item"
  812. {...formItemLayout}
  813. label="(满意度)备注"
  814. >
  815. <span>{this.state.retrieveContent}</span>
  816. </FormItem>
  817. }
  818. {
  819. <FormItem
  820. className="half-item"
  821. {...formItemLayout}
  822. label="(退单)备注"
  823. >
  824. <span>{this.state.refundContent}</span>
  825. </FormItem>
  826. }
  827. </div>
  828. <div className="clearfix">
  829. <h3 className="sub-title">任务信息</h3>
  830. <FormItem
  831. className="half-item"
  832. {...formItemLayout}
  833. label="任务编号"
  834. >
  835. <span>{this.state.id}</span>
  836. </FormItem>
  837. <FormItem
  838. className="half-item"
  839. {...formItemLayout}
  840. label="任务名称"
  841. >
  842. <span>{this.state.taskName}</span>
  843. </FormItem>
  844. <FormItem
  845. className="half-item"
  846. {...formItemLayout}
  847. label="任务状态"
  848. >
  849. <span>{getTaskStatus(this.state.taskStatus)}</span>
  850. </FormItem>
  851. <FormItem
  852. className="half-item"
  853. {...formItemLayout}
  854. label="任务类别"
  855. >
  856. <span>{this.state.cname}</span>
  857. </FormItem>
  858. <FormItem
  859. className="half-item"
  860. {...formItemLayout}
  861. label="证书编号"
  862. >
  863. <span>{this.state.certificateNumber}</span>
  864. </FormItem>
  865. </div>
  866. {this.state.outsource === 1 ? (
  867. <div className="clearfix">
  868. <h3 className="sub-title">外包信息</h3>
  869. <FormItem
  870. className="half-item"
  871. {...formItemLayout}
  872. label="外包公司"
  873. >
  874. <span>{this.state.outsourceName}</span>
  875. </FormItem>
  876. <FormItem
  877. className="half-item"
  878. {...formItemLayout}
  879. label="外包成本(万元)"
  880. >
  881. <span>{this.state.outsourcePrice}</span>
  882. </FormItem>
  883. </div>
  884. ) : (
  885. ""
  886. )}
  887. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  888. <div className="clearfix">
  889. <h3 className="sub-title">联系信息</h3>
  890. <FormItem
  891. className="half-item"
  892. {...formItemLayout}
  893. label="客户名称"
  894. >
  895. <span>{this.state.userName}</span>
  896. </FormItem>
  897. <FormItem
  898. className="half-item"
  899. {...formItemLayout}
  900. label="企业法人"
  901. >
  902. <span>{this.state.legalPerson}</span>
  903. </FormItem>
  904. <FormItem
  905. className="half-item"
  906. {...formItemLayout}
  907. label="法人电话"
  908. >
  909. <span>{this.state.legalPersonTel}</span>
  910. </FormItem>
  911. <FormItem
  912. className="half-item"
  913. {...formItemLayout}
  914. label="客户联系人"
  915. >
  916. <span>{this.state.contacts}</span>
  917. </FormItem>
  918. <FormItem
  919. className="half-item"
  920. {...formItemLayout}
  921. label="联系人电话"
  922. >
  923. <span>{this.state.contactMobile}</span>
  924. </FormItem>
  925. <FormItem
  926. className="half-item"
  927. {...formItemLayout}
  928. label="企业地址"
  929. >
  930. <span>
  931. {getprovince(this.state.locationProvince)}/
  932. {getprovince(this.state.locationCity)}/
  933. {getprovince(this.state.locationArea)}
  934. </span>
  935. </FormItem>
  936. <FormItem
  937. className="half-item"
  938. {...formItemLayout}
  939. label=""
  940. ></FormItem>
  941. <FormItem className="half-item" {...formItemLayout} label="详细地址">
  942. <span>
  943. {this.state.postalAddress}
  944. </span>
  945. </FormItem>
  946. </div>
  947. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  948. <div className="clearfix">
  949. <h3 className="sub-title">订单负责人信息</h3>
  950. <FormItem
  951. className="half-item"
  952. {...formItemLayout}
  953. label="负责人"
  954. >
  955. <span>
  956. {this.state.salesmanName + "(" + this.state.depName + ")"}
  957. </span>
  958. </FormItem>
  959. <FormItem
  960. className="half-item"
  961. {...formItemLayout}
  962. label="负责人电话"
  963. >
  964. <span>{this.state.salesmanMobile}</span>
  965. </FormItem>
  966. <FormItem
  967. className="half-item"
  968. {...formItemLayout}
  969. label="当前财务负责人"
  970. >
  971. <span>{this.state.nowFinance}</span>
  972. </FormItem>
  973. <FormItem
  974. className="half-item"
  975. {...formItemLayout}
  976. label="当前财务负责人电话"
  977. >
  978. <span>{this.state.nowFinanceMobile}</span>
  979. </FormItem>
  980. <FormItem
  981. className="half-item"
  982. {...formItemLayout}
  983. style={{ opacity: ".5" }}
  984. label="原负责人"
  985. >
  986. <span>{this.state.oldSalesmanName}</span>
  987. </FormItem>
  988. <FormItem
  989. className="half-item"
  990. {...formItemLayout}
  991. style={{ opacity: ".5" }}
  992. label="原负责人电话"
  993. >
  994. <span>{this.state.oldSalesmanMobile}</span>
  995. </FormItem>
  996. <FormItem
  997. className="half-item"
  998. {...formItemLayout}
  999. style={{ opacity: ".5" }}
  1000. label="实际财务操作人"
  1001. >
  1002. <span>{this.state.financeName}</span>
  1003. </FormItem>
  1004. <FormItem
  1005. className="half-item"
  1006. {...formItemLayout}
  1007. style={{ opacity: ".5" }}
  1008. label="实际财务操作人电话"
  1009. >
  1010. <span>{this.state.financeMobile}</span>
  1011. </FormItem>
  1012. </div>
  1013. <div className="clearfix">
  1014. <h3 className="sub-title">申报系统账户信息</h3>
  1015. {/*<span style={{color:'red'}}>注:仅技术部可见</span>*/}
  1016. <FormItem
  1017. className="half-item"
  1018. {...formItemLayout}
  1019. label="用户名"
  1020. >
  1021. <span>{this.state.declareUser ? "*" : ""}</span>
  1022. </FormItem>
  1023. <FormItem
  1024. className="half-item"
  1025. {...formItemLayout}
  1026. label="密码"
  1027. >
  1028. <span>{this.state.declarePwd ? "*" : ""}</span>
  1029. </FormItem>
  1030. </div>
  1031. <div className="clearfix">
  1032. <h3 className="sub-title">项目申报进度</h3>
  1033. <FormItem
  1034. className="half-item"
  1035. {...formItemLayout}
  1036. label="启动时间"
  1037. >
  1038. <span>{this.state.startDate}</span>
  1039. </FormItem>
  1040. <FormItem
  1041. className="half-item"
  1042. {...formItemLayout}
  1043. label="完成时间"
  1044. >
  1045. <span>{this.state.endDate}</span>
  1046. </FormItem>
  1047. <FormItem
  1048. className="half-item"
  1049. {...formItemLayout}
  1050. label="受理时间"
  1051. >
  1052. <span>{this.state.acceptDate}</span>
  1053. </FormItem>
  1054. <FormItem
  1055. className="half-item"
  1056. {...formItemLayout}
  1057. label="评审时间"
  1058. >
  1059. <span>{this.state.reviewDate}</span>
  1060. </FormItem>
  1061. <FormItem
  1062. className="half-item"
  1063. {...formItemLayout}
  1064. label="公示时间"
  1065. >
  1066. <span>{this.state.publicityDate}</span>
  1067. </FormItem>
  1068. <FormItem
  1069. className="half-item"
  1070. {...formItemLayout}
  1071. label="发证时间"
  1072. >
  1073. <span>{this.state.licenceDate}</span>
  1074. </FormItem>
  1075. <FormItem
  1076. className="half-item"
  1077. {...formItemLayout}
  1078. label="立项金额(万元)"
  1079. >
  1080. <span>{this.state.setUpAmount}</span>
  1081. </FormItem>
  1082. <FormItem
  1083. className="half-item"
  1084. {...formItemLayout}
  1085. label="是否到款"
  1086. >
  1087. <span>
  1088. {this.state.arrivalMoney ? "已到企业" : "未到企业"}
  1089. </span>
  1090. </FormItem>
  1091. </div>
  1092. <div className="clearfix">
  1093. <FormItem
  1094. labelCol={{ span: 3 }}
  1095. wrapperCol={{ span: 18 }}
  1096. label="附件"
  1097. >
  1098. <Upload
  1099. className="demandDetailShow-upload"
  1100. listType="picture-card"
  1101. fileList={this.state.attachmentUrl}
  1102. onPreview={file => {
  1103. this.setState({
  1104. previewImage: file.url || file.thumbUrl,
  1105. previewVisible: true
  1106. });
  1107. }}
  1108. ></Upload>
  1109. <Modal
  1110. maskClosable={false}
  1111. footer={null}
  1112. visible={this.state.previewVisible}
  1113. onCancel={() => {
  1114. this.setState({ previewVisible: false });
  1115. }}
  1116. >
  1117. <img
  1118. alt=""
  1119. style={{ width: "100%" }}
  1120. src={this.state.previewImage || ""}
  1121. />
  1122. </Modal>
  1123. </FormItem>
  1124. </div>
  1125. <div className="clearfix">
  1126. <FormItem
  1127. labelCol={{ span: 3 }}
  1128. wrapperCol={{ span: 16 }}
  1129. label="备注"
  1130. >
  1131. <span>{this.state.taskComment}</span>
  1132. </FormItem>
  1133. </div>
  1134. <div>
  1135. <h3 className="sub-title">项目业务</h3>
  1136. {this.state.processStatus == 0 ? (
  1137. <Button
  1138. type="primary"
  1139. onClick={this.addDetailed}
  1140. style={{
  1141. float: "right",
  1142. marginRight: "50px",
  1143. marginBottom: "15px"
  1144. }}
  1145. >
  1146. 添加项目明细
  1147. </Button>
  1148. ) : (
  1149. ""
  1150. )}
  1151. </div>
  1152. <div className="patent-table">
  1153. <Spin spinning={this.state.loading}>
  1154. <Table
  1155. columns={this.state.columnsX}
  1156. dataSource={this.state.dataSourceX}
  1157. pagination={this.state.paginations}
  1158. onRowClick={this.tableRowClickX}
  1159. />
  1160. </Spin>
  1161. </div>
  1162. </div>
  1163. </Spin>
  1164. </Form>
  1165. </Modal>
  1166. <Modal
  1167. maskClosable={false}
  1168. visible={this.state.addnextVisible}
  1169. onOk={this.nextCancel}
  1170. onCancel={this.nextCancel}
  1171. width="900px"
  1172. title="项目任务详情"
  1173. footer=""
  1174. className="admin-desc-content"
  1175. >
  1176. <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form">
  1177. <Spin spinning={this.state.loading}>
  1178. <div className="clearfix">
  1179. <FormItem
  1180. className="half-item"
  1181. {...formItemLayout}
  1182. label="项目名称"
  1183. >
  1184. <span>{this.state.commodityName}</span>
  1185. </FormItem>
  1186. <FormItem
  1187. className="half-item"
  1188. {...formItemLayout}
  1189. label="项目数量"
  1190. >
  1191. <span>{this.state.commodityQuantity}</span>
  1192. </FormItem>
  1193. <FormItem
  1194. className="half-item"
  1195. {...formItemLayout}
  1196. label="金额(万元)"
  1197. >
  1198. <span>{this.state.commodityPrice}</span>
  1199. </FormItem>
  1200. <FormItem
  1201. className="half-item"
  1202. {...formItemLayout}
  1203. label="主要项目"
  1204. >
  1205. <span>{getboutique(this.state.main)}</span>
  1206. </FormItem>
  1207. <div className="clearfix">
  1208. <FormItem
  1209. labelCol={{ span: 4 }}
  1210. wrapperCol={{ span: 16 }}
  1211. label="服务说明"
  1212. >
  1213. <span>{this.state.taskComment}</span>
  1214. </FormItem>
  1215. </div>
  1216. </div>
  1217. </Spin>
  1218. </Form>
  1219. </Modal>
  1220. <Modal
  1221. width="800px"
  1222. title="操作日志"
  1223. footer=""
  1224. className="admin-desc-content"
  1225. >
  1226. <div className="patent-table patent-table-center">
  1227. <Spin spinning={this.state.loading}>
  1228. <Table columns={this.state.columnsY} />
  1229. </Spin>
  1230. </div>
  1231. </Modal>
  1232. <Modal
  1233. maskClosable={false}
  1234. visible={this.state.speVisible}
  1235. onOk={this.visitOk}
  1236. onCancel={this.visitCancel}
  1237. width="900px"
  1238. title="项目概况"
  1239. footer=""
  1240. className="admin-desc-content"
  1241. >
  1242. <div className="clearfix">
  1243. <FormItem
  1244. className="half-item"
  1245. {...formItemLayout}
  1246. label="当前项目情况"
  1247. >
  1248. <span>{this.state.status ? "暂停" : "开启"}</span>
  1249. <Button
  1250. type="primary"
  1251. size="small"
  1252. style={{ marginTop: "5px", position: "absolute" }}
  1253. onClick={this.caozuorizhi}
  1254. >
  1255. 操作日志
  1256. </Button>
  1257. </FormItem>
  1258. <FormItem
  1259. className="half-item"
  1260. {...formItemLayout}
  1261. label="合同编号"
  1262. >
  1263. <span>{this.state.contractNo}</span>
  1264. </FormItem>
  1265. </div>
  1266. <div className="clearfix">
  1267. <FormItem
  1268. className="half-item"
  1269. {...formItemLayout}
  1270. label="项目状态"
  1271. >
  1272. <span>{getProcessStatus(this.state.projectStatus)}</span>
  1273. </FormItem>
  1274. <FormItem
  1275. className="half-item"
  1276. {...formItemLayout}
  1277. label="是否特批"
  1278. >
  1279. <span>{getApproval(this.state.approval)}</span>
  1280. </FormItem>
  1281. <FormItem
  1282. className="half-item"
  1283. {...formItemLayout}
  1284. label="结算状态"
  1285. >
  1286. <span>{getLiquidationStatus(this.state.liquidationStatus)}</span>
  1287. </FormItem>
  1288. <FormItem
  1289. className="half-item"
  1290. {...formItemLayout}
  1291. label="流程状态"
  1292. >
  1293. <span>{getProcessStatus(this.state.processStatus)}</span>
  1294. </FormItem>
  1295. <FormItem
  1296. className="half-item"
  1297. {...formItemLayout}
  1298. label="订单编号"
  1299. >
  1300. <span>{this.state.orderNo}</span>
  1301. </FormItem>
  1302. </div>
  1303. <div className="clearfix">
  1304. <FormItem
  1305. className="half-item"
  1306. {...formItemLayout}
  1307. label="满意度表格"
  1308. >
  1309. <span>{utils.getSatisfaction(this.state.formRetrieve)}</span>
  1310. </FormItem>
  1311. <FormItem className="half-item" {...formItemLayout} label="退单">
  1312. <span>{utils.getChargeback(this.state.taskRefund)}</span>
  1313. </FormItem>
  1314. </div>
  1315. <div className="clearfix">
  1316. {
  1317. <FormItem
  1318. className="half-item"
  1319. {...formItemLayout}
  1320. label="(满意度)备注"
  1321. >
  1322. <span>{this.state.retrieveContent}</span>
  1323. </FormItem>
  1324. }
  1325. {
  1326. <FormItem
  1327. className="half-item"
  1328. {...formItemLayout}
  1329. label="(退单)备注"
  1330. >
  1331. <span>{this.state.refundContent}</span>
  1332. </FormItem>
  1333. }
  1334. </div>
  1335. <div className="clearfix">
  1336. <h3 className="sub-title">任务信息</h3>
  1337. <FormItem
  1338. className="half-item"
  1339. {...formItemLayout}
  1340. label="任务编号"
  1341. >
  1342. <span>{this.state.id}</span>
  1343. </FormItem>
  1344. <FormItem
  1345. className="half-item"
  1346. {...formItemLayout}
  1347. label="任务名称"
  1348. >
  1349. <span>{this.state.taskName}</span>
  1350. </FormItem>
  1351. <FormItem
  1352. className="half-item"
  1353. {...formItemLayout}
  1354. label="任务状态"
  1355. >
  1356. <span>{getTaskStatus(this.state.taskStatus)}</span>
  1357. </FormItem>
  1358. <FormItem
  1359. className="half-item"
  1360. {...formItemLayout}
  1361. label="任务类别"
  1362. >
  1363. <span>{this.state.cname}</span>
  1364. </FormItem>
  1365. <FormItem
  1366. className="half-item"
  1367. {...formItemLayout}
  1368. label="证书编号"
  1369. >
  1370. <span>{this.state.certificateNumber}</span>
  1371. </FormItem>
  1372. </div>
  1373. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1374. <div className="clearfix">
  1375. <h3 className="sub-title">联系信息</h3>
  1376. <FormItem
  1377. className="half-item"
  1378. {...formItemLayout}
  1379. label="客户名称"
  1380. >
  1381. <span>{this.state.userName}</span>
  1382. </FormItem>
  1383. <FormItem
  1384. className="half-item"
  1385. {...formItemLayout}
  1386. label="企业法人"
  1387. >
  1388. <span>{this.state.legalPerson}</span>
  1389. </FormItem>
  1390. <FormItem
  1391. className="half-item"
  1392. {...formItemLayout}
  1393. label="法人电话"
  1394. >
  1395. <span>{this.state.legalPersonTel}</span>
  1396. </FormItem>
  1397. <FormItem
  1398. className="half-item"
  1399. {...formItemLayout}
  1400. label="客户联系人"
  1401. >
  1402. <span>{this.state.contacts}</span>
  1403. </FormItem>
  1404. <FormItem
  1405. className="half-item"
  1406. {...formItemLayout}
  1407. label="联系人电话"
  1408. >
  1409. <span>{this.state.contactMobile}</span>
  1410. </FormItem>
  1411. <FormItem
  1412. className="half-item"
  1413. {...formItemLayout}
  1414. label="企业地址"
  1415. >
  1416. <span>
  1417. {getprovince(this.state.locationProvince)}/
  1418. {getprovince(this.state.locationCity)}/
  1419. {getprovince(this.state.locationArea)}
  1420. </span>
  1421. </FormItem>
  1422. <FormItem
  1423. className="half-item"
  1424. {...formItemLayout}
  1425. label=""
  1426. ></FormItem>
  1427. <FormItem className="half-item" {...formItemLayout} label="">
  1428. <span style={{ paddingLeft: "12em" }}>
  1429. {this.state.postalAddress}
  1430. </span>
  1431. </FormItem>
  1432. </div>
  1433. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1434. <div className="clearfix">
  1435. <h3 className="sub-title">订单负责人信息</h3>
  1436. <FormItem className="half-item" {...formItemLayout} label="负责人">
  1437. <span>
  1438. {this.state.salesmanName + "(" + this.state.depName + ")"}
  1439. </span>
  1440. </FormItem>
  1441. <FormItem
  1442. className="half-item"
  1443. {...formItemLayout}
  1444. label="负责人电话"
  1445. >
  1446. <span>{this.state.salesmanMobile}</span>
  1447. </FormItem>
  1448. <FormItem
  1449. className="half-item"
  1450. {...formItemLayout}
  1451. label="财务负责人"
  1452. >
  1453. <span>{this.state.financeName}</span>
  1454. </FormItem>
  1455. <FormItem
  1456. className="half-item"
  1457. {...formItemLayout}
  1458. label="财务负责人电话"
  1459. >
  1460. <span>{this.state.financeMobile}</span>
  1461. </FormItem>
  1462. </div>
  1463. <div className="clearfix" style={{ marginTop: "10px" }}>
  1464. <FormItem
  1465. labelCol={{ span: 3 }}
  1466. wrapperCol={{ span: 18 }}
  1467. label="附件"
  1468. >
  1469. <Upload
  1470. className="demandDetailShow-upload"
  1471. listType="picture-card"
  1472. fileList={this.state.attachmentUrl}
  1473. onPreview={file => {
  1474. this.setState({
  1475. previewImage: file.url || file.thumbUrl,
  1476. previewVisible: true
  1477. });
  1478. }}
  1479. ></Upload>
  1480. <Modal
  1481. maskClosable={false}
  1482. footer={null}
  1483. visible={this.state.previewVisible}
  1484. onCancel={() => {
  1485. this.setState({ previewVisible: false });
  1486. }}
  1487. >
  1488. <img
  1489. alt=""
  1490. style={{ width: "100%" }}
  1491. src={this.state.previewImage || ""}
  1492. />
  1493. </Modal>
  1494. </FormItem>
  1495. </div>
  1496. <div className="clearfix">
  1497. <FormItem
  1498. labelCol={{ span: 3 }}
  1499. wrapperCol={{ span: 16 }}
  1500. label="备注"
  1501. >
  1502. <span>{this.state.taskComment}</span>
  1503. </FormItem>
  1504. </div>
  1505. <div className="clearfix">
  1506. <h3 className="sub-title">项目申报进度</h3>
  1507. <FormItem
  1508. className="half-item"
  1509. {...formItemLayout}
  1510. label="启动时间"
  1511. >
  1512. <span>{this.state.startDate}</span>
  1513. </FormItem>
  1514. <FormItem
  1515. className="half-item"
  1516. {...formItemLayout}
  1517. label="软著派单数量"
  1518. >
  1519. <span>{this.state.commodityQuantity}</span>
  1520. </FormItem>
  1521. <div className="patent-table patent-table-center">
  1522. <Spin spinning={this.state.loading}>
  1523. <Table
  1524. columns={this.state.ContactsLists}
  1525. dataSource={this.state.contactList}
  1526. pagination={false}
  1527. />
  1528. </Spin>
  1529. </div>
  1530. </div>
  1531. <div className="clearfix">
  1532. <h3 className="sub-title">项目业务</h3>
  1533. <div className="patent-table">
  1534. <Spin spinning={this.state.loading}>
  1535. <Table
  1536. columns={this.state.columnsX}
  1537. dataSource={this.state.dataSourceX}
  1538. pagination={this.state.paginations}
  1539. onRowClick={this.tableRowClickX}
  1540. />
  1541. </Spin>
  1542. </div>
  1543. </div>
  1544. </Modal>
  1545. <Modal
  1546. width="800px"
  1547. visible={this.state.visibleA}
  1548. onCancel={this.visitCancelA}
  1549. title="操作日志"
  1550. footer=""
  1551. className="admin-desc-content"
  1552. >
  1553. <div className="patent-table patent-table-center">
  1554. <Spin spinning={this.state.loading}>
  1555. <Table
  1556. columns={this.state.columnsA}
  1557. dataSource={this.state.dataSourceA}
  1558. pagination={false}
  1559. />
  1560. </Spin>
  1561. </div>
  1562. </Modal>
  1563. </div>
  1564. );
  1565. }
  1566. }));
  1567. export default IntentionCustomer;