taskCount.jsx 50 KB

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