taskCount.jsx 71 KB

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