myTaskCount.jsx 66 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030
  1. import React from 'react';
  2. import {
  3. Button,
  4. Input,
  5. Spin,
  6. Table,
  7. message,
  8. DatePicker,
  9. Upload,
  10. Form,
  11. Modal,
  12. Select,
  13. Tabs,
  14. Tag
  15. } from "antd";
  16. import $ from 'jquery/src/ajax';
  17. import moment from 'moment';
  18. import ResolutionDetail from "@/resolutionDetail";
  19. import {
  20. getLiquidationStatus,
  21. getProcessStatus,
  22. splitUrl,
  23. getboutique,
  24. getTaskStatus,
  25. getApproval,
  26. getprovince,
  27. getProjectStatus
  28. } from "@/tools.js";
  29. const { TabPane } = Tabs
  30. const MyTaskCount = Form.create()(
  31. React.createClass({
  32. departmentList() {
  33. this.setState({
  34. loading: true
  35. });
  36. $.ajax({
  37. method: "get",
  38. dataType: "json",
  39. crossDomain: false,
  40. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  41. data: {},
  42. success: function(data) {
  43. let thedata = data.data;
  44. let theArr = [];
  45. if (!thedata) {
  46. if (data.error && data.error.length) {
  47. message.warning(data.error[0].message);
  48. }
  49. } else {
  50. thedata.map(function(item, index) {
  51. theArr.push({
  52. key: index,
  53. name: item.name,
  54. id: item.id
  55. });
  56. });
  57. }
  58. this.setState({
  59. departmentArr: theArr
  60. });
  61. }.bind(this)
  62. }).always(
  63. function() {
  64. this.setState({
  65. loading: false
  66. });
  67. }.bind(this)
  68. );
  69. },
  70. loadData(pageNo) {
  71. this.setState({
  72. visitModul: false,
  73. loading: true,
  74. ispage: pageNo,
  75. modalVisible: false
  76. });
  77. let nameText = this.state.SuperArr;
  78. let superText =
  79. this.state.cid && typeof this.state.cid != "object"
  80. ? nameText[parseInt(this.state.cid)].id
  81. : "";
  82. if (superText) {
  83. $.ajax({
  84. method: "get",
  85. dataType: "json",
  86. crossDomain: false,
  87. url: globalConfig.context + "/api/admin/orderProject/taskHoursList",
  88. data: {
  89. pageNo: pageNo || 1,
  90. pageSize: this.state.pagination.pageSize,
  91. name: this.state.customerName, //名称
  92. taskId: this.state.idSearch, //订单编号
  93. orderNo: this.state.orderNoSearch,
  94. starTime: this.state.releaseDate[0], //开始时间
  95. endTime: this.state.releaseDate[1], //结束时间
  96. contractNo: this.state.contractNoSearch,
  97. cid: superText, //业务分类
  98. depId: this.state.departmenttList, //部门ID
  99. outsource: this.state.outsourceSearch
  100. },
  101. success: function(data) {
  102. let theArr = [];
  103. if (data.error.length || data.data.list == "") {
  104. if (data.error && data.error.length) {
  105. message.warning(data.error[0].message);
  106. }
  107. } else {
  108. for (let i = 0; i < data.data.list.length; i++) {
  109. let thisdata = data.data.list[i];
  110. theArr.push({
  111. key: i,
  112. id: thisdata.id, //ID
  113. orderNo: thisdata.orderNo, //订单编号
  114. taskName: thisdata.taskName, //任务名称
  115. userName: thisdata.userName, //客户名称
  116. cname: thisdata.cname, //项目品类
  117. taskStatus: thisdata.taskStatus, //任务状态
  118. receiverName: thisdata.receiverName, //负责人
  119. hours: thisdata.hours, //任务工时
  120. depName: thisdata.depName, //派单公司
  121. contractNo: thisdata.contractNo,
  122. signTime: thisdata.signTime,
  123. creteTime: thisdata.creteTime,
  124. projectStatus: thisdata.projectStatus,
  125. commodityPrice: thisdata.commodityPrice, //价格
  126. commodityQuantity: thisdata.commodityQuantity, //数量
  127. salesmanName: thisdata.salesmanName, //订单负责人
  128. taskDistributionTime: thisdata.taskDistributionTime,
  129. taskEndTime: thisdata.taskEndTime,
  130. outsource: thisdata.outsource
  131. });
  132. }
  133. this.state.pagination.total = data.data.totalCount;
  134. }
  135. if (data.data && data.data.list && !data.data.list.length) {
  136. this.state.pagination.total = 0;
  137. }
  138. this.setState({
  139. dataSource: theArr,
  140. pageNo: pageNo,
  141. pagination: this.state.pagination,
  142. selectedRowKeys: []
  143. });
  144. }.bind(this)
  145. }).always(
  146. function() {
  147. this.setState({
  148. loading: false
  149. });
  150. }.bind(this)
  151. );
  152. } else {
  153. $.ajax({
  154. method: "get",
  155. dataType: "json",
  156. crossDomain: false,
  157. url: globalConfig.context + "/api/admin/orderProject/taskHoursList",
  158. data: {
  159. pageNo: pageNo || 1,
  160. pageSize: this.state.pagination.pageSize,
  161. name: this.state.customerName, //名称
  162. taskId: this.state.idSearch, //订单编号
  163. orderNo: this.state.orderNoSearch,
  164. starTime: this.state.releaseDate[0], //开始时间
  165. endTime: this.state.releaseDate[1], //结束时间
  166. contractNo: this.state.contractNoSearch,
  167. depId: this.state.departmenttList, //部门ID
  168. outsource: this.state.outsourceSearch
  169. },
  170. success: function(data) {
  171. let theArr = [];
  172. if (data.error.length || data.data.list == "") {
  173. if (data.error && data.error.length) {
  174. message.warning(data.error[0].message);
  175. }
  176. } else {
  177. for (let i = 0; i < data.data.list.length; i++) {
  178. let thisdata = data.data.list[i];
  179. theArr.push({
  180. key: i,
  181. id: thisdata.id, //ID
  182. orderNo: thisdata.orderNo, //订单编号
  183. taskName: thisdata.taskName, //任务名称
  184. userName: thisdata.userName, //客户名称
  185. cname: thisdata.cname, //项目品类
  186. taskStatus: thisdata.taskStatus, //任务状态
  187. receiverName: thisdata.receiverName, //负责人
  188. hours: thisdata.hours, //任务工时
  189. depName: thisdata.depName, //派单公司
  190. contractNo: thisdata.contractNo,
  191. signTime: thisdata.signTime,
  192. creteTime: thisdata.creteTime,
  193. projectStatus: thisdata.projectStatus,
  194. commodityPrice: thisdata.commodityPrice, //价格
  195. commodityQuantity: thisdata.commodityQuantity, //数量
  196. salesmanName: thisdata.salesmanName, //订单负责人
  197. taskDistributionTime: thisdata.taskDistributionTime,
  198. taskEndTime: thisdata.taskEndTime,
  199. outsource: thisdata.outsource
  200. });
  201. }
  202. this.state.pagination.total = data.data.totalCount;
  203. }
  204. if (data.data && data.data.list && !data.data.list.length) {
  205. this.state.pagination.total = 0;
  206. }
  207. this.setState({
  208. dataSource: theArr,
  209. pageNo: pageNo,
  210. pagination: this.state.pagination,
  211. selectedRowKeys: []
  212. });
  213. }.bind(this)
  214. }).always(
  215. function() {
  216. this.setState({
  217. loading: false
  218. });
  219. }.bind(this)
  220. );
  221. }
  222. },
  223. getInitialState() {
  224. return {
  225. page: 1,
  226. releaseDate: [],
  227. selectedRowKeys: [],
  228. orgCodeUrl: [],
  229. paginations: false,
  230. pagination: {
  231. defaultCurrent: 1,
  232. defaultPageSize: 10,
  233. showQuickJumper: true,
  234. pageSize: 10,
  235. onChange: function(page) {
  236. this.loadData(page);
  237. }.bind(this),
  238. showTotal: function(total) {
  239. return "共" + total + "条数据";
  240. }
  241. },
  242. columns: [
  243. {
  244. title: "合同编号",
  245. dataIndex: "contractNo",
  246. key: "contractNo"
  247. },
  248. {
  249. title: "订单编号",
  250. dataIndex: "orderNo",
  251. key: "orderNo"
  252. },
  253. {
  254. title: "客户名称",
  255. dataIndex: "userName",
  256. key: "userName",
  257. render: text => {
  258. return text && text.length > 9 ? text.substr(0, 9) + "..." : text;
  259. }
  260. },
  261. {
  262. title: "订单部门",
  263. dataIndex: "depName",
  264. key: "depName"
  265. },
  266. {
  267. title: "订单负责人",
  268. dataIndex: "salesmanName",
  269. key: "salesmanName"
  270. },
  271. {
  272. title: "项目类别",
  273. dataIndex: "cname",
  274. key: "cname"
  275. },
  276. {
  277. title: "项目编号",
  278. dataIndex: "id",
  279. key: "id"
  280. },
  281. {
  282. title: "项目名称",
  283. dataIndex: "taskName",
  284. key: "taskName"
  285. },
  286. {
  287. title: "项目负责人",
  288. dataIndex: "receiverName",
  289. key: "receiverName"
  290. },
  291. {
  292. title: "项目价格(万元)",
  293. dataIndex: "commodityPrice",
  294. key: "commodityPrice"
  295. },
  296. {
  297. title: "数量(个)",
  298. dataIndex: "commodityQuantity",
  299. key: "commodityQuantity"
  300. },
  301. {
  302. title: "任务状态",
  303. dataIndex: "taskStatus",
  304. key: "taskStatus",
  305. render: text => {
  306. return getTaskStatus(text);
  307. }
  308. },
  309. {
  310. title: "项目状态",
  311. dataIndex: "projectStatus",
  312. key: "projectStatus",
  313. render: text => {
  314. return getProjectStatus(text);
  315. }
  316. },
  317. {
  318. title: "工时",
  319. dataIndex: "hours",
  320. key: "hours"
  321. },
  322. {
  323. title: "是否外包",
  324. dataIndex: "outsource",
  325. key: "outsource",
  326. render: text => {
  327. if (text == 0) {
  328. return "否";
  329. } else if (text == 1) {
  330. return "是";
  331. }
  332. }
  333. },
  334. {
  335. title: "签单日期",
  336. dataIndex: "signTime",
  337. key: "signTime"
  338. },
  339. {
  340. title: "派单日期",
  341. dataIndex: "creteTime",
  342. key: "creteTime"
  343. },
  344. {
  345. title: "分配时间",
  346. dataIndex: "taskDistributionTime",
  347. key: "taskDistributionTime"
  348. },
  349. {
  350. title: "完成时间",
  351. dataIndex: "taskEndTime",
  352. key: "taskEndTime"
  353. }
  354. ],
  355. data: [],
  356. dataSource: [],
  357. columnsX: [
  358. {
  359. title: "业务项目名称",
  360. dataIndex: "commodityName",
  361. key: "commodityName"
  362. },
  363. {
  364. title: "项目类别",
  365. dataIndex: "cname",
  366. key: "cname"
  367. },
  368. {
  369. title: "项目数量",
  370. dataIndex: "commodityQuantity",
  371. key: "commodityQuantity",
  372. render: (text, record) => {
  373. if (record.splitStatus == 1) {
  374. return (
  375. <span>
  376. {text}{" "}
  377. <Tag
  378. color="#108ee9"
  379. onClick={e => {
  380. e.stopPropagation();
  381. this.showRes(record);
  382. }}
  383. >
  384. 已拆
  385. </Tag>
  386. </span>
  387. );
  388. } else {
  389. return text;
  390. }
  391. }
  392. },
  393. {
  394. title: "金额(万元)",
  395. dataIndex: "commodityPrice",
  396. key: "commodityPrice"
  397. },
  398. {
  399. title: "负责人",
  400. dataIndex: "contacts",
  401. key: "contacts"
  402. },
  403. {
  404. title: "负责人电话",
  405. dataIndex: "contactsMobile",
  406. key: "contactsMobile"
  407. },
  408. {
  409. title: "主要项目",
  410. dataIndex: "main",
  411. key: "main",
  412. render: text => {
  413. return text ? "是" : "否";
  414. }
  415. },
  416. {
  417. title: "项目说明",
  418. dataIndex: "taskComment",
  419. key: "taskComment",
  420. render: text => {
  421. return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
  422. }
  423. }
  424. ],
  425. columnsA: [
  426. {
  427. title: "流程",
  428. dataIndex: "content",
  429. key: "content",
  430. align: "center"
  431. },
  432. {
  433. title: "操作人",
  434. dataIndex: "aName",
  435. key: "aName",
  436. align: "center"
  437. },
  438. {
  439. title: "时间",
  440. dataIndex: "createTimes",
  441. key: "createTimes",
  442. align: "center"
  443. }
  444. ],
  445. dataSourceX: [],
  446. dataSourceA: [],
  447. ContactsLists: [
  448. {
  449. title: "批次",
  450. dataIndex: "num",
  451. key: "num"
  452. },
  453. {
  454. title: "下证时间",
  455. dataIndex: "licenceTimes",
  456. key: "licenceTimes"
  457. },
  458. {
  459. title: "下证数量",
  460. dataIndex: "alreadyNumber",
  461. key: "alreadyNumber"
  462. },
  463. {
  464. title: "未下证数量",
  465. dataIndex: "notCount",
  466. key: "notCount"
  467. }
  468. ]
  469. };
  470. },
  471. //页面加载函数
  472. componentWillMount() {
  473. this.loadData();
  474. this.selectSuperId();
  475. this.departmentList();
  476. },
  477. // //整行点击
  478. tableRowClick(record) {
  479. this.state.RowData = record;
  480. if (record.taskName.substring(0, 5) === "软件著作权") {
  481. this.setState({
  482. speVisible: true,
  483. id: record.id,
  484. dataArr: record,
  485. commodityQuantity: record.commodityQuantity
  486. });
  487. } else {
  488. this.setState({
  489. visible: true
  490. });
  491. }
  492. this.xiangqing(record.id, record.taskName);
  493. this.xiangqings(record.orderNo);
  494. this.xiangmu(record.orderNo);
  495. this.loaduserss(record);
  496. },
  497. //订单详情
  498. xiangqing(id) {
  499. $.ajax({
  500. method: "get",
  501. dataType: "json",
  502. crossDomain: false,
  503. url: globalConfig.context + "/api/admin/orderProject/orderTaskDetail",
  504. data: {
  505. id: id
  506. },
  507. success: function(data) {
  508. if (data.error.length || data.data.list == "") {
  509. if (data.error && data.error.length) {
  510. message.warning(data.error[0].message);
  511. }
  512. } else {
  513. let thisdata = data.data;
  514. this.setState({
  515. id: thisdata.id, //ID
  516. orderNo: thisdata.orderNo, //订单编号
  517. userName: thisdata.userName, //客户名称
  518. taskName: thisdata.taskName, //任务名称
  519. cname: thisdata.cname, //项目品类
  520. contractNo: thisdata.contractNo, //合同编号
  521. projectStatus: thisdata.projectStatus, //项目状态
  522. taskStatus: thisdata.taskStatus, //任务状态
  523. taskDate: thisdata.taskDate, //分配时间
  524. taskComment: thisdata.taskComment, //说明
  525. attachmentUrl: thisdata.attachmentUrl
  526. ? splitUrl(
  527. thisdata.attachmentUrl,
  528. ",",
  529. globalConfig.avatarHost + "/upload"
  530. )
  531. : [], //图片地址
  532. salesmanName: thisdata.salesmanName, //订单负责人
  533. startDate: thisdata.startDate, //启动日期
  534. endDate: thisdata.endDate, //结束日期
  535. acceptDate: thisdata.acceptDate, //受理日期
  536. reviewDate: thisdata.reviewDate, //评审日期
  537. publicityDate: thisdata.publicityDate, //公示日期
  538. licenceDate: thisdata.licenceDate, //发证日期
  539. contacts: thisdata.contacts, //联系人
  540. contactMobile: thisdata.contactMobile, //联系人电话
  541. legalPerson: thisdata.legalPerson, //法人
  542. legalPersonTel: thisdata.legalPersonTel, //法人电话
  543. certificateNumber: thisdata.certificateNumber, //证书编号
  544. status: thisdata.status, //状态
  545. formRetrieve: thisdata.formRetrieve, //满意度表格
  546. taskRefund: thisdata.taskRefund, //退单
  547. refundContent: thisdata.refundContent, //退单信息
  548. retrieveContent: thisdata.retrieveContent, //回收信息
  549. arrivalMoney: thisdata.arrivalMoney, //是否到款
  550. setUpAmount: thisdata.setUpAmount, //立项金额
  551. declareUser: thisdata.declareUser, //账号
  552. declarePwd: thisdata.declarePwd, //密码
  553. depName: thisdata.depName, //订单部门
  554. outsourceName: thisdata.outsourceName, //外包公司名称
  555. outsourcePrice: thisdata.outsourcePrice //外包价格
  556. });
  557. }
  558. }.bind(this)
  559. }).always(
  560. function() {
  561. this.setState({
  562. loading: false
  563. });
  564. }.bind(this)
  565. );
  566. },
  567. // 拆分详细
  568. showRes(record) {
  569. this.setState({
  570. resVisible: true,
  571. resRecord: record
  572. });
  573. },
  574. resCancel() {
  575. this.setState({
  576. resVisible: false
  577. });
  578. },
  579. //订单详情
  580. xiangqings(orderNos) {
  581. $.ajax({
  582. method: "get",
  583. dataType: "json",
  584. crossDomain: false,
  585. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  586. data: {
  587. orderNo: orderNos
  588. },
  589. success: function(data) {
  590. let thisdata = data.data;
  591. let ProvinceCityArr = [];
  592. let ProvinceS = thisdata.locationProvince; //省
  593. let citys = thisdata.locationCity; //市
  594. let Areas = thisdata.locationArea; //区
  595. ProvinceCityArr.push(ProvinceS, citys, Areas);
  596. if (data.error.length || data.data.list == "") {
  597. if (data.error && data.error.length) {
  598. message.warning(data.error[0].message);
  599. }
  600. } else {
  601. this.setState({
  602. processStatus: thisdata.processStatus, //流程状态
  603. liquidationStatus: thisdata.liquidationStatus, //结算状态
  604. approval: thisdata.approval, //特批状态
  605. orderRemarks: thisdata.orderRemarks, //订单留言
  606. salesmanName: thisdata.salesmanName, //营销员名称
  607. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  608. financeName: thisdata.financeName, //财务名称
  609. financeMobile: thisdata.financeMobile, //财务电话
  610. depName: thisdata.depName, //订单部门
  611. locationProvince: thisdata.locationProvince,
  612. locationCity: thisdata.locationCity,
  613. locationArea: thisdata.locationArea,
  614. ProvinceCity: ProvinceCityArr,
  615. postalAddress: thisdata.postalAddress, //详细地址
  616. outsource: thisdata.outsource
  617. });
  618. }
  619. }.bind(this)
  620. }).always(
  621. function() {
  622. this.setState({
  623. loading: false
  624. });
  625. }.bind(this)
  626. );
  627. },
  628. //查看下证信息
  629. loaduserss(record) {
  630. $.ajax({
  631. method: "get",
  632. dataType: "json",
  633. crossDomain: false,
  634. url:
  635. globalConfig.context + "/api/admin/orderProject/selectTaskProgress",
  636. data: {
  637. tid: record.id
  638. },
  639. success: function(data) {
  640. let theArr = [];
  641. let thisData = [];
  642. if (!thisData) {
  643. if (data.error && data.error.length) {
  644. message.warning(data.error[0].message);
  645. }
  646. thisData = {};
  647. } else {
  648. for (let i = 0; i < data.data.length; i++) {
  649. thisData = data.data[i];
  650. theArr.push({
  651. num: i + 1,
  652. key: i,
  653. id: thisData.id, //编号
  654. alreadyNumber: thisData.alreadyNumber, //下证数
  655. licenceTimes: thisData.licenceTimes, //下证时间
  656. notCount: thisData.notCount, //未下证数
  657. flag: true
  658. });
  659. }
  660. this.setState({
  661. contactList: theArr
  662. });
  663. }
  664. }.bind(this)
  665. }).always(
  666. function() {
  667. this.setState({
  668. loading: false
  669. });
  670. }.bind(this)
  671. );
  672. },
  673. caozuorizhi() {
  674. this.setState({
  675. visibleA: true
  676. });
  677. $.ajax({
  678. method: "get",
  679. dataType: "json",
  680. crossDomain: false,
  681. url: globalConfig.context + "/api/admin/orderProject/TaskLogList",
  682. data: {
  683. id: this.state.id
  684. },
  685. success: function(data) {
  686. let theArr = [];
  687. if (data.error.length || data.data.list == "") {
  688. if (data.error && data.error.length) {
  689. message.warning(data.error[0].message);
  690. }
  691. } else {
  692. for (let i = 0; i < data.data.length; i++) {
  693. let thisdata = data.data[i];
  694. theArr.push({
  695. key: i,
  696. id: thisdata.id, //日志ID
  697. content: thisdata.content, //流程
  698. taskId: thisdata.taskId, //任务ID
  699. aName: thisdata.aName, //负责人
  700. createTimes: thisdata.createTimes //时间
  701. });
  702. }
  703. }
  704. this.setState({
  705. dataSourceA: theArr
  706. });
  707. }.bind(this)
  708. }).always(
  709. function() {
  710. this.setState({
  711. loading: false
  712. });
  713. }.bind(this)
  714. );
  715. },
  716. //关闭操作工时
  717. visitCancelA() {
  718. this.setState({
  719. visibleA: false
  720. });
  721. },
  722. //项目列表
  723. xiangmu(orderNos) {
  724. $.ajax({
  725. method: "get",
  726. dataType: "json",
  727. crossDomain: false,
  728. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  729. data: {
  730. orderNo: orderNos
  731. },
  732. success: function(data) {
  733. let theArr = [];
  734. if (data.error.length || data.data.list == "") {
  735. if (data.error && data.error.length) {
  736. message.warning(data.error[0].message);
  737. }
  738. } else {
  739. for (let i = 0; i < data.data.length; i++) {
  740. let thisdata = data.data[i];
  741. theArr.push({
  742. key: i,
  743. id: thisdata.id,
  744. orderNo: thisdata.orderNo, //订单编号
  745. commodityId: thisdata.commodityId, //项目ID
  746. commodityName: thisdata.commodityName, //项目名称
  747. cname: thisdata.cname, //项目类别
  748. commodityPrice: thisdata.commodityPrice, //项目价格
  749. commodityQuantity: thisdata.commodityQuantity, //项目数量
  750. main: thisdata.main, //是否为主要任务
  751. taskComment: thisdata.taskComment, //任务说明
  752. contacts: thisdata.contacts, //联系人
  753. contactsMobile: thisdata.contactsMobile, //联系人电话
  754. taskStatus: thisdata.taskStatus, //是否分配
  755. splitStatus: thisdata.splitStatus
  756. });
  757. }
  758. }
  759. this.setState({
  760. dataSourceX: theArr
  761. });
  762. }.bind(this)
  763. }).always(
  764. function() {
  765. this.setState({
  766. loading: false
  767. });
  768. }.bind(this)
  769. );
  770. },
  771. //关闭输入理由框
  772. noCancel() {
  773. this.setState({
  774. noVisible: false
  775. });
  776. },
  777. //搜索
  778. search() {
  779. this.setState({
  780. //signBillVisible:false
  781. });
  782. this.loadData();
  783. },
  784. //重置
  785. reset() {
  786. this.setState({
  787. signBillVisible: false
  788. });
  789. this.state.idSearch = "";
  790. this.state.customerName = "";
  791. this.state.releaseDate[0] = undefined;
  792. this.state.releaseDate[1] = undefined;
  793. this.state.orderNoSearch = "";
  794. this.state.departmenttList = [];
  795. this.state.cid = [];
  796. this.state.contractNoSearch = "";
  797. this.state.outsourceSearch = [];
  798. this.loadData(this.state.page);
  799. },
  800. resets() {
  801. this.state.orderNo = "";
  802. this.state.customerName = "";
  803. this.state.releaseDate[0] = undefined;
  804. this.state.releaseDate[1] = undefined;
  805. },
  806. getOrgCodeUrl(e) {
  807. this.setState({ orgCodeUrl: e });
  808. },
  809. //关闭操作工时
  810. visitCancelA() {
  811. this.setState({
  812. visibleA: false
  813. });
  814. },
  815. setColor() {
  816. $(".userName span").after(
  817. "(<span class='ruanzhu'>软著数</span>/<span class='xiazheng'>下证数</span>)"
  818. );
  819. },
  820. closeDesc(e, s) {
  821. this.state.showDesc = e;
  822. if (s) {
  823. this.loadData(this.state.page);
  824. }
  825. },
  826. closeAssign(e, s) {
  827. this.state.roleName = "";
  828. this.state.assignVisible = e;
  829. if (s) {
  830. this.loadData(this.state.page);
  831. }
  832. },
  833. nextCancel() {
  834. this.setState({
  835. addnextVisible: false
  836. });
  837. },
  838. //点击打卡项目详情
  839. tableRowClickX(record) {
  840. this.setState({
  841. jid: record.id, //项目ID
  842. kid: record.commodityId, //商品ID
  843. commodityName: record.commodityName, //金额
  844. commodityPrice: record.commodityPrice, //金额
  845. commodityQuantity: record.commodityQuantity, //数量
  846. taskComment: record.taskComment, //备注
  847. main: record.main.toString(), //是否为主要
  848. addnextVisible: true,
  849. addState: 0
  850. });
  851. },
  852. //关闭详情
  853. visitCancel() {
  854. this.setState({
  855. visible: false,
  856. speVisible: false
  857. });
  858. this.resets();
  859. },
  860. visitOk() {
  861. this.setState({
  862. visible: false
  863. });
  864. this.resets();
  865. },
  866. //关闭详情
  867. visitCancels() {
  868. this.setState({
  869. visibles: false
  870. });
  871. this.resets();
  872. },
  873. //导出
  874. exportExec() {
  875. let nameText = this.state.SuperArr;
  876. let superText =
  877. this.state.cid && typeof this.state.cid != "object"
  878. ? nameText[parseInt(this.state.cid)].id
  879. : "";
  880. if (superText) {
  881. var data = {
  882. orderNo: this.state.orderNoSearch
  883. ? this.state.orderNoSearch
  884. : undefined,
  885. name: this.state.customerName ? this.state.customerName : undefined, //订单负责人
  886. taskId: this.state.idSearch ? this.state.idSearch : undefined, //订单编号
  887. starTime: this.state.releaseDate[0]
  888. ? this.state.releaseDate[0]
  889. : undefined,
  890. endTime: this.state.releaseDate[1]
  891. ? this.state.releaseDate[1]
  892. : undefined,
  893. depId: this.state.departmenttList
  894. ? this.state.departmenttList
  895. : undefined,
  896. cid: superText
  897. };
  898. } else {
  899. var data = {
  900. orderNo: this.state.orderNoSearch
  901. ? this.state.orderNoSearch
  902. : undefined,
  903. name: this.state.customerName ? this.state.customerName : undefined, //订单负责人
  904. taskId: this.state.idSearch ? this.state.idSearch : undefined, //订单编号
  905. starTime: this.state.releaseDate[0]
  906. ? this.state.releaseDate[0]
  907. : undefined,
  908. endTime: this.state.releaseDate[1]
  909. ? this.state.releaseDate[1]
  910. : undefined,
  911. depId: this.state.departmenttList
  912. ? this.state.departmenttList
  913. : undefined
  914. };
  915. }
  916. window.location.href =
  917. globalConfig.context +
  918. "/api/admin/orderProject/exportMyTaskList?" +
  919. $.param(data);
  920. },
  921. visitOks() {
  922. this.setState({
  923. visibles: false
  924. });
  925. this.resets();
  926. },
  927. selectSuperId() {
  928. this.state.data = [];
  929. $.ajax({
  930. method: "get",
  931. dataType: "json",
  932. crossDomain: false,
  933. url: globalConfig.context + "/api/admin/ProjectSize/getAllCname",
  934. data: {
  935. flag: 0
  936. },
  937. success: function(data) {
  938. let theArr = [];
  939. let thedata = data.data;
  940. if (!thedata) {
  941. if (data.error && data.error.length) {
  942. message.warning(data.error[0].message);
  943. }
  944. thedata = {};
  945. }
  946. var contactIds = [];
  947. for (var i = 0; i < data.data.length; i++) {
  948. let theData = data.data[i];
  949. theArr.push(
  950. <Select.Option value={i.toString()} key={theData.cname}>
  951. {theData.cname}
  952. </Select.Option>
  953. );
  954. }
  955. this.setState({
  956. SuperArr: thedata,
  957. contactsOption: theArr,
  958. orderStatusOptions: data.data
  959. });
  960. }.bind(this)
  961. }).always(
  962. function() {
  963. this.loadData(this.state.ispage);
  964. this.setState({
  965. loading: false
  966. });
  967. }.bind(this)
  968. );
  969. },
  970. render() {
  971. const formItemLayout = {
  972. labelCol: { span: 8 },
  973. wrapperCol: { span: 14 }
  974. };
  975. const utils = {
  976. getSatisfaction: function(num) {
  977. switch (num) {
  978. case 0:
  979. return "未收回";
  980. case 1:
  981. return "已收回";
  982. default:
  983. return "其它";
  984. }
  985. },
  986. getChargeback: function(num) {
  987. switch (num) {
  988. case 0:
  989. return "已完成";
  990. case 1:
  991. return "未完成";
  992. default:
  993. return "其它";
  994. }
  995. }
  996. };
  997. const isWai = [
  998. {
  999. id: 0,
  1000. name: "非外包"
  1001. },
  1002. {
  1003. id: 1,
  1004. name: "外包"
  1005. }
  1006. ];
  1007. const FormItem = Form.Item;
  1008. const { RangePicker } = DatePicker;
  1009. const departmentArr = this.state.departmentArr || [];
  1010. return (
  1011. <div className="user-content">
  1012. {this.state.resVisible ? (
  1013. <ResolutionDetail
  1014. cancel={this.resCancel}
  1015. detail={this.state.resRecord}
  1016. visible={this.state.resVisible}
  1017. id={this.state.resRecord.orderNo}
  1018. />
  1019. ) : (
  1020. ""
  1021. )}
  1022. <div className="content-title">
  1023. <span>工时数据统计</span>
  1024. </div>
  1025. <div className="user-search">
  1026. <Tabs
  1027. defaultActiveKey="1"
  1028. onChange={this.callback}
  1029. className="test"
  1030. >
  1031. <TabPane tab="搜索" key="1">
  1032. <Input
  1033. placeholder="客户名称"
  1034. style={{
  1035. width: "150px",
  1036. marginBottom: "10px",
  1037. marginLeft: 10,
  1038. marginRight: 10
  1039. }}
  1040. value={this.state.customerName}
  1041. onChange={e => {
  1042. this.setState({ customerName: e.target.value });
  1043. }}
  1044. />
  1045. <Input
  1046. placeholder="任务编号"
  1047. style={{ width: "150px", marginRight: 10 }}
  1048. value={this.state.idSearch}
  1049. onChange={e => {
  1050. this.setState({ idSearch: e.target.value });
  1051. }}
  1052. />
  1053. <Input
  1054. placeholder="订单编号"
  1055. style={{ width: "150px", marginRight: 10 }}
  1056. value={this.state.orderNoSearch}
  1057. onChange={e => {
  1058. this.setState({
  1059. orderNoSearch: e.target.value
  1060. });
  1061. }}
  1062. />
  1063. <Input
  1064. placeholder="合同编号"
  1065. style={{ width: "150px", marginRight: 10 }}
  1066. value={this.state.contractNoSearch}
  1067. onChange={e => {
  1068. this.setState({
  1069. contractNoSearch: e.target.value
  1070. });
  1071. }}
  1072. />
  1073. <Select
  1074. placeholder="订单部门"
  1075. style={{ width: 150, marginRight: 10 }}
  1076. value={this.state.departmenttList}
  1077. onChange={e => {
  1078. this.setState({ departmenttList: e });
  1079. }}
  1080. >
  1081. {departmentArr.map(function(item) {
  1082. return (
  1083. <Select.Option key={item.id}>{item.name}</Select.Option>
  1084. );
  1085. })}
  1086. </Select>
  1087. <Select
  1088. placeholder="项目类别"
  1089. style={{ width: "150", marginRight: "10px" }}
  1090. value={this.state.cid}
  1091. onChange={e => {
  1092. this.setState({ cid: e });
  1093. }}
  1094. notFoundContent="未获取到上级品类列表"
  1095. >
  1096. {this.state.contactsOption}
  1097. </Select>
  1098. <Select
  1099. placeholder="是否外包"
  1100. style={{ width: "150", marginRight: "10px" }}
  1101. value={this.state.outsourceSearch}
  1102. onChange={e => {
  1103. this.setState({ outsourceSearch: e });
  1104. }}
  1105. >
  1106. {isWai.map(function(item) {
  1107. return (
  1108. <Select.Option key={item.id}>{item.name}</Select.Option>
  1109. );
  1110. })}
  1111. </Select>
  1112. <span style={{ marginRight: "10px" }}>合同签订时间 :</span>
  1113. <RangePicker
  1114. value={[
  1115. this.state.releaseDate[0]
  1116. ? moment(this.state.releaseDate[0])
  1117. : null,
  1118. this.state.releaseDate[1]
  1119. ? moment(this.state.releaseDate[1])
  1120. : null
  1121. ]}
  1122. onChange={(data, dataString) => {
  1123. this.setState({ releaseDate: dataString });
  1124. }}
  1125. />
  1126. <Button
  1127. type="primary"
  1128. onClick={this.search}
  1129. style={{
  1130. marginLeft: "10px",
  1131. marginRight: 10,
  1132. marginBottom: 10
  1133. }}
  1134. >
  1135. 搜索
  1136. </Button>
  1137. <Button onClick={this.reset}>重置</Button>
  1138. </TabPane>
  1139. <TabPane tab="导出" key="2">
  1140. <Button
  1141. type="primary"
  1142. onClick={this.exportExec}
  1143. style={{ margin: 10 }}
  1144. >
  1145. 导出工时数据
  1146. </Button>
  1147. </TabPane>
  1148. </Tabs>
  1149. <div className="patent-table">
  1150. <Spin spinning={this.state.loading}>
  1151. <Table
  1152. columns={this.state.columns}
  1153. dataSource={this.state.dataSource}
  1154. pagination={this.state.pagination}
  1155. onRowClick={this.tableRowClick.bind(this)}
  1156. scroll={{ x: "max-content", y: 0 }}
  1157. bordered
  1158. size="small"
  1159. />
  1160. </Spin>
  1161. </div>
  1162. </div>
  1163. <Modal
  1164. className="customeDetails"
  1165. footer=""
  1166. title="项目概况"
  1167. width="900px"
  1168. visible={this.state.visible}
  1169. onOk={this.visitOk}
  1170. onCancel={this.visitCancel}
  1171. >
  1172. <Form
  1173. layout="horizontal"
  1174. onSubmit={this.handleSubmit}
  1175. id="demand-form"
  1176. style={{ paddingBottom: "00px" }}
  1177. >
  1178. <Spin spinning={this.state.loading}>
  1179. <div className="clearfix">
  1180. <div className="clearfix">
  1181. <FormItem
  1182. className="half-item"
  1183. {...formItemLayout}
  1184. label="当前项目情况"
  1185. >
  1186. <span>{this.state.status ? "暂停" : "开启"}</span>
  1187. <Button
  1188. type="primary"
  1189. size="small"
  1190. style={{ marginTop: "5px", position: "absolute" }}
  1191. onClick={this.caozuorizhi}
  1192. >
  1193. 操作日志
  1194. </Button>
  1195. </FormItem>
  1196. <FormItem
  1197. className="half-item"
  1198. {...formItemLayout}
  1199. label="合同编号"
  1200. >
  1201. <span>{this.state.contractNo}</span>
  1202. </FormItem>
  1203. </div>
  1204. <div className="clearfix">
  1205. <FormItem
  1206. className="half-item"
  1207. {...formItemLayout}
  1208. label="项目状态"
  1209. >
  1210. <span>{getProcessStatus(this.state.projectStatus)}</span>
  1211. </FormItem>
  1212. <FormItem
  1213. className="half-item"
  1214. {...formItemLayout}
  1215. label="是否特批"
  1216. >
  1217. <span>{getApproval(this.state.approval)}</span>
  1218. </FormItem>
  1219. <FormItem
  1220. className="half-item"
  1221. {...formItemLayout}
  1222. label="结算状态"
  1223. >
  1224. <span>
  1225. {getLiquidationStatus(this.state.liquidationStatus)}
  1226. </span>
  1227. </FormItem>
  1228. <FormItem
  1229. className="half-item"
  1230. {...formItemLayout}
  1231. label="流程状态"
  1232. >
  1233. <span>{getProcessStatus(this.state.processStatus)}</span>
  1234. </FormItem>
  1235. <FormItem
  1236. className="half-item"
  1237. {...formItemLayout}
  1238. label="订单编号"
  1239. >
  1240. <span>{this.state.orderNo}</span>
  1241. </FormItem>
  1242. </div>
  1243. <div className="clearfix">
  1244. <FormItem
  1245. className="half-item"
  1246. {...formItemLayout}
  1247. label="满意度表格"
  1248. >
  1249. <span>
  1250. {utils.getSatisfaction(this.state.formRetrieve)}
  1251. </span>
  1252. </FormItem>
  1253. <FormItem
  1254. className="half-item"
  1255. {...formItemLayout}
  1256. label="退单"
  1257. >
  1258. <span>{utils.getChargeback(this.state.taskRefund)}</span>
  1259. </FormItem>
  1260. </div>
  1261. <div className="clearfix">
  1262. {
  1263. <FormItem
  1264. className="half-item"
  1265. {...formItemLayout}
  1266. label="(满意度)备注"
  1267. >
  1268. <span>{this.state.retrieveContent}</span>
  1269. </FormItem>
  1270. }
  1271. {
  1272. <FormItem
  1273. className="half-item"
  1274. {...formItemLayout}
  1275. label="(退单)备注"
  1276. >
  1277. <span>{this.state.refundContent}</span>
  1278. </FormItem>
  1279. }
  1280. </div>
  1281. <div className="clearfix">
  1282. <h3 className="sub-title">任务信息</h3>
  1283. <FormItem
  1284. className="half-item"
  1285. {...formItemLayout}
  1286. label="任务编号"
  1287. >
  1288. <span>{this.state.id}</span>
  1289. </FormItem>
  1290. <FormItem
  1291. className="half-item"
  1292. {...formItemLayout}
  1293. label="任务名称"
  1294. >
  1295. <span>{this.state.taskName}</span>
  1296. </FormItem>
  1297. <FormItem
  1298. className="half-item"
  1299. {...formItemLayout}
  1300. label="任务状态"
  1301. >
  1302. <span>{getTaskStatus(this.state.taskStatus)}</span>
  1303. </FormItem>
  1304. <FormItem
  1305. className="half-item"
  1306. {...formItemLayout}
  1307. label="任务类别"
  1308. >
  1309. <span>{this.state.cname}</span>
  1310. </FormItem>
  1311. <FormItem
  1312. className="half-item"
  1313. {...formItemLayout}
  1314. label="证书编号"
  1315. >
  1316. <span>{this.state.certificateNumber}</span>
  1317. </FormItem>
  1318. </div>
  1319. {this.state.outsource === 1 ? (
  1320. <div className="clearfix">
  1321. <h3 className="sub-title">外包信息</h3>
  1322. <FormItem
  1323. className="half-item"
  1324. {...formItemLayout}
  1325. label="外包公司"
  1326. >
  1327. <span>{this.state.outsourceName}</span>
  1328. </FormItem>
  1329. <FormItem
  1330. className="half-item"
  1331. {...formItemLayout}
  1332. label="外包成本(万元)"
  1333. >
  1334. <span>{this.state.outsourcePrice}</span>
  1335. </FormItem>
  1336. </div>
  1337. ) : (
  1338. ""
  1339. )}
  1340. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1341. <div className="clearfix">
  1342. <h3 className="sub-title">联系信息</h3>
  1343. <FormItem
  1344. className="half-item"
  1345. {...formItemLayout}
  1346. label="客户名称"
  1347. >
  1348. <span>{this.state.userName}</span>
  1349. </FormItem>
  1350. <FormItem
  1351. className="half-item"
  1352. {...formItemLayout}
  1353. label="企业法人"
  1354. >
  1355. <span>{this.state.legalPerson}</span>
  1356. </FormItem>
  1357. <FormItem
  1358. className="half-item"
  1359. {...formItemLayout}
  1360. label="法人电话"
  1361. >
  1362. <span>{this.state.legalPersonTel}</span>
  1363. </FormItem>
  1364. <FormItem
  1365. className="half-item"
  1366. {...formItemLayout}
  1367. label="客户联系人"
  1368. >
  1369. <span>{this.state.contacts}</span>
  1370. </FormItem>
  1371. <FormItem
  1372. className="half-item"
  1373. {...formItemLayout}
  1374. label="联系人电话"
  1375. >
  1376. <span>{this.state.contactMobile}</span>
  1377. </FormItem>
  1378. <FormItem
  1379. className="half-item"
  1380. {...formItemLayout}
  1381. label="企业地址"
  1382. >
  1383. <span>
  1384. {getprovince(this.state.locationProvince)}/
  1385. {getprovince(this.state.locationCity)}/
  1386. {getprovince(this.state.locationArea)}
  1387. </span>
  1388. </FormItem>
  1389. <FormItem
  1390. className="half-item"
  1391. {...formItemLayout}
  1392. label=""
  1393. ></FormItem>
  1394. <FormItem className="half-item" {...formItemLayout}>
  1395. <span style={{ paddingLeft: "12em" }}>
  1396. {this.state.postalAddress}
  1397. </span>
  1398. </FormItem>
  1399. </div>
  1400. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1401. <div className="clearfix">
  1402. <h3 className="sub-title">订单负责人信息</h3>
  1403. <FormItem
  1404. className="half-item"
  1405. {...formItemLayout}
  1406. label="负责人"
  1407. >
  1408. <span>
  1409. {this.state.salesmanName +
  1410. "(" +
  1411. this.state.depName +
  1412. ")"}
  1413. </span>
  1414. </FormItem>
  1415. <FormItem
  1416. className="half-item"
  1417. {...formItemLayout}
  1418. label="负责人电话"
  1419. >
  1420. <span>{this.state.salesmanMobile}</span>
  1421. </FormItem>
  1422. <FormItem
  1423. className="half-item"
  1424. {...formItemLayout}
  1425. label="财务负责人"
  1426. >
  1427. <span>{this.state.financeName}</span>
  1428. </FormItem>
  1429. <FormItem
  1430. className="half-item"
  1431. {...formItemLayout}
  1432. label="财务负责人电话"
  1433. >
  1434. <span>{this.state.financeMobile}</span>
  1435. </FormItem>
  1436. </div>
  1437. <div className="clearfix">
  1438. <h3 className="sub-title">申报系统账户信息</h3>
  1439. {/*<span style={{color:'red'}}>注:仅技术部可见</span>*/}
  1440. <FormItem
  1441. className="half-item"
  1442. {...formItemLayout}
  1443. label="用户名"
  1444. >
  1445. <span>{this.state.declareUser ? "*" : ""}</span>
  1446. </FormItem>
  1447. <FormItem
  1448. className="half-item"
  1449. {...formItemLayout}
  1450. label="密码"
  1451. >
  1452. <span>{this.state.declarePwd ? "*" : ""}</span>
  1453. </FormItem>
  1454. </div>
  1455. <div className="clearfix">
  1456. <h3 className="sub-title">项目申报进度</h3>
  1457. <FormItem
  1458. className="half-item"
  1459. {...formItemLayout}
  1460. label="启动时间"
  1461. >
  1462. <span>{this.state.startDate}</span>
  1463. </FormItem>
  1464. <FormItem
  1465. className="half-item"
  1466. {...formItemLayout}
  1467. label="完成时间"
  1468. >
  1469. <span>{this.state.endDate}</span>
  1470. </FormItem>
  1471. <FormItem
  1472. className="half-item"
  1473. {...formItemLayout}
  1474. label="受理时间"
  1475. >
  1476. <span>{this.state.acceptDate}</span>
  1477. </FormItem>
  1478. <FormItem
  1479. className="half-item"
  1480. {...formItemLayout}
  1481. label="评审时间"
  1482. >
  1483. <span>{this.state.reviewDate}</span>
  1484. </FormItem>
  1485. <FormItem
  1486. className="half-item"
  1487. {...formItemLayout}
  1488. label="公示时间"
  1489. >
  1490. <span>{this.state.publicityDate}</span>
  1491. </FormItem>
  1492. <FormItem
  1493. className="half-item"
  1494. {...formItemLayout}
  1495. label="发证时间"
  1496. >
  1497. <span>{this.state.licenceDate}</span>
  1498. </FormItem>
  1499. <FormItem
  1500. className="half-item"
  1501. {...formItemLayout}
  1502. label="立项金额(万元)"
  1503. >
  1504. <span>{this.state.setUpAmount}</span>
  1505. </FormItem>
  1506. <FormItem
  1507. className="half-item"
  1508. {...formItemLayout}
  1509. label="是否到款"
  1510. >
  1511. <span>
  1512. {this.state.arrivalMoney ? "已到企业" : "未到企业"}
  1513. </span>
  1514. </FormItem>
  1515. </div>
  1516. <div className="clearfix">
  1517. <FormItem
  1518. labelCol={{ span: 3 }}
  1519. wrapperCol={{ span: 18 }}
  1520. label="附件"
  1521. >
  1522. <Upload
  1523. className="demandDetailShow-upload"
  1524. listType="picture-card"
  1525. fileList={this.state.attachmentUrl}
  1526. onPreview={file => {
  1527. this.setState({
  1528. previewImage: file.url || file.thumbUrl,
  1529. previewVisible: true
  1530. });
  1531. }}
  1532. ></Upload>
  1533. <Modal
  1534. maskClosable={false}
  1535. footer={null}
  1536. visible={this.state.previewVisible}
  1537. onCancel={() => {
  1538. this.setState({ previewVisible: false });
  1539. }}
  1540. >
  1541. <img
  1542. alt=""
  1543. style={{ width: "100%" }}
  1544. src={this.state.previewImage || ""}
  1545. />
  1546. </Modal>
  1547. </FormItem>
  1548. </div>
  1549. <div className="clearfix">
  1550. <FormItem
  1551. labelCol={{ span: 3 }}
  1552. wrapperCol={{ span: 16 }}
  1553. label="备注"
  1554. >
  1555. <span>{this.state.taskComment}</span>
  1556. </FormItem>
  1557. </div>
  1558. <div>
  1559. <h3 className="sub-title">项目业务</h3>
  1560. {this.state.processStatus == 0 ? (
  1561. <Button
  1562. type="primary"
  1563. onClick={this.addDetailed}
  1564. style={{
  1565. float: "right",
  1566. marginRight: "50px",
  1567. marginBottom: "15px"
  1568. }}
  1569. >
  1570. 添加项目明细
  1571. </Button>
  1572. ) : (
  1573. ""
  1574. )}
  1575. </div>
  1576. <div className="patent-table">
  1577. <Spin spinning={this.state.loading}>
  1578. <Table
  1579. columns={this.state.columnsX}
  1580. dataSource={this.state.dataSourceX}
  1581. pagination={this.state.paginations}
  1582. onRowClick={this.tableRowClickX}
  1583. bordered
  1584. size={"small"}
  1585. />
  1586. </Spin>
  1587. </div>
  1588. </div>
  1589. </Spin>
  1590. </Form>
  1591. </Modal>
  1592. <Modal
  1593. maskClosable={false}
  1594. visible={this.state.addnextVisible}
  1595. onOk={this.nextCancel}
  1596. onCancel={this.nextCancel}
  1597. width="900px"
  1598. title="项目任务详情"
  1599. footer=""
  1600. className="admin-desc-content"
  1601. >
  1602. <Form
  1603. layout="horizontal"
  1604. onSubmit={this.nextSubmit}
  1605. id="demand-form"
  1606. >
  1607. <Spin spinning={this.state.loading}>
  1608. <div className="clearfix">
  1609. <FormItem
  1610. className="half-item"
  1611. {...formItemLayout}
  1612. label="项目名称"
  1613. >
  1614. <span>{this.state.commodityName}</span>
  1615. </FormItem>
  1616. <FormItem
  1617. className="half-item"
  1618. {...formItemLayout}
  1619. label="项目数量"
  1620. >
  1621. <span>{this.state.commodityQuantity}</span>
  1622. </FormItem>
  1623. <FormItem
  1624. className="half-item"
  1625. {...formItemLayout}
  1626. label="金额(万元)"
  1627. >
  1628. <span>{this.state.commodityPrice}</span>
  1629. </FormItem>
  1630. <FormItem
  1631. className="half-item"
  1632. {...formItemLayout}
  1633. label="主要项目"
  1634. >
  1635. <span>{getboutique(this.state.main)}</span>
  1636. </FormItem>
  1637. <div className="clearfix">
  1638. <FormItem
  1639. labelCol={{ span: 4 }}
  1640. wrapperCol={{ span: 16 }}
  1641. label="服务说明"
  1642. >
  1643. <span>{this.state.taskComment}</span>
  1644. </FormItem>
  1645. </div>
  1646. </div>
  1647. </Spin>
  1648. </Form>
  1649. </Modal>
  1650. <Modal
  1651. width="800px"
  1652. title="操作日志"
  1653. footer=""
  1654. className="admin-desc-content"
  1655. >
  1656. <div className="patent-table patent-table-center">
  1657. <Spin spinning={this.state.loading}>
  1658. <Table columns={this.state.columnsY} bordered size={"small"} />
  1659. </Spin>
  1660. </div>
  1661. </Modal>
  1662. <Modal
  1663. maskClosable={false}
  1664. visible={this.state.speVisible}
  1665. onOk={this.visitOk}
  1666. onCancel={this.visitCancel}
  1667. width="900px"
  1668. title="项目概况"
  1669. footer=""
  1670. className="admin-desc-content"
  1671. >
  1672. <div className="clearfix">
  1673. <FormItem
  1674. className="half-item"
  1675. {...formItemLayout}
  1676. label="当前项目情况"
  1677. >
  1678. <span>{this.state.status ? "暂停" : "开启"}</span>
  1679. <Button
  1680. type="primary"
  1681. size="small"
  1682. style={{ marginTop: "5px", position: "absolute" }}
  1683. onClick={this.caozuorizhi}
  1684. >
  1685. 操作日志
  1686. </Button>
  1687. </FormItem>
  1688. <FormItem
  1689. className="half-item"
  1690. {...formItemLayout}
  1691. label="合同编号"
  1692. >
  1693. <span>{this.state.contractNo}</span>
  1694. </FormItem>
  1695. </div>
  1696. <div className="clearfix">
  1697. <FormItem
  1698. className="half-item"
  1699. {...formItemLayout}
  1700. label="项目状态"
  1701. >
  1702. <span>{getProcessStatus(this.state.projectStatus)}</span>
  1703. </FormItem>
  1704. <FormItem
  1705. className="half-item"
  1706. {...formItemLayout}
  1707. label="是否特批"
  1708. >
  1709. <span>{getApproval(this.state.approval)}</span>
  1710. </FormItem>
  1711. <FormItem
  1712. className="half-item"
  1713. {...formItemLayout}
  1714. label="结算状态"
  1715. >
  1716. <span>
  1717. {getLiquidationStatus(this.state.liquidationStatus)}
  1718. </span>
  1719. </FormItem>
  1720. <FormItem
  1721. className="half-item"
  1722. {...formItemLayout}
  1723. label="流程状态"
  1724. >
  1725. <span>{getProcessStatus(this.state.processStatus)}</span>
  1726. </FormItem>
  1727. <FormItem
  1728. className="half-item"
  1729. {...formItemLayout}
  1730. label="订单编号"
  1731. >
  1732. <span>{this.state.orderNo}</span>
  1733. </FormItem>
  1734. </div>
  1735. <div className="clearfix">
  1736. <FormItem
  1737. className="half-item"
  1738. {...formItemLayout}
  1739. label="满意度表格"
  1740. >
  1741. <span>{utils.getSatisfaction(this.state.formRetrieve)}</span>
  1742. </FormItem>
  1743. <FormItem className="half-item" {...formItemLayout} label="退单">
  1744. <span>{utils.getChargeback(this.state.taskRefund)}</span>
  1745. </FormItem>
  1746. </div>
  1747. <div className="clearfix">
  1748. {
  1749. <FormItem
  1750. className="half-item"
  1751. {...formItemLayout}
  1752. label="(满意度)备注"
  1753. >
  1754. <span>{this.state.retrieveContent}</span>
  1755. </FormItem>
  1756. }
  1757. {
  1758. <FormItem
  1759. className="half-item"
  1760. {...formItemLayout}
  1761. label="(退单)备注"
  1762. >
  1763. <span>{this.state.refundContent}</span>
  1764. </FormItem>
  1765. }
  1766. </div>
  1767. <div className="clearfix">
  1768. <h3 className="sub-title">任务信息</h3>
  1769. <FormItem
  1770. className="half-item"
  1771. {...formItemLayout}
  1772. label="任务编号"
  1773. >
  1774. <span>{this.state.id}</span>
  1775. </FormItem>
  1776. <FormItem
  1777. className="half-item"
  1778. {...formItemLayout}
  1779. label="任务名称"
  1780. >
  1781. <span>{this.state.taskName}</span>
  1782. </FormItem>
  1783. <FormItem
  1784. className="half-item"
  1785. {...formItemLayout}
  1786. label="任务状态"
  1787. >
  1788. <span>{getTaskStatus(this.state.taskStatus)}</span>
  1789. </FormItem>
  1790. <FormItem
  1791. className="half-item"
  1792. {...formItemLayout}
  1793. label="任务类别"
  1794. >
  1795. <span>{this.state.cname}</span>
  1796. </FormItem>
  1797. <FormItem
  1798. className="half-item"
  1799. {...formItemLayout}
  1800. label="证书编号"
  1801. >
  1802. <span>{this.state.certificateNumber}</span>
  1803. </FormItem>
  1804. </div>
  1805. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1806. <div className="clearfix">
  1807. <h3 className="sub-title">联系信息</h3>
  1808. <FormItem
  1809. className="half-item"
  1810. {...formItemLayout}
  1811. label="客户名称"
  1812. >
  1813. <span>{this.state.userName}</span>
  1814. </FormItem>
  1815. <FormItem
  1816. className="half-item"
  1817. {...formItemLayout}
  1818. label="企业法人"
  1819. >
  1820. <span>{this.state.legalPerson}</span>
  1821. </FormItem>
  1822. <FormItem
  1823. className="half-item"
  1824. {...formItemLayout}
  1825. label="法人电话"
  1826. >
  1827. <span>{this.state.legalPersonTel}</span>
  1828. </FormItem>
  1829. <FormItem
  1830. className="half-item"
  1831. {...formItemLayout}
  1832. label="客户联系人"
  1833. >
  1834. <span>{this.state.contacts}</span>
  1835. </FormItem>
  1836. <FormItem
  1837. className="half-item"
  1838. {...formItemLayout}
  1839. label="联系人电话"
  1840. >
  1841. <span>{this.state.contactMobile}</span>
  1842. </FormItem>
  1843. <FormItem
  1844. className="half-item"
  1845. {...formItemLayout}
  1846. label="企业地址"
  1847. >
  1848. <span>
  1849. {getprovince(this.state.locationProvince)}/
  1850. {getprovince(this.state.locationCity)}/
  1851. {getprovince(this.state.locationArea)}
  1852. </span>
  1853. </FormItem>
  1854. <FormItem
  1855. className="half-item"
  1856. {...formItemLayout}
  1857. label=""
  1858. ></FormItem>
  1859. <FormItem className="half-item" {...formItemLayout} label="">
  1860. <span style={{ paddingLeft: "12em" }}>
  1861. {this.state.postalAddress}
  1862. </span>
  1863. </FormItem>
  1864. </div>
  1865. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1866. <div className="clearfix">
  1867. <h3 className="sub-title">订单负责人信息</h3>
  1868. <FormItem
  1869. className="half-item"
  1870. {...formItemLayout}
  1871. label="负责人"
  1872. >
  1873. <span>
  1874. {this.state.salesmanName + "(" + this.state.depName + ")"}
  1875. </span>
  1876. </FormItem>
  1877. <FormItem
  1878. className="half-item"
  1879. {...formItemLayout}
  1880. label="负责人电话"
  1881. >
  1882. <span>{this.state.salesmanMobile}</span>
  1883. </FormItem>
  1884. <FormItem
  1885. className="half-item"
  1886. {...formItemLayout}
  1887. label="财务负责人"
  1888. >
  1889. <span>{this.state.financeName}</span>
  1890. </FormItem>
  1891. <FormItem
  1892. className="half-item"
  1893. {...formItemLayout}
  1894. label="财务负责人电话"
  1895. >
  1896. <span>{this.state.financeMobile}</span>
  1897. </FormItem>
  1898. </div>
  1899. <div className="clearfix" style={{ marginTop: "10px" }}>
  1900. <FormItem
  1901. labelCol={{ span: 3 }}
  1902. wrapperCol={{ span: 18 }}
  1903. label="附件"
  1904. >
  1905. <Upload
  1906. className="demandDetailShow-upload"
  1907. listType="picture-card"
  1908. fileList={this.state.attachmentUrl}
  1909. onPreview={file => {
  1910. this.setState({
  1911. previewImage: file.url || file.thumbUrl,
  1912. previewVisible: true
  1913. });
  1914. }}
  1915. ></Upload>
  1916. <Modal
  1917. maskClosable={false}
  1918. footer={null}
  1919. visible={this.state.previewVisible}
  1920. onCancel={() => {
  1921. this.setState({ previewVisible: false });
  1922. }}
  1923. >
  1924. <img
  1925. alt=""
  1926. style={{ width: "100%" }}
  1927. src={this.state.previewImage || ""}
  1928. />
  1929. </Modal>
  1930. </FormItem>
  1931. </div>
  1932. <div className="clearfix">
  1933. <FormItem
  1934. labelCol={{ span: 3 }}
  1935. wrapperCol={{ span: 16 }}
  1936. label="备注"
  1937. >
  1938. <span>{this.state.taskComment}</span>
  1939. </FormItem>
  1940. </div>
  1941. <div className="clearfix">
  1942. <h3 className="sub-title">项目申报进度</h3>
  1943. <FormItem
  1944. className="half-item"
  1945. {...formItemLayout}
  1946. label="启动时间"
  1947. >
  1948. <span>{this.state.startDate}</span>
  1949. </FormItem>
  1950. <FormItem
  1951. className="half-item"
  1952. {...formItemLayout}
  1953. label="软著派单数量"
  1954. >
  1955. <span>{this.state.commodityQuantity}</span>
  1956. </FormItem>
  1957. <div className="patent-table patent-table-center">
  1958. <Spin spinning={this.state.loading}>
  1959. <Table
  1960. columns={this.state.ContactsLists}
  1961. dataSource={this.state.contactList}
  1962. bordered
  1963. size="small"
  1964. pagination={false}
  1965. />
  1966. </Spin>
  1967. </div>
  1968. </div>
  1969. <div className="clearfix">
  1970. <h3 className="sub-title">项目业务</h3>
  1971. <div className="patent-table">
  1972. <Spin spinning={this.state.loading}>
  1973. <Table
  1974. columns={this.state.columnsX}
  1975. dataSource={this.state.dataSourceX}
  1976. pagination={this.state.paginations}
  1977. onRowClick={this.tableRowClickX}
  1978. bordered
  1979. size="small"
  1980. />
  1981. </Spin>
  1982. </div>
  1983. </div>
  1984. </Modal>
  1985. <Modal
  1986. width="800px"
  1987. visible={this.state.visibleA}
  1988. onCancel={this.visitCancelA}
  1989. title="操作日志"
  1990. footer=""
  1991. className="admin-desc-content"
  1992. >
  1993. <div className="patent-table patent-table-center">
  1994. <Spin spinning={this.state.loading}>
  1995. <Table
  1996. columns={this.state.columnsA}
  1997. dataSource={this.state.dataSourceA}
  1998. bordered
  1999. size="small"
  2000. pagination={false}
  2001. />
  2002. </Spin>
  2003. </div>
  2004. </Modal>
  2005. </div>
  2006. );
  2007. }
  2008. })
  2009. );
  2010. export default MyTaskCount;