membershipTable.jsx 48 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414
  1. import React, { Component } from "react";
  2. import {
  3. message,
  4. Input,
  5. Select,
  6. Button,
  7. Spin,
  8. Table,
  9. Tabs,
  10. DatePicker,
  11. AutoComplete,
  12. } from "antd";
  13. import $ from "jquery/src/ajax";
  14. import { ShowModal, } from '@/tools'
  15. import { projectState, publishStatus } from '@/dataDic.js'
  16. import moment from 'moment';
  17. import ShowModalDiv from '@/showModal.jsx';
  18. import './membershipTable.less'
  19. const { TabPane } = Tabs
  20. class MembershipTable extends Component {
  21. constructor(props) {
  22. super(props);
  23. this.state = {
  24. searchValues: {},
  25. loading: false,
  26. data: [
  27. {
  28. xh: '',
  29. kh: '自动',
  30. ht: '自动',
  31. fw: '自动',
  32. hy: '自动',
  33. year: '自动',
  34. yw: '手填',
  35. xm: '手填',
  36. js: '手填',
  37. cs: '手填',
  38. xssr: '手填',
  39. gxyffy: '手填',
  40. xssr1: '手填',
  41. gxyffy1: '手填',
  42. zgzs: '手填',
  43. kjry: '手填',
  44. zb: '自动',
  45. yflxs: '手填',
  46. ndyfze: '手填',
  47. ndxssryj: '手填',
  48. bnzb: '自动',
  49. threezb: '自动',
  50. sjzq: '勾选',
  51. ylxrd: '手填',
  52. wwxms: '手填',
  53. hzxm: '手填',
  54. ygjyff: '手填',
  55. yfysd: '自动',
  56. ndsjsr: '手填',
  57. bnyfzb: '自动',
  58. thyfzb: '自动',
  59. hjtj: '勾选',
  60. tjnb: '勾选',
  61. gqnb: '勾选',
  62. sfwc: '勾选',
  63. jkrds: '手填',
  64. zscqjkf: '手填',
  65. jkyff: '手填',
  66. yfzbjba: '勾选',
  67. iswc: '勾选',
  68. sqje: '手填',
  69. gsje: '手填',
  70. qt: '手填',
  71. jkbcjf: '勾选',
  72. jkgd: '勾选',
  73. gxbcjf: '勾选',
  74. gxgd: '勾选',
  75. gzjhhy: '勾选',
  76. jdxhb: '勾选',
  77. bzwcs: '手填',
  78. bzwcl: '自动',
  79. jkysb7: '勾选',
  80. jkysb10: '勾选',
  81. dnsbs: '手填',
  82. dnsqs: '手填',
  83. qyljsqs: '手填',
  84. dnsbs1: '手填',
  85. dnsqs1: '手填',
  86. qyljsqs1: '手填',
  87. dnsbs2: '手填',
  88. dnsqs2: '手填',
  89. qyljsqs2: '手填',
  90. jzbnm: '手填',
  91. Il: '手填',
  92. IIl: '手填',
  93. htyds: '手填',
  94. sjs: '手填',
  95. htyds1: '手填',
  96. sjs1: '手填',
  97. pxqi: '手填',
  98. zxjc: '手填',
  99. mnjc: '手填',
  100. other: '手填',
  101. cxnlpj: '手填',
  102. sjsbpc: '勾选',
  103. sfzdgz: '勾选',
  104. wstj: '勾选',
  105. zztj: '勾选',
  106. gsxh: '勾选',
  107. gqbh: '勾选',
  108. time: '自动',
  109. }
  110. ],
  111. newData: [],
  112. columns: [
  113. {
  114. title: <div className="color0">序号</div>,
  115. dataIndex: 'xh',
  116. key: 'xh',
  117. width: 44,
  118. fixed: 'left',
  119. render: (text, record, index) => {
  120. return (
  121. <span>{index + 1}</span>
  122. )
  123. }
  124. },
  125. {
  126. title: <div className="color1">会员客户基本信息</div>,
  127. children: [
  128. {
  129. title: <div className="color1">派单信息</div>,
  130. children: [
  131. {
  132. title: <div className="color1">客户名称</div>,
  133. dataIndex: 'userName',
  134. key: 'userName',
  135. width: 140,
  136. },
  137. {
  138. title: <div className="color3">合同编号</div>,
  139. dataIndex: 'contractNo',
  140. key: 'contractNo',
  141. width: 110,
  142. },
  143. {
  144. title: <div className="color1">服务内容</div>,
  145. dataIndex: 'taskList',
  146. key: 'taskList',
  147. width: 140,
  148. render: (text, record) => {
  149. return (
  150. <div>
  151. {
  152. !!text && text.map(item =>
  153. <div key={item.id}>{item.taskName}</div>
  154. )
  155. }
  156. </div>
  157. )
  158. }
  159. },
  160. {
  161. title: <div className="color1">服务年份</div>,
  162. dataIndex: 'serviceYear',
  163. key: 'serviceYear',
  164. width: 80,
  165. },
  166. {
  167. title: <div className="color1">会员级别</div>,
  168. dataIndex: 'memberLvl',
  169. key: 'memberLvl',
  170. width: 44,
  171. },
  172. ],
  173. },
  174. {
  175. title: <div className="color1">服务团队</div>,
  176. children: [
  177. {
  178. title: <div className="color3">业务负责人</div>,
  179. dataIndex: 'taskName',
  180. key: 'taskName',
  181. width: 80,
  182. },
  183. {
  184. title: <div className="color3">项目负责人</div>,
  185. dataIndex: 'projectName',
  186. key: 'projectName',
  187. width: 80,
  188. },
  189. {
  190. title: <div className="color3">技术咨询师</div>,
  191. dataIndex: 'technologyName',
  192. key: 'technologyName',
  193. width: 80,
  194. },
  195. {
  196. title: <div className="color3">财税咨询师</div>,
  197. dataIndex: 'financeTaxationName',
  198. key: 'financeTaxationName',
  199. width: 80,
  200. },
  201. ],
  202. },
  203. {
  204. title: <div className="color3">基础数据</div>,
  205. children: [
  206. {
  207. title: <div className="color1">上上年度</div>,
  208. children: [
  209. {
  210. title: <div className="color1">销售收入</div>,
  211. dataIndex: 'beforeLastRdSalesAmount',
  212. key: 'beforeLastRdSalesAmount',
  213. width: 44,
  214. },
  215. {
  216. title: <div className="color1">高新研发费用</div>,
  217. dataIndex: 'beforeLastRdBudget',
  218. key: 'beforeLastRdBudget',
  219. width: 44,
  220. }
  221. ],
  222. },
  223. {
  224. title: <div className="color1">上年度</div>,
  225. children: [
  226. {
  227. title: <div className="color1">销售收入</div>,
  228. dataIndex: 'lastRdSalesAmount',
  229. key: 'lastRdSalesAmount',
  230. width: 44,
  231. },
  232. {
  233. title: <div className="color1">高新研发费用</div>,
  234. dataIndex: 'lastRdBudget',
  235. key: 'lastRdBudget',
  236. width: 44,
  237. }
  238. ],
  239. },
  240. {
  241. title: <div className="color1">本年度企业人员情况</div>,
  242. children: [
  243. {
  244. title: <div className="color3">职工总数</div>,
  245. dataIndex: 'workersNumber',
  246. key: 'workersNumber',
  247. width: 44,
  248. },
  249. {
  250. title: <div className="color3">科技人员</div>,
  251. dataIndex: 'technologyNumber',
  252. key: 'technologyNumber',
  253. width: 44,
  254. },
  255. {
  256. title: <div className="color1">占比</div>,
  257. dataIndex: 'workersRate',
  258. key: 'workersRate',
  259. width: 60,
  260. render: (text, record) => {
  261. return (
  262. <span>{text || 0}%</span>
  263. )
  264. }
  265. }
  266. ],
  267. },
  268. ],
  269. }
  270. ],
  271. },
  272. {
  273. title: <div className="color2">&nbsp;</div>,
  274. children: [
  275. {
  276. title: <div className="color2">&nbsp;</div>,
  277. children: [
  278. {
  279. title: <div className="color2">科研立项与研发投入</div>,
  280. children: [
  281. {
  282. title: <div className="color3">研发立项数量</div>,
  283. dataIndex: 'projectApprovalNumber',
  284. key: 'projectApprovalNumber',
  285. width: 44,
  286. },
  287. {
  288. title: <div className="color3">年度研发预算总额</div>,
  289. dataIndex: 'rdBudget',
  290. key: 'rdBudget',
  291. width: 44,
  292. },
  293. {
  294. title: <div className="color3">年度销售收入预计</div>,
  295. dataIndex: 'rdSalesAmount',
  296. key: 'rdSalesAmount',
  297. width: 44,
  298. },
  299. {
  300. title: <div className="color3">本年度研发费用预算占比</div>,
  301. dataIndex: 'rdBudgetRate',
  302. key: 'rdBudgetRate',
  303. width: 60,
  304. render: (text, record) => {
  305. return (
  306. <span>{text || 0}%</span>
  307. )
  308. }
  309. },
  310. {
  311. title: <div className="color3">三年研发费用占比预估</div>,
  312. dataIndex: 'threeYearsRdBudgetRate',
  313. key: 'threeYearsRdBudgetRate',
  314. width: 60,
  315. render: (text, record) => {
  316. return (
  317. <span>{text || 0}%</span>
  318. )
  319. }
  320. },
  321. ]
  322. },
  323. {
  324. title: <div className="color2">实时实际情况</div>,
  325. children: [
  326. {
  327. title: <div className="color3">数据周期</div>,
  328. dataIndex: 'dataCycle',
  329. key: 'dataCycle',
  330. width: 70,
  331. render: (text, record) => {
  332. return (
  333. <span>{['第1季度', '上半年', '前3季度', '全年'][text]}</span>
  334. )
  335. }
  336. },
  337. {
  338. title: <div className="color3">已立项RD数量</div>,
  339. dataIndex: 'actualRdNumber',
  340. key: 'actualRdNumber',
  341. width: 44,
  342. },
  343. {
  344. title: <div className="color3">委外项目数量</div>,
  345. dataIndex: 'actualOutsourcingNumber',
  346. key: 'actualOutsourcingNumber',
  347. width: 44,
  348. },
  349. {
  350. title: <div className="color3">合作项目数量</div>,
  351. dataIndex: 'actualCooperateNumber',
  352. key: 'actualCooperateNumber',
  353. width: 44,
  354. },
  355. {
  356. title: <div className="color3">已归集研发费用总额</div>,
  357. dataIndex: 'actualRdAmount',
  358. key: 'actualRdAmount',
  359. width: 44,
  360. },
  361. {
  362. title: <div className="color3">研发预算完成度</div>,
  363. dataIndex: 'rdCompletionProgress',
  364. key: 'rdCompletionProgress',
  365. width: 44,
  366. },
  367. {
  368. title: <div className="color3">年度实际销售收入</div>,
  369. dataIndex: 'actualSalesAmount',
  370. key: 'actualSalesAmount',
  371. width: 44,
  372. },
  373. {
  374. title: <div className="color3">本年度研发费用占比</div>,
  375. dataIndex: 'actualRdRate',
  376. key: 'actualRdRate',
  377. width: 60,
  378. render: (text, record) => {
  379. return (
  380. <span>{text || 0}%</span>
  381. )
  382. }
  383. },
  384. {
  385. title: <div className="color3">三年研发费用占比</div>,
  386. dataIndex: 'threeYearsActualRdRate',
  387. key: 'threeYearsActualRdRate',
  388. width: 60,
  389. render: (text, record) => {
  390. return (
  391. <span>{text || 0}%</span>
  392. )
  393. }
  394. },
  395. ]
  396. },
  397. ]
  398. },
  399. {
  400. title: <div className="color2">报表报送</div>,
  401. children: [
  402. {
  403. title: <div className="color2">火炬统计</div>,
  404. dataIndex: 'torchStatus',
  405. key: 'torchStatus',
  406. width: 60,
  407. render: (text, record) => {
  408. return (
  409. <span>{this.getTypeData(text, record.torchOther)}</span>
  410. )
  411. }
  412. },
  413. {
  414. title: <div className="color2">统计年报</div>,
  415. dataIndex: 'statisticsStatus',
  416. key: 'statisticsStatus',
  417. width: 60,
  418. render: (text, record) => {
  419. return (
  420. <span>{this.getTypeData(text, record.statisticsOther)}</span>
  421. )
  422. }
  423. },
  424. {
  425. title: <div className="color2">高企年报</div>,
  426. dataIndex: 'chStatus',
  427. key: 'chStatus',
  428. width: 60,
  429. render: (text, record) => {
  430. return (
  431. <span>{this.getTypeData(text, record.chOther)}</span>
  432. )
  433. }
  434. },
  435. {
  436. title: <div className="color2">汇算清缴</div>,
  437. children: [
  438. {
  439. title: <div className="color2">是否完成</div>,
  440. dataIndex: 'finalSettlementStatus',
  441. key: 'finalSettlementStatus',
  442. width: 60,
  443. render: (text, record) => {
  444. return (
  445. <span>{this.getTypeData(text, record.finalSettlementOther)}</span>
  446. )
  447. }
  448. },
  449. {
  450. title: <div className="color3">加扣RD数量</div>,
  451. dataIndex: 'reportFormsRdNumber',
  452. key: 'reportFormsRdNumber',
  453. width: 44,
  454. },
  455. {
  456. title: <div className="color3">知识产权加扣费用</div>,
  457. dataIndex: 'intellectualPropertyAmount',
  458. key: 'intellectualPropertyAmount',
  459. width: 44,
  460. },
  461. {
  462. title: <div className="color3">加扣研发费用金额</div>,
  463. dataIndex: 'reportRdAmount',
  464. key: 'reportRdAmount',
  465. width: 44,
  466. },
  467. ]
  468. },
  469. ]
  470. },
  471. {
  472. title: <div className="color2">研发奖补</div>,
  473. children: [
  474. {
  475. title: <div className="color2">研发准备金备案</div>,
  476. dataIndex: 'rdReservesStatus',
  477. key: 'rdReservesStatus',
  478. width: 60,
  479. render: (text, record) => {
  480. return (
  481. <span>{this.getTypeData(text, record.rdReservesOther)}</span>
  482. )
  483. }
  484. },
  485. {
  486. title: <div className="color2">研发奖补申请</div>,
  487. children: [
  488. {
  489. title: <div className="color2">是否完成</div>,
  490. dataIndex: 'rdAwardCompensationStatus',
  491. key: 'rdAwardCompensationStatus',
  492. width: 60,
  493. render: (text, record) => {
  494. return (
  495. <span>{this.getTypeData(text, record.rdAwardCompensationOther)}</span>
  496. )
  497. }
  498. },
  499. {
  500. title: <div className="color3">申请金额</div>,
  501. dataIndex: 'rdApplicationFee',
  502. key: 'rdApplicationFee',
  503. width: 44,
  504. },
  505. {
  506. title: <div className="color3">公示金额</div>,
  507. dataIndex: 'rdAnnouncementAmount',
  508. key: 'rdAnnouncementAmount',
  509. width: 44,
  510. },
  511. {
  512. title: <div className="color3">其他</div>,
  513. dataIndex: 'rdAnnouncementOther',
  514. key: 'rdAnnouncementOther',
  515. width: 44,
  516. },
  517. ]
  518. },
  519. ]
  520. },
  521. {
  522. title: <div className="color3">备查交付与归档</div>,
  523. children: [
  524. {
  525. title: <div className="color2">加扣备查交付</div>,
  526. dataIndex: 'adDeliverStatus',
  527. key: 'adDeliverStatus',
  528. width: 60,
  529. render: (text, record) => {
  530. return (
  531. <span>{this.getTypeData(text, record.adDeliverOther)}</span>
  532. )
  533. }
  534. },
  535. {
  536. title: <div className="color2">加扣是否归档</div>,
  537. dataIndex: 'adDeliverFinish',
  538. key: 'adDeliverFinish',
  539. width: 60,
  540. render: (text, record) => {
  541. return (
  542. <span>{['未归档', '已归档'][text]}</span>
  543. )
  544. }
  545. },
  546. {
  547. title: <div className="color2">高新备查交付</div>,
  548. dataIndex: 'htDeliverStatus',
  549. key: 'htDeliverStatus',
  550. width: 60,
  551. render: (text, record) => {
  552. return (
  553. <span>{this.getTypeData(text, record.htDeliverOther)}</span>
  554. )
  555. }
  556. },
  557. {
  558. title: <div className="color2">高新是否归档</div>,
  559. dataIndex: 'htDeliverFinish',
  560. key: 'htDeliverFinish',
  561. width: 60,
  562. render: (text, record) => {
  563. return (
  564. <span>{['未归档', '已归档'][text]}</span>
  565. )
  566. }
  567. },
  568. ]
  569. },
  570. {
  571. title: <div className="color2">日常工作</div>,
  572. children: [
  573. {
  574. title: <div className="color3">召开上年度总结及本年工作计划会议</div>,
  575. dataIndex: 'closeMeetingStatus',
  576. key: 'closeMeetingStatus',
  577. width: 60,
  578. render: (text, record) => {
  579. return (
  580. <span>{this.getTypeData(text, record.closeMeetingOther)}</span>
  581. )
  582. }
  583. },
  584. {
  585. title: <div className="color3">阶段性汇报</div>,
  586. dataIndex: 'phasedType',
  587. key: 'phasedType',
  588. width: 44,
  589. render: (text, record) => {
  590. return (
  591. <span>{['', '月度', '季度'][text]}</span>
  592. )
  593. }
  594. },
  595. {
  596. title: <div className="color2">立项资料编制</div>,
  597. children: [
  598. {
  599. title: <div className="color2">完成数量</div>,
  600. dataIndex: 'projectApprovalWriteNumber',
  601. key: 'projectApprovalWriteNumber',
  602. width: 44,
  603. },
  604. {
  605. title: <div className="color2">完成率</div>,
  606. dataIndex: 'projectApprovalWriteRate',
  607. key: 'projectApprovalWriteRate',
  608. width: 60,
  609. render: (text, record) => {
  610. return (
  611. <span>{text || 0}%</span>
  612. )
  613. }
  614. },
  615. ]
  616. },
  617. {
  618. title: <div className="color2">加扣预申报</div>,
  619. children: [
  620. {
  621. title: <div className="color2">7月</div>,
  622. dataIndex: 'adPrepareJulyStatus',
  623. key: 'adPrepareJulyStatus',
  624. width: 60,
  625. render: (text, record) => {
  626. return (
  627. <span>{this.getTypeData(text, record.adPrepareJulyOther)}</span>
  628. )
  629. }
  630. },
  631. {
  632. title: <div className="color2">10月</div>,
  633. dataIndex: 'adPrepareOctoberStatus',
  634. key: 'adPrepareOctoberStatus',
  635. width: 60,
  636. render: (text, record) => {
  637. return (
  638. <span>{this.getTypeData(text, record.adPrepareOctoberOther)}</span>
  639. )
  640. }
  641. },
  642. ]
  643. },
  644. {
  645. title: <div className="color2">知识产权情况</div>,
  646. children: [
  647. {
  648. title: <div className="color3">发明专利</div>,
  649. children: [
  650. {
  651. title: <div className="color3">当年申报数量</div>,
  652. dataIndex: 'ipInventionPatentDeclare',
  653. key: 'ipInventionPatentDeclare',
  654. width: 44,
  655. },
  656. {
  657. title: <div className="color3">当年授权数量</div>,
  658. dataIndex: 'ipInventionPatentAuthorize',
  659. key: 'ipInventionPatentAuthorize',
  660. width: 44,
  661. },
  662. {
  663. title: <div className="color3">企业累计授权数量</div>,
  664. dataIndex: 'ipInventionPatentAuthorizeCount',
  665. key: 'ipInventionPatentAuthorizeCount',
  666. width: 44,
  667. },
  668. ]
  669. },
  670. {
  671. title: <div className="color3">实用新型专利</div>,
  672. children: [
  673. {
  674. title: <div className="color3">当年申报数量</div>,
  675. dataIndex: 'ipUtilityModelDeclare',
  676. key: 'ipUtilityModelDeclare',
  677. width: 44,
  678. },
  679. {
  680. title: <div className="color3">当年授权数量</div>,
  681. dataIndex: 'ipUtilityModelAuthorize',
  682. key: 'ipUtilityModelAuthorize',
  683. width: 44,
  684. },
  685. {
  686. title: <div className="color3">企业累计授权数量</div>,
  687. dataIndex: 'ipUtilityModelAuthorizeCount',
  688. key: 'ipUtilityModelAuthorizeCount',
  689. width: 44,
  690. },
  691. ]
  692. },
  693. {
  694. title: <div className="color3">软著</div>,
  695. children: [
  696. {
  697. title: <div className="color3">当年申报数量</div>,
  698. dataIndex: 'ipSoftwareWorksDeclare',
  699. key: 'ipSoftwareWorksDeclare',
  700. width: 44,
  701. },
  702. {
  703. title: <div className="color3">当年授权数量</div>,
  704. dataIndex: 'ipSoftwareWorksAuthorize',
  705. key: 'ipSoftwareWorksAuthorize',
  706. width: 44,
  707. },
  708. {
  709. title: <div className="color3">企业累计授权数量</div>,
  710. dataIndex: 'ipSoftwareWorksAuthorizeCount',
  711. key: 'ipSoftwareWorksAuthorizeCount',
  712. width: 44,
  713. },
  714. {
  715. title: <div className="color3">截止本年末可用于下次高新认定数量</div>,
  716. dataIndex: 'ipHt',
  717. key: 'ipHt',
  718. width: 44,
  719. },
  720. {
  721. title: <div className="color3">I类数量</div>,
  722. dataIndex: 'ipHtI',
  723. key: 'ipHtI',
  724. width: 44,
  725. },
  726. {
  727. title: <div className="color3">II类数量</div>,
  728. dataIndex: 'ipHtIi',
  729. key: 'ipHtIi',
  730. width: 44,
  731. },
  732. ]
  733. },
  734. ]
  735. },
  736. {
  737. title: <div className="color2">公出指标(本年度)</div>,
  738. children: [
  739. {
  740. title: <div className="color2">合同约定次数</div>,
  741. dataIndex: 'publicReleaseStipulation',
  742. key: 'publicReleaseStipulation',
  743. width: 44,
  744. },
  745. {
  746. title: <div className="color2">实际次数</div>,
  747. dataIndex: 'publicReleaseActual',
  748. key: 'publicReleaseActual',
  749. width: 44,
  750. },
  751. ]
  752. },
  753. {
  754. title: <div className="color2">培训指标(本年度)</div>,
  755. children: [
  756. {
  757. title: <div className="color2">合同约定次数</div>,
  758. dataIndex: 'trainingStipulation',
  759. key: 'trainingStipulation',
  760. width: 44,
  761. },
  762. {
  763. title: <div className="color2">实际次数</div>,
  764. dataIndex: 'trainingActual',
  765. key: 'trainingActual',
  766. width: 44,
  767. },
  768. {
  769. title: <div className="color2">其他</div>,
  770. dataIndex: 'trainingOther',
  771. key: 'trainingOther',
  772. width: 44,
  773. },
  774. ]
  775. },
  776. ]
  777. },
  778. {
  779. title: <div className="color2">特色工作</div>,
  780. children: [
  781. {
  782. title: <div className="color2">专项检查</div>,
  783. children: [
  784. {
  785. title: <div className="color2">专项检查</div>,
  786. dataIndex: 'zxjc',
  787. key: 'zxjc',
  788. width: 44,
  789. }
  790. ]
  791. },
  792. {
  793. title: <div className="color2">模拟稽查</div>,
  794. children: [
  795. {
  796. title: <div className="color2">模拟稽查</div>,
  797. dataIndex: 'mnjc',
  798. key: 'mnjc',
  799. width: 44,
  800. }
  801. ]
  802. },
  803. ]
  804. },
  805. {
  806. title: <div className="color2">其他事项说明</div>,
  807. dataIndex: 'other',
  808. key: 'other',
  809. width: 90,
  810. },
  811. ]
  812. },
  813. {
  814. title: <div className="color5">高新认定</div>,
  815. dataIndex: 'gxrd',
  816. key: 'gxrd',
  817. children: [
  818. {
  819. title: <div className="color3">基础情况</div>,
  820. children: [
  821. {
  822. title: <div className="color3">创新能力评价评分</div>,
  823. dataIndex: 'htScore',
  824. key: 'htScore',
  825. width: 44,
  826. },
  827. {
  828. title: <div className="color3">实际申报批次</div>,
  829. dataIndex: 'htBatch',
  830. key: 'htBatch',
  831. width: 60,
  832. render: (text, record) => {
  833. return (
  834. <span>{['第1批', '第2批', '第3批'][text]}</span>
  835. )
  836. }
  837. },
  838. {
  839. title: <div className="color3">是否重点关注</div>,
  840. dataIndex: 'htFocus',
  841. key: 'htFocus',
  842. width: 44,
  843. render: (text, record) => {
  844. return (
  845. <span>{['否', '是'][text]}</span>
  846. )
  847. }
  848. },
  849. ],
  850. },
  851. {
  852. title: <div className="color3">申报提交</div>,
  853. children: [
  854. {
  855. title: <div className="color3">网上系统提交</div>,
  856. dataIndex: 'webSubmit',
  857. key: 'webSubmit',
  858. width: 60,
  859. render: (text, record) => {
  860. return (
  861. <span>{this.getTypeData(text, record.webSubmitOther)}</span>
  862. )
  863. }
  864. },
  865. {
  866. title: <div className="color3">纸质材料提交</div>,
  867. dataIndex: 'paperSubmit',
  868. key: 'paperSubmit',
  869. width: 60,
  870. render: (text, record) => {
  871. return (
  872. <span>{this.getTypeData(text, record.paperSubmitOther)}</span>
  873. )
  874. }
  875. },
  876. ],
  877. },
  878. {
  879. title: <div className="color3">评审情况</div>,
  880. children: [
  881. {
  882. title: <div className="color3">审计评审</div>,
  883. // reviewProvince
  884. children: [{
  885. title: <div className="color3">拟公示序号</div>,
  886. dataIndex: 'reviewProvinceNumber',
  887. key: 'reviewProvinceNumber',
  888. width: 44,
  889. }],
  890. },
  891. {
  892. title: <div className="color3">国家备案</div>,
  893. // reviewCountry
  894. children: [{
  895. title: <div className="color3">高企编号</div>,
  896. dataIndex: 'reviewCountryNumber',
  897. key: 'reviewCountryNumber',
  898. width: 44,
  899. }],
  900. },
  901. ],
  902. },
  903. ]
  904. },
  905. {
  906. title: <div className="color4">最近一次更新时间</div>,
  907. dataIndex: 'updateTime',
  908. key: 'updateTime',
  909. width: 80,
  910. },
  911. ],
  912. pagination: {
  913. defaultCurrent: 1,
  914. defaultPageSize: 10,
  915. showQuickJumper: true,
  916. pageSize: 10,
  917. onChange: function (page) {
  918. this.getDetailsList(page);
  919. }.bind(this),
  920. showTotal: function (total) {
  921. return "共" + total + "条数据";
  922. },
  923. },
  924. customerArr: [],
  925. }
  926. this.exportExec = this.exportExec.bind(this);
  927. this.search = this.search.bind(this);
  928. this.reset = this.reset.bind(this);
  929. this.supervisor = this.supervisor.bind(this);
  930. this.httpChange = this.httpChange.bind(this);
  931. this.blurChange = this.blurChange.bind(this);
  932. this.selectAuto = this.selectAuto.bind(this);
  933. }
  934. componentDidMount() {
  935. this.getDetailsList()
  936. }
  937. getDetailsList(pageNo) {
  938. const { searchValues, pagination } = this.state;
  939. this.setState({
  940. loading: true,
  941. })
  942. let datas = Object.assign(searchValues, {
  943. pageNo: pageNo || 1,
  944. pageSize: pagination.pageSize,
  945. });
  946. $.ajax({
  947. method: 'get',
  948. dataType: 'json',
  949. crossDomain: false,
  950. url: globalConfig.context + '/api/admin/taskDetails/detailsList',
  951. data: datas,
  952. success: function (data) {
  953. ShowModal(this)
  954. if (data.data.list) {
  955. pagination.current = data.data.pageNo;
  956. pagination.total = data.data.totalCount;
  957. if (data.data && data.data.list && !data.data.list.length) {
  958. pagination.current = 0;
  959. pagination.total = 0;
  960. }
  961. this.setState({
  962. newData: data.data.list,
  963. pagination: this.state.pagination,
  964. pageNo: data.data.pageNo,
  965. });
  966. } else {
  967. this.setState({
  968. newData: data.data,
  969. pagination: false,
  970. });
  971. }
  972. }.bind(this),
  973. }).always(
  974. function () {
  975. this.setState({
  976. loading: false,
  977. })
  978. }.bind(this)
  979. )
  980. }
  981. exportExec() {
  982. message.config({
  983. duration: 20,
  984. });
  985. let loading = message.loading("下载中...");
  986. this.setState({
  987. exportPendingLoading: true,
  988. });
  989. $.ajax({
  990. method: "get",
  991. dataType: "json",
  992. crossDomain: false,
  993. url: globalConfig.context + '/api/admin/taskDetails/export',
  994. data: {},
  995. success: function (data) {
  996. if (data.error.length === 0) {
  997. this.download(data.data);
  998. } else {
  999. message.warning(data.error[0].message);
  1000. }
  1001. }.bind(this),
  1002. }).always(
  1003. function () {
  1004. loading();
  1005. this.setState({
  1006. exportPendingLoading: false,
  1007. });
  1008. }.bind(this)
  1009. );
  1010. }
  1011. download(fileName) {
  1012. window.location.href =
  1013. globalConfig.context + "/open/download?fileName=" + fileName;
  1014. }
  1015. getTypeData(type, other) {
  1016. let text = ''
  1017. let list = ['其他', '待完成', '已完成', '合同无此项']
  1018. if (!type && type != 0) {
  1019. text = ''
  1020. } else if (type == 0) {
  1021. text = `其他(${other})`
  1022. } else {
  1023. text = list[type]
  1024. }
  1025. return text
  1026. }
  1027. supervisor(e) {
  1028. $.ajax({
  1029. method: "get",
  1030. dataType: "json",
  1031. crossDomain: false,
  1032. url: globalConfig.context + "/api/admin/customer/listAdminByName",
  1033. data: {
  1034. adminName: e,
  1035. },
  1036. success: function (data) {
  1037. let thedata = data.data;
  1038. if (!thedata) {
  1039. if (data.error && data.error.length) {
  1040. message.warning(data.error[0].message);
  1041. }
  1042. thedata = {};
  1043. }
  1044. this.setState({
  1045. customerArr: thedata,
  1046. });
  1047. }.bind(this),
  1048. }).always(
  1049. function () {
  1050. }.bind(this)
  1051. );
  1052. }
  1053. // 输入触发
  1054. httpChange(e) {
  1055. if (e.length >= 1) {
  1056. this.supervisor(e);
  1057. }
  1058. this.setState({
  1059. auto: e,
  1060. });
  1061. }
  1062. // 选中
  1063. selectAuto(value, options) {
  1064. const { searchValues } = this.state
  1065. let contactLists = this.state.customerArr || [];
  1066. if (value) {
  1067. contactLists.map(function (item) {
  1068. if (item.name == value.toString()) {
  1069. searchValues["projectDebtorId"] = item.id;
  1070. }
  1071. });
  1072. }
  1073. this.setState({
  1074. auto: value,
  1075. searchValues: searchValues,
  1076. });
  1077. }
  1078. // 失去焦点
  1079. blurChange(e) {
  1080. const { searchValues } = this.state
  1081. let contactLists = this.state.customerArr || [];
  1082. if (e) {
  1083. contactLists.map(function (item) {
  1084. if (item.name == e.toString()) {
  1085. searchValues["projectDebtorId"] = item.id;
  1086. }
  1087. });
  1088. }
  1089. this.setState({
  1090. searchValues: searchValues,
  1091. });
  1092. }
  1093. search() {
  1094. this.getDetailsList();
  1095. }
  1096. reset() {
  1097. this.setState({
  1098. searchValues: {}
  1099. })
  1100. this.getDetailsList(1)
  1101. }
  1102. render() {
  1103. const { columns, data, searchValues, newData } = this.state
  1104. const dataSources = this.state.customerArr || [];
  1105. const options = dataSources.map((group) => (
  1106. <Select.Option key={group.id} value={group.name}>
  1107. {group.name}
  1108. </Select.Option>
  1109. ));
  1110. return (
  1111. <div className="user-content membershipTable">
  1112. <ShowModalDiv ShowModal={this.state.showModal} onClose={() => { this.setState({ showModal: false }) }} />
  1113. <div className="content-title" style={{ marginBottom: 10 }}>
  1114. <span style={{ fontWeight: 900, fontSize: 16 }}>会员可视化进度表</span>
  1115. </div>
  1116. <Tabs defaultActiveKey="1" className="test" bordered>
  1117. <TabPane tab="搜索" key="1">
  1118. <div className="user-search" style={{ marginLeft: 10 }}>
  1119. <Input
  1120. placeholder="咨询师姓名"
  1121. style={{ width: 160 }}
  1122. value={searchValues["consultantName"]
  1123. ? searchValues["consultantName"]
  1124. : ""}
  1125. onChange={(e) => {
  1126. searchValues["consultantName"] = e.target.value;
  1127. this.setState({
  1128. searchValues: searchValues,
  1129. });
  1130. }}
  1131. />
  1132. <Input
  1133. placeholder="合同编号"
  1134. style={{ width: 160 }}
  1135. value={searchValues["contractNo"]
  1136. ? searchValues["contractNo"]
  1137. : ""}
  1138. onChange={(e) => {
  1139. searchValues["contractNo"] = e.target.value;
  1140. this.setState({
  1141. searchValues: searchValues,
  1142. });
  1143. }}
  1144. />
  1145. <Input
  1146. placeholder="客户名称"
  1147. style={{ width: 160 }}
  1148. value={searchValues["userName"]
  1149. ? searchValues["userName"]
  1150. : ""}
  1151. onChange={(e) => {
  1152. searchValues["userName"] = e.target.value;
  1153. this.setState({
  1154. searchValues: searchValues,
  1155. });
  1156. }}
  1157. />
  1158. <Input
  1159. placeholder="服务年份"
  1160. style={{ width: 100 }}
  1161. value={searchValues["serviceYear"]
  1162. ? searchValues["serviceYear"]
  1163. : ""}
  1164. onChange={(e) => {
  1165. searchValues["serviceYear"] = e.target.value;
  1166. this.setState({
  1167. searchValues: searchValues,
  1168. });
  1169. }}
  1170. />
  1171. <AutoComplete
  1172. className="certain-category-search"
  1173. dropdownClassName="certain-category-search-dropdown"
  1174. dropdownMatchSelectWidth={false}
  1175. style={{ width: 150 }}
  1176. dataSource={options}
  1177. placeholder='请输入项目负责人'
  1178. value={this.state.auto}
  1179. onChange={this.httpChange}
  1180. filterOption={true}
  1181. onBlur={this.blurChange}
  1182. onSelect={this.selectAuto}
  1183. >
  1184. <Input />
  1185. </AutoComplete>
  1186. <Select
  1187. placeholder="项目状态"
  1188. style={{ width: 160 }}
  1189. value={searchValues["projectStatus"]
  1190. ? searchValues["projectStatus"]
  1191. : undefined}
  1192. onChange={(e) => {
  1193. searchValues["projectStatus"] = e;
  1194. this.setState({
  1195. searchValues: searchValues,
  1196. });
  1197. }}
  1198. >
  1199. {
  1200. projectState.map(item =>
  1201. <Option value={item.value} key={item.key}>{item.key}</Option>
  1202. )
  1203. }
  1204. </Select>
  1205. <Select
  1206. placeholder="外包状态"
  1207. style={{ width: 160 }}
  1208. value={searchValues["outSourcingStatus"]
  1209. ? searchValues["outSourcingStatus"]
  1210. : undefined}
  1211. onChange={(e) => {
  1212. searchValues["outSourcingStatus"] = e;
  1213. this.setState({
  1214. searchValues: searchValues,
  1215. });
  1216. }}
  1217. >
  1218. <Option value="0" >外包待审核</Option>
  1219. {/* <Option value="1" >外包审核通过</Option> */}
  1220. <Option value="2" >外包审核驳回</Option>
  1221. </Select>
  1222. <span>更新时间:</span>
  1223. <DatePicker
  1224. value={searchValues["updateTime"]
  1225. ? moment(searchValues["updateTime"])
  1226. : null}
  1227. onChange={(data, dataString) => {
  1228. searchValues["updateTime"] = dataString;
  1229. this.setState({
  1230. searchValues: searchValues,
  1231. });
  1232. }}
  1233. />
  1234. <Select
  1235. placeholder="会员级别"
  1236. style={{ width: 100, marginLeft: 10 }}
  1237. value={searchValues["applicationLevel"]
  1238. ? searchValues["applicationLevel"]
  1239. : undefined}
  1240. onChange={(e) => {
  1241. searchValues["applicationLevel"] = e;
  1242. this.setState({
  1243. searchValues: searchValues,
  1244. });
  1245. }}
  1246. >
  1247. <Option value={1} >A</Option>
  1248. <Option value={2} >AA</Option>
  1249. <Option value={3} >AAA</Option>
  1250. </Select>
  1251. <Select
  1252. placeholder="高新公示"
  1253. style={{ width: 100 }}
  1254. value={searchValues["reviewProvince"]
  1255. ? searchValues["reviewProvince"]
  1256. : undefined}
  1257. onChange={(e) => {
  1258. searchValues["reviewProvince"] = e;
  1259. this.setState({
  1260. searchValues: searchValues,
  1261. });
  1262. }}
  1263. >
  1264. {
  1265. publishStatus.map(item =>
  1266. <Option value={item.value} key={item.key}>{item.key}</Option>
  1267. )
  1268. }
  1269. </Select>
  1270. <Select
  1271. placeholder="汇算清缴"
  1272. style={{ width: 100 }}
  1273. value={searchValues["finalSettlementStatus"]
  1274. ? searchValues["finalSettlementStatus"]
  1275. : undefined}
  1276. onChange={(e) => {
  1277. searchValues["finalSettlementStatus"] = e;
  1278. this.setState({
  1279. searchValues: searchValues,
  1280. });
  1281. }}
  1282. >
  1283. <Option value="0" >其他</Option>
  1284. <Option value="1" >待完成</Option>
  1285. <Option value="2" >已完成</Option>
  1286. <Option value="3" >合同无此项</Option>
  1287. </Select>
  1288. <Select
  1289. placeholder="加计扣除"
  1290. style={{ width: 100 }}
  1291. value={searchValues["adDeliverStatus"]
  1292. ? searchValues["adDeliverStatus"]
  1293. : undefined}
  1294. onChange={(e) => {
  1295. searchValues["adDeliverStatus"] = e;
  1296. this.setState({
  1297. searchValues: searchValues,
  1298. });
  1299. }}
  1300. >
  1301. <Option value="0" >其他</Option>
  1302. <Option value="1" >待完成</Option>
  1303. <Option value="2" >已完成</Option>
  1304. <Option value="3" >合同无此项</Option>
  1305. </Select>
  1306. <Select
  1307. placeholder="火炬统计"
  1308. style={{ width: 100 }}
  1309. value={searchValues["torchStatus"]
  1310. ? searchValues["torchStatus"]
  1311. : undefined}
  1312. onChange={(e) => {
  1313. searchValues["torchStatus"] = e;
  1314. this.setState({
  1315. searchValues: searchValues,
  1316. });
  1317. }}
  1318. >
  1319. <Option value="0" >其他</Option>
  1320. <Option value="1" >待完成</Option>
  1321. <Option value="2" >已完成</Option>
  1322. <Option value="3" >合同无此项</Option>
  1323. </Select>
  1324. <Select
  1325. placeholder="统计年报"
  1326. style={{ width: 100 }}
  1327. value={searchValues["statisticsStatus"]
  1328. ? searchValues["statisticsStatus"]
  1329. : undefined}
  1330. onChange={(e) => {
  1331. searchValues["statisticsStatus"] = e;
  1332. this.setState({
  1333. searchValues: searchValues,
  1334. });
  1335. }}
  1336. >
  1337. <Option value="0" >其他</Option>
  1338. <Option value="1" >待完成</Option>
  1339. <Option value="2" >已完成</Option>
  1340. <Option value="3" >合同无此项</Option>
  1341. </Select>
  1342. <Select
  1343. placeholder="高企年报"
  1344. style={{ width: 100 }}
  1345. value={searchValues["chStatus"]
  1346. ? searchValues["chStatus"]
  1347. : undefined}
  1348. onChange={(e) => {
  1349. searchValues["chStatus"] = e;
  1350. this.setState({
  1351. searchValues: searchValues,
  1352. });
  1353. }}
  1354. >
  1355. <Option value="0" >其他</Option>
  1356. <Option value="1" >待完成</Option>
  1357. <Option value="2" >已完成</Option>
  1358. <Option value="3" >合同无此项</Option>
  1359. </Select>
  1360. <Button type="primary" style={{ marginLeft: 10 }} onClick={this.search}>
  1361. 搜索
  1362. </Button>
  1363. <Button style={{ marginLeft: 10 }} onClick={this.reset}>
  1364. 重置
  1365. </Button>
  1366. </div>
  1367. </TabPane>
  1368. <TabPane tab="导出" key="2">
  1369. <Button
  1370. type="primary"
  1371. style={{ margin: '11px 0 10px 10px' }}
  1372. onClick={this.exportExec}
  1373. >
  1374. 导出
  1375. </Button>
  1376. </TabPane>
  1377. </Tabs>
  1378. <div className="patent-table">
  1379. <Spin spinning={this.state.loading}>
  1380. <Table
  1381. columns={columns}
  1382. dataSource={newData}
  1383. bordered
  1384. size="middle"
  1385. scroll={{ x: '220%' }}
  1386. pagination={this.state.pagination}
  1387. />
  1388. </Spin>
  1389. </div>
  1390. </div>
  1391. );
  1392. }
  1393. }
  1394. export default MembershipTable;