myTaskCount.jsx 62 KB

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