projectDetails.jsx 61 KB

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