projectDetails.jsx 61 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781
  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: "receiverName",
  943. key: "receiverName",
  944. },
  945. {
  946. title: "负责人电话",
  947. dataIndex: "receiverMobile",
  948. key: "receiverMobile",
  949. },
  950. {
  951. title: "会员负责人",
  952. dataIndex: "projectMemberName",
  953. key: "projectMemberName",
  954. },
  955. {
  956. title: "项目状态",
  957. dataIndex: "projectStatus",
  958. key: "projectStatus",
  959. render: (text) => {
  960. return getProjectName(text);
  961. },
  962. },
  963. {
  964. title: "本次派单",
  965. dataIndex: "serviceYear",
  966. key: "serviceYear",
  967. },
  968. {
  969. title: "项目说明",
  970. dataIndex: "taskComment",
  971. key: "taskComment",
  972. render: (text) => {
  973. return (
  974. <Tooltip title={text}>
  975. <div
  976. >{text}</div>
  977. </Tooltip>
  978. )
  979. },
  980. },
  981. ];
  982. } else {
  983. columns = [
  984. {
  985. title: "子项目名称",
  986. dataIndex: "taskName",
  987. key: "taskName"
  988. },
  989. {
  990. title: "子项目数量",
  991. dataIndex: "commodityQuantity",
  992. key: "commodityQuantity"
  993. },
  994. {
  995. title: "拆分操作人",
  996. dataIndex: "splitAname",
  997. key: "splitAname"
  998. },
  999. {
  1000. title: "项目负责人",
  1001. dataIndex: "receiverName",
  1002. key: "receiverName"
  1003. },
  1004. {
  1005. title: "拆分时间",
  1006. dataIndex: "splitTimes",
  1007. key: "splitTimes"
  1008. }
  1009. ]
  1010. }
  1011. return (
  1012. <Table
  1013. columns={columns}
  1014. dataSource={data}
  1015. pagination={false}
  1016. />
  1017. );
  1018. } else {
  1019. columns = [];
  1020. return (
  1021. <p
  1022. style={{ fontWeight: "bold", color: "red", textAlign: "center" }}
  1023. >
  1024. {e.cSort == 6 ? "暂无派单" : "此项目暂未拆分"}
  1025. </p>
  1026. );
  1027. }
  1028. };
  1029. return (
  1030. this.props.visible ? <Modal
  1031. maskClosable={false}
  1032. className="customeDetails"
  1033. footer=""
  1034. title=""
  1035. width="1200px"
  1036. visible={this.props.visible}
  1037. onOk={() => {
  1038. this.props.visitOk && this.props.visitOk()
  1039. }}
  1040. onCancel={() => {
  1041. this.props.visitCancel && this.props.visitCancel();
  1042. }}
  1043. >
  1044. <Tabs activeKey={this.state.activeKey} onChange={this.orderChange} tabBarExtraContent={
  1045. <div style={{ fontWeight: 'bold', paddingRight: '15px' }}>
  1046. <OrderItemStatus deleteSign={this.state.deleteSign} />
  1047. </div>
  1048. }>
  1049. <TabPane tab="项目概况" key="1">
  1050. <Form
  1051. layout="horizontal"
  1052. id="demand-form"
  1053. style={{ paddingBottom: "0px" }}
  1054. >
  1055. <Spin spinning={this.state.loading}>
  1056. <div className="clearfix">
  1057. <div className="clearfix">
  1058. <FormItem
  1059. className="half-item"
  1060. {...formItemLayout}
  1061. label="项目状态"
  1062. >
  1063. <span>{getProjectName(parseInt(this.state.projectStatus))}</span>
  1064. <Button
  1065. type="primary"
  1066. size="small"
  1067. style={{ marginTop: "5px", position: "absolute" }}
  1068. onClick={this.caozuorizhi}
  1069. >
  1070. 操作日志
  1071. </Button>
  1072. {this.state.visibleA ? <Modal
  1073. maskClosable={false}
  1074. width="800px"
  1075. visible={this.state.visibleA}
  1076. onCancel={() => {
  1077. this.setState({
  1078. visibleA: false
  1079. })
  1080. }}
  1081. title="操作日志"
  1082. footer=""
  1083. className="admin-desc-content"
  1084. >
  1085. <div className="patent-table patent-table-center">
  1086. <Spin spinning={this.state.loading}>
  1087. <Table
  1088. columns={this.state.columnsA}
  1089. dataSource={this.state.dataSourceA}
  1090. pagination={false}
  1091. bordered
  1092. size="small"
  1093. />
  1094. </Spin>
  1095. </div>
  1096. </Modal> : null}
  1097. </FormItem>
  1098. <FormItem
  1099. className="half-item"
  1100. {...formItemLayout}
  1101. label="合同编号"
  1102. >
  1103. <span>{this.state.contractNo}</span>
  1104. </FormItem>
  1105. </div>
  1106. <div className="clearfix">
  1107. <FormItem
  1108. className="half-item"
  1109. {...formItemLayout}
  1110. label="是否特批"
  1111. >
  1112. <span>{getApproval(this.state.approval)}</span>
  1113. </FormItem>
  1114. <FormItem
  1115. className="half-item"
  1116. {...formItemLayout}
  1117. label="结算状态"
  1118. >
  1119. <span>
  1120. {getLiquidationStatus(this.state.liquidationStatus)}
  1121. </span>
  1122. </FormItem>
  1123. <FormItem
  1124. className="half-item"
  1125. {...formItemLayout}
  1126. label="流程状态"
  1127. >
  1128. <span>
  1129. {getProcessStatus(this.state.processStatus, this.state.examineName, this.state.approval)}
  1130. </span>
  1131. </FormItem>
  1132. <FormItem
  1133. className="half-item"
  1134. {...formItemLayout}
  1135. label="订单编号"
  1136. >
  1137. <span>{this.state.orderNo}</span>
  1138. </FormItem>
  1139. <FormItem
  1140. className="half-item"
  1141. {...formItemLayout}
  1142. label="是否外包"
  1143. >
  1144. <span>{this.state.outsource === 0 ? "否" : "是"}</span>
  1145. </FormItem>
  1146. </div>
  1147. <div className="clearfix">
  1148. <FormItem
  1149. labelCol={{ span: 3 }}
  1150. wrapperCol={{ span: 16 }}
  1151. label="满意度表格"
  1152. >
  1153. <div>
  1154. {getFormRetrieve(this.state.formRetrieve)}
  1155. {this.state.formRetrieve == 0 &&
  1156. <Button
  1157. type="primary"
  1158. size="small"
  1159. style={{ marginTop: "5px", marginLeft: '5px', }}
  1160. onClick={() => { this.updateSatisfactionDegree(1) }}
  1161. >已发送至客户</Button>}
  1162. {
  1163. (this.state.formRetrieve == 1 || this.state.formRetrieve == 2) &&
  1164. <div className="clearfix">
  1165. <FormItem
  1166. labelCol={{ span: 3 }}
  1167. wrapperCol={{ span: 16 }}
  1168. label="满意度调查整表"
  1169. >
  1170. <Picture
  1171. showRemove={false} //删除图标
  1172. domId={'table'}
  1173. fileList={(e) => {
  1174. this.setState({ satisfactionDegreeUrl: e })
  1175. }}
  1176. pictureUrl={this.state.satisfactionDegreeUrl}
  1177. visible={this.props.visible}
  1178. data={{
  1179. sign: 'satisfactionDegree',
  1180. url: '/api/admin/orderProject/upload/satisfactionDegree',
  1181. }}
  1182. />
  1183. </FormItem>
  1184. </div>
  1185. }
  1186. <p style={{ color: 'red' }}>
  1187. {
  1188. this.state.formRetrieve == 0
  1189. ? "注:满意度调查整表,已发送时,即可上传回复件了!"
  1190. : "注:回收表格后,即可上传回复件了"
  1191. }
  1192. </p>
  1193. {
  1194. (this.state.formRetrieve == 1 || this.state.formRetrieve == 2) &&
  1195. <div className="clearfix">
  1196. <FormItem
  1197. labelCol={{ span: 3 }}
  1198. wrapperCol={{ span: 16 }}
  1199. label="满意度"
  1200. >
  1201. <Radio.Group
  1202. value={this.state.satisfactionDegree}
  1203. onChange={(e) => {
  1204. this.setState({ satisfactionDegree: e.target.value })
  1205. }}
  1206. >
  1207. <Radio value={0}>非常满意</Radio>
  1208. <Radio value={1}>满意</Radio>
  1209. <Radio value={2}>一般</Radio>
  1210. <Radio value={3}>不满意</Radio>
  1211. </Radio.Group>
  1212. <div>
  1213. <Button type="primary" size="small"
  1214. onClick={() => {
  1215. this.updateSatisfactionDegree(2)
  1216. }}>保存并上传</Button>
  1217. </div>
  1218. </FormItem>
  1219. </div>
  1220. }
  1221. </div>
  1222. </FormItem>
  1223. </div>
  1224. {/*软著显示 bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
  1225. {this.state.bpType === 2 ? <div className="clearfix">
  1226. <FormItem
  1227. className="half-item"
  1228. {...formItemLayout}
  1229. label="加急天数"
  1230. >
  1231. {
  1232. this.state.urgentDay === 1 ? '是' :
  1233. this.state.urgentDay === 0 ? '否' : ''
  1234. }
  1235. </FormItem>
  1236. <FormItem
  1237. className="half-item"
  1238. {...formItemLayout}
  1239. label="有无方案"
  1240. >
  1241. {
  1242. this.state.ifMaterial === 1 ? '是' :
  1243. this.state.ifMaterial === 0 ? '否' : ''
  1244. }
  1245. </FormItem>
  1246. </div> : null}
  1247. <div className="clearfix">
  1248. <div style={{
  1249. paddingLeft: '8%',
  1250. }}>
  1251. <div style={{ color: '#000', fontWeight: 500 }}>
  1252. 特别说明
  1253. <span style={{ color: '#58a3ff', }}>(针对项目的特殊情况说明)</span>
  1254. </div>
  1255. <div style={{
  1256. display: 'flex',
  1257. }}>
  1258. <span style={{ paddingRight: '10px', whiteSpace: "nowrap" }}>备注:</span>
  1259. <span style={{
  1260. flex: 1,
  1261. wordBreak: 'break-all',
  1262. }}>{this.state.specialComment}</span>
  1263. </div>
  1264. </div>
  1265. </div>
  1266. <div className="clearfix">
  1267. <h3 className="sub-title">任务信息</h3>
  1268. {/*0通用 1专利 2软著 3审计 4双软 5高新 6商标*/}
  1269. {/*贯标需要显示*/}
  1270. {
  1271. this.state.isIso ?
  1272. <div>
  1273. <FormItem
  1274. className="half-item"
  1275. {...formItemLayout}
  1276. label="认证费"
  1277. >
  1278. <span>
  1279. {
  1280. this.state.ifCertificationFee === 1 ? '包含' : '不包含'
  1281. }
  1282. </span>
  1283. </FormItem>
  1284. {this.state.ifCertificationFee === 1 ? <FormItem
  1285. className="half-item"
  1286. {...formItemLayout}
  1287. label="认证费(万元)"
  1288. >
  1289. <span>
  1290. {
  1291. this.state.certificationFee
  1292. }
  1293. </span>
  1294. </FormItem> : null}
  1295. {this.state.ifCertificationFee === 1 ? <FormItem
  1296. className="half-item"
  1297. {...formItemLayout}
  1298. label=""
  1299. /> : null}
  1300. {this.state.ifCertificationFee === 1 ? <FormItem
  1301. className="half-item"
  1302. {...formItemLayout}
  1303. label="付款公司名称"
  1304. >
  1305. <span>
  1306. {this.state.certificationCorporate}
  1307. </span>
  1308. </FormItem> : null}
  1309. </div> : null
  1310. }
  1311. <FormItem
  1312. className="half-item"
  1313. {...formItemLayout}
  1314. label="任务编号"
  1315. >
  1316. <span>
  1317. {
  1318. this.state.splitStatus === 2
  1319. ? this.state.splitSuper + "-" + this.state.splitId
  1320. : this.state.id
  1321. }
  1322. </span>
  1323. </FormItem>
  1324. <FormItem
  1325. className="half-item"
  1326. {...formItemLayout}
  1327. label="任务名称"
  1328. >
  1329. <span>{this.state.taskName}</span>
  1330. </FormItem>
  1331. <FormItem
  1332. className="half-item"
  1333. {...formItemLayout}
  1334. label="任务状态"
  1335. >
  1336. <span>{getTaskStatus(this.state.taskStatus)}</span>
  1337. </FormItem>
  1338. <FormItem
  1339. className="half-item"
  1340. {...formItemLayout}
  1341. label="任务类别"
  1342. >
  1343. <span>{this.state.cname}</span>
  1344. </FormItem>
  1345. <FormItem
  1346. className="half-item"
  1347. {...formItemLayout}
  1348. label="证书编号"
  1349. >
  1350. <span>{this.state.certificateNumber}</span>
  1351. </FormItem>
  1352. </div>
  1353. <div className="clearfix">
  1354. <h3 className="sub-title">联系信息</h3>
  1355. <FormItem
  1356. className="half-item"
  1357. {...formItemLayout}
  1358. label="客户名称"
  1359. >
  1360. <span>{this.state.userName}</span>
  1361. <EnterpriseNameChange
  1362. type='journal'
  1363. style={{ marginLeft: 10 }}
  1364. enterpriseId={this.state.orderUid} />
  1365. </FormItem>
  1366. <FormItem
  1367. className="half-item"
  1368. {...formItemLayout}
  1369. label="企业法人"
  1370. >
  1371. <span>{this.state.legalPerson}</span>
  1372. </FormItem>
  1373. <FormItem
  1374. className="half-item"
  1375. {...formItemLayout}
  1376. label="法人电话"
  1377. >
  1378. <span>{this.state.legalPersonTel}</span>
  1379. </FormItem>
  1380. <FormItem
  1381. className="half-item"
  1382. {...formItemLayout}
  1383. label="客户联系人"
  1384. >
  1385. <span>{this.state.contacts}</span>
  1386. </FormItem>
  1387. <FormItem
  1388. className="half-item"
  1389. {...formItemLayout}
  1390. label="联系人电话"
  1391. >
  1392. <span>{this.state.contactMobile}</span>
  1393. </FormItem>
  1394. <FormItem
  1395. className="half-item"
  1396. {...formItemLayout}
  1397. label="企业地址"
  1398. >
  1399. <span>
  1400. {getprovince(this.state.locationProvince)}/
  1401. {getprovince(this.state.locationCity)}/
  1402. {getprovince(this.state.locationArea)}
  1403. </span>
  1404. </FormItem>
  1405. <FormItem
  1406. className="half-item"
  1407. {...formItemLayout}
  1408. label=""
  1409. />
  1410. <FormItem className="half-item" {...formItemLayout}>
  1411. <span style={{ paddingLeft: "12em" }}>
  1412. {this.state.postalAddress}
  1413. </span>
  1414. </FormItem>
  1415. </div>
  1416. <div className="clearfix">
  1417. <h3 className="sub-title">订单负责人信息</h3>
  1418. <FormItem
  1419. className="half-item"
  1420. {...formItemLayout}
  1421. label="负责人"
  1422. >
  1423. <span>
  1424. {this.state.salesmanName +
  1425. "(" +
  1426. this.state.depName +
  1427. ")"}
  1428. </span>
  1429. </FormItem>
  1430. <FormItem
  1431. className="half-item"
  1432. {...formItemLayout}
  1433. label="负责人电话"
  1434. >
  1435. <span>{this.state.salesmanMobile}</span>
  1436. </FormItem>
  1437. <FormItem
  1438. className="half-item"
  1439. {...formItemLayout}
  1440. label="当前财务负责人"
  1441. >
  1442. <span>{this.state.nowFinance}</span>
  1443. </FormItem>
  1444. <FormItem
  1445. className="half-item"
  1446. {...formItemLayout}
  1447. label="当前财务负责人电话"
  1448. >
  1449. <span>{this.state.nowFinanceMobile}</span>
  1450. </FormItem>
  1451. {!this.state.isSoftware ? <div>
  1452. <FormItem
  1453. className="half-item"
  1454. {...formItemLayout}
  1455. style={{ opacity: ".5" }}
  1456. label="原负责人"
  1457. >
  1458. <span>{this.state.oldSalesmanName}</span>
  1459. </FormItem>
  1460. <FormItem
  1461. className="half-item"
  1462. {...formItemLayout}
  1463. style={{ opacity: ".5" }}
  1464. label="原负责人电话"
  1465. >
  1466. <span>{this.state.oldSalesmanMobile}</span>
  1467. </FormItem>
  1468. <FormItem
  1469. className="half-item"
  1470. {...formItemLayout}
  1471. style={{ opacity: ".5" }}
  1472. label="实际财务操作人"
  1473. >
  1474. <span>{this.state.financeName}</span>
  1475. </FormItem>
  1476. <FormItem
  1477. className="half-item"
  1478. {...formItemLayout}
  1479. style={{ opacity: ".5" }}
  1480. label="实际财务操作人电话"
  1481. >
  1482. <span>{this.state.financeMobile}</span>
  1483. </FormItem>
  1484. </div> : null}
  1485. <FormItem
  1486. className="half-item"
  1487. {...formItemLayout}
  1488. label="订单留言"
  1489. >
  1490. <span>{this.state.orderRemarks}</span>
  1491. </FormItem>
  1492. <FormItem
  1493. className="half-item"
  1494. {...formItemLayout}
  1495. label=""
  1496. >
  1497. <Button onClick={this.getOrderLog}>查看订单日志</Button>
  1498. </FormItem>
  1499. <OrderRiZi
  1500. dataSourcerizhi={this.state.dataSourceY}
  1501. closeOrderLog={() => {
  1502. this.setState({
  1503. avisible: false
  1504. })
  1505. }}
  1506. visible={this.state.avisible}
  1507. loading={this.state.loading}
  1508. />
  1509. </div>
  1510. {!this.state.isSoftware ? <div className="clearfix">
  1511. <h3 className="sub-title">申报系统账户信息</h3>
  1512. <FormItem
  1513. className="half-item"
  1514. {...formItemLayout}
  1515. label="用户名"
  1516. >
  1517. <span>{this.state.declareUser}</span>
  1518. </FormItem>
  1519. <FormItem
  1520. className="half-item"
  1521. {...formItemLayout}
  1522. label="密码"
  1523. >
  1524. <span>{this.state.declarePwd}</span>
  1525. </FormItem>
  1526. </div> : null}
  1527. {this.state.isSoftware ?
  1528. <div className="clearfix">
  1529. <h3 className="sub-title">项目申报进度</h3>
  1530. <DeclarationProgress
  1531. timeRecordparse={this.state.timeRecordparse}
  1532. startDate={this.state.startDate}
  1533. taskDate={this.state.taskDate}
  1534. list={[
  1535. { id: 4, name: '完成时间', value: this.state.endDate },
  1536. { id: 6, name: '受理时间', value: this.state.acceptDate },
  1537. { id: 8, name: '公示时间', value: this.state.publicityDate },
  1538. { id: 10, name: '发证时间', value: this.state.licenceDate },
  1539. { id: 15, name: '立项金额', value: this.state.setUpAmount }
  1540. ]} />
  1541. {/*高新和科技项目显示 bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
  1542. {/*cSort: 3 科技项目 6: 会员*/}
  1543. {(this.state.bpType === 5 || this.state.cSort === 3) && <FormItem
  1544. className="half-item"
  1545. {...formItemLayout}
  1546. label="申报批次"
  1547. >
  1548. <span>{this.state.declarationBatch}</span>
  1549. </FormItem>}
  1550. <FormItem
  1551. className="half-item"
  1552. {...formItemLayout}
  1553. label="软著派单数量"
  1554. >
  1555. <span>{this.state.commodityQuantity}</span>
  1556. </FormItem>
  1557. <div className="patent-table patent-table-center">
  1558. <Spin spinning={this.state.loading}>
  1559. <Table
  1560. columns={this.state.ContactsLists}
  1561. dataSource={this.state.contactList}
  1562. pagination={false}
  1563. bordered
  1564. size="small"
  1565. />
  1566. </Spin>
  1567. </div>
  1568. </div> :
  1569. <div className="clearfix">
  1570. <h3 className="sub-title">项目申报进度</h3>
  1571. <DeclarationProgress
  1572. timeRecordparse={this.state.timeRecordparse}
  1573. startDate={this.state.startDate}
  1574. taskDate={this.state.taskDate}
  1575. list={[
  1576. { id: 4, name: '完成时间', value: this.state.endDate },
  1577. { id: 6, name: '受理时间', value: this.state.acceptDate },
  1578. { id: 8, name: '公示时间', value: this.state.publicityDate },
  1579. { id: 10, name: '发证时间', value: this.state.licenceDate },
  1580. { id: 15, name: '立项金额', value: this.state.setUpAmount }
  1581. ]} />
  1582. {
  1583. this.state.bpType === 1 || this.state.bpType === 6 ?
  1584. <div>
  1585. <FormItem
  1586. labelCol={{ span: 3 }}
  1587. wrapperCol={{ span: 16 }}
  1588. label="是否高新企业"
  1589. >
  1590. <span>
  1591. {
  1592. this.state.highTechStatus === 1 ? '是' :
  1593. this.state.highTechStatus === 0 ? '否' : ''
  1594. }
  1595. </span>
  1596. </FormItem>
  1597. <FormItem />
  1598. <PatentSchedule
  1599. readOnly
  1600. bpType={this.state.bpType}
  1601. taskId={this.state.id}
  1602. acceptCount={this.state.acceptCount}
  1603. certificatesCount={this.state.certificatesCount}
  1604. rejectCount={this.state.rejectCount}
  1605. commodityQuantity={this.state.commodityQuantity}
  1606. refresh={() => { this.xiangqing(this.state.id) }}
  1607. />
  1608. </div> :
  1609. <div>
  1610. {/*高新显示 bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
  1611. {this.state.bpType === 5 ? <FormItem
  1612. className="half-item"
  1613. {...formItemLayout}
  1614. label="是否抽查">
  1615. {
  1616. this.state.spotCheckStatus === 0 ? '否' :
  1617. this.state.spotCheckStatus === 1 ? '是,未通过' :
  1618. this.state.spotCheckStatus === 2 ? '是,通过' : ''
  1619. }
  1620. </FormItem> : null}
  1621. <FormItem />
  1622. {this.state.bpType === 5 ? <FormItem
  1623. className="half-item"
  1624. {...formItemLayout}
  1625. label="是否立项"
  1626. >
  1627. {
  1628. this.state.setUpStatus === 1 ? '是' :
  1629. this.state.setUpStatus === 0 ? '否' : ''
  1630. }
  1631. </FormItem> : null}
  1632. {this.state.bpType === 5 ? <FormItem
  1633. className="half-item"
  1634. {...formItemLayout}
  1635. label={this.state.setUpStatus === 1 ? "立项时间" : ''}
  1636. >
  1637. {this.state.setUpStatus === 1 ? this.state.setUpTime : null}
  1638. </FormItem> : null}
  1639. {/*高新和科技项目显示 bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
  1640. {/*cSort: 3 科技项目 6: 会员*/}
  1641. {(this.state.bpType === 5 || this.state.cSort === 3) && <FormItem
  1642. className="half-item"
  1643. {...formItemLayout}
  1644. label="申报批次"
  1645. >
  1646. <span>{this.state.declarationBatch}</span>
  1647. </FormItem>}
  1648. {/*只有科技项目才有是否到款*/}
  1649. {/*cSort: 3 科技项目 6: 会员*/}
  1650. {this.state.cSort === 3 && <FormItem
  1651. className="half-item"
  1652. {...formItemLayout}
  1653. label="是否到款"
  1654. >
  1655. <span>
  1656. {this.state.arrivalMoney ? "已到企业" : "未到企业"}
  1657. </span>
  1658. </FormItem>}
  1659. </div>
  1660. }
  1661. </div>}
  1662. {this.state.bpType !== 1 && this.state.bpType !== 6 ? <div className="clearfix">
  1663. <FormItem
  1664. labelCol={{ span: 3 }}
  1665. wrapperCol={{ span: 18 }}
  1666. label="附件"
  1667. >
  1668. {this.state.visible && this.state.attachmentUrl && this.state.activeKey === "1" ? <div style={{ paddingTop: '10px', paddingBottom: '10px' }}>
  1669. <ImgList fileList={this.state.attachmentUrl} domId={'taskQuery1'} />
  1670. </div> : null}
  1671. </FormItem>
  1672. </div> : null}
  1673. {this.state.bpType !== 1 && this.state.bpType !== 6 ? <div className="clearfix">
  1674. <FormItem
  1675. labelCol={{ span: 3 }}
  1676. wrapperCol={{ span: 16 }}
  1677. label="项目说明"
  1678. >
  1679. <span>{this.state.taskComment}</span>
  1680. </FormItem>
  1681. </div> : null}
  1682. <div>
  1683. <h3 className="sub-title">项目业务</h3>
  1684. {this.state.processStatus === 0 ? (
  1685. <Button
  1686. type="primary"
  1687. onClick={this.addDetailed}
  1688. style={{
  1689. float: "right",
  1690. marginRight: "50px",
  1691. marginBottom: "15px",
  1692. }}
  1693. >
  1694. 添加项目明细
  1695. </Button>
  1696. ) : null}
  1697. </div>
  1698. <div className="patent-table">
  1699. <Spin spinning={this.state.loading}>
  1700. <Table
  1701. columns={this.state.columnsX}
  1702. dataSource={this.state.dataSourceX}
  1703. pagination={this.state.paginations}
  1704. onRowClick={this.tableRowClickX}
  1705. expandedRowRender={expandedRowRenderVip}
  1706. rowClassName={this.addRowColor}
  1707. style={{
  1708. cursor: 'pointer',
  1709. }}
  1710. bordered
  1711. size="small"
  1712. />
  1713. </Spin>
  1714. </div>
  1715. </div>
  1716. </Spin>
  1717. </Form>
  1718. </TabPane>
  1719. {!this.props.isZxs || (this.state.isHuiyuan && this.props.isZxs) ? (
  1720. <TabPane tab="订单详情" key="2">
  1721. {this.state.activeKey === "2" ? <Spin spinning={this.state.loading}>
  1722. <OrderDetail
  1723. orderUid={this.state.orderUid}
  1724. orderData={this.state.orderData}
  1725. getOrderLog={this.getOrderLog}
  1726. dataSourceX={this.state.dataSourceX}
  1727. contactList={this.state.jiedian}
  1728. orderNo={this.state.orderNo}
  1729. totalCui={this.state.totalCui}
  1730. contactListNew={this.state.jiedianNew}
  1731. pictureUrl={this.state.contractPictureUrl}
  1732. />
  1733. </Spin> : null}
  1734. <OrderRiZi
  1735. dataSourcerizhi={this.state.dataSourceY}
  1736. closeOrderLog={() => {
  1737. this.setState({
  1738. avisible: false
  1739. })
  1740. }}
  1741. visible={this.state.avisible}
  1742. loading={this.state.loading}
  1743. />
  1744. </TabPane>
  1745. ) : null}
  1746. </Tabs>
  1747. </Modal> : null
  1748. );
  1749. }
  1750. }
  1751. export default ProjectDetails;