myTaskCount.jsx 44 KB

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