taskCount.jsx 70 KB

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