progress.jsx 79 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019
  1. import React, { Component } from "react";
  2. import {
  3. message,
  4. Popconfirm,
  5. Modal,
  6. Form,
  7. DatePicker,
  8. Select,
  9. Radio,
  10. Tag,
  11. Spin,
  12. Input,
  13. Button,
  14. Checkbox,
  15. Table
  16. } from "antd";
  17. import $ from "jquery/src/ajax";
  18. import Print from 'react-print-html';
  19. import moment from 'moment';
  20. import ReactToPrint from 'react-to-print';
  21. import html2canvas from 'html2canvas';
  22. import MyComponent from './progressSelect';
  23. import './progress.less';
  24. const { TextArea } = Input;
  25. const RadioGroup = Radio.Group;
  26. const CheckboxGroup = Checkbox.Group;
  27. class Progress extends Component {
  28. constructor(props) {
  29. super(props);
  30. this.state = {
  31. visible: false,
  32. logvisible: false,
  33. loading: false,
  34. isPrint: false,
  35. data: {},
  36. obj: {},
  37. logData: [],
  38. columns: [
  39. {
  40. title: '检查开始时间',
  41. dataIndex: 'startTime',
  42. key: 'startTime',
  43. render: (text, record) => {
  44. return (
  45. <span>{text || record.startTimeStr}</span>
  46. )
  47. }
  48. },
  49. {
  50. title: '检查结束时间',
  51. dataIndex: 'endTime',
  52. key: 'endTime',
  53. render: (text, record) => {
  54. return (
  55. <span>{text || record.endTimeStr}</span>
  56. )
  57. }
  58. },
  59. {
  60. title: '检查部门',
  61. dataIndex: 'depName',
  62. key: 'depName',
  63. },
  64. {
  65. title: '被检查年度',
  66. dataIndex: 'yearFeature',
  67. key: 'yearFeature',
  68. },
  69. {
  70. title: '检查方式',
  71. dataIndex: 'inspectWay',
  72. key: 'inspectWay',
  73. render: (text, record) => {
  74. return (
  75. <span>{['线上', '线下'][text]}</span>
  76. )
  77. }
  78. },
  79. {
  80. title: '检查类别',
  81. dataIndex: 'type',
  82. key: 'type',
  83. render: (text, record) => {
  84. return (
  85. <span>{[record.typeOther, '高新技术税收优惠政策检查', '加计扣除税收优惠政策检查', '税务常规检查', '税务对研发费用检查', '税务稽查'][text]}</span>
  86. )
  87. }
  88. },
  89. {
  90. title: '检查事项',
  91. dataIndex: 'inspectionItems',
  92. key: 'inspectionItems',
  93. width: '10%',
  94. render: (text, record) => {
  95. return (
  96. <span>{[record.inspectionItemsOther, '高新产品收入不达标', '人员人工费用问题检查', '研发费用占比不达标', '属于多个类别', '其他事项检查'][text]}</span>
  97. )
  98. }
  99. },
  100. {
  101. title: '企业问题点',
  102. dataIndex: 'enterpriseProblems',
  103. key: 'enterpriseProblems',
  104. width: '10%',
  105. },
  106. {
  107. title: '解决方式',
  108. dataIndex: 'solution',
  109. key: 'solution',
  110. width: '10%',
  111. },
  112. {
  113. title: '检查后结论',
  114. dataIndex: 'inspectionConclusion',
  115. key: 'inspectionConclusion',
  116. width: '10%',
  117. render: (text, record) => {
  118. return (
  119. <span>{['其他', '被取消高新认定资格', '不通过', '合规通过', '通过', '无结论', '要求整改'][text]}</span>
  120. )
  121. }
  122. },
  123. {
  124. title: '是否提醒企业专人跟进事宜',
  125. dataIndex: 'remindFollow',
  126. key: 'remindFollow',
  127. width: 90,
  128. render: (text, record) => {
  129. return (
  130. <span>{['未提醒', '已提醒'][text]}</span>
  131. )
  132. }
  133. },
  134. {
  135. title: '备注',
  136. dataIndex: 'remarks',
  137. key: 'remarks',
  138. width: '10%',
  139. },
  140. ],
  141. logcolumns: [
  142. {
  143. title: '序号',
  144. dataIndex: 'id',
  145. key: 'id',
  146. },
  147. {
  148. title: '修改人',
  149. dataIndex: 'aname',
  150. key: 'aname',
  151. },
  152. {
  153. title: '修改时间',
  154. dataIndex: 'createTime',
  155. key: 'createTime',
  156. },
  157. {
  158. title: '操作',
  159. dataIndex: 'op',
  160. key: 'op',
  161. render: (text, record) => {
  162. return (
  163. <MyComponent id={record.id} />
  164. )
  165. }
  166. },
  167. ],
  168. pagination: {
  169. defaultCurrent: 1,
  170. defaultPageSize: 10,
  171. showQuickJumper: true,
  172. pageSize: 10,
  173. onChange: function (page) {
  174. this.logList(page);
  175. }.bind(this),
  176. showTotal: function (total) {
  177. return "共" + total + "条数据";
  178. },
  179. },
  180. }
  181. this.onSubmit = this.onSubmit.bind(this);
  182. this.handleOk = this.handleOk.bind(this);
  183. this.handleCancel = this.handleCancel.bind(this);
  184. this.onRowDoubleClick = this.onRowDoubleClick.bind(this);
  185. this.deleteTaskFeature = this.deleteTaskFeature.bind(this);
  186. }
  187. componentDidMount() {
  188. this.getByTid()
  189. }
  190. // 项目进度详情
  191. getByTid() {
  192. this.setState({
  193. loading: true,
  194. })
  195. $.ajax({
  196. method: 'get',
  197. dataType: 'json',
  198. crossDomain: false,
  199. url: globalConfig.context + '/api/admin/taskDetails/getByTid',
  200. data: {
  201. id: this.props.tid,
  202. },
  203. success: function (data) {
  204. if (data.error && data.error.length) {
  205. message.warning(data.error[0].message)
  206. } else {
  207. let obj = data.data
  208. obj.phasedContent = !obj.phasedContent ? [] : obj.phasedContent.split(',')
  209. this.setState({
  210. data: obj,
  211. })
  212. }
  213. }.bind(this),
  214. }).always(
  215. function () {
  216. this.setState({
  217. loading: false,
  218. })
  219. }.bind(this)
  220. )
  221. }
  222. // 创建、编辑项目进度表
  223. onSubmit() {
  224. const { data } = this.state
  225. const { tid } = this.props
  226. if (data.torchStatus == 0 && !data.torchOther) {
  227. message.warning("请填写火炬统计其他说明!")
  228. return
  229. }
  230. if (data.statisticsStatus == 0 && !data.statisticsOther) {
  231. message.warning("请填写统计年报其他说明!")
  232. return
  233. }
  234. if (data.chStatus == 0 && !data.chOther) {
  235. message.warning("请填写高企年报其他说明!")
  236. return
  237. }
  238. if (data.finalSettlementStatus == 0 && !data.finalSettlementOther) {
  239. message.warning("请填写汇算清缴其他说明!")
  240. return
  241. }
  242. if (data.rdReservesStatus == 0 && !data.rdReservesOther) {
  243. message.warning("请填写研发准备金备案其他说明!")
  244. return
  245. }
  246. if (data.rdAwardCompensationStatus == 0 && !data.rdAwardCompensationOther) {
  247. message.warning("请填写研发奖补申请其他说明!")
  248. return
  249. }
  250. if (data.adDeliverStatus == 0 && !data.adDeliverOther) {
  251. message.warning("请填写加扣备查交付其他说明!")
  252. return
  253. }
  254. if (data.htDeliverStatus == 0 && !data.htDeliverOther) {
  255. message.warning("请填写高新备查交付其他说明!")
  256. return
  257. }
  258. if (data.closeMeetingStatus == 0 && !data.closeMeetingOther) {
  259. message.warning("请填写召开上年度总结及本年工作计划其他说明!")
  260. return
  261. }
  262. if (data.adPrepareJulyStatus == 0 && !data.adPrepareJulyOther) {
  263. message.warning("请填写加计预申报7月其他说明!")
  264. return
  265. }
  266. if (data.adPrepareOctoberStatus == 0 && !data.adPrepareOctoberOther) {
  267. message.warning("请填写加计预申报10月其他说明!")
  268. return
  269. }
  270. if (data.reviewProvince == 1 && !data.reviewProvinceNumber) {
  271. message.warning("请填写公示序号!")
  272. return
  273. }
  274. if (data.reviewCountry == 1 && !data.reviewCountryNumber) {
  275. message.warning("请填写高企编号!")
  276. return
  277. }
  278. data.tid = tid;
  279. data.phasedContent = data.phasedContent.toString();
  280. this.setState({
  281. loading: true,
  282. })
  283. $.ajax({
  284. method: 'POST',
  285. dataType: 'json',
  286. crossDomain: false,
  287. url: globalConfig.context + (!data.id ? '/api/admin/taskDetails/add' : '/api/admin/taskDetails/update'),
  288. data,
  289. }).done(
  290. function (data) {
  291. this.setState({
  292. loading: false,
  293. })
  294. if (!data.error.length) {
  295. message.success('保存成功!')
  296. this.getByTid()
  297. } else {
  298. message.warning(data.error[0].message)
  299. }
  300. }.bind(this)
  301. )
  302. }
  303. // 下载图片
  304. download() {
  305. const canvas2 = document.createElement('canvas');
  306. let _canvas = document.getElementById('count'); // 指定要截图的DOM元素
  307. const w = parseInt(window.getComputedStyle(_canvas).width);
  308. const h = parseInt(window.getComputedStyle(_canvas).height);
  309. // 设置画布大小,可以根据需要调整
  310. canvas2.width = w * 3.3;
  311. canvas2.height = h * 2.3;
  312. const context = canvas2.getContext('2d');
  313. context.fillStyle = '#fff'
  314. context.scale(2, 2);
  315. window.scrollTo(0, 0); // 确保页面滚动到顶部,避免截图偏移
  316. this.updateDownload(this.state.data.id);
  317. html2canvas(_canvas, { canvas: canvas2 }).then(function (canvas) {
  318. const imgUri = canvas.toDataURL('image/png').replace('image/png', 'image/octet-stream');
  319. const timestamp = Date.now();
  320. // 此处可以添加下载图片的逻辑,如创建一个下载链接并触发点击事件
  321. const link = document.createElement("a");
  322. link.href = imgUri;
  323. link.download = `schedule${timestamp}.png`;
  324. document.body.appendChild(link);
  325. link.click();
  326. document.body.removeChild(link);
  327. });
  328. }
  329. // 数字判定
  330. onChange(e, lable) {
  331. const { data } = this.state
  332. const { value } = e.target;
  333. const reg = /^-?(0|[1-9][0-9]*)(\.[0-9]*)?$/;
  334. if ((!isNaN(value) && reg.test(value)) || value === '' || value === '-') {
  335. this.setState({
  336. data: Object.assign(data, {
  337. [lable]: value,
  338. }),
  339. })
  340. }
  341. }
  342. // 计算长度
  343. handleChange(lable, width = 40, type = "number") {
  344. const { data } = this.state
  345. let newWidth = width
  346. if (type == "number") {
  347. newWidth = !!data[lable] ? Math.max(width, data[lable].toString().length * 8) : width;
  348. } else {
  349. newWidth = !!data[lable] ? Math.max(width, data[lable].toString().length * 14) : width;
  350. }
  351. if (newWidth > 150) {
  352. return "150px"
  353. } else {
  354. return newWidth + "px"
  355. }
  356. }
  357. // 特色工作
  358. addTaskFeature() {
  359. const { obj, data } = this.state
  360. if (obj.type == 0 && !obj.typeOther) {
  361. message.warning("请填写检查类别其他说明!")
  362. return
  363. }
  364. if (obj.inspectionItems == 0 && !obj.inspectionItemsOther) {
  365. message.warning("请填写检查事项其他说明!")
  366. return
  367. }
  368. if (obj.id) {
  369. delete obj.createTime
  370. delete obj.startTime
  371. delete obj.endTime
  372. } else {
  373. obj.tdid = data.id
  374. }
  375. this.setState({
  376. loading: true,
  377. })
  378. $.ajax({
  379. method: 'POST',
  380. dataType: 'json',
  381. crossDomain: false,
  382. url: globalConfig.context + (!obj.id ? '/api/admin/taskDetails/addTaskFeature' : '/api/admin/taskDetails/updateTaskFeature'),
  383. data: obj,
  384. }).done(
  385. function (data) {
  386. this.setState({
  387. loading: false,
  388. })
  389. if (!data.error.length) {
  390. message.success('操作成功!')
  391. this.getByTid()
  392. this.handleCancel()
  393. } else {
  394. message.warning(data.error[0].message)
  395. }
  396. }.bind(this)
  397. )
  398. }
  399. // 删除特色工作
  400. deleteTaskFeature(id) {
  401. $.ajax({
  402. method: 'POST',
  403. dataType: 'json',
  404. crossDomain: false,
  405. url: '/api/admin/taskDetails/deleteTaskFeature',
  406. data: {
  407. id
  408. },
  409. }).done(
  410. function (data) {
  411. this.setState({
  412. loading: false,
  413. })
  414. if (!data.error.length) {
  415. message.success('删除成功!')
  416. this.getByTid()
  417. this.handleCancel()
  418. } else {
  419. message.warning(data.error[0].message)
  420. }
  421. }.bind(this)
  422. )
  423. }
  424. // 修改下载时间
  425. updateDownload(id) {
  426. $.ajax({
  427. method: 'POST',
  428. dataType: 'json',
  429. crossDomain: false,
  430. url: '/api/admin/taskDetails/updateDownload',
  431. data: {
  432. id
  433. },
  434. }).done(
  435. function (data) {
  436. this.setState({
  437. loading: false,
  438. })
  439. if (!data.error.length) {
  440. this.getByTid()
  441. } else {
  442. message.warning(data.error[0].message)
  443. }
  444. }.bind(this)
  445. )
  446. }
  447. // 日志
  448. logList(pageNo) {
  449. const { pagination } = this.state;
  450. let datas = {
  451. pageNo: pageNo || 1,
  452. pageSize: pagination.pageSize,
  453. id: this.state.data.id,
  454. };
  455. $.ajax({
  456. method: 'get',
  457. dataType: 'json',
  458. crossDomain: false,
  459. url: globalConfig.context + '/api/admin/taskDetails/logList',
  460. data: datas,
  461. success: function (data) {
  462. if (data.data.list) {
  463. pagination.current = data.data.pageNo;
  464. pagination.total = data.data.totalCount;
  465. if (data.data && data.data.list && !data.data.list.length) {
  466. pagination.current = 0;
  467. pagination.total = 0;
  468. }
  469. this.setState({
  470. logData: data.data.list,
  471. pagination: this.state.pagination,
  472. pageNo: data.data.pageNo,
  473. });
  474. } else {
  475. this.setState({
  476. logData: data.data,
  477. pagination: false,
  478. });
  479. }
  480. }.bind(this),
  481. }).always(
  482. function () {
  483. this.setState({
  484. loading: false,
  485. })
  486. }.bind(this)
  487. )
  488. }
  489. // 双击
  490. onRowDoubleClick(record) {
  491. let row = {}
  492. row.startTimeStr = record.startTime
  493. row.endTimeStr = record.endTime
  494. this.setState({
  495. obj: Object.assign(record, row),
  496. visible: true,
  497. })
  498. }
  499. // 占比计算
  500. getProportion(lable, num1, num2) {
  501. const { data } = this.state
  502. let formattedPercentage = 0
  503. if (!num1 || !num2) {
  504. formattedPercentage = 0
  505. } else {
  506. let percentage = (num1 / num2) * 100;
  507. formattedPercentage = percentage.toFixed(2);
  508. }
  509. // return formattedPercentage
  510. this.setState({
  511. data: Object.assign(data, {
  512. [lable]: formattedPercentage,
  513. }),
  514. })
  515. }
  516. handleOk() {
  517. this.addTaskFeature()
  518. }
  519. handleCancel() {
  520. this.setState({
  521. visible: false,
  522. obj: {}
  523. })
  524. }
  525. render() {
  526. const { columns, data, visible, obj } = this.state
  527. const radioStyle = {
  528. // display: 'block',
  529. // height: '30px',
  530. // lineHeight: '30px',
  531. };
  532. const formItemLayout = {
  533. labelCol: { span: 8 },
  534. wrapperCol: { span: 14 },
  535. }
  536. const mothOptions = [
  537. { label: '1月', value: '1' },
  538. { label: '2月', value: '2' },
  539. { label: '3月', value: '3' },
  540. { label: '4月', value: '4' },
  541. { label: '5月', value: '5' },
  542. { label: '6月', value: '6' },
  543. { label: '7月', value: '7' },
  544. { label: '8月', value: '8' },
  545. { label: '9月', value: '9' },
  546. { label: '10月', value: '10' },
  547. { label: '11月', value: '11' },
  548. { label: '12月', value: '12' },
  549. ]
  550. return (
  551. <div className="progress" >
  552. <Spin spinning={this.state.loading}>
  553. <div
  554. id="count"
  555. className="pro-content"
  556. ref={ref => {
  557. this.printTemp = ref;
  558. }}
  559. >
  560. <div className="pc-title">{data.userName}</div>
  561. <div className="pc-row">
  562. <div className="pr-item">
  563. <div><span>合同编号:</span>{data.contractNo}</div>
  564. <div>&nbsp;</div>
  565. <div><span>会员等级:</span>{data.memberLvl}&nbsp;&nbsp;&nbsp;&nbsp;<Tag color="#2db7f5"><span style={{ color: "#fff" }}>会员</span></Tag></div>
  566. </div>
  567. <div className="pr-item">
  568. <div className="pi-tit">服务内容</div>
  569. {
  570. !!data.taskList && data.taskList.map(item =>
  571. <div key={item.id}>{item.taskName}&nbsp;{item.serviceYear}</div>
  572. )
  573. }
  574. </div>
  575. <div className="pr-itemsss">
  576. <div className="pi-tit">服务团队</div>
  577. <div>
  578. <span>业务负责人:</span>
  579. <Input
  580. style={{ width: this.handleChange('taskName', 60, 'string') }}
  581. value={data.taskName}
  582. onChange={e => {
  583. this.setState({
  584. data: Object.assign(data, {
  585. taskName: e.target.value,
  586. }),
  587. })
  588. }}
  589. />
  590. &nbsp;&nbsp;&nbsp;&nbsp;
  591. <span>项目负责人:</span>
  592. <Input
  593. style={{ width: this.handleChange('projectName', 60, 'string') }}
  594. value={data.projectName}
  595. onChange={e => {
  596. this.setState({
  597. data: Object.assign(data, {
  598. projectName: e.target.value,
  599. }),
  600. })
  601. }}
  602. />
  603. </div>
  604. <div>
  605. <span>技术咨询师:</span>
  606. <Input
  607. style={{ width: this.handleChange('technologyName', 60, 'string') }}
  608. value={data.technologyName}
  609. onChange={e => {
  610. this.setState({
  611. data: Object.assign(data, {
  612. technologyName: e.target.value,
  613. }),
  614. })
  615. }}
  616. />
  617. &nbsp;&nbsp;&nbsp;&nbsp;
  618. <span>财税咨询师:</span>
  619. <Input
  620. style={{ width: this.handleChange('financeTaxationName', 60, 'string') }}
  621. value={data.financeTaxationName}
  622. onChange={e => {
  623. this.setState({
  624. data: Object.assign(data, {
  625. financeTaxationName: e.target.value,
  626. }),
  627. })
  628. }}
  629. />
  630. </div>
  631. </div>
  632. {
  633. !this.state.isPrint &&
  634. <div className="pr-item no-print">
  635. <div style={{ display: 'flex', justifyContent: 'center' }}>
  636. <ReactToPrint
  637. trigger={() => (
  638. <Button
  639. type="primary"
  640. >
  641. 打印
  642. </Button>
  643. )}
  644. content={() => this.printTemp}
  645. onAfterPrint={() => {
  646. this.updateDownload(data.id)
  647. }}
  648. />
  649. <Button
  650. type="primary"
  651. onClick={() => {
  652. const _this = this
  653. this.setState({
  654. isPrint: true
  655. }, () => {
  656. this.download()
  657. })
  658. setTimeout(function () {
  659. _this.setState({
  660. isPrint: false
  661. })
  662. }, 2000)
  663. }}
  664. >
  665. 下载整图
  666. </Button>
  667. <Button
  668. type="primary"
  669. onClick={() => {
  670. this.setState({
  671. logvisible: true
  672. })
  673. this.logList()
  674. }}
  675. >
  676. 日志
  677. </Button>
  678. </div>
  679. <div className="pi-record">最近更新时间</div>
  680. <div className="pi-record">{data.updateTime}</div>
  681. <div className="pi-record">下载/打印时间</div>
  682. <div className="pi-record">{data.downloadTime}</div>
  683. </div>
  684. }
  685. </div>
  686. <div className="pc-tit">基础数据</div>
  687. <div className="pc-row">
  688. <div className="pr-item">
  689. <div className="pi-tit">上年度(<Input style={{ width: this.handleChange('lastYear', 40) }} value={data.lastYear} onChange={e => { this.onChange(e, "lastYear") }} />年)</div>
  690. <div>销售收入:<Input
  691. style={{ width: this.handleChange('lastRdSalesAmount', 40) }}
  692. value={data.lastRdSalesAmount}
  693. onChange={e => { this.onChange(e, "lastRdSalesAmount") }}
  694. onBlur={e => {
  695. this.getProportion('threeYearsRdBudgetRate',
  696. (Number(data.rdBudget) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  697. (Number(data.rdSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  698. this.getProportion('threeYearsActualRdRate',
  699. (Number(data.actualRdAmount) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  700. (Number(data.actualSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  701. }}
  702. />万元</div>
  703. <div>高新研发费用:<Input
  704. style={{ width: this.handleChange('lastRdBudget', 40) }}
  705. value={data.lastRdBudget}
  706. onChange={e => { this.onChange(e, "lastRdBudget") }}
  707. onBlur={e => {
  708. this.getProportion('threeYearsRdBudgetRate',
  709. (Number(data.rdBudget) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  710. (Number(data.rdSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  711. this.getProportion('threeYearsActualRdRate',
  712. (Number(data.actualRdAmount) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  713. (Number(data.actualSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  714. }}
  715. />万元</div>
  716. </div>
  717. <div className="pr-item">
  718. <div className="pi-tit">上上年度(<Input style={{ width: this.handleChange('beforeLastYear', 40) }} value={data.beforeLastYear} onChange={e => { this.onChange(e, "beforeLastYear") }} />年)</div>
  719. <div>销售收入:<Input
  720. style={{ width: this.handleChange('beforeLastRdSalesAmount', 40) }}
  721. value={data.beforeLastRdSalesAmount}
  722. onChange={e => { this.onChange(e, "beforeLastRdSalesAmount") }}
  723. onBlur={e => {
  724. this.getProportion('threeYearsRdBudgetRate',
  725. (Number(data.rdBudget) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  726. (Number(data.rdSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  727. this.getProportion('threeYearsActualRdRate',
  728. (Number(data.actualRdAmount) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  729. (Number(data.actualSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  730. }}
  731. />万元</div>
  732. <div>高新研发费用:<Input
  733. style={{ width: this.handleChange('beforeLastRdBudget', 40) }}
  734. value={data.beforeLastRdBudget}
  735. onChange={e => { this.onChange(e, "beforeLastRdBudget") }}
  736. onBlur={e => {
  737. this.getProportion('threeYearsRdBudgetRate',
  738. (Number(data.rdBudget) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  739. (Number(data.rdSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  740. this.getProportion('threeYearsActualRdRate',
  741. (Number(data.actualRdAmount) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  742. (Number(data.actualSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  743. }}
  744. />万元</div>
  745. </div>
  746. <div className="pr-items">
  747. <div className="pi-tit">本年度企业人员情况</div>
  748. <div>职工总数:<Input
  749. style={{ width: this.handleChange('workersNumber', 25) }}
  750. value={data.workersNumber}
  751. onChange={e => { this.onChange(e, "workersNumber") }}
  752. onBlur={e => {
  753. this.getProportion('workersRate', Number(data.technologyNumber), Number(data.workersNumber))
  754. }}
  755. />人
  756. &nbsp;&nbsp;
  757. 科技人员:<Input
  758. style={{ width: this.handleChange('technologyNumber', 25) }}
  759. value={data.technologyNumber}
  760. onChange={e => { this.onChange(e, "technologyNumber") }}
  761. onBlur={e => {
  762. this.getProportion('workersRate', Number(data.technologyNumber), Number(data.workersNumber))
  763. }}
  764. />人
  765. </div>
  766. <div>占比:{data.workersRate || 0}%</div>
  767. </div>
  768. </div>
  769. <div className="pc-tit">科研立项与研发投入</div>
  770. <div className="pc-row">
  771. <div className="pr-item">
  772. <div className="pi-tit">立项和预算</div>
  773. <div>研发立项数量:<Input
  774. style={{ width: this.handleChange('projectApprovalNumber', 25) }}
  775. value={data.projectApprovalNumber}
  776. onChange={e => { this.onChange(e, "projectApprovalNumber") }}
  777. onBlur={e => {
  778. this.getProportion('projectApprovalWriteRate', Number(data.projectApprovalWriteNumber), Number(data.projectApprovalNumber))
  779. }}
  780. />个</div>
  781. <div>年度研发预算总额:
  782. <Input
  783. style={{ width: this.handleChange('rdBudget', 40) }}
  784. value={data.rdBudget}
  785. onChange={e => { this.onChange(e, "rdBudget") }}
  786. onBlur={e => {
  787. this.getProportion('rdCompletionProgress', Number(data.actualRdAmount), Number(data.rdBudget))
  788. this.getProportion('rdBudgetRate', Number(data.rdBudget), Number(data.rdSalesAmount))
  789. this.getProportion('threeYearsRdBudgetRate',
  790. (Number(data.rdBudget) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  791. (Number(data.rdSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  792. }}
  793. />万元</div>
  794. <div>年度销售收入预计:
  795. <Input
  796. style={{ width: this.handleChange('rdSalesAmount', 40) }}
  797. value={data.rdSalesAmount}
  798. onChange={e => { this.onChange(e, "rdSalesAmount") }}
  799. onBlur={e => {
  800. this.getProportion('rdBudgetRate', Number(data.rdBudget), Number(data.rdSalesAmount))
  801. this.getProportion('threeYearsRdBudgetRate',
  802. (Number(data.rdBudget) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  803. (Number(data.rdSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  804. }}
  805. />万元</div>
  806. </div>
  807. <div className="pr-item">
  808. <div className="pi-tit">&nbsp;</div>
  809. <div>&nbsp;</div>
  810. <div>本年度研发费用预算占比:{data.rdBudgetRate || 0}%</div>
  811. <div>三年研发费用占比预估:{data.threeYearsRdBudgetRate || 0}%</div>
  812. </div>
  813. </div>
  814. <div className="p-line"></div>
  815. <div className="pc-row">
  816. <div className="pr-items">
  817. <div className="pi-tit">实际情况</div>
  818. <div>数据周期(累计):
  819. <RadioGroup
  820. onChange={e => {
  821. this.setState({
  822. data: Object.assign(data, {
  823. dataCycle: e.target.value,
  824. }),
  825. });
  826. }}
  827. value={data.dataCycle}
  828. >
  829. <Radio style={radioStyle} value={0}>第1季度</Radio>
  830. <Radio style={radioStyle} value={1}>上半年</Radio>
  831. <Radio style={radioStyle} value={2}>前3季度</Radio>
  832. <Radio style={radioStyle} value={3}>全年</Radio>
  833. </RadioGroup>
  834. </div>
  835. <div>
  836. 已立项RD数量:<Input style={{ width: this.handleChange('actualRdNumber', 25) }} value={data.actualRdNumber} onChange={e => { this.onChange(e, "actualRdNumber") }} />个,
  837. 其中委外项目<Input style={{ width: this.handleChange('actualOutsourcingNumber', 25) }} value={data.actualOutsourcingNumber} onChange={e => { this.onChange(e, "actualOutsourcingNumber") }} />个,
  838. 合作项目<Input style={{ width: this.handleChange('actualCooperateNumber', 25) }} value={data.actualCooperateNumber} onChange={e => { this.onChange(e, "actualCooperateNumber") }} />个,
  839. 完成技术合同登记<Input style={{ width: this.handleChange('actualRegistrationNumber', 25) }} value={data.actualRegistrationNumber} onChange={e => { this.onChange(e, "actualRegistrationNumber") }} />个
  840. </div>
  841. <div>已归集研发费用总额:
  842. <Input
  843. style={{ width: this.handleChange('actualRdAmount', 40) }}
  844. value={data.actualRdAmount}
  845. onChange={e => { this.onChange(e, "actualRdAmount") }}
  846. onBlur={e => {
  847. this.getProportion('rdCompletionProgress', Number(data.actualRdAmount), Number(data.rdBudget))
  848. this.getProportion('actualRdRate', Number(data.actualRdAmount), Number(data.actualSalesAmount))
  849. this.getProportion('threeYearsActualRdRate',
  850. (Number(data.actualRdAmount) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  851. (Number(data.actualSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  852. }}
  853. />万元</div>
  854. <div>研发预算完成进度:{data.rdCompletionProgress || 0}%</div>
  855. </div>
  856. <div className="pr-items">
  857. <div className="pi-tit">&nbsp;</div>
  858. <div>年度实际销售收入:
  859. <Input
  860. style={{ width: this.handleChange('actualSalesAmount', 40) }}
  861. value={data.actualSalesAmount}
  862. onChange={e => { this.onChange(e, "actualSalesAmount") }}
  863. onBlur={e => {
  864. this.getProportion('actualRdRate', Number(data.actualRdAmount), Number(data.actualSalesAmount))
  865. this.getProportion('threeYearsActualRdRate',
  866. (Number(data.actualRdAmount) + Number(data.lastRdBudget) + Number(data.beforeLastRdBudget)),
  867. (Number(data.actualSalesAmount) + Number(data.lastRdSalesAmount) + Number(data.beforeLastRdSalesAmount)))
  868. }}
  869. />万元</div>
  870. <div>本年度研发费用占比:{data.actualRdRate || 0}%</div>
  871. <div>三年研发费用占比:{data.threeYearsActualRdRate || 0}%</div>
  872. </div>
  873. </div>
  874. <div className="pc-tit">报表报送</div>
  875. <div className="pc-row">
  876. <div className="pr-items">
  877. <div>
  878. <span>火炬统计:</span>
  879. <RadioGroup
  880. onChange={e => {
  881. this.setState({
  882. data: Object.assign(data, {
  883. torchStatus: e.target.value,
  884. }),
  885. });
  886. }}
  887. value={data.torchStatus}
  888. >
  889. <Radio style={radioStyle} value={1}>待完成</Radio>
  890. <Radio style={radioStyle} value={2}>已完成</Radio>
  891. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  892. <Radio style={radioStyle} value={0}>
  893. 其他
  894. {data.torchStatus === 0 ?
  895. <Input
  896. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  897. value={data.torchOther}
  898. onChange={e => {
  899. this.setState({
  900. data: Object.assign(data, {
  901. torchOther: e.target.value,
  902. }),
  903. })
  904. }}
  905. /> : null}
  906. </Radio>
  907. </RadioGroup>
  908. </div>
  909. <div>
  910. <span>统计年报:</span>
  911. <RadioGroup
  912. onChange={e => {
  913. this.setState({
  914. data: Object.assign(data, {
  915. statisticsStatus: e.target.value,
  916. }),
  917. });
  918. }}
  919. value={data.statisticsStatus}
  920. >
  921. <Radio style={radioStyle} value={1}>待完成</Radio>
  922. <Radio style={radioStyle} value={2}>已完成</Radio>
  923. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  924. <Radio style={radioStyle} value={0}>
  925. 其他
  926. {data.statisticsStatus === 0 ?
  927. <Input
  928. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  929. value={data.statisticsOther}
  930. onChange={e => {
  931. this.setState({
  932. data: Object.assign(data, {
  933. statisticsOther: e.target.value,
  934. }),
  935. })
  936. }}
  937. /> : null}
  938. </Radio>
  939. </RadioGroup>
  940. </div>
  941. </div>
  942. <div className="pr-items">
  943. <div>
  944. <span>高企年报:</span>
  945. <RadioGroup
  946. onChange={e => {
  947. this.setState({
  948. data: Object.assign(data, {
  949. chStatus: e.target.value,
  950. }),
  951. });
  952. }}
  953. value={data.chStatus}
  954. >
  955. <Radio style={radioStyle} value={1}>待完成</Radio>
  956. <Radio style={radioStyle} value={2}>已完成</Radio>
  957. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  958. <Radio style={radioStyle} value={0}>
  959. 其他
  960. {data.chStatus === 0 ?
  961. <Input
  962. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  963. value={data.chOther}
  964. onChange={e => {
  965. this.setState({
  966. data: Object.assign(data, {
  967. chOther: e.target.value,
  968. }),
  969. })
  970. }}
  971. /> : null}
  972. </Radio>
  973. </RadioGroup>
  974. </div>
  975. <div>
  976. <span>汇算清缴:</span>
  977. <RadioGroup
  978. onChange={e => {
  979. this.setState({
  980. data: Object.assign(data, {
  981. finalSettlementStatus: e.target.value,
  982. }),
  983. });
  984. }}
  985. value={data.finalSettlementStatus}
  986. >
  987. <Radio style={radioStyle} value={1}>待完成</Radio>
  988. <Radio style={radioStyle} value={2}>已完成</Radio>
  989. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  990. <Radio style={radioStyle} value={0}>
  991. 其他
  992. {data.finalSettlementStatus === 0 ?
  993. <Input
  994. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  995. value={data.finalSettlementOther}
  996. onChange={e => {
  997. this.setState({
  998. data: Object.assign(data, {
  999. finalSettlementOther: e.target.value,
  1000. }),
  1001. })
  1002. }}
  1003. /> : null}
  1004. </Radio>
  1005. </RadioGroup>
  1006. </div>
  1007. <div>加扣RD<Input style={{ width: this.handleChange('reportFormsRdNumber', 25) }} value={data.reportFormsRdNumber} onChange={e => { this.onChange(e, "reportFormsRdNumber") }} />个,其中有知识产权的加扣费用
  1008. <Input style={{ width: this.handleChange('intellectualPropertyAmount', 40) }} value={data.intellectualPropertyAmount} onChange={e => { this.onChange(e, "intellectualPropertyAmount") }} />万元,加扣研发费用金额
  1009. <Input style={{ width: this.handleChange('reportRdAmount', 40) }} value={data.reportRdAmount} onChange={e => { this.onChange(e, "reportRdAmount") }} />万元</div>
  1010. </div>
  1011. </div>
  1012. <div className="pc-tit">研发奖补</div>
  1013. <div className="pc-row">
  1014. <div className="pr-items">
  1015. <div>
  1016. <span>研发准备金备案:</span>
  1017. <RadioGroup
  1018. onChange={e => {
  1019. this.setState({
  1020. data: Object.assign(data, {
  1021. rdReservesStatus: e.target.value,
  1022. }),
  1023. });
  1024. }}
  1025. value={data.rdReservesStatus}
  1026. >
  1027. <Radio style={radioStyle} value={1}>待完成</Radio>
  1028. <Radio style={radioStyle} value={2}>已完成</Radio>
  1029. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  1030. <Radio style={radioStyle} value={0}>
  1031. 其他
  1032. {data.rdReservesStatus === 0 ?
  1033. <Input
  1034. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  1035. value={data.rdReservesOther}
  1036. onChange={e => {
  1037. this.setState({
  1038. data: Object.assign(data, {
  1039. rdReservesOther: e.target.value,
  1040. }),
  1041. })
  1042. }}
  1043. /> : null}
  1044. </Radio>
  1045. </RadioGroup>
  1046. </div>
  1047. </div>
  1048. <div className="pr-items">
  1049. <div>
  1050. <span>研发奖补申请:</span>
  1051. <RadioGroup
  1052. onChange={e => {
  1053. this.setState({
  1054. data: Object.assign(data, {
  1055. rdAwardCompensationStatus: e.target.value,
  1056. }),
  1057. });
  1058. }}
  1059. value={data.rdAwardCompensationStatus}
  1060. >
  1061. <Radio style={radioStyle} value={1}>待完成</Radio>
  1062. <Radio style={radioStyle} value={2}>已完成</Radio>
  1063. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  1064. <Radio style={radioStyle} value={0}>
  1065. 其他
  1066. {data.rdAwardCompensationStatus === 0 ?
  1067. <Input
  1068. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  1069. value={data.rdAwardCompensationOther}
  1070. onChange={e => {
  1071. this.setState({
  1072. data: Object.assign(data, {
  1073. rdAwardCompensationOther: e.target.value,
  1074. }),
  1075. })
  1076. }}
  1077. /> : null}
  1078. </Radio>
  1079. </RadioGroup>
  1080. </div>
  1081. <div>
  1082. <span>申请金额:</span><Input style={{ width: this.handleChange('rdApplicationFee', 40) }} value={data.rdApplicationFee} onChange={e => { this.onChange(e, "rdApplicationFee") }} />万元,
  1083. <span>公示金额:</span><Input style={{ width: this.handleChange('rdAnnouncementAmount', 40) }} value={data.rdAnnouncementAmount} onChange={e => { this.onChange(e, "rdAnnouncementAmount") }} />万元,
  1084. 其他<Input
  1085. style={{ width: this.handleChange('rdAnnouncementOther', 40, 'string') }}
  1086. value={data.rdAnnouncementOther}
  1087. onChange={e => {
  1088. this.setState({
  1089. data: Object.assign(data, {
  1090. rdAnnouncementOther: e.target.value,
  1091. }),
  1092. })
  1093. }}
  1094. />
  1095. </div>
  1096. </div>
  1097. </div>
  1098. <div className="pc-tit">备查交付与归档</div>
  1099. <div className="pc-row">
  1100. <div className="pr-items">
  1101. <div>
  1102. <span>加扣备查交付:</span>
  1103. <RadioGroup
  1104. onChange={e => {
  1105. this.setState({
  1106. data: Object.assign(data, {
  1107. adDeliverStatus: e.target.value,
  1108. }),
  1109. });
  1110. }}
  1111. value={data.adDeliverStatus}
  1112. >
  1113. <Radio style={radioStyle} value={1}>待完成</Radio>
  1114. <Radio style={radioStyle} value={2}>已完成</Radio>
  1115. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  1116. <Radio style={radioStyle} value={0}>
  1117. 其他
  1118. {data.adDeliverStatus === 0 ?
  1119. <Input
  1120. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  1121. value={data.adDeliverOther}
  1122. onChange={e => {
  1123. this.setState({
  1124. data: Object.assign(data, {
  1125. adDeliverOther: e.target.value,
  1126. }),
  1127. })
  1128. }}
  1129. /> : null}
  1130. </Radio>
  1131. </RadioGroup>
  1132. </div>
  1133. <div>
  1134. <span>是否归档:</span>
  1135. <RadioGroup
  1136. onChange={e => {
  1137. this.setState({
  1138. data: Object.assign(data, {
  1139. adDeliverFinish: e.target.value,
  1140. }),
  1141. });
  1142. }}
  1143. value={data.adDeliverFinish}
  1144. >
  1145. <Radio style={radioStyle} value={0}>未归档</Radio>
  1146. <Radio style={radioStyle} value={1}>已归档</Radio>
  1147. </RadioGroup>
  1148. </div>
  1149. </div>
  1150. <div className="pr-items">
  1151. <div>
  1152. <span>高新备查交付:</span>
  1153. <RadioGroup
  1154. onChange={e => {
  1155. this.setState({
  1156. data: Object.assign(data, {
  1157. htDeliverStatus: e.target.value,
  1158. }),
  1159. });
  1160. }}
  1161. value={data.htDeliverStatus}
  1162. >
  1163. <Radio style={radioStyle} value={1}>待完成</Radio>
  1164. <Radio style={radioStyle} value={2}>已完成</Radio>
  1165. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  1166. <Radio style={radioStyle} value={0}>
  1167. 其他
  1168. {data.htDeliverStatus === 0 ?
  1169. <Input
  1170. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  1171. value={data.htDeliverOther}
  1172. onChange={e => {
  1173. this.setState({
  1174. data: Object.assign(data, {
  1175. htDeliverOther: e.target.value,
  1176. }),
  1177. })
  1178. }}
  1179. /> : null}
  1180. </Radio>
  1181. </RadioGroup>
  1182. </div>
  1183. <div>
  1184. <span>是否归档:</span>
  1185. <RadioGroup
  1186. onChange={e => {
  1187. this.setState({
  1188. data: Object.assign(data, {
  1189. htDeliverFinish: e.target.value,
  1190. }),
  1191. });
  1192. }}
  1193. value={data.htDeliverFinish}
  1194. >
  1195. <Radio style={radioStyle} value={1}>未归档</Radio>
  1196. <Radio style={radioStyle} value={2}>已归档</Radio>
  1197. </RadioGroup>
  1198. </div>
  1199. </div>
  1200. </div>
  1201. <div className="pc-tit">日常工作</div>
  1202. <div className="pc-row">
  1203. <div className="pr-itemss">
  1204. <div>
  1205. <span>召开上年度总结及本年工作计划:</span>
  1206. <RadioGroup
  1207. onChange={e => {
  1208. this.setState({
  1209. data: Object.assign(data, {
  1210. closeMeetingStatus: e.target.value,
  1211. }),
  1212. });
  1213. }}
  1214. value={data.closeMeetingStatus}
  1215. >
  1216. <Radio style={radioStyle} value={1}>待完成</Radio>
  1217. <Radio style={radioStyle} value={2}>已完成</Radio>
  1218. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  1219. <Radio style={radioStyle} value={0}>
  1220. 其他
  1221. {data.closeMeetingStatus === 0 ?
  1222. <Input
  1223. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  1224. value={data.closeMeetingOther}
  1225. onChange={e => {
  1226. this.setState({
  1227. data: Object.assign(data, {
  1228. closeMeetingOther: e.target.value,
  1229. }),
  1230. })
  1231. }}
  1232. /> : null}
  1233. </Radio>
  1234. </RadioGroup>
  1235. </div>
  1236. </div>
  1237. </div>
  1238. <div className="p-line"></div>
  1239. <div className="pc-row">
  1240. <div className="pr-itemss">
  1241. <div>
  1242. <span>阶段性汇报:</span>
  1243. <RadioGroup
  1244. onChange={e => {
  1245. this.setState({
  1246. data: Object.assign(data, {
  1247. phasedType: e.target.value,
  1248. }),
  1249. });
  1250. }}
  1251. value={data.phasedType}
  1252. >
  1253. <Radio style={radioStyle} value={1}>月度</Radio>
  1254. <Radio style={radioStyle} value={2}>季度</Radio>
  1255. </RadioGroup>
  1256. </div>
  1257. <div style={{ margin: '5px 0 0 72px', paddingTop: '5px', borderTop: '1px dashed #000000A6' }}>
  1258. <CheckboxGroup
  1259. options={mothOptions}
  1260. onChange={e => {
  1261. this.setState({
  1262. data: Object.assign(data, {
  1263. phasedContent: e,
  1264. }),
  1265. });
  1266. }}
  1267. value={data.phasedContent}
  1268. />
  1269. </div>
  1270. </div>
  1271. </div>
  1272. <div className="p-line"></div>
  1273. <div className="pc-row">
  1274. <div className="pr-itemss">
  1275. <div>
  1276. <span>立项资料编写:</span>
  1277. 完成数<Input
  1278. style={{ width: this.handleChange('projectApprovalWriteNumber', 25) }}
  1279. value={data.projectApprovalWriteNumber}
  1280. onChange={e => { this.onChange(e, "projectApprovalWriteNumber") }}
  1281. onBlur={e => {
  1282. this.getProportion('projectApprovalWriteRate', Number(data.projectApprovalWriteNumber), Number(data.projectApprovalNumber))
  1283. }}
  1284. />个
  1285. &nbsp;&nbsp;&nbsp;完成率(系统自动计算){data.projectApprovalWriteRate}%</div>
  1286. </div>
  1287. </div>
  1288. <div className="p-line"></div>
  1289. <div className="pc-row">
  1290. <div className="pr-itemss">
  1291. <div>
  1292. <span>加计预申报:</span>
  1293. 7月:
  1294. <RadioGroup
  1295. onChange={e => {
  1296. this.setState({
  1297. data: Object.assign(data, {
  1298. adPrepareJulyStatus: e.target.value,
  1299. }),
  1300. });
  1301. }}
  1302. value={data.adPrepareJulyStatus}
  1303. >
  1304. <Radio style={radioStyle} value={1}>待完成</Radio>
  1305. <Radio style={radioStyle} value={2}>已完成</Radio>
  1306. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  1307. <Radio style={radioStyle} value={0}>
  1308. 其他
  1309. {data.adPrepareJulyStatus === 0 ?
  1310. <Input
  1311. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  1312. value={data.adPrepareJulyOther}
  1313. onChange={e => {
  1314. this.setState({
  1315. data: Object.assign(data, {
  1316. adPrepareJulyOther: e.target.value,
  1317. }),
  1318. })
  1319. }}
  1320. /> : null}
  1321. </Radio>
  1322. </RadioGroup>
  1323. &nbsp;&nbsp;
  1324. 10月:
  1325. <RadioGroup
  1326. onChange={e => {
  1327. this.setState({
  1328. data: Object.assign(data, {
  1329. adPrepareOctoberStatus: e.target.value,
  1330. }),
  1331. });
  1332. }}
  1333. value={data.adPrepareOctoberStatus}
  1334. >
  1335. <Radio style={radioStyle} value={1}>待完成</Radio>
  1336. <Radio style={radioStyle} value={2}>已完成</Radio>
  1337. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  1338. <Radio style={radioStyle} value={0}>
  1339. 其他
  1340. {data.adPrepareOctoberStatus === 0 ?
  1341. <Input
  1342. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  1343. value={data.adPrepareOctoberOther}
  1344. onChange={e => {
  1345. this.setState({
  1346. data: Object.assign(data, {
  1347. adPrepareOctoberOther: e.target.value,
  1348. }),
  1349. })
  1350. }}
  1351. /> : null}
  1352. </Radio>
  1353. </RadioGroup>
  1354. </div>
  1355. </div>
  1356. </div>
  1357. <div className="p-line"></div>
  1358. <div className="pc-row">
  1359. <div className="pr-itemss">
  1360. <div><span>知识产权情况:</span></div>
  1361. <div>
  1362. <span>发明专利:</span>
  1363. 当年申报数量<Input style={{ width: this.handleChange('ipInventionPatentDeclare', 25) }} value={data.ipInventionPatentDeclare} onChange={e => { this.onChange(e, "ipInventionPatentDeclare") }} />个,
  1364. 当年授权数量<Input style={{ width: this.handleChange('ipInventionPatentAuthorize', 25) }} value={data.ipInventionPatentAuthorize} onChange={e => { this.onChange(e, "ipInventionPatentAuthorize") }} />个,
  1365. 企业累计授权数量<Input style={{ width: this.handleChange('ipInventionPatentAuthorizeCount', 25) }} value={data.ipInventionPatentAuthorizeCount} onChange={e => { this.onChange(e, "ipInventionPatentAuthorizeCount") }} />个。</div>
  1366. <div>
  1367. <span>实用新型专利:</span>
  1368. 当年申报数量<Input style={{ width: this.handleChange('ipUtilityModelDeclare', 25) }} value={data.ipUtilityModelDeclare} onChange={e => { this.onChange(e, "ipUtilityModelDeclare") }} />个,
  1369. 当年授权数量<Input style={{ width: this.handleChange('ipUtilityModelAuthorize', 25) }} value={data.ipUtilityModelAuthorize} onChange={e => { this.onChange(e, "ipUtilityModelAuthorize") }} />个,
  1370. 企业累计授权数量<Input style={{ width: this.handleChange('ipUtilityModelAuthorizeCount', 25) }} value={data.ipUtilityModelAuthorizeCount} onChange={e => { this.onChange(e, "ipUtilityModelAuthorizeCount") }} />个。
  1371. </div>
  1372. <div><span>软著:</span>
  1373. 当年申请数量<Input style={{ width: this.handleChange('ipSoftwareWorksDeclare', 25) }} value={data.ipSoftwareWorksDeclare} onChange={e => { this.onChange(e, "ipSoftwareWorksDeclare") }} />个,
  1374. 当年下证数量<Input style={{ width: this.handleChange('ipSoftwareWorksAuthorize', 25) }} value={data.ipSoftwareWorksAuthorize} onChange={e => { this.onChange(e, "ipSoftwareWorksAuthorize") }} />个,
  1375. 企业累计下证数量<Input style={{ width: this.handleChange('ipSoftwareWorksAuthorizeCount', 25) }} value={data.ipSoftwareWorksAuthorizeCount} onChange={e => { this.onChange(e, "ipSoftwareWorksAuthorizeCount") }} />个。
  1376. </div>
  1377. <div>
  1378. 截止本年末可用于下次高新认定数量<Input style={{ width: this.handleChange('ipHt', 25) }} value={data.ipHt} onChange={e => { this.onChange(e, "ipHt") }} />个,
  1379. 其中I类<Input style={{ width: this.handleChange('ipHtI', 25) }} value={data.ipHtI} onChange={e => { this.onChange(e, "ipHtI") }} />个,
  1380. II类<Input style={{ width: this.handleChange('ipHtIi', 25) }} value={data.ipHtIi} onChange={e => { this.onChange(e, "ipHtIi") }} />个。
  1381. </div>
  1382. </div>
  1383. </div>
  1384. <div className="p-line"></div>
  1385. <div className="pc-row">
  1386. <div className="pr-itemss">
  1387. <div>
  1388. <span>公出指标(本年度):</span>
  1389. 合同约定次数:<Input style={{ width: this.handleChange('publicReleaseStipulation', 25) }} value={data.publicReleaseStipulation} onChange={e => { this.onChange(e, "publicReleaseStipulation") }} />次&nbsp;&nbsp;&nbsp;
  1390. 实际次数:<Input style={{ width: this.handleChange('publicReleaseActual', 25) }} value={data.publicReleaseActual} onChange={e => { this.onChange(e, "publicReleaseActual") }} />次&nbsp;&nbsp;&nbsp;
  1391. </div>
  1392. </div>
  1393. </div>
  1394. <div className="p-line"></div>
  1395. <div className="pc-row">
  1396. <div className="pr-itemss">
  1397. <div>
  1398. <span>培训指标(本年度):</span>
  1399. 合同约定次数:<Input style={{ width: this.handleChange('trainingStipulation', 25) }} value={data.trainingStipulation} onChange={e => { this.onChange(e, "trainingStipulation") }} />次&nbsp;&nbsp;&nbsp;
  1400. 实际次数:<Input style={{ width: this.handleChange('trainingActual', 25) }} value={data.trainingActual} onChange={e => { this.onChange(e, "trainingActual") }} />次&nbsp;&nbsp;&nbsp;
  1401. 其他:<Input
  1402. style={{ width: this.handleChange('trainingOther', 40, 'string') }}
  1403. value={data.trainingOther}
  1404. onChange={e => {
  1405. this.setState({
  1406. data: Object.assign(data, {
  1407. trainingOther: e.target.value,
  1408. }),
  1409. })
  1410. }}
  1411. />
  1412. </div>
  1413. </div>
  1414. </div>
  1415. <div className="pc-tit">
  1416. 特色工作
  1417. {
  1418. !this.state.isPrint &&
  1419. <div className="pt-bt no-print">
  1420. <Button
  1421. type="primary"
  1422. size="small"
  1423. onClick={() => {
  1424. if (!this.state.data.id) {
  1425. this.onSubmit()
  1426. }
  1427. this.setState({
  1428. visible: true
  1429. })
  1430. }}
  1431. >
  1432. + 新增
  1433. </Button>
  1434. </div>
  1435. }
  1436. </div>
  1437. <div className="patent-table">
  1438. <Spin spinning={this.state.loading}>
  1439. <Table
  1440. bordered
  1441. columns={columns}
  1442. dataSource={data.featureList}
  1443. onRowDoubleClick={this.onRowDoubleClick}
  1444. pagination={false}
  1445. />
  1446. </Spin>
  1447. </div>
  1448. <div className="pc-tit">高新认定</div>
  1449. <div className="pc-row">
  1450. <div className="pr-itemss">
  1451. <div>
  1452. <span>1.基础情况:</span>
  1453. 创新能力评价估分<Input style={{ width: this.handleChange('htScore', 25) }} value={data.htScore} onChange={e => { this.onChange(e, "htScore") }} />分,
  1454. 实际申报批次:
  1455. <RadioGroup
  1456. onChange={e => {
  1457. this.setState({
  1458. data: Object.assign(data, {
  1459. htBatch: e.target.value,
  1460. }),
  1461. });
  1462. }}
  1463. value={data.htBatch}
  1464. >
  1465. <Radio style={radioStyle} value={1}>第1批</Radio>
  1466. <Radio style={radioStyle} value={2}>第2批</Radio>
  1467. <Radio style={radioStyle} value={3}>第3批</Radio>
  1468. </RadioGroup>
  1469. ,是否重点关注:
  1470. <RadioGroup
  1471. onChange={e => {
  1472. this.setState({
  1473. data: Object.assign(data, {
  1474. htFocus: e.target.value,
  1475. }),
  1476. });
  1477. }}
  1478. value={data.htFocus}
  1479. >
  1480. <Radio style={radioStyle} value={1}>是</Radio>
  1481. <Radio style={radioStyle} value={0}>否</Radio>
  1482. </RadioGroup>
  1483. </div>
  1484. <div>
  1485. <span>2.申报提交:</span>
  1486. 网上系统提交:
  1487. <RadioGroup
  1488. onChange={e => {
  1489. this.setState({
  1490. data: Object.assign(data, {
  1491. webSubmit: e.target.value,
  1492. }),
  1493. });
  1494. }}
  1495. value={data.webSubmit}
  1496. >
  1497. <Radio style={radioStyle} value={1}>待完成</Radio>
  1498. <Radio style={radioStyle} value={2}>已完成</Radio>
  1499. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  1500. <Radio style={radioStyle} value={0}>
  1501. 其他
  1502. {data.webSubmit === 0 ?
  1503. <Input
  1504. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  1505. value={data.webSubmitOther}
  1506. onChange={e => {
  1507. this.setState({
  1508. data: Object.assign(data, {
  1509. webSubmitOther: e.target.value,
  1510. }),
  1511. })
  1512. }}
  1513. /> : null}
  1514. </Radio>
  1515. </RadioGroup>
  1516. 纸质材料提交:
  1517. <RadioGroup
  1518. onChange={e => {
  1519. this.setState({
  1520. data: Object.assign(data, {
  1521. paperSubmit: e.target.value,
  1522. }),
  1523. });
  1524. }}
  1525. value={data.paperSubmit}
  1526. >
  1527. <Radio style={radioStyle} value={1}>待完成</Radio>
  1528. <Radio style={radioStyle} value={2}>已完成</Radio>
  1529. <Radio style={radioStyle} value={3}>合同无此项</Radio>
  1530. <Radio style={radioStyle} value={0}>
  1531. 其他
  1532. {data.paperSubmit === 0 ?
  1533. <Input
  1534. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  1535. value={data.paperSubmitOther}
  1536. onChange={e => {
  1537. this.setState({
  1538. data: Object.assign(data, {
  1539. paperSubmitOther: e.target.value,
  1540. }),
  1541. })
  1542. }}
  1543. /> : null}
  1544. </Radio>
  1545. </RadioGroup>
  1546. </div>
  1547. <div>
  1548. <span>3.评审情况:</span>
  1549. 省级:
  1550. <RadioGroup
  1551. onChange={e => {
  1552. this.setState({
  1553. data: Object.assign(data, {
  1554. reviewProvince: e.target.value,
  1555. }),
  1556. });
  1557. }}
  1558. value={data.reviewProvince}
  1559. >
  1560. <Radio style={radioStyle} value={0}>淘汰</Radio>
  1561. <Radio style={radioStyle} value={1}>公示,公示序号:
  1562. <Input
  1563. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  1564. value={data.reviewProvinceNumber}
  1565. onChange={e => {
  1566. this.setState({
  1567. data: Object.assign(data, {
  1568. reviewProvinceNumber: e.target.value,
  1569. }),
  1570. })
  1571. }}
  1572. />
  1573. </Radio>
  1574. </RadioGroup>
  1575. 国家级:
  1576. <RadioGroup
  1577. onChange={e => {
  1578. this.setState({
  1579. data: Object.assign(data, {
  1580. reviewCountry: e.target.value,
  1581. }),
  1582. });
  1583. }}
  1584. value={data.reviewCountry}
  1585. >
  1586. <Radio style={radioStyle} value={0}>淘汰</Radio>
  1587. <Radio style={radioStyle} value={1}>公示,高企编号:
  1588. <Input
  1589. style={{ width: 100, marginLeft: 10, textAlign: 'left' }}
  1590. value={data.reviewCountryNumber}
  1591. onChange={e => {
  1592. this.setState({
  1593. data: Object.assign(data, {
  1594. reviewCountryNumber: e.target.value,
  1595. }),
  1596. })
  1597. }}
  1598. />
  1599. </Radio>
  1600. </RadioGroup>
  1601. </div>
  1602. </div>
  1603. </div>
  1604. <div className="pc-tit">其他事项说明</div>
  1605. <div className="pc-row">
  1606. <TextArea
  1607. rows={2}
  1608. value={data.remarks}
  1609. onChange={e => {
  1610. this.setState({
  1611. data: Object.assign(data, {
  1612. remarks: e.target.value,
  1613. }),
  1614. })
  1615. }}
  1616. />
  1617. </div>
  1618. <div className="pc-tit">客户签字</div>
  1619. <div className="pc-row">
  1620. <div className="pr-itemss">
  1621. <div style={{ paddingBottom: 80 }}><span>授权代表(签字或盖章):</span></div>
  1622. </div>
  1623. </div>
  1624. </div>
  1625. </Spin>
  1626. <div className="pro-bottom">
  1627. <Button
  1628. type="primary"
  1629. onClick={() => {
  1630. this.onSubmit()
  1631. }}
  1632. style={{ margin: 25 }}
  1633. >
  1634. 保存
  1635. </Button>
  1636. {/* <Button
  1637. type="ghost"
  1638. onClick={() => {
  1639. console.log("--------", data)
  1640. }}
  1641. style={{ margin: 25 }}
  1642. >
  1643. 取消
  1644. </Button> */}
  1645. </div>
  1646. <Modal
  1647. maskClosable={false}
  1648. title="特色工作"
  1649. visible={visible}
  1650. width={600}
  1651. footer=""
  1652. onCancel={this.handleCancel}
  1653. >
  1654. <Form
  1655. layout="horizontal"
  1656. >
  1657. <Spin spinning={this.state.loading}>
  1658. <div>
  1659. <Form.Item
  1660. {...formItemLayout}
  1661. label="检查开始时间">
  1662. <DatePicker
  1663. style={{ width: 200 }}
  1664. value={obj.startTimeStr ? moment(obj.startTimeStr) : null}
  1665. onChange={(date, dateString) => {
  1666. this.setState({
  1667. obj: Object.assign(obj, {
  1668. startTimeStr: dateString,
  1669. }),
  1670. })
  1671. }}
  1672. />
  1673. </Form.Item>
  1674. </div>
  1675. <div>
  1676. <Form.Item
  1677. {...formItemLayout}
  1678. label="检查结束时间">
  1679. <DatePicker
  1680. style={{ width: 200 }}
  1681. value={obj.endTimeStr ? moment(obj.endTimeStr) : null}
  1682. onChange={(date, dateString) => {
  1683. this.setState({
  1684. obj: Object.assign(obj, {
  1685. endTimeStr: dateString,
  1686. }),
  1687. })
  1688. }}
  1689. />
  1690. </Form.Item>
  1691. </div>
  1692. <div>
  1693. <Form.Item
  1694. {...formItemLayout}
  1695. label="检查部门">
  1696. <Input
  1697. style={{ width: 200 }}
  1698. value={obj.depName}
  1699. onChange={e => {
  1700. this.setState({
  1701. obj: Object.assign(obj, {
  1702. depName: e.target.value,
  1703. }),
  1704. })
  1705. }}
  1706. />
  1707. </Form.Item>
  1708. </div>
  1709. <div>
  1710. <Form.Item
  1711. {...formItemLayout}
  1712. label="被检查年度">
  1713. <Input
  1714. style={{ width: 200 }}
  1715. value={obj.yearFeature}
  1716. onChange={e => {
  1717. this.setState({
  1718. obj: Object.assign(obj, {
  1719. yearFeature: e.target.value,
  1720. }),
  1721. })
  1722. }}
  1723. />
  1724. </Form.Item>
  1725. </div>
  1726. <div>
  1727. <Form.Item
  1728. {...formItemLayout}
  1729. label="检查方式">
  1730. <RadioGroup
  1731. style={{ width: 200 }}
  1732. value={obj.inspectWay}
  1733. onChange={(e) => {
  1734. this.setState({
  1735. obj: Object.assign(obj, {
  1736. inspectWay: e.target.value,
  1737. }),
  1738. })
  1739. }}
  1740. >
  1741. <Radio value={0}>线上</Radio>
  1742. <Radio value={1}>线下</Radio>
  1743. </RadioGroup>
  1744. </Form.Item>
  1745. </div>
  1746. <div>
  1747. <Form.Item
  1748. {...formItemLayout}
  1749. label="检查类别">
  1750. <Select
  1751. style={{ width: 200 }}
  1752. value={obj.type}
  1753. onChange={(e) => {
  1754. this.setState({
  1755. obj: Object.assign(obj, {
  1756. type: e,
  1757. }),
  1758. })
  1759. }}
  1760. >
  1761. <Select.Option value={1}>高新技术税收优惠政策检查</Select.Option>
  1762. <Select.Option value={2}>加计扣除税收优惠政策检查</Select.Option>
  1763. <Select.Option value={3}>税务常规检查</Select.Option>
  1764. <Select.Option value={4}>税务对研发费用检查</Select.Option>
  1765. <Select.Option value={5}>税务稽查</Select.Option>
  1766. <Select.Option value={0}>其他</Select.Option>
  1767. </Select>
  1768. </Form.Item>
  1769. </div>
  1770. {
  1771. obj.type == 0 &&
  1772. <div>
  1773. <Form.Item
  1774. {...formItemLayout}
  1775. label="检查类别其他说明">
  1776. <TextArea
  1777. rows={2}
  1778. style={{ width: 200 }}
  1779. placeholder="检查类别其他说明"
  1780. value={obj.typeOther}
  1781. onChange={e => {
  1782. this.setState({
  1783. obj: Object.assign(obj, {
  1784. typeOther: e.target.value,
  1785. }),
  1786. })
  1787. }}
  1788. />
  1789. </Form.Item>
  1790. </div>
  1791. }
  1792. <div>
  1793. <Form.Item
  1794. {...formItemLayout}
  1795. label="检查事项">
  1796. <Select
  1797. style={{ width: 200 }}
  1798. value={obj.inspectionItems}
  1799. onChange={(e) => {
  1800. this.setState({
  1801. obj: Object.assign(obj, {
  1802. inspectionItems: e,
  1803. }),
  1804. })
  1805. }}
  1806. >
  1807. <Select.Option value={1}>高新产品收入不达标</Select.Option>
  1808. <Select.Option value={2}>人员人工费用问题检查</Select.Option>
  1809. <Select.Option value={3}>研发费用占比不达标</Select.Option>
  1810. <Select.Option value={4}>属于多个类别</Select.Option>
  1811. <Select.Option value={5}>其他事项检查</Select.Option>
  1812. <Select.Option value={0}>其他</Select.Option>
  1813. </Select>
  1814. </Form.Item>
  1815. </div>
  1816. {
  1817. obj.inspectionItems == 0 &&
  1818. <div>
  1819. <Form.Item
  1820. {...formItemLayout}
  1821. label="检查事项其他说明">
  1822. <TextArea
  1823. rows={2}
  1824. style={{ width: 200 }}
  1825. placeholder="检查事项其他说明"
  1826. value={obj.inspectionItemsOther}
  1827. onChange={e => {
  1828. this.setState({
  1829. obj: Object.assign(obj, {
  1830. inspectionItemsOther: e.target.value,
  1831. }),
  1832. })
  1833. }}
  1834. />
  1835. </Form.Item>
  1836. </div>
  1837. }
  1838. <div>
  1839. <Form.Item
  1840. {...formItemLayout}
  1841. label="企业问题点">
  1842. <TextArea
  1843. rows={2}
  1844. style={{ width: 200 }}
  1845. placeholder="企业问题点"
  1846. value={obj.enterpriseProblems}
  1847. onChange={e => {
  1848. this.setState({
  1849. obj: Object.assign(obj, {
  1850. enterpriseProblems: e.target.value,
  1851. }),
  1852. })
  1853. }}
  1854. />
  1855. </Form.Item>
  1856. </div>
  1857. <div>
  1858. <Form.Item
  1859. {...formItemLayout}
  1860. label="解决方式">
  1861. <TextArea
  1862. rows={2}
  1863. style={{ width: 200 }}
  1864. placeholder="解决方式"
  1865. value={obj.solution}
  1866. onChange={e => {
  1867. this.setState({
  1868. obj: Object.assign(obj, {
  1869. solution: e.target.value,
  1870. }),
  1871. })
  1872. }}
  1873. />
  1874. </Form.Item>
  1875. </div>
  1876. <div>
  1877. <Form.Item
  1878. {...formItemLayout}
  1879. label="检查后结论">
  1880. <Select
  1881. style={{ width: 200 }}
  1882. value={obj.inspectionConclusion}
  1883. onChange={(e) => {
  1884. this.setState({
  1885. obj: Object.assign(obj, {
  1886. inspectionConclusion: e,
  1887. }),
  1888. })
  1889. }}
  1890. >
  1891. <Select.Option value={1}>被取消高新认定资格</Select.Option>
  1892. <Select.Option value={2}>不通过</Select.Option>
  1893. <Select.Option value={3}>合规通过</Select.Option>
  1894. <Select.Option value={4}>通过</Select.Option>
  1895. <Select.Option value={5}>无结论</Select.Option>
  1896. <Select.Option value={6}>要求整改</Select.Option>
  1897. </Select>
  1898. </Form.Item>
  1899. </div>
  1900. <div>
  1901. <Form.Item
  1902. {...formItemLayout}
  1903. label="是否提醒企业专人跟进事宜">
  1904. <RadioGroup
  1905. style={{ width: 200 }}
  1906. value={obj.remindFollow}
  1907. onChange={(e) => {
  1908. this.setState({
  1909. obj: Object.assign(obj, {
  1910. remindFollow: e.target.value,
  1911. }),
  1912. })
  1913. }}
  1914. >
  1915. <Radio value={0}>未提醒</Radio>
  1916. <Radio value={1}>已提醒</Radio>
  1917. </RadioGroup>
  1918. </Form.Item>
  1919. </div>
  1920. <div>
  1921. <Form.Item
  1922. {...formItemLayout}
  1923. label="备注">
  1924. <TextArea
  1925. rows={2}
  1926. style={{ width: 200 }}
  1927. placeholder="备注"
  1928. value={obj.remarks}
  1929. onChange={e => {
  1930. this.setState({
  1931. obj: Object.assign(obj, {
  1932. remarks: e.target.value,
  1933. }),
  1934. })
  1935. }}
  1936. />
  1937. </Form.Item>
  1938. </div>
  1939. <div>
  1940. <div style={{ margin: '20px 0 50px 0', display: 'flex', flexDirection: 'row', justifyContent: 'center' }}>
  1941. <Button
  1942. type="primary"
  1943. style={{ margin: '0 25px' }}
  1944. onClick={this.handleOk}
  1945. >
  1946. 保存
  1947. </Button>
  1948. {
  1949. this.state.obj.id &&
  1950. <Popconfirm
  1951. placement="top"
  1952. title="确定要删除吗?"
  1953. onConfirm={(e) => {
  1954. e.stopPropagation();
  1955. this.deleteTaskFeature(obj.id);
  1956. }}
  1957. okText="确定"
  1958. cancelText="取消"
  1959. >
  1960. <Button
  1961. type="primary"
  1962. style={{ margin: '0 25px', borderColor: 'red', background: 'red', color: '#fff' }}
  1963. >
  1964. 删除
  1965. </Button>
  1966. </Popconfirm>
  1967. }
  1968. <Button
  1969. type="ghost"
  1970. style={{ margin: '0 25px' }}
  1971. onClick={this.handleCancel}
  1972. >
  1973. 取消
  1974. </Button>
  1975. </div>
  1976. </div>
  1977. </Spin>
  1978. </Form>
  1979. </Modal>
  1980. <Modal
  1981. title="记录"
  1982. visible={this.state.logvisible}
  1983. width={400}
  1984. footer=""
  1985. onCancel={() => {
  1986. this.setState({
  1987. logvisible: false
  1988. })
  1989. }}
  1990. >
  1991. <Table
  1992. bordered
  1993. columns={this.state.logcolumns}
  1994. dataSource={this.state.logData}
  1995. pagination={this.state.pagination}
  1996. />
  1997. </Modal>
  1998. </div>
  1999. )
  2000. }
  2001. }
  2002. export default Progress;