taskCount.jsx 68 KB

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