|
@@ -0,0 +1,506 @@
|
|
|
+import React from 'react';
|
|
|
+import { Icon, Button, Input, Spin, Table, message, Select, Modal, DatePicker, Cascader, Transfer, InputNumber } from 'antd';
|
|
|
+import { techFieldList, technicalSourceList } from '../../dataDic.js';
|
|
|
+import { getTechField, getTechnicalSource } from '../../tools.js';
|
|
|
+import './activity.less';
|
|
|
+import moment from 'moment';
|
|
|
+import ajax from 'jquery/src/ajax/xhr.js';
|
|
|
+import $ from 'jquery/src/ajax';
|
|
|
+
|
|
|
+const ActivityDesc = React.createClass({
|
|
|
+ getInitialState() {
|
|
|
+ return {
|
|
|
+ visible: false,
|
|
|
+ loading: false,
|
|
|
+ targetKeys: [],
|
|
|
+ selectedKeys: []
|
|
|
+ };
|
|
|
+ },
|
|
|
+ handleOk() {
|
|
|
+ this.setState({
|
|
|
+ loading: true,
|
|
|
+ });
|
|
|
+ $.ajax({
|
|
|
+ method: "POST",
|
|
|
+ dataType: "json",
|
|
|
+ crossDomain: false,
|
|
|
+ url: globalConfig.context + "/techservice/cognizance/disposeActivity",
|
|
|
+ data: {
|
|
|
+ id: this.props.data.id,
|
|
|
+ activityName: this.state.activityName,
|
|
|
+ activityNumber: this.state.activityNumber,
|
|
|
+ startDateFormattedDate: this.state.startDateFormattedDate,
|
|
|
+ endDateFormattedDate: this.state.endDateFormattedDate,
|
|
|
+ techField: this.state.techField,
|
|
|
+ technicalSource: this.state.technicalSource,
|
|
|
+ intellectualPropertyNumber: this.state.targetKeys,
|
|
|
+ budget: this.state.budget,
|
|
|
+ firstYearExpenditure: this.state.firstYearExpenditure,
|
|
|
+ secondYearExpenditure: this.state.secondYearExpenditure,
|
|
|
+ thirdYearExpenditure: this.state.thirdYearExpenditure,
|
|
|
+ implement: this.state.implement,
|
|
|
+ technologyInnovation: this.state.technologyInnovation,
|
|
|
+ achievement: this.state.achievement
|
|
|
+ },
|
|
|
+ success: function (data) {
|
|
|
+ if (data.data) {
|
|
|
+ this.setState({
|
|
|
+ id: this.props.data.id,
|
|
|
+ activityName: this.state.activityName,
|
|
|
+ activityNumber: this.state.activityNumber,
|
|
|
+ startDateFormattedDate: this.state.startDateFormattedDate,
|
|
|
+ endDateFormattedDate: this.state.endDateFormattedDate,
|
|
|
+ techField: this.state.techField,
|
|
|
+ technicalSource: this.state.technicalSource,
|
|
|
+ intellectualPropertyNumber: this.state.targetKeys,
|
|
|
+ budget: this.state.budget,
|
|
|
+ firstYearExpenditure: this.state.firstYearExpenditure,
|
|
|
+ secondYearExpenditure: this.state.secondYearExpenditure,
|
|
|
+ thirdYearExpenditure: this.state.thirdYearExpenditure,
|
|
|
+ implement: this.state.implement,
|
|
|
+ technologyInnovation: this.state.technologyInnovation,
|
|
|
+ achievement: this.state.achievement
|
|
|
+ });
|
|
|
+ } else if (data.error.length && data.error[0].message) {
|
|
|
+ message.warning(data.error[0].message);
|
|
|
+ }
|
|
|
+ }.bind(this),
|
|
|
+ }).done(function (data) {
|
|
|
+ if (!data.error.length) {
|
|
|
+ message.success('保存成功!');
|
|
|
+ this.setState({
|
|
|
+ loading: false,
|
|
|
+ visible: false
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ message.warning(data.error[0].message);
|
|
|
+ };
|
|
|
+ this.props.closeDesc(false);
|
|
|
+ }.bind(this));
|
|
|
+ },
|
|
|
+ handleCancel(e) {
|
|
|
+ this.setState({
|
|
|
+ visible: false,
|
|
|
+ });
|
|
|
+ this.props.closeDesc(false);
|
|
|
+ },
|
|
|
+ componentWillReceiveProps(nextProps) {
|
|
|
+ this.state.visible = nextProps.showDesc;
|
|
|
+ if (nextProps.data) {
|
|
|
+ this.state.activityName = nextProps.data.activityName;
|
|
|
+ this.state.activityNumber = nextProps.data.activityNumber;
|
|
|
+ this.state.startDateFormattedDate = nextProps.data.startDateFormattedDate;
|
|
|
+ this.state.endDateFormattedDate = nextProps.data.endDateFormattedDate;
|
|
|
+ this.state.techField = nextProps.data.techField;
|
|
|
+ this.state.technicalSource = nextProps.data.technicalSource;
|
|
|
+ this.state.targetKeys = nextProps.data.intellectualPropertyNumber;
|
|
|
+ this.state.budget = nextProps.data.budget;
|
|
|
+ this.state.firstYearExpenditure = nextProps.data.firstYearExpenditure;
|
|
|
+ this.state.secondYearExpenditure = nextProps.data.secondYearExpenditure;
|
|
|
+ this.state.thirdYearExpenditure = nextProps.data.thirdYearExpenditure;
|
|
|
+ this.state.implement = nextProps.data.implement;
|
|
|
+ this.state.technologyInnovation = nextProps.data.technologyInnovation;
|
|
|
+ this.state.achievement = nextProps.data.achievement;
|
|
|
+ };
|
|
|
+ },
|
|
|
+ intellectualChange(nextTargetKeys, direction, moveKeys) {
|
|
|
+ this.setState({ targetKeys: nextTargetKeys });
|
|
|
+
|
|
|
+ console.log('targetKeys: ', this.state.targetKeys);
|
|
|
+ console.log('direction: ', this.state.direction);
|
|
|
+ console.log('moveKeys: ', this.state.moveKeys);
|
|
|
+ },
|
|
|
+ intellectualSelectChange(sourceSelectedKeys, targetSelectedKeys) {
|
|
|
+ this.setState({ selectedKeys: [...sourceSelectedKeys, ...targetSelectedKeys] });
|
|
|
+
|
|
|
+ console.log('sourceSelectedKeys: ', this.state.sourceSelectedKeys);
|
|
|
+ console.log('targetSelectedKeys: ', this.state.targetSelectedKeys);
|
|
|
+ },
|
|
|
+ render() {
|
|
|
+ const mockData = [];
|
|
|
+ for (let i = 0; i < 20; i++) {
|
|
|
+ mockData.push({
|
|
|
+ key: 20000 + i.toString(),
|
|
|
+ title: `content${i + 1}`,
|
|
|
+ description: `description of content${i + 1}`,
|
|
|
+ });
|
|
|
+ };
|
|
|
+ if (this.props.data) {
|
|
|
+ return (
|
|
|
+ <div className="admin-desc">
|
|
|
+ <Modal title="企业研究开发活动情况表" visible={this.state.visible} onCancel={this.handleCancel}
|
|
|
+ width='800px' footer={[
|
|
|
+ <Button key="submit" type="primary" size="large" loading={this.state.loading} onClick={this.handleOk}>保存</Button>,
|
|
|
+ <Button key="back" type="ghost" size="large" onClick={this.handleCancel}>取消</Button>
|
|
|
+ ]}
|
|
|
+ className="admin-desc-content">
|
|
|
+ <div className="clearfix">
|
|
|
+ <div className="half-div">
|
|
|
+ <p>研发活动编号:</p>
|
|
|
+ <Input value={this.state.activityNumber}
|
|
|
+ onChange={(e) => { this.setState({ activityNumber: e.target.value }); }} />
|
|
|
+ </div>
|
|
|
+ <div className="half-div">
|
|
|
+ <p>研发活动名称:</p>
|
|
|
+ <Input value={this.state.activityName}
|
|
|
+ onChange={(e) => { this.setState({ activityName: e.target.value }); }} />
|
|
|
+ </div>
|
|
|
+ <div className="half-div">
|
|
|
+ <p>开始日期:</p>
|
|
|
+ <DatePicker
|
|
|
+ value={this.state.startDateFormattedDate ? moment(this.state.startDateFormattedDate) : null}
|
|
|
+ onChange={(data, dataString) => { this.setState({ startDateFormattedDate: dataString }); }} />
|
|
|
+ </div>
|
|
|
+ <div className="half-div">
|
|
|
+ <p>结束日期:</p>
|
|
|
+ <DatePicker
|
|
|
+ value={this.state.endDateFormattedDate ? moment(this.state.endDateFormattedDate) : null}
|
|
|
+ onChange={(data, dataString) => { this.setState({ endDateFormattedDate: dataString }); }} />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <p>技术领域:</p>
|
|
|
+ <Cascader
|
|
|
+ style={{ width: 500 }}
|
|
|
+ options={techFieldList}
|
|
|
+ value={this.state.techField}
|
|
|
+ onChange={(value, selectedOptions) => { this.setState({ techField: value }); console.log(value) }}
|
|
|
+ placeholder="Please select"
|
|
|
+ showSearch
|
|
|
+ />,
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <p>技术来源:</p>
|
|
|
+ <Select placeholder="选择技术来源" style={{ width: 240 }}
|
|
|
+ value={this.state.technicalSource}
|
|
|
+ onChange={(e) => { this.setState({ technicalSource: e }) }}>
|
|
|
+ {
|
|
|
+ technicalSourceList.map(function (item, i) {
|
|
|
+ return <Select.Option key={1000 + i} value={item.value} >{item.key}</Select.Option>
|
|
|
+ })
|
|
|
+ }
|
|
|
+ </Select>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <p>知识产权编号:</p>
|
|
|
+ <Transfer
|
|
|
+ dataSource={mockData}
|
|
|
+ titles={['Source', 'Target']}
|
|
|
+ targetKeys={this.state.targetKeys}
|
|
|
+ selectedKeys={this.state.selectedKeys}
|
|
|
+ onChange={this.intellectualChange}
|
|
|
+ onSelectChange={this.intellectualSelectChange}
|
|
|
+ render={item => item.title}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <p>研发经费总预算(万元):</p>
|
|
|
+ <InputNumber value={this.state.budget}
|
|
|
+ onChange={(e) => { this.setState({ budget: e.target.value }); }} />
|
|
|
+ </div>
|
|
|
+ <div className="clearfix" >
|
|
|
+ <p>研发经费近三年总支出(万元):</p>
|
|
|
+ <div className="half-div">
|
|
|
+ <span>总计(万元):</span>
|
|
|
+ <InputNumber value={this.state.activityNumber}
|
|
|
+ onChange={(e) => { this.setState({ activityNumber: e.target.value }); }} />
|
|
|
+ </div>
|
|
|
+ <div className="half-div">
|
|
|
+ <span>其中(第一年):</span>
|
|
|
+ <InputNumber value={this.state.firstYearExpenditure}
|
|
|
+ onChange={(e) => { this.setState({ firstYearExpenditure: e.target.value }); }} />
|
|
|
+ </div>
|
|
|
+ <div className="half-div">
|
|
|
+ <span>其中(第二年):</span>
|
|
|
+ <InputNumber value={this.state.secondYearExpenditure}
|
|
|
+ onChange={(e) => { this.setState({ secondYearExpenditure: e.target.value }); }} />
|
|
|
+ </div>
|
|
|
+ <div className="half-div">
|
|
|
+ <span>其中(第三年):</span>
|
|
|
+ <InputNumber value={this.state.thirdYearExpenditure}
|
|
|
+ onChange={(e) => { this.setState({ thirdYearExpenditure: e.target.value }); }} />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className="clearfix">
|
|
|
+ <div className="half-div">
|
|
|
+ <p>目的及组织实施方式(限400字):</p>
|
|
|
+ <Input type="textarea" rows={6}
|
|
|
+ value={this.state.implement}
|
|
|
+ onChange={(e) => {
|
|
|
+ if (e.target.value.length > 400) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.setState({ implement: e.target.value });
|
|
|
+ }} />
|
|
|
+ </div>
|
|
|
+ <div className="half-div">
|
|
|
+ <p>核心技术及创新点(限400字):</p>
|
|
|
+ <Input type="textarea" rows={6}
|
|
|
+ value={this.state.technologyInnovation}
|
|
|
+ onChange={(e) => {
|
|
|
+ if (e.target.value.length > 400) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.setState({ technologyInnovation: e.target.value });
|
|
|
+ }} />
|
|
|
+ </div>
|
|
|
+ <div className="half-div">
|
|
|
+ <p>取得的阶段性成果(限400字):</p>
|
|
|
+ <Input type="textarea" rows={6}
|
|
|
+ value={this.state.achievement}
|
|
|
+ onChange={(e) => {
|
|
|
+ if (e.target.value.length > 400) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.setState({ achievement: e.target.value });
|
|
|
+ }} />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ return <div></div>
|
|
|
+ }
|
|
|
+ },
|
|
|
+});
|
|
|
+
|
|
|
+const Activity = React.createClass({
|
|
|
+ loadData(pageNo) {
|
|
|
+ this.state.data = [];
|
|
|
+ this.setState({
|
|
|
+ loading: true
|
|
|
+ });
|
|
|
+ $.when($.ajax({
|
|
|
+ method: "post",
|
|
|
+ dataType: "json",
|
|
|
+ crossDomain: false,
|
|
|
+ url: globalConfig.context + "/techservice/cognizance/activity",
|
|
|
+ data: {
|
|
|
+ pageNo: pageNo || 1,
|
|
|
+ pageSize: this.state.pagination.pageSize,
|
|
|
+ activityNumber: this.state.activityNumber,
|
|
|
+ activityName: this.state.activityName,
|
|
|
+ startDate: this.state.startDate,
|
|
|
+ endDate: this.state.endDate
|
|
|
+ }
|
|
|
+ }),$.ajax({
|
|
|
+ method: "get",
|
|
|
+ dataType: "json",
|
|
|
+ crossDomain: false,
|
|
|
+ url: globalConfig.context + "/techservice/cognizance/intellectualList",
|
|
|
+ data: {
|
|
|
+ pageNo: pageNo || 1,
|
|
|
+ pageSize: 99,
|
|
|
+ }
|
|
|
+ })).done((data1,data2) => {
|
|
|
+ let data = data1[0];
|
|
|
+ let intellectualList = data2[0];
|
|
|
+ debugger
|
|
|
+ if (data.error.length || !data.data || !data.data.list) {
|
|
|
+ message.warning(data.error[0].message);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ for (let i = 0; i < data.data.list.length; i++) {
|
|
|
+ let thisdata = data.data.list[i];
|
|
|
+ this.state.data.push({
|
|
|
+ key: i,
|
|
|
+ id: thisdata.id,
|
|
|
+ uid: thisdata.uid,
|
|
|
+ activityNumber: thisdata.activityNumber,
|
|
|
+ activityName: thisdata.activityName,
|
|
|
+ startDate: thisdata.startDate,
|
|
|
+ endDate: thisdata.endDate,
|
|
|
+ techField: [Number(thisdata.technicalField1), Number(thisdata.technicalField2), Number(thisdata.technicalField3)],
|
|
|
+ technicalField: getTechField(thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3),
|
|
|
+ technicalField1: thisdata.technicalField1,
|
|
|
+ technicalField2: thisdata.technicalField2,
|
|
|
+ technicalField3: thisdata.technicalField3,
|
|
|
+ technicalSource: getTechnicalSource(thisdata.technicalSource),
|
|
|
+ intellectualPropertyNumber: thisdata.intellectualPropertyNumber.split(","),
|
|
|
+ budget: thisdata.budget,
|
|
|
+ firstYearExpenditure: thisdata.firstYearExpenditure,
|
|
|
+ secondYearExpenditure: thisdata.secondYearExpenditure,
|
|
|
+ thirdYearExpenditure: thisdata.thirdYearExpenditure,
|
|
|
+ implement: thisdata.implement,
|
|
|
+ technologyInnovation: thisdata.technologyInnovation,
|
|
|
+ achievement: thisdata.achievement,
|
|
|
+ internalLaborCost: thisdata.internalLaborCost,
|
|
|
+ internalDirectCost: thisdata.internalDirectCost,
|
|
|
+ internalDepreciationCost: thisdata.internalDepreciationCost,
|
|
|
+ internalAmortizationCost: thisdata.internalAmortizationCost,
|
|
|
+ internalDesignCost: thisdata.internalDesignCost,
|
|
|
+ internalEquipmentCost: thisdata.internalEquipmentCost,
|
|
|
+ internalOtherCost: thisdata.internalOtherCost,
|
|
|
+ externalTotalCost: thisdata.externalTotalCost,
|
|
|
+ externalAbroadCost: thisdata.externalAbroadCost,
|
|
|
+ enterpriseFiller: thisdata.enterpriseFiller,
|
|
|
+ signDate: thisdata.signDate,
|
|
|
+ sortNumber: thisdata.sortNumber,
|
|
|
+ startDateFormattedDate: thisdata.startDateFormattedDate,
|
|
|
+ endDateFormattedDate: thisdata.endDateFormattedDate
|
|
|
+ });
|
|
|
+ };
|
|
|
+ this.state.pagination.current = data.data.pageNo;
|
|
|
+ this.state.pagination.total = data.data.totalCount;
|
|
|
+ this.setState({
|
|
|
+ dataSource: this.state.data,
|
|
|
+ pagination: this.state.pagination
|
|
|
+ });
|
|
|
+ }).always(function () {
|
|
|
+ this.setState({
|
|
|
+ loading: false
|
|
|
+ });
|
|
|
+ }.bind(this));
|
|
|
+ },
|
|
|
+ getInitialState() {
|
|
|
+ return {
|
|
|
+ selectedRowKeys: [],
|
|
|
+ selectedRows: [],
|
|
|
+ loading: false,
|
|
|
+ pagination: {
|
|
|
+ defaultCurrent: 1,
|
|
|
+ defaultPageSize: 10,
|
|
|
+ showQuickJumper: true,
|
|
|
+ pageSize: 10,
|
|
|
+ onChange: function (page) {
|
|
|
+ this.loadData(page);
|
|
|
+ }.bind(this),
|
|
|
+ showTotal: function (total) {
|
|
|
+ return '共' + total + '条数据';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ columns: [
|
|
|
+ {
|
|
|
+ title: '研发活动编号',
|
|
|
+ dataIndex: 'activityNumber',
|
|
|
+ key: 'activityNumber'
|
|
|
+ }, {
|
|
|
+ title: '研发活动名称',
|
|
|
+ dataIndex: 'activityName',
|
|
|
+ key: 'activityName'
|
|
|
+ }, {
|
|
|
+ title: '技术领域',
|
|
|
+ dataIndex: 'technicalField',
|
|
|
+ key: 'technicalField'
|
|
|
+ }, {
|
|
|
+ title: '技术来源',
|
|
|
+ dataIndex: 'technicalSource',
|
|
|
+ key: 'technicalSource'
|
|
|
+ }, {
|
|
|
+ title: '知识产权编号',
|
|
|
+ dataIndex: 'intellectualPropertyNumber',
|
|
|
+ key: 'intellectualPropertyNumber'
|
|
|
+ }, {
|
|
|
+ title: '开始时间',
|
|
|
+ dataIndex: 'startDateFormattedDate',
|
|
|
+ key: 'startDateFormattedDate'
|
|
|
+ }, {
|
|
|
+ title: '结束时间',
|
|
|
+ dataIndex: 'endDateFormattedDate',
|
|
|
+ key: 'endDateFormattedDate'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ dataSource: []
|
|
|
+ };
|
|
|
+ },
|
|
|
+ componentWillMount() {
|
|
|
+ this.loadData();
|
|
|
+ },
|
|
|
+ tableRowClick(record, index) {
|
|
|
+ this.state.RowData = record;
|
|
|
+ this.setState({
|
|
|
+ showDesc: true
|
|
|
+ });
|
|
|
+ },
|
|
|
+ delectRow() {
|
|
|
+ let deletedIds = [];
|
|
|
+ for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
|
|
|
+ let rowItem = this.state.selectedRows[idx];
|
|
|
+ if (rowItem.id) {
|
|
|
+ deletedIds.push(rowItem.id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.setState({
|
|
|
+ selectedRowKeys: [],
|
|
|
+ loading: deletedIds.length > 0
|
|
|
+ });
|
|
|
+ $.ajax({
|
|
|
+ method: "POST",
|
|
|
+ dataType: "json",
|
|
|
+ crossDomain: false,
|
|
|
+ url: globalConfig.context + "/techservice/cognizance/deleteActivity",
|
|
|
+ data: {
|
|
|
+ ids: deletedIds
|
|
|
+ }
|
|
|
+ }).done(function (data) {
|
|
|
+ if (!data.error.length) {
|
|
|
+ message.success('保存成功!');
|
|
|
+ this.setState({
|
|
|
+ loading: false,
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ message.warning(data.error[0].message);
|
|
|
+ };
|
|
|
+ this.loadData();
|
|
|
+ }.bind(this));
|
|
|
+ },
|
|
|
+ closeDesc(e) {
|
|
|
+ this.state.showDesc = e;
|
|
|
+ this.loadData();
|
|
|
+ },
|
|
|
+ search() {
|
|
|
+ this.loadData();
|
|
|
+ },
|
|
|
+ reset() {
|
|
|
+ this.state.activityName = undefined;
|
|
|
+ this.state.activityNumber = undefined;
|
|
|
+ this.loadData();
|
|
|
+ },
|
|
|
+ render() {
|
|
|
+ const rowSelection = {
|
|
|
+ selectedRowKeys: this.state.selectedRowKeys,
|
|
|
+ onChange: (selectedRowKeys, selectedRows) => {
|
|
|
+ this.setState({
|
|
|
+ selectedRows: selectedRows,
|
|
|
+ selectedRowKeys: selectedRowKeys
|
|
|
+ });
|
|
|
+ }
|
|
|
+ };
|
|
|
+ const hasSelected = this.state.selectedRowKeys.length > 0;
|
|
|
+ return (
|
|
|
+ <div className="user-content" >
|
|
|
+ <div className="content-title">
|
|
|
+ <span>标准制定情况汇总</span>
|
|
|
+ </div>
|
|
|
+ <div className="user-search">
|
|
|
+ <Input placeholder="研发活动名称" value={this.state.activityName}
|
|
|
+ onChange={(e) => { this.setState({ activityName: e.target.value }); }} />
|
|
|
+ <Input placeholder="研发活动编号" value={this.state.activityNumber}
|
|
|
+ onChange={(e) => { this.setState({ activityNumber: e.target.value }); }} />
|
|
|
+ <Button type="primary" onClick={this.search}>搜索</Button>
|
|
|
+ <Button onClick={this.reset}>重置</Button>
|
|
|
+ <p>
|
|
|
+ <Button style={{ background: "#ea0862", border: "none", color: "#fff" }}
|
|
|
+ onClick={this.tableRowClick}>添加<Icon type="plus" /></Button>
|
|
|
+ <Button style={{ background: "#3fcf9e", border: "none", color: "#fff" }}
|
|
|
+ disabled={!hasSelected}
|
|
|
+ onClick={this.delectRow}>删除<Icon type="minus" /></Button>
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ <div className="patent-table">
|
|
|
+ <Spin spinning={this.state.loading}>
|
|
|
+ <Table columns={this.state.columns}
|
|
|
+ dataSource={this.state.dataSource}
|
|
|
+ pagination={this.state.pagination}
|
|
|
+ rowSelection={rowSelection}
|
|
|
+ onRowClick={this.tableRowClick} />
|
|
|
+ </Spin>
|
|
|
+ </div>
|
|
|
+ <ActivityDesc data={this.state.RowData} showDesc={this.state.showDesc} closeDesc={this.closeDesc} />
|
|
|
+ </div >
|
|
|
+ );
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+export default Activity;
|