annualReport.jsx 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680
  1. import React from 'react';
  2. import { Icon, Form, Button, Input, Spin, Table, message, Select, Modal, InputNumber } from 'antd';
  3. import './annualReport.less';
  4. import { annualReportStateList } from '../../dataDic.js';
  5. import { beforeUploadFile, getAnnualReportState } from '../../tools.js';
  6. import moment from 'moment';
  7. import ajax from 'jquery/src/ajax/xhr.js';
  8. import $ from 'jquery/src/ajax';
  9. const AnnualReportDescFrom = Form.create()(React.createClass({
  10. getInitialState() {
  11. return {
  12. loading: false,
  13. yearOption: []
  14. };
  15. },
  16. componentWillMount() {
  17. let d = new Date();
  18. let _me = this;
  19. d = d.getFullYear();
  20. for (let i = d; i > d - 20; i--) {
  21. _me.state.yearOption.push(
  22. <Select.Option value={i.toString()} key={i}>{i}</Select.Option>
  23. )
  24. };
  25. },
  26. handleSubmit(e) {
  27. e.preventDefault();
  28. if (!this.state.year && !this.props.data.year) {
  29. message.warning("请选择一个年份!")
  30. return;
  31. };
  32. this.props.form.validateFields((err, values) => {
  33. if (!err) {
  34. this.props.spinState(true);
  35. $.ajax({
  36. method: "POST",
  37. dataType: "json",
  38. crossDomain: false,
  39. url: globalConfig.context + "/techservice/cognizance/disposeAnnualReport",
  40. data: {
  41. id: this.props.data.id,
  42. year: this.state.year || this.props.data.year,
  43. totalTax: values.totalTax,
  44. incomeTaxRelief: values.incomeTaxRelief,
  45. totalExportVolume: values.totalExportVolume,
  46. basicResearchCost: values.basicResearchCost,
  47. state: 0,
  48. }
  49. }).done(function (data) {
  50. if (!data.error.length) {
  51. message.success('保存成功!');
  52. this.props.closeModal();
  53. this.props.spinState(false);
  54. this.props.form.resetFields();
  55. } else {
  56. message.warning(data.error[0].message);
  57. this.props.spinState(false);
  58. }
  59. }.bind(this));
  60. }
  61. });
  62. },
  63. render() {
  64. const FormItem = Form.Item;
  65. const { getFieldDecorator } = this.props.form;
  66. //const theData = this.props.detailData;
  67. const theData = {
  68. id: "thisdata.id",
  69. uid: "thisdata.uid",
  70. unitName: "thisdata.unitName",
  71. orgCode: "thisdata.orgCode",
  72. locationProvince: "thisdata.locationProvince",
  73. locationCity: "thisdata.locationCity",
  74. locationArea: "thisdata.locationArea",
  75. certificateNumber: "thisdata.certificateNumber",
  76. issuingDate: "thisdata.issuingDate",
  77. issuingDateFormattedDate: "thisdata.issuingDateFormattedDate",
  78. listed: "thisdata.listed",
  79. listedDate: "thisdata.listedDate",
  80. listedDateFormattedDate: "thisdata.listedDateFormattedDate",
  81. listedType: "thisdata.listedType",
  82. stockCode: "thisdata.stockCode",
  83. contacts: "thisdata.contacts",
  84. inventionPatent: "thisdata.inventionPatent",
  85. defensePatent: "thisdata.defensePatent",
  86. nationalCrop: "thisdata.nationalCrop",
  87. newPlantCariety: "thisdata.newPlantCariety",
  88. nationalDrug: "thisdata.nationalDrug",
  89. chineseMedicine: "thisdata.chineseMedicine",
  90. utilityPatent: "thisdata.utilityPatent",
  91. circuitDesign: "thisdata.circuitDesign",
  92. exteriorPatent: "thisdata.exteriorPatent",
  93. softwareWorks: "thisdata.softwareWorks",
  94. firmTotal: "thisdata.firmTotal",
  95. techTotal: "thisdata.techTotal",
  96. newEmployment: "thisdata.newEmployment",
  97. graduateNumber: "thisdata.graduateNumber",
  98. totalRevenue: 123,
  99. salesRevenue: 223,
  100. netAsset: 333,
  101. lastYearRevenue: 224,
  102. grossProfit: 334,
  103. researchCost: 134,
  104. territory: 67,
  105. basicResearchCost: 234,
  106. totalTax: 234,
  107. incomeTaxRelief: 21,
  108. totalExportVolume: 56
  109. }
  110. const formItemLayout = {
  111. labelCol: { span: 0 },
  112. wrapperCol: { span: 20 },
  113. };
  114. const _me = this;
  115. return (
  116. <Form onSubmit={this.handleSubmit} className="annualReport-form">
  117. <div className="activityCost-title"><span>年份: </span>
  118. {
  119. this.props.data.year ? <span>{this.props.data.year}</span> :
  120. <Select placeholder="请选择年份" style={{ width: 200 }}
  121. onSelect={(e, n) => { this.state.year = e }}>
  122. {this.state.yearOption}
  123. </Select>
  124. }
  125. </div>
  126. <div className="clearfix" style={{ padding: '0 10px' }}>
  127. <div className="half-item" style={{ marginRight: "50%" }}>
  128. <p className="item-title">企业名称: </p>
  129. <p>{theData.unitName}</p>
  130. </div>
  131. <div className="half-item">
  132. <p className="item-title">组织机构代码或统一社会信用代码: </p>
  133. <p>{theData.orgCode}</p>
  134. </div>
  135. <div className="half-item">
  136. <p className="item-title">所属地区: </p>
  137. <p>{theData.location || " "}</p>
  138. </div>
  139. <div className="half-item">
  140. <p className="item-title">高新技术企业认定证书编号: </p>
  141. <p>{theData.certificateNumber}</p>
  142. </div>
  143. <div className="half-item">
  144. <p className="item-title">高新技术企业认定时间: </p>
  145. <p>{theData.issuingDateFormattedDate}</p>
  146. </div>
  147. <div className="half-item">
  148. <p className="item-title">企业是否上市: </p>
  149. <p>{theData.listed == 0 ? "否" : "是"}</p>
  150. </div>
  151. <div className="half-item">
  152. <p className="item-title">上市时间: </p>
  153. <p>{theData.listedDateFormattedDate}</p>
  154. </div>
  155. <div className="half-item">
  156. <p className="item-title">上市类型: </p>
  157. <p>
  158. {(() => {
  159. switch (theData.listedType) {
  160. case 0:
  161. return "股票型上市公司";
  162. case 1:
  163. return "债券型上市公司";
  164. default:
  165. return "";
  166. }
  167. })()}
  168. </p>
  169. </div>
  170. <div className="half-item">
  171. <p className="item-title">股票代码: </p>
  172. <p>{theData.stockCode}</p>
  173. </div>
  174. <div className="half-item">
  175. <p className="item-title">企业联系人: </p>
  176. <p>{theData.contacts}</p>
  177. </div>
  178. </div>
  179. <div className="activityCost-title"><span>本年度获得的知识产权数: </span></div>
  180. <div className="clearfix annualReport-box">
  181. <div className="four-item">
  182. <p className="item-title">发明专利数: </p>
  183. <p>{theData.inventionPatent}</p>
  184. </div>
  185. <div className="four-item">
  186. <p className="item-title">国防专利数: </p>
  187. <p>{theData.defensePatent}</p>
  188. </div>
  189. <div className="four-item">
  190. <p className="item-title">国家级农作物品种数: </p>
  191. <p>{theData.nationalCrop}</p>
  192. </div>
  193. <div className="four-item">
  194. <p className="item-title">植物新品种数: </p>
  195. <p>{theData.newPlantCariety}</p>
  196. </div>
  197. <div className="four-item">
  198. <p className="item-title">国家新药数: </p>
  199. <p>{theData.nationalDrug}</p>
  200. </div>
  201. <div className="four-item">
  202. <p className="item-title">国家一级中药保护品种数: </p>
  203. <p>{theData.chineseMedicine}</p>
  204. </div>
  205. <div className="four-item">
  206. <p className="item-title">实用新型专利数: </p>
  207. <p>{theData.utilityPatent}</p>
  208. </div>
  209. <div className="four-item">
  210. <p className="item-title">集成电路布图设计专有权数: </p>
  211. <p>{theData.circuitDesign}</p>
  212. </div>
  213. <div className="four-item">
  214. <p className="item-title">外观设计专利数: </p>
  215. <p>{theData.exteriorPatent}</p>
  216. </div>
  217. <div className="four-item">
  218. <p className="item-title">软件著作权数: </p>
  219. <p>{theData.softwareWorks}</p>
  220. </div>
  221. </div>
  222. <div className="activityCost-title"><span>本年度人员情况(人): </span></div>
  223. <div className="clearfix annualReport-box">
  224. <div className="four-item">
  225. <p className="item-title">职工总人数: </p>
  226. <p>{theData.firmTotal}</p>
  227. </div>
  228. <div className="four-item">
  229. <p className="item-title">科技人员数: </p>
  230. <p>{theData.techTotal}</p>
  231. </div>
  232. <div className="four-item">
  233. <p className="item-title">新增就业人数: </p>
  234. <p>{theData.newEmployment}</p>
  235. </div>
  236. <div className="four-item">
  237. <p className="item-title">高校应届毕业生人数: </p>
  238. <p>{theData.graduateNumber}</p>
  239. </div>
  240. </div>
  241. <div className="activityCost-title"><span>企业本年度财务状况(万元): </span></div>
  242. <div className="clearfix annualReport-box">
  243. <div className="four-item">
  244. <p className="item-title">企业总收入: </p>
  245. <p>{theData.totalRevenue}</p>
  246. </div>
  247. <div className="four-item">
  248. <p className="item-title">销售收入: </p>
  249. <p>{theData.salesRevenue}</p>
  250. </div>
  251. <div className="four-item">
  252. <p className="item-title">所有者权益(净资产)合计: </p>
  253. <p>{theData.netAsset}</p>
  254. </div>
  255. <div className="four-item">
  256. <p className="item-title">高新技术产品(服务)收入:
  257. </p>
  258. <p>
  259. <span>{theData.lastYearRevenue} </span>
  260. {(() => {
  261. let s = (theData.lastYearRevenue / theData.totalRevenue * 100).toFixed(2);
  262. if (s < 50) {
  263. return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于60%</span>
  264. } else {
  265. return <span> 占比总收入的{s}%</span>
  266. };
  267. })()}
  268. </p>
  269. </div>
  270. <div className="four-item">
  271. <p className="item-title">利润总额: </p>
  272. <p>{theData.grossProfit}</p>
  273. </div>
  274. <div className="four-item">
  275. <p className="item-title">研发费用总额:
  276. </p>
  277. <p>
  278. <span>{theData.researchCost} </span>
  279. {(() => {
  280. let s = (theData.researchCost / theData.salesRevenue * 100).toFixed(2);
  281. if (theData.salesRevenue < 5000) {
  282. if (s < 5) {
  283. return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于60%</span>
  284. } else {
  285. return <span> 占比总收入的{s}%</span>
  286. };
  287. } else if (5000 < theData.salesRevenue < 20000) {
  288. if (s < 4) {
  289. return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于60%</span>
  290. } else {
  291. return <span> 占比总收入的{s}%</span>
  292. };
  293. } else if (theData.salesRevenue >= 20000) {
  294. if (s < 3) {
  295. return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于60%</span>
  296. } else {
  297. return <span> 占比总收入的{s}%</span>
  298. };
  299. }
  300. })()}
  301. </p>
  302. </div>
  303. <div className="four-item" style={{ marginRight: '25%' }}>
  304. <p className="item-title">在中国境内研发费用: </p>
  305. <p>{theData.territory}</p>
  306. </div>
  307. <div className="four-item">
  308. <p className="item-title">纳税总额: </p>
  309. <FormItem
  310. {...formItemLayout}
  311. >
  312. {getFieldDecorator('totalTax', {
  313. rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
  314. initialValue: theData.totalTax
  315. })(
  316. <InputNumber />
  317. )}
  318. </FormItem>
  319. </div>
  320. <div className="four-item">
  321. <p className="item-title">高企所得税减免额: </p>
  322. <FormItem
  323. {...formItemLayout}
  324. >
  325. {getFieldDecorator('incomeTaxRelief', {
  326. rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
  327. initialValue: theData.incomeTaxRelief
  328. })(
  329. <InputNumber />
  330. )}
  331. </FormItem>
  332. </div>
  333. <div className="four-item">
  334. <p className="item-title">出口创汇总额(人民币): </p>
  335. <FormItem
  336. {...formItemLayout}
  337. >
  338. {getFieldDecorator('totalExportVolume', {
  339. rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
  340. initialValue: theData.totalExportVolume
  341. })(
  342. <InputNumber />
  343. )}
  344. </FormItem>
  345. </div>
  346. <div className="four-item">
  347. <p className="item-title">基础研究投入费用: </p>
  348. <FormItem
  349. {...formItemLayout}
  350. >
  351. {getFieldDecorator('basicResearchCost', {
  352. rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
  353. initialValue: theData.basicResearchCost
  354. })(
  355. <InputNumber />
  356. )}
  357. </FormItem>
  358. </div>
  359. </div>
  360. <FormItem style={{ marginTop: '20px' }}>
  361. <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
  362. <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
  363. </FormItem>
  364. </Form >
  365. );
  366. },
  367. }));
  368. const AnnualReportDesc = React.createClass({
  369. loadData(v) {
  370. this.setState({
  371. loading: true
  372. });
  373. $.ajax({
  374. method: "post",
  375. dataType: "json",
  376. crossDomain: false,
  377. url: globalConfig.context + "/techservice/cognizance/annualReportDetail",
  378. data: {
  379. year: this.props.data ? this.props.data.year : (new Date().getFullYear() - 1)
  380. }
  381. }).done((data) => {
  382. if (data.error.length || !data.data || !data.data.list) {
  383. message.warning(data.error[0].message);
  384. return;
  385. };
  386. this.state.detailData = {
  387. id: thisdata.id,
  388. uid: thisdata.uid,
  389. unitName: thisdata.unitName,
  390. orgCode: thisdata.orgCode,
  391. locationProvince: thisdata.locationProvince,
  392. locationCity: thisdata.locationCity,
  393. locationArea: thisdata.locationArea,
  394. location: thisdata.locationProvince + " / " + thisdata.locationCity + " / " + thisdata.locationArea,
  395. certificateNumber: thisdata.certificateNumber,
  396. issuingDate: thisdata.issuingDate,
  397. issuingDateFormattedDate: thisdata.issuingDateFormattedDate,
  398. listed: thisdata.listed,
  399. listedDate: thisdata.listedDate,
  400. listedDateFormattedDate: thisdata.listedDateFormattedDate,
  401. listedType: thisdata.listedType,
  402. stockCode: thisdata.stockCode,
  403. contacts: thisdata.contacts,
  404. inventionPatent: thisdata.inventionPatent,
  405. defensePatent: thisdata.defensePatent,
  406. nationalCrop: thisdata.nationalCrop,
  407. newPlantCariety: thisdata.newPlantCariety,
  408. nationalDrug: thisdata.nationalDrug,
  409. chineseMedicine: thisdata.chineseMedicine,
  410. utilityPatent: thisdata.utilityPatent,
  411. circuitDesign: thisdata.circuitDesign,
  412. exteriorPatent: thisdata.exteriorPatent,
  413. softwareWorks: thisdata.softwareWorks,
  414. firmTotal: thisdata.firmTotal,
  415. techTotal: thisdata.techTotal,
  416. newEmployment: thisdata.newEmployment,
  417. graduateNumber: thisdata.graduateNumber,
  418. totalRevenue: thisdata.totalRevenue,
  419. salesRevenue: thisdata.salesRevenue,
  420. netAsset: thisdata.netAsset,
  421. lastYearRevenue: thisdata.lastYearRevenue,
  422. grossProfit: thisdata.grossProfit,
  423. researchCost: thisdata.researchCost,
  424. territory: thisdata.territory,
  425. basicResearchCost: thisdata.basicResearchCost,
  426. totalTax: thisdata.totalTax,
  427. incomeTaxRelief: thisdata.incomeTaxRelief,
  428. totalExportVolume: thisdata.totalExportVolume
  429. };
  430. }).always(function () {
  431. this.setState({
  432. loading: false,
  433. visible: v
  434. });
  435. }.bind(this));
  436. },
  437. getInitialState() {
  438. return {
  439. visible: false,
  440. loading: false
  441. };
  442. },
  443. componentWillReceiveProps(nextProps) {
  444. if (nextProps.showDesc) {
  445. this.loadData(nextProps.showDesc);
  446. };
  447. },
  448. showModal() {
  449. this.setState({
  450. visible: true,
  451. });
  452. },
  453. handleOk() {
  454. this.setState({
  455. visible: false,
  456. });
  457. this.props.closeDesc(false);
  458. },
  459. handleCancel(e) {
  460. this.setState({
  461. visible: false,
  462. });
  463. this.props.closeDesc(false);
  464. },
  465. spinChange(e) {
  466. this.setState({
  467. loading: e
  468. });
  469. },
  470. render() {
  471. return (
  472. <div className="patent-addNew">
  473. <Spin spinning={this.state.loading} className='spin-box'>
  474. <Modal title="财务报表信息" visible={this.state.visible}
  475. onOk={this.handleOk} onCancel={this.handleCancel}
  476. width='1000px'
  477. footer=''
  478. >
  479. <AnnualReportDescFrom
  480. data={this.props.data}
  481. detailData={this.state.detailData}
  482. spinState={this.spinChange} closeModal={this.handleCancel} />
  483. </Modal>
  484. </Spin>
  485. </div>
  486. );
  487. },
  488. });
  489. const AnnualReport = React.createClass({
  490. loadData(pageNo) {
  491. this.state.data = [];
  492. this.setState({
  493. loading: true
  494. });
  495. $.ajax({
  496. method: "post",
  497. dataType: "json",
  498. crossDomain: false,
  499. url: globalConfig.context + "/techservice/cognizance/annualReport",
  500. data: {
  501. pageNo: pageNo || 1,
  502. pageSize: this.state.pagination.pageSize,
  503. }
  504. }).done((data) => {
  505. if (!data.data || !data.data.list) {
  506. if (data.error.length) {
  507. message.warning(data.error[0].message);
  508. };
  509. return;
  510. };
  511. for (let i = 0; i < data.data.list.length; i++) {
  512. let thisdata = data.data.list[i];
  513. this.state.data.push({
  514. key: i,
  515. id: thisdata.id,
  516. uid: thisdata.uid,
  517. createTime: thisdata.createTime,
  518. lastUpdateTime: thisdata.lastUpdateTime,
  519. totalTax: thisdata.totalTax,
  520. incomeTaxRelief: thisdata.incomeTaxRelief,
  521. totalExportVolume: thisdata.totalExportVolume,
  522. year: thisdata.year,
  523. state: thisdata.state,
  524. createTimeFormattedDate: thisdata.createTimeFormattedDate,
  525. lastUpdateTimeFormattedDate: thisdata.lastUpdateTimeFormattedDate
  526. });
  527. };
  528. this.state.pagination.current = data.data.pageNo;
  529. this.state.pagination.total = data.data.totalCount;
  530. this.setState({
  531. dataSource: this.state.data,
  532. pagination: this.state.pagination
  533. });
  534. }).always(function () {
  535. this.setState({
  536. loading: false
  537. });
  538. }.bind(this));
  539. },
  540. getInitialState() {
  541. return {
  542. selectedRowKeys: [],
  543. selectedRows: [],
  544. loading: false,
  545. pagination: {
  546. defaultCurrent: 1,
  547. defaultPageSize: 10,
  548. showQuickJumper: true,
  549. pageSize: 10,
  550. onChange: function (page) {
  551. this.loadData(page);
  552. }.bind(this),
  553. showTotal: function (total) {
  554. return '共' + total + '条数据';
  555. }
  556. },
  557. columns: [
  558. {
  559. title: '年份',
  560. dataIndex: 'year',
  561. key: 'year'
  562. }, {
  563. title: '创建时间',
  564. dataIndex: 'createTimeFormattedDate',
  565. key: 'createTimeFormattedDate'
  566. }, {
  567. title: '最近更新时间',
  568. dataIndex: 'lastUpdateTimeFormattedDate',
  569. key: 'lastUpdateTimeFormattedDate'
  570. }, {
  571. title: '年报状态',
  572. dataIndex: 'state',
  573. key: 'state',
  574. render: (text) => {
  575. return getAnnualReportState(text)
  576. }
  577. }
  578. ],
  579. dataSource: []
  580. };
  581. },
  582. componentWillMount() {
  583. this.loadData();
  584. },
  585. tableRowClick(record, index) {
  586. this.state.RowData = record;
  587. this.setState({
  588. showDesc: true
  589. });
  590. },
  591. delectRow() {
  592. let deletedIds = [];
  593. for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
  594. let rowItem = this.state.selectedRows[idx];
  595. if (rowItem.id) {
  596. deletedIds.push(rowItem.id)
  597. }
  598. }
  599. this.setState({
  600. selectedRowKeys: [],
  601. loading: deletedIds.length > 0
  602. });
  603. $.ajax({
  604. method: "POST",
  605. dataType: "json",
  606. crossDomain: false,
  607. url: globalConfig.context + "/techservice/cognizance/deleteAnnualReport",
  608. data: {
  609. ids: deletedIds
  610. }
  611. }).done(function (data) {
  612. if (!data.error.length) {
  613. message.success('保存成功!');
  614. this.setState({
  615. loading: false,
  616. });
  617. } else {
  618. message.warning(data.error[0].message);
  619. };
  620. this.loadData();
  621. }.bind(this));
  622. },
  623. closeDesc(e) {
  624. this.state.showDesc = e;
  625. this.loadData();
  626. },
  627. search() {
  628. this.loadData();
  629. },
  630. reset() {
  631. this.loadData();
  632. },
  633. render() {
  634. const rowSelection = {
  635. selectedRowKeys: this.state.selectedRowKeys,
  636. onChange: (selectedRowKeys, selectedRows) => {
  637. this.setState({
  638. selectedRows: selectedRows,
  639. selectedRowKeys: selectedRowKeys
  640. });
  641. }
  642. };
  643. const hasSelected = this.state.selectedRowKeys.length > 0;
  644. return (
  645. <div className="user-content" >
  646. <div className="content-title">
  647. <span>企业年报</span>
  648. </div>
  649. <div className="user-search">
  650. <p>
  651. <Button style={{ background: "#ea0862", border: "none", color: "#fff" }}
  652. onClick={this.tableRowClick}>添加<Icon type="plus" /></Button>
  653. <Button style={{ background: "#3fcf9e", border: "none", color: "#fff" }}
  654. disabled={!hasSelected}
  655. onClick={this.delectRow}>删除<Icon type="minus" /></Button>
  656. </p>
  657. </div>
  658. <div className="patent-table">
  659. <Spin spinning={this.state.loading}>
  660. <Table columns={this.state.columns}
  661. dataSource={this.state.dataSource}
  662. pagination={this.state.pagination}
  663. rowSelection={rowSelection}
  664. onRowClick={this.tableRowClick} />
  665. </Spin>
  666. </div>
  667. <AnnualReportDesc
  668. data={this.state.RowData}
  669. showDesc={this.state.showDesc} closeDesc={this.closeDesc} />
  670. </div >
  671. );
  672. }
  673. });
  674. export default AnnualReport;