myTaskCount.jsx 73 KB

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