瀏覽代碼

Accept Merge Request #23 v1.0.17 meger : (master -> test)

Merge Request: v1.0.17 meger
Created By: @seirios
Accepted By: @seirios
URL: https://coding.net/t/aft/p/AFT-WEB/git/merge/23
seirios 8 年之前
父節點
當前提交
e9fb07a8a9
共有 76 個文件被更改,包括 3824 次插入1068 次删除
  1. 277 277
      js/component/DicProvinceList.js
  2. 13 12
      js/component/account/services/activityCostList.jsx
  3. 1 1
      js/component/account/services/annualReport.jsx
  4. 10 1
      js/component/account/services/cognizance.jsx
  5. 789 0
      js/component/account/services/companyDetail.jsx
  6. 8 6
      js/component/account/services/copyright/comPatentAdd.jsx
  7. 3 1
      js/component/account/services/copyright/comPatentChange.jsx
  8. 3 5
      js/component/account/services/copyright/copyright.jsx
  9. 1 1
      js/component/account/services/copyright/copyright.less
  10. 81 7
      js/component/account/services/finance.jsx
  11. 26 9
      js/component/account/services/honorList.jsx
  12. 2 1
      js/component/account/services/intellectual.jsx
  13. 57 9
      js/component/account/services/intellectualDesc.jsx
  14. 1 1
      js/component/account/services/leftTab.jsx
  15. 2 32
      js/component/account/services/patentAdd.jsx
  16. 10 2
      js/component/account/services/patentDesc.jsx
  17. 52 5
      js/component/account/services/ratepay.jsx
  18. 75 15
      js/component/account/services/standard.jsx
  19. 1 1
      js/component/account/services/technology.jsx
  20. 3 3
      js/component/account/services/technologyAdd.jsx
  21. 1 7
      js/component/account/services/technologyChange.jsx
  22. 8 2
      js/component/certify/audit.jsx
  23. 1 1
      js/component/certify/bank.jsx
  24. 7 6
      js/component/certify/certify.less
  25. 8 4
      js/component/certify/confirm.jsx
  26. 16 24
      js/component/certify/personal.jsx
  27. 1 2
      js/component/certify/result.jsx
  28. 2 1
      js/component/certify/top.jsx
  29. 202 1
      js/component/dataDic.js
  30. 16 26
      js/component/groupCertify/bank.jsx
  31. 6 5
      js/component/groupCertify/certify.less
  32. 2 2
      js/component/groupCertify/confirm.jsx
  33. 15 26
      js/component/groupCertify/personal.jsx
  34. 0 1
      js/component/groupCertify/result.jsx
  35. 6 14
      js/component/manageCenter/servicesManage/copyright/comPatentAdd.jsx
  36. 6 16
      js/component/manageCenter/servicesManage/copyright/comPatentChange.jsx
  37. 3 41
      js/component/manageCenter/servicesManage/copyright/copyright.jsx
  38. 2 3
      js/component/manageCenter/servicesManage/highTech/fosterDesc/ablt.less
  39. 15 3
      js/component/manageCenter/servicesManage/highTech/fosterDesc/achievement.jsx
  40. 14 2
      js/component/manageCenter/servicesManage/highTech/fosterDesc/activity.jsx
  41. 28 16
      js/component/manageCenter/servicesManage/highTech/fosterDesc/activityCostList.jsx
  42. 33 25
      js/component/manageCenter/servicesManage/highTech/fosterDesc/annualReport.jsx
  43. 983 0
      js/component/manageCenter/servicesManage/highTech/fosterDesc/companyDetail.jsx
  44. 45 8
      js/component/manageCenter/servicesManage/highTech/fosterDesc/content.jsx
  45. 21 0
      js/component/manageCenter/servicesManage/highTech/fosterDesc/content.less
  46. 91 7
      js/component/manageCenter/servicesManage/highTech/fosterDesc/finance.jsx
  47. 40 11
      js/component/manageCenter/servicesManage/highTech/fosterDesc/honorList.jsx
  48. 16 4
      js/component/manageCenter/servicesManage/highTech/fosterDesc/hrSituation.jsx
  49. 22 4
      js/component/manageCenter/servicesManage/highTech/fosterDesc/innovationAbility.jsx
  50. 16 3
      js/component/manageCenter/servicesManage/highTech/fosterDesc/intellectual.jsx
  51. 51 10
      js/component/manageCenter/servicesManage/highTech/fosterDesc/intellectualDesc.jsx
  52. 15 3
      js/component/manageCenter/servicesManage/highTech/fosterDesc/orgTechCenter.jsx
  53. 67 7
      js/component/manageCenter/servicesManage/highTech/fosterDesc/ratepay.jsx
  54. 90 18
      js/component/manageCenter/servicesManage/highTech/fosterDesc/standard.jsx
  55. 14 2
      js/component/manageCenter/servicesManage/highTech/fosterDesc/techProduct.jsx
  56. 15 0
      js/component/manageCenter/servicesManage/highTech/fosterDesc/techProduct.less
  57. 208 179
      js/component/manageCenter/servicesManage/highTech/highTechApply.jsx
  58. 1 1
      js/component/manageCenter/servicesManage/highTech/highTechFoster.jsx
  59. 1 1
      js/component/manageCenter/servicesManage/highTech/highTechFoster.less
  60. 11 11
      js/component/manageCenter/servicesManage/patent/applyFee.jsx
  61. 15 13
      js/component/manageCenter/servicesManage/patent/applyFeeDesc.jsx
  62. 44 33
      js/component/manageCenter/servicesManage/patent/comPatentAdd.jsx
  63. 6 2
      js/component/manageCenter/servicesManage/patent/comPatentDesc.jsx
  64. 0 4
      js/component/manageCenter/servicesManage/patent/comprehensive.jsx
  65. 1 10
      js/component/manageCenter/servicesManage/technology/applyAdd.jsx
  66. 9 14
      js/component/manageCenter/servicesManage/technology/applyChange.jsx
  67. 1 1
      js/component/manageCenter/servicesManage/technology/applyManage.jsx
  68. 6 17
      js/component/manageCenter/servicesManage/technology/websiteAdd.jsx
  69. 7 19
      js/component/manageCenter/servicesManage/technology/websiteChange.jsx
  70. 7 21
      js/component/manageCenter/servicesManage/technology/websiteManage.jsx
  71. 2 2
      js/component/manageCenter/userManage/leftTab.jsx
  72. 95 20
      js/component/manageCenter/userManage/orgCertify.jsx
  73. 20 19
      js/component/manageCenter/userManage/userDesc.jsx
  74. 88 2
      js/component/tools.js
  75. 8 4
      js/component/yearSelect.jsx
  76. 1 1
      package.json

文件差異過大導致無法顯示
+ 277 - 277
js/component/DicProvinceList.js


+ 13 - 12
js/component/account/services/activityCostList.jsx

@@ -2,6 +2,7 @@ import React from 'react';
 import { Icon, Form, Upload, Button, Input, Spin, Table, message, Select, Modal, DatePicker, InputNumber } from 'antd';
 import './activityCostList.less';
 import { beforeUploadFile, newDownloadFile } from '../../tools.js';
+import YearSelect from '../../yearSelect.jsx';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -53,6 +54,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                         id: this.props.data.id,
                         aid: this.state.aid,
                         activityNumber: this.state.activityNumber,
+                         year:this.state.year,
 
                         internalLaborCost: values.internalLaborCost,
                         internalDirectCost: values.internalDirectCost,
@@ -102,6 +104,8 @@ const ActivityDescFrom = Form.create()(React.createClass({
                             {this.state.activityNumberOption}
                         </Select>
                 }
+                <p className="activityCost-title">费用年份</p>
+                <div><YearSelect defValue={this.state.year} handleyear={(e) => { this.state.year = e ;}} /></div>
                 <p className="activityCost-title">内部研究开发费用(万元)</p>
                 <div className="clearfix activityCost-box">
                     <FormItem className="half-item"
@@ -369,8 +373,7 @@ const Activity = React.createClass({
                 pageNo: pageNo || 1,
                 pageSize: this.state.pagination.pageSize,
                 activityNumber: this.state.activityNumber,
-                startDate: this.state.startDate,
-                endDate: this.state.endDate
+                year: this.state.year
             }
         }), $.ajax({
             method: "get",
@@ -402,6 +405,7 @@ const Activity = React.createClass({
                     uid: thisdata.uid,
                     aid: thisdata.aid,
                     activityNumber: thisdata.activityNumber,
+                    year:thisdata.year,
                     startDate: thisdata.startDate,
                     endDate: thisdata.endDate,
 
@@ -474,6 +478,10 @@ const Activity = React.createClass({
                     dataIndex: 'activityNumber',
                     key: 'activityNumber'
                 }, {
+                    title: '费用年份',
+                    dataIndex: 'year',
+                    key: 'year'
+                }, {
                     title: '内部研究开发费用',
                     dataIndex: 'internalAllCost',
                     key: 'internalAllCost'
@@ -585,8 +593,7 @@ const Activity = React.createClass({
         this.loadData();
     },
     reset() {
-        this.state.startDateFormattedDate = undefined;
-        this.state.endDateFormattedDate = undefined;
+        this.state.year = undefined;
         this.state.activityNumber = undefined;
         this.loadData();
     },
@@ -609,14 +616,8 @@ const Activity = React.createClass({
                 <div className="user-search">
                     <Input placeholder="研发活动编号" value={this.state.activityNumber}
                         onChange={(e) => { this.setState({ activityNumber: e.target.value }); }} />
-                    <span>开始日期:</span>
-                    <DatePicker
-                        value={this.state.startDateFormattedDate ? moment(this.state.startDateFormattedDate) : null}
-                        onChange={(data, dataString) => { this.setState({ startDateFormattedDate: dataString }); }} />
-                    <span>结束日期:</span>
-                    <DatePicker
-                        value={this.state.endDateFormattedDate ? moment(this.state.endDateFormattedDate) : null}
-                        onChange={(data, dataString) => { this.setState({ endDateFormattedDate: dataString }); }} />
+                    <span>年份:</span>
+                    <YearSelect value={this.state.year} handleyear={(e) => { this.state.year = e; }} />
                     <Button type="primary" onClick={this.search}>搜索</Button>
                     <Button onClick={this.reset}>重置</Button>
                     <p>

+ 1 - 1
js/component/account/services/annualReport.jsx

@@ -420,7 +420,7 @@ const AnnualReportDesc = React.createClass({
         return (
             <div className="patent-addNew">
                 <Spin spinning={this.state.loading} className='spin-box'>
-                    <Modal title="年报详情" visible={this.state.visible}
+                    <Modal title="企业年报详情" visible={this.state.visible}
                         onOk={this.handleOk} onCancel={this.handleCancel}
                         width='1000px'
                         footer=''

+ 10 - 1
js/component/account/services/cognizance.jsx

@@ -29,6 +29,7 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                 };
                 this.state.data = data.data;
                 this.state.cid = this.props.data.cid;
+                this.state.year = this.props.data.year;
                 this.state.moneyTable = [{
                     key: 1,
                     year: '前一年',
@@ -212,6 +213,10 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                             <span className="item-title">公司地址: </span>
                             <span>{theData.postalAddress}</span>
                         </div>
+                        <div className="half-item">
+                            <span className="item-title">申请年份: </span>
+                            <span>{this.state.year}</span>
+                        </div>
                         <FormItem className="half-item"
                             labelCol={{ span: 6 }}
                             wrapperCol={{ span: 14 }}
@@ -623,6 +628,10 @@ const Cognizance = React.createClass({
                     dataIndex: 'serialNumber',
                     key: 'serialNumber'
                 }, {
+                    title: '年份',
+                    dataIndex: 'year',
+                    key: 'year'
+                }, {
                     title: '联系人',
                     dataIndex: 'contacts',
                     key: 'contacts',
@@ -656,7 +665,7 @@ const Cognizance = React.createClass({
                     key: 'issuingDate',
                     render: (text) => { return getTime(text, 36) }
                 }, {
-                    title: '咨询师',
+                    title: '负责人',
                     dataIndex: 'consultant',
                     key: 'consultant'
                 }

+ 789 - 0
js/component/account/services/companyDetail.jsx

@@ -0,0 +1,789 @@
+import React from 'react';
+import { Icon, InputNumber, Form, Button, Input, Radio, Select, Spin, Table, message, Cascader, Modal } from 'antd';
+import { provinceArr, cognizanceStateList } from '../../dataDic.js';
+import { techFieldList } from '../../DicTechFieldList.js';
+import { getTime, getCognizanceState } from '../../tools.js';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import moment from 'moment';
+import './cognizance.less';
+
+const CognizanceDescFrom = Form.create()(React.createClass({
+    loadData() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/cognizance/cognizanceDetail",
+            data: {
+                cid: this.props.data.cid,
+                year: this.props.data.year
+            },
+            success: function (data) {
+                if (data.error.length || !data.data) {
+                    message.warning(data.error[0].message);
+                    return;
+                };
+                this.state.data = data.data;
+                this.state.cid = this.props.data.cid;
+                this.state.year = this.props.data.year;
+                this.state.moneyTable = [{
+                    key: 1,
+                    year: '前一年',
+                    netAsset: data.data.netAsset1,
+                    salesRevenue: data.data.salesRevenue1,
+                    grossProfit: data.data.grossProfit1
+                }, {
+                    key: 2,
+                    year: '前二年',
+                    netAsset: data.data.netAsset2,
+                    salesRevenue: data.data.salesRevenue2,
+                    grossProfit: data.data.grossProfit2
+                }, {
+                    key: 3,
+                    year: '前三年',
+                    netAsset: data.data.netAsset3,
+                    salesRevenue: data.data.salesRevenue3,
+                    grossProfit: data.data.grossProfit3
+                }];
+                this.state.netAssetRate = 1 / 2 * (data.data.netAsset2 / data.data.netAsset3 + data.data.netAsset1 / data.data.netAsset2) - 1;
+                this.state.salesRevenueRate = 1 / 2 * (data.data.salesRevenue2 / data.data.salesRevenue3 + data.data.salesRevenue1 / data.data.salesRevenue2) - 1;
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getStateData() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/cognizance/cognizanceLog",
+            data: {
+                cid: this.props.data.cid
+            },
+            success: function (data) {
+                if (data.error.length || !data.data) {
+                    message.warning(data.error[0].message);
+                    return;
+                };
+                this.state.stateTable = [];
+                for (let i = 0; i < data.data.length; i++) {
+                    this.state.stateTable.push({
+                        key: i,
+                        recordTimeFormattedDate: data.data[i].recordTimeFormattedDate,
+                        state: String(data.data[i].state),
+                        principal: data.data[i].principal,
+                        operator: data.data[i].operator,
+                        comment: data.data[i].comment
+                    });
+                };
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            loading: false,
+            stateOption: [],
+            moneyColumns: [{
+                title: '',
+                dataIndex: 'year',
+                key: 'year',
+            }, {
+                title: '净资产',
+                dataIndex: 'netAsset',
+                key: 'netAsset',
+            }, {
+                title: '销售收入',
+                dataIndex: 'salesRevenue',
+                key: 'salesRevenue',
+            }, {
+                title: '利润总额',
+                dataIndex: 'grossProfit',
+                key: 'grossProfit',
+            }],
+            stateColumns: [{
+                title: '专利状态',
+                dataIndex: 'state',
+                key: 'state',
+                render: (text) => { return getCognizanceState(text) }
+            }, {
+                title: '处理时间',
+                dataIndex: 'recordTimeFormattedDate',
+                key: 'recordTimeFormattedDate',
+            }, {
+                title: '负责人',
+                dataIndex: 'principal',
+                key: 'principal',
+            }, {
+                title: '操作人',
+                dataIndex: 'operator',
+                key: 'operator',
+            }, {
+                title: '备注',
+                dataIndex: 'comment',
+                key: 'comment',
+            }]
+        };
+    },
+    componentWillMount() {
+        let _me = this;
+        cognizanceStateList.map(function (item) {
+            _me.state.stateOption.push(
+                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+            )
+        });
+        this.loadData();
+        this.getStateData();
+    },
+    handleSubmit(e) {
+        e.preventDefault();
+        this.props.form.validateFields((err, values) => {
+            if (!err) {
+                this.props.spinState(true);
+                $.ajax({
+                    method: "POST",
+                    dataType: "json",
+                    crossDomain: false,
+                    url: globalConfig.context + "/api/user/cognizance/disposeCognizanceDetail",
+                    data: {
+                        id: this.props.data.cid,
+                        technicalField1: values.technicalField[0],
+                        technicalField2: values.technicalField[1],
+                        technicalField3: values.technicalField[2],
+                        basicResearchCost: values.basicResearchCost,
+                        accident: values.accident
+                    }
+                }).done(function (data) {
+                    if (!data.error.length) {
+                        message.success('保存成功!');
+                        this.props.clickOk();
+                        this.props.form.resetFields();
+                        this.state.targetKeys = [];
+                        this.state.selectedKeys = [];
+                        this.props.spinState(false);
+                    } else {
+                        message.warning(data.error[0].message);
+                        this.props.spinState(false);
+                    }
+                }.bind(this));
+            }
+        });
+    },
+    componentWillReceiveProps(nextProps) {
+        if (!this.props.visible && nextProps.visible) {
+            this.getStateData();
+            this.loadData();
+        };
+    },
+    render() {
+        const FormItem = Form.Item;
+        const { getFieldDecorator } = this.props.form;
+        const theData = this.state.data;
+        const formItemLayout = {
+            labelCol: { span: 6 },
+            wrapperCol: { span: 12 },
+        };
+        const _me = this;
+        if (this.state.data) {
+            return (
+                <Form onSubmit={this.handleSubmit} id="highTechApply-form">
+                    <div className="clearfix">
+                        <div className="half-item">
+                            <span className="item-title">公司名称: </span>
+                            <span>{theData.unitName}</span>
+                        </div>
+                        <div className="half-item">
+                            <span className="item-title">公司组织机构代码: </span>
+                            <span>{theData.orgCode}</span>
+                        </div>
+                        <div className="half-item">
+                            <span className="item-title">公司地址: </span>
+                            <span>{theData.postalAddress}</span>
+                        </div>
+                        <div className="half-item">
+                            <span className="item-title">申请年份: </span>
+                            <span>{this.state.year}</span>
+                        </div>
+                        <FormItem className="half-item"
+                            labelCol={{ span: 6 }}
+                            wrapperCol={{ span: 14 }}
+                        >
+                            {getFieldDecorator('contacts', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.contacts
+                            })(
+                                <Select placeholder='选择一个联系人'>{this.props.contactsOption}</Select>
+                                )}
+                        </FormItem>
+                    </div>
+                    <FormItem style={{ width: '50%' }}
+                        labelCol={{ span: 0 }}
+                        wrapperCol={{ span: 24 }}
+                        label="技术领域"
+                    >
+                        <span className="item-title">技术领域: </span>
+                        {getFieldDecorator('technicalField', {
+                            rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
+                            initialValue: [Number(theData.technicalField1), Number(theData.technicalField2), Number(theData.technicalField3)]
+                        })(
+                            <Cascader options={techFieldList} placeholder="请选择技术领域" />
+                            )}
+                    </FormItem>
+                    <div className="clearfix">
+                        <div>
+                            <span className="form-title">获得知识产权数量(件): </span>
+                        </div>
+                        <div className="half-item">
+                            <span className="item-title">一类: </span>
+                            <span>{theData.firstCatagory}</span>
+                        </div>
+                        <div className="half-item">
+                            <span className="item-title">二类: </span>
+                            <span>{theData.secondCatagory}</span>
+                        </div>
+                    </div>
+                    <div className="clearfix">
+                        <div>
+                            <span className="form-title">人力资源状况(人): </span>
+                        </div>
+                        <div className="half-item">
+                            <span className="item-title">职工总数: </span>
+                            <span>{theData.firmTotal}</span>
+                        </div>
+                        <div className="half-item">
+                            <span className="item-title">科技人员数: </span>
+                            <span>{theData.techTotal}</span>
+                        </div>
+                    </div>
+                    <div className="form-title">近三年经营状况(万元): </div>
+                    <Table pagination={false} dataSource={this.state.moneyTable} columns={this.state.moneyColumns} />
+                    <div className="clearfix">
+                        <div className="half-item">
+                            <span className="item-title">净资产增长率: </span>
+                            <span>{isNaN(this.state.netAssetRate) ? '数据错误无法计算' : (this.state.netAssetRate * 100).toFixed(2) + '%'}</span>
+                        </div>
+                        <div className="half-item">
+                            <span className="item-title">销售收入增长率: </span>
+                            <span>{isNaN(this.state.salesRevenueRate) ? '数据错误无法计算' : (this.state.salesRevenueRate * 100).toFixed(2) + '%'}</span>
+                        </div>
+                    </div>
+                    <div className="clearfix">
+                        <div><span className="form-title">近三年研究开发费用总额(万元): </span></div>
+                        <div className="third-item">
+                            <div className="item-title">近三年研究开发费用总额</div>
+                            <p>{theData.researchCost}</p>
+                        </div>
+                        <div className="third-item">
+                            <div className="item-title">其中: 在中国境内研发费用总和</div>
+                            <p>{theData.territory}</p>
+                        </div>
+                        <div className="third-item">
+                            <div className="item-title">其中: 基础研究投入费用总额</div>
+                            <div>
+                                <FormItem
+                                    labelCol={{ span: 0 }}
+                                    wrapperCol={{ span: 24 }}
+                                >
+                                    {getFieldDecorator('basicResearchCost', {
+                                        rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
+                                        initialValue: theData.basicResearchCost
+                                    })(
+                                        <InputNumber />
+                                        )}
+                                </FormItem>
+                            </div>
+                        </div>
+                    </div>
+                    <div>
+                        <span className="item-title">近一年企业总收入(万元): </span>
+                        <span>{theData.totalRevenue}</span>
+                    </div>
+                    <div>
+                        <span className="item-title">近一年高新技术产品收入(万元): </span>
+                        <span>{theData.lastYearRevenue}</span>
+                    </div>
+                    <div className="item-title">申请认定前一年内是否发生过重大安全、重大质量或严重环境违法行为</div>
+                    <FormItem
+                        labelCol={{ span: 0 }}
+                        wrapperCol={{ span: 24 }}
+                    >
+                        {getFieldDecorator('accident', {
+                            rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
+                            initialValue: theData.accident
+                        })(
+                            <Radio.Group>
+                                <Radio value={0}>否</Radio>
+                                <Radio value={1}>是</Radio>
+                            </Radio.Group>
+                            )}
+                    </FormItem>
+                    <div className="form-title">状态流转记录: </div>
+                    <Table pagination={false} dataSource={this.state.stateTable} columns={this.state.stateColumns} />
+                    <FormItem style={{ marginTop: '20px' }}>
+                        <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
+                        <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
+                    </FormItem>
+                </Form >
+            );
+        } else {
+            return (<div></div>)
+        };
+    },
+}));
+
+const CognizanceDesc = React.createClass({
+    getInitialState() {
+        return {
+            visible: false,
+            loading: false
+        };
+    },
+    componentWillReceiveProps(nextProps) {
+        this.state.visible = nextProps.showDesc
+    },
+    showModal() {
+        this.setState({
+            visible: true,
+        });
+    },
+    handleOk() {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false, true);
+    },
+    handleCancel(e) {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false);
+    },
+    spinChange(e) {
+        this.setState({
+            loading: e
+        });
+    },
+    render() {
+        return (
+            <div className="patent-addNew">
+                <Spin spinning={this.state.loading} className='spin-box'>
+                    <Modal title="高企管理" visible={this.state.visible}
+                        onOk={this.handleOk} onCancel={this.handleCancel}
+                        width='1000px'
+                        footer=''
+                    >
+                        <CognizanceDescFrom
+                            visible={this.state.visible}
+                            contactsOption={this.props.contactsOption}
+                            data={this.props.data}
+                            spinState={this.spinChange}
+                            closeModal={this.handleCancel}
+                            clickOk={this.handleOk} />
+                    </Modal>
+                </Spin>
+            </div>
+        );
+    }
+});
+
+const CognizanceAdd = React.createClass({
+    getInitialState() {
+        return {
+            visible: false,
+            loading: false,
+            yearOption: []
+        };
+    },
+    componentWillReceiveProps(nextProps) {
+        this.state.visible = nextProps.showAdd
+    },
+    componentWillMount() {
+        let d = new Date();
+        let _me = this;
+        d = d.getFullYear() - 1;
+        this.state.thisYear = d;
+        for (let i = d; i < d + 20; i++) {
+            _me.state.yearOption.push(
+                <Select.Option value={i.toString()} key={i}>{i}</Select.Option>
+            )
+        };
+    },
+    showModal() {
+        this.setState({
+            visible: true,
+        });
+    },
+    handleOk() {
+        this.setState({
+            loading: true
+        });
+        if (!this.state.year) {
+            message.warning('请选择年份!');
+            this.setState({
+                loading: false
+            });
+            return;
+        };
+        if (!this.state.contacts) {
+            message.warning('请选择一个联系人!');
+            this.setState({
+                loading: false
+            });
+            return;
+        };
+        $.ajax({
+            method: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/cognizance/applyCognizance",
+            data: {
+                year: this.state.year,
+                contacts: this.state.contacts,
+                comment: this.state.comment
+            }
+        }).done(function (data) {
+            if (!data.error.length) {
+                message.success('保存成功!');
+                this.setState({
+                    visible: false
+                });
+                this.props.closeAdd(false, true);
+            } else {
+                message.warning(data.error[0].message);
+                this.setState({
+                    loading: false
+                });
+            }
+        }.bind(this));
+    },
+    handleCancel(e) {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeAdd(false);
+    },
+    spinChange(e) {
+        this.setState({
+            loading: e
+        });
+    },
+    render() {
+        return (
+            <div className="cognizance-add">
+                <Modal title="高企申请" visible={this.state.visible}
+                    onOk={this.handleOk} onCancel={this.handleCancel}
+                    width='800px'
+                    footer={[
+                        <Button key="submit" type="primary" loading={this.state.loading} onClick={this.handleOk}>
+                            提交
+                            </Button>,
+                        <Button key="back" onClick={this.handleCancel}>
+                            返回
+                            </Button>,
+                    ]}
+                >
+                    <div className="clearfix">
+                        <div className="half-item">
+                            <span>选择申请年份: </span>
+                            <Select placeholder="请选择年份" style={{ width: 200 }}
+                                onSelect={(e, n) => { this.state.year = e }}>
+                                {this.state.yearOption}
+                            </Select>
+                        </div>
+                        <div className="half-item">
+                            <span>选择联系人: </span>
+                            <Select placeholder="请选择联系人" style={{ width: 200 }}
+                                onSelect={(e, n) => { this.state.contacts = e }}>
+                                {this.props.contactsOption}
+                            </Select>
+                        </div>
+                    </div>
+                    <div>
+                        <p>备注: </p>
+                        <p>
+                            <Input type="textarea" rows={6} onChange={(e) => { this.state.comment = e.target.value; }} />
+                        </p>
+                    </div>
+                </Modal>
+            </div>
+        );
+    }
+});
+
+const Cognizance = React.createClass({
+    loadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.when($.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/cognizance/getContacts"
+        }), $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/cognizance/listCognizance",
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.pagination.pageSize
+            }
+        })).done((data1, data2) => {
+            this.state.data = [];
+            if (data1[0].error || !data1[0].data) {
+                if (data1[0].error.length) {
+                    message.warning(data1[0].error[0].message);
+                    return;
+                };
+            };
+            if (data2[0].error || !data2[0].data || !data2[0].data.list) {
+                if (data2[0].error.length) {
+                    message.warning(data2[0].error[0].message);
+                    this.state.ButtonDisabled = true;
+                    return;
+                };
+            };
+            let _me = this;
+            for (let item in data1[0].data) {
+                let theData = data1[0].data[item];
+                _me.state.contactsOption.push(
+                    <Select.Option value={item} key={theData}>{theData}</Select.Option>
+                );
+            };
+            for (let i = 0; i < data2[0].data.list.length; i++) {
+                let thisdata = data2[0].data.list[i];
+                this.state.data.push({
+                    key: i,
+                    uid: thisdata.uid,
+                    cid: thisdata.cid,
+                    year: thisdata.year,
+                    serialNumber: thisdata.serialNumber,
+                    locationProvince: thisdata.locationProvince,
+                    unitName: thisdata.unitName,
+                    contacts: [thisdata.contacts, {
+                        '1': thisdata.firstContacts,
+                        '2': thisdata.secondContacts,
+                        '3': thisdata.thirdContacts
+                    }],
+                    createTime: thisdata.createTime,
+                    comment: thisdata.comment,
+                    state: thisdata.state,
+                    certificateNumber: thisdata.certificateNumber,
+                    issuingDate: thisdata.issuingDate,
+                    consultant: thisdata.consultant,
+                    createTimeFormattedDate: thisdata.createTimeFormattedDate,
+                    issuingDateFormattedDate: thisdata.issuingDateFormattedDate
+                });
+            };
+            this.state.pagination.current = data2[0].data.pageNo;
+            this.state.pagination.total = data2[0].data.totalCount;
+            this.setState({
+                dataSource: this.state.data,
+                pagination: this.state.pagination
+            });
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            contactsOption: [],
+            selectedRowKeys: [],
+            selectedRows: [],
+            loading: false,
+            showAdd: false,
+            showDesc: 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: 'serialNumber',
+                    key: 'serialNumber'
+                }, {
+                    title: '年份',
+                    dataIndex: 'year',
+                    key: 'year'
+                }, {
+                    title: '联系人',
+                    dataIndex: 'contacts',
+                    key: 'contacts',
+                    render: (text) => {
+                        for (let item in text[1]) {
+                            if (text[0] == item) {
+                                return text[1][item];
+                            };
+                        };
+                    }
+                }, {
+                    title: '派单日',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate'
+                }, {
+                    title: '状态',
+                    dataIndex: 'state',
+                    key: 'state',
+                    render: (text) => { return getCognizanceState(text) }
+                }, {
+                    title: '证书编号',
+                    dataIndex: 'certificateNumber',
+                    key: 'certificateNumber'
+                }, {
+                    title: '发证日',
+                    dataIndex: 'issuingDateFormattedDate',
+                    key: 'issuingDateFormattedDate'
+                }, {
+                    title: '到期日',
+                    dataIndex: 'issuingDate',
+                    key: 'issuingDate',
+                    render: (text) => { return getTime(text, 36) }
+                }, {
+                    title: '负责人',
+                    dataIndex: 'consultant',
+                    key: 'consultant'
+                }
+            ],
+            dataSource: []
+        };
+    },
+    componentWillMount() {
+        this.loadData();
+    },
+    tableRowClick(record, index) {
+        this.state.RowData = record;
+        this.setState({
+            showDesc: true
+        });
+    },
+    addClick() {
+        this.setState({
+            showAdd: 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 + "/api/user/cognizance/deleteTechProduct",
+    //         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, s) {
+        this.state.showDesc = e;
+        if (s) {
+            this.loadData();
+        };
+    },
+    closeAdd(e, s) {
+        this.state.showAdd = e;
+        if (s) {
+            this.loadData();
+        };
+    },
+    // search() {
+    //     this.loadData();
+    // },
+    // reset() {
+    //     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>
+                    <Button style={{ background: "#ea0862", border: "none", color: "#fff", float: "right" }}
+                        disabled={this.state.ButtonDisabled}
+                        onClick={this.addClick}>申请高企认定<Icon type="plus" /></Button>
+                </div>
+                <div className="user-search">
+                    <p>
+                        <Button style={{ background: "#3fcf9e", border: "none", color: "#fff", display: 'none' }}
+                            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>
+                <CognizanceDesc
+                    data={this.state.RowData}
+                    contactsOption={this.state.contactsOption}
+                    showDesc={this.state.showDesc}
+                    closeDesc={this.closeDesc} />
+                <CognizanceAdd
+                    contactsOption={this.state.contactsOption}
+                    showAdd={this.state.showAdd}
+                    closeAdd={this.closeAdd} />
+            </div >
+        );
+    }
+});
+
+export default Cognizance;

+ 8 - 6
js/component/account/services/copyright/comPatentAdd.jsx

@@ -53,7 +53,7 @@ const PatentAddFrom = Form.create()(React.createClass({
                         "copyrightInfo": values.copyrightInfo, // 软著简介,size 0-255
                         "copyrightName": values.copyrightName, // 软著名称, size 0-60
                         //"outsource": values.outsource, // 外包公司, size 0-60
-                        "workIssue": values.workIssue, // 派单信息, size 0-128
+                        "comment": values.workIssue, // 派单信息, size 0-128
                         "inUrgent": values.inUrgent, //  加急天数,
                         //"comment": values.comment, // 备注 size 0-128
                         //"principal": values.principal // 负责人id
@@ -137,11 +137,12 @@ const PatentAddFrom = Form.create()(React.createClass({
                     )}
                 </FormItem>
                 <FormItem
-                    labelCol={{ span: 0 }}
-                    wrapperCol={{ span: 18 }}
+                    {...formItemLayout}
+                    label="是否加急"
                 >
-                    <span>是否加急:</span>
-                    {getFieldDecorator('inUrgent')(
+                    {getFieldDecorator('inUrgent', {
+                        initialValue: '0'
+                    })(
                         <Select
                             placeholder="请选择加急时间"
                             style={{ width: 200 }}>
@@ -153,8 +154,9 @@ const PatentAddFrom = Form.create()(React.createClass({
                             <Select.Option value="20">16-20个工作日</Select.Option>
                             <Select.Option value="25">21-25个工作日</Select.Option>
                             <Select.Option value="30">26-30个工作日</Select.Option>
+                            <Select.Option value="35">31-35个工作日</Select.Option>
                         </Select>
-                    )}
+                        )}
                 </FormItem>
                 <FormItem>
                     <Button className="set-submit" type="primary" htmlType="submit">确认</Button>

+ 3 - 1
js/component/account/services/copyright/comPatentChange.jsx

@@ -208,7 +208,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                 <Row className="express-desc-row">
                     <Col span={3}>公司名称</Col>
                     <Col span={6}>{theData.unitName}</Col>
-                    <Col span={4}>公司组织机构代码</Col>
+                    <Col span={4}>组织机构代码</Col>
                     <Col span={6}>{theData.unitNumber}</Col>
                 </Row>
                 <Row className="express-desc-row">
@@ -281,6 +281,8 @@ const CopyrightDescForm = Form.create()(React.createClass({
                                     return '21-25个工作日';
                                 case 30:
                                     return '26-30个工作日';
+                                case 35:
+                                    return '31-35个工作日';
                             }
                         })()}
                     </Col>

+ 3 - 5
js/component/account/services/copyright/copyright.jsx

@@ -113,10 +113,6 @@ const copyright = React.createClass({
                     key: 'status',
                     render: (text) => { return getCopyrightState(text) }
                 }, {
-                    title: '派单信息',
-                    dataIndex: 'workIssue',
-                    key: 'workIssue',
-                }, {
                     title: '软著名称',
                     dataIndex: 'copyrightName',
                     key: 'copyrightName',
@@ -142,10 +138,12 @@ const copyright = React.createClass({
                                 return '21-25个工作日';
                             case 30:
                                 return '26-30个工作日';
+                            case 35:
+                                return '31-35个工作日';
                         }
                     }
                 }, {
-                    title: '咨询师',
+                    title: '负责人',
                     dataIndex: 'principal',
                     key: 'principal',
                 }, {

+ 1 - 1
js/component/account/services/copyright/copyright.less

@@ -145,7 +145,7 @@
             }
         }
         .ant-form-item {
-            margin-bottom: 12px;
+            margin-bottom: 20px;
         }
     }
     .avatar-uploader,

+ 81 - 7
js/component/account/services/finance.jsx

@@ -7,6 +7,37 @@ import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
 const FinanceDescFrom = Form.create()(React.createClass({
+    loadData(year) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/cognizance/financeDetail",
+            data: {
+                year: year != undefined ? year : this.props.data.year
+            }
+        }).done((data) => {
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+                return;
+            };
+            this.setState({
+                managementCost: data.data.managementCost,
+                researchCost: data.data.researchCost,
+                grossProfit: data.data.grossProfit,
+                operatingProfit: data.data.operatingProfit
+            });
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getInitialState() {
         return {
             loading: false,
@@ -21,7 +52,10 @@ const FinanceDescFrom = Form.create()(React.createClass({
             _me.state.yearOption.push(
                 <Select.Option value={i.toString()} key={i}>{i}</Select.Option>
             )
-        }
+        };
+        if (this.props.data.year) {
+            this.loadData();
+        };
     },
     handleSubmit(e) {
         e.preventDefault();
@@ -41,6 +75,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                         id: this.props.data.id,
                         mainBusinessIncome: values.mainBusinessIncome,
                         managementCost: values.managementCost,
+                        researchCost: values.researchCost,
                         operatingProfit: values.operatingProfit,
                         variousTax: values.variousTax,
                         currentAsset: values.currentAsset,
@@ -69,16 +104,33 @@ const FinanceDescFrom = Form.create()(React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         if (!this.props.visible && nextProps.visible) {
+            if (nextProps.data.year) {
+                this.loadData(nextProps.data.year);
+            };
             this.props.form.resetFields();
         };
+        if (this.props.visible && !nextProps.visible) {
+            this.state.managementCost = undefined;
+            this.state.researchCost = undefined;
+            this.state.grossProfit = undefined;
+            this.state.operatingProfit = undefined;
+        };
+    },
+    checkResearchCost(rule, value, callback) {
+        const form = this.props.form;
+        if (value > form.getFieldValue('managementCost')) {
+            callback('管理费用小于研发费用!');
+        } else {
+            callback();
+        }
     },
     render() {
         const FormItem = Form.Item;
         const { getFieldDecorator } = this.props.form;
         const theData = this.props.data;
         const formItemLayout = {
-            labelCol: { span: 10 },
-            wrapperCol: { span: 12 },
+            labelCol: { span: 8 },
+            wrapperCol: { span: 16 },
         };
         const _me = this;
         return (
@@ -87,7 +139,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                     {
                         theData.year ? <span>{theData.year}</span> :
                             <Select placeholder="请选择年份" style={{ width: 200 }}
-                                onSelect={(e, n) => { this.state.year = e }}>
+                                onSelect={(e, n) => { this.state.year = e, this.loadData(e); }}>
                                 {this.state.yearOption}
                             </Select>
                     }
@@ -114,6 +166,22 @@ const FinanceDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.managementCost && this.state.managementCost != this.props.form.getFieldValue('managementCost') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
+                    </FormItem>
+                    <FormItem className="half-item"
+                        {...formItemLayout}
+                        label="研发费用(万元)"
+                    >
+                        {getFieldDecorator('researchCost', {
+                            rules: [
+                                { type: 'number', required: true, message: '此项为必填项!' }, {
+                                    validator: this.checkResearchCost,
+                                }],
+                            initialValue: theData.researchCost
+                        })(
+                            <InputNumber />
+                            )}
+                        {this.state.researchCost && this.state.researchCost != this.props.form.getFieldValue('researchCost') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
@@ -125,6 +193,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.operatingProfit && this.state.operatingProfit != this.props.form.getFieldValue('operatingProfit') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
@@ -180,7 +249,8 @@ const FinanceDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
-                    </FormItem><FormItem className="half-item"
+                    </FormItem>
+                    <FormItem className="half-item"
                         {...formItemLayout}
                         label="利润总额(万元)"
                     >
@@ -190,7 +260,9 @@ const FinanceDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
-                    </FormItem><FormItem className="half-item"
+                        {this.state.grossProfit && this.state.grossProfit != this.props.form.getFieldValue('grossProfit') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
+                    </FormItem>
+                    <FormItem className="half-item"
                         {...formItemLayout}
                         label="净利润(万元)"
                     >
@@ -200,7 +272,8 @@ const FinanceDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
-                    </FormItem><FormItem className="half-item"
+                    </FormItem>
+                    <FormItem className="half-item"
                         {...formItemLayout}
                         label="销售收入(万元)"
                     >
@@ -341,6 +414,7 @@ const Finance = React.createClass({
                     grossProfit: thisdata.grossProfit,
                     netProfit: thisdata.netProfit,
                     salesRevenue: thisdata.salesRevenue,
+                    researchCost: thisdata.researchCost,
                     year: thisdata.year,
                     financeUrl: thisdata.financeUrl,
                     financeDownloadFileName: thisdata.financeDownloadFileName,

+ 26 - 9
js/component/account/services/honorList.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Icon, Form, Button, Input, Spin, Table, message, Modal, Upload, DatePicker } from 'antd';
+import { Icon, Form, Button, Input, Spin, Table, message, Modal, Upload, Select } from 'antd';
 import './techProduct.less';
 import { beforeUploadFile, newDownloadFile } from '../../tools.js';
 import moment from 'moment';
@@ -26,7 +26,8 @@ const HonorListDescFrom = Form.create()(React.createClass({
                         id: this.props.data.id,
                         name: values.name,
                         issuingMechanism: values.issuingMechanism,
-                        issuingTimeFormattedDate: values.issuingTimeFormattedDate.format("YYYY-MM-DD"),
+                        year: values.year,
+                        //issuingTimeFormattedDate: values.issuingTimeFormattedDate.format("YYYY-MM-DD"),
                         enclosureUrl: this.state.enclosureUrl
                     }
                 }).done(function (data) {
@@ -48,6 +49,16 @@ const HonorListDescFrom = Form.create()(React.createClass({
             this.props.form.resetFields();
         };
     },
+    componentWillMount() {
+        const Option = Select.Option;
+        const d = new Date();
+        const thisYear = d.getFullYear();
+        let theOption = [];
+        for (let i = thisYear; i >= 1950; i--) {
+            theOption.push(<Option key={i.toString()}>{i}</Option>)
+        };
+        this.state.yearOption = theOption;
+    },
     render() {
         const FormItem = Form.Item;
         const { getFieldDecorator } = this.props.form;
@@ -58,7 +69,7 @@ const HonorListDescFrom = Form.create()(React.createClass({
         };
         const _me = this;
         return (
-            <Form onSubmit={this.handleSubmit} className="activityCost-form">
+            <Form onSubmit={this.handleSubmit} className="activityCost-form" >
                 <div className="clearfix">
                     <FormItem
                         {...formItemLayout}
@@ -75,12 +86,17 @@ const HonorListDescFrom = Form.create()(React.createClass({
                         {...formItemLayout}
                         label="获取时间"
                     >
-                        {getFieldDecorator('issuingTimeFormattedDate', {
-                            rules: [{ type: 'object', required: true, message: '此项为必填项!' }],
-                            initialValue: theData.issuingTimeFormattedDate ? moment(theData.issuingTimeFormattedDate) : null
+                        {getFieldDecorator('year', {
+                            rules: [{ required: true, message: '此项为必填项!' }],
+                            initialValue: theData.year
                         })(
-                            <DatePicker />
+                            <Select
+                                placeholder="请选择年份"
+                                style={{ width: 80 }}>
+                                {this.state.yearOption}
+                            </Select>
                             )}
+                        <span> 年</span>
                     </FormItem>
                     <FormItem
                         {...formItemLayout}
@@ -215,6 +231,7 @@ const HonorList = React.createClass({
                     id: thisdata.id,
                     uid: thisdata.uid,
                     name: thisdata.name,
+                    year: thisdata.year,
                     issuingTime: thisdata.issuingTime,
                     enclosureUrl: thisdata.enclosureUrl,
                     enclosureDownloadFileName: thisdata.enclosureDownloadFileName,
@@ -259,8 +276,8 @@ const HonorList = React.createClass({
                     key: 'name'
                 }, {
                     title: '获取时间',
-                    dataIndex: 'issuingTimeFormattedDate',
-                    key: 'issuingTimeFormattedDate'
+                    dataIndex: 'year',
+                    key: 'year'
                 }, {
                     title: '发证机构',
                     dataIndex: 'issuingMechanism',

+ 2 - 1
js/component/account/services/intellectual.jsx

@@ -49,7 +49,8 @@ const Intellectual = React.createClass({
                     evaluationCategory: thisdata.evaluationCategory,
                     authorizationDateFormattedDate: thisdata.authorizationDateFormattedDate,
                     propertyRightUrl: thisdata.propertyRightUrl,
-                    propertyRightDownloadFileName: thisdata.propertyRightDownloadFileName
+                    propertyRightDownloadFileName: thisdata.propertyRightDownloadFileName,
+                    type:thisdata.type
                 });
             };
             this.state.pagination.current = data.data.pageNo;

+ 57 - 9
js/component/account/services/intellectualDesc.jsx

@@ -8,6 +8,49 @@ import $ from 'jquery/src/ajax';
 import moment from 'moment';
 
 const IntellectualDescFrom = Form.create()(React.createClass({
+    loadData(id, type) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/cognizance/intellectualDetail",
+            data: {
+                id: id != undefined ? id : this.props.data.id,
+                type: type != undefined ? type : this.props.data.type
+            }
+        }).done((data) => {
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+                return;
+            };
+            this.setState({
+                id: data.data.id,
+                uid: data.data.uid,
+                pid: data.data.pid,
+                intellectualPropertyNumber: data.data.intellectualPropertyNumber,
+                intellectualPropertyName: data.data.intellectualPropertyName,
+                sortNumber: data.data.sortNumber,
+                catagory: data.data.catagory,
+                obtainWay: data.data.obtainWay,
+                authorizationNumber: data.data.authorizationNumber,
+                authorizationDate: data.data.authorizationDate,
+                propertyRightUrl: data.data.propertyRightUrl,
+                type: data.data.type,
+                manuscript: data.data.manuscript,
+                propertyRightDownloadFileName: data.data.propertyRightDownloadFileName,
+                authorizationDateFormattedDate: data.data.authorizationDateFormattedDate
+            });
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getInitialState() {
         return {
             loading: false,
@@ -27,6 +70,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
             )
         });
+        this.loadData();
     },
     handleSubmit(e) {
         e.preventDefault();
@@ -72,6 +116,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         if (!this.props.visible && nextProps.visible) {
+            this.loadData(nextProps.data.id, nextProps.data.type);
             this.props.form.resetFields();
         };
     },
@@ -83,7 +128,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
             wrapperCol: { span: 12 },
         };
         const _me = this;
-        const theData = this.props.data;
+        const theData = this.state;
         return (
             <Form horizontal onSubmit={this.handleSubmit}>
                 <FormItem
@@ -92,7 +137,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 >
                     {getFieldDecorator('intellectualPropertyNumber', {
                         rules: [{ required: true, message: '请输入,知识产权编号不能为空!' }],
-                        initialValue: this.props.data.intellectualPropertyNumber
+                        initialValue: theData.intellectualPropertyNumber
                     })(
                         <Input placeholder="请输入知识产权编号" />
                         )}
@@ -103,7 +148,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 >
                     {getFieldDecorator('intellectualPropertyName', {
                         rules: [{ required: true, message: '请输入,知识产权名称不能为空!' }],
-                        initialValue: this.props.data.intellectualPropertyName
+                        initialValue: theData.intellectualPropertyName
                     })(
                         <Input placeholder="请输入知识产权名称" />
                         )}
@@ -114,7 +159,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 >
                     {getFieldDecorator('sortNumber', {
                         rules: [{ required: true, message: '请输入,排序号不能为空!' }],
-                        initialValue: this.props.data.sortNumber
+                        initialValue: theData.sortNumber
                     })(
                         <Input placeholder="请输入排序号" />
                         )}
@@ -125,7 +170,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 >
                     {getFieldDecorator('catagory', {
                         rules: [{ required: true, message: '请选择,知识产权类型不能为空!' }],
-                        initialValue: this.props.data.catagory
+                        initialValue: theData.catagory
                     })(
                         <Select placeholder="请选择知识产权类型" style={{ width: 200 }}
                             onChange={(e) => { this.state.catagory = e; }}>
@@ -139,7 +184,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 >
                     {getFieldDecorator('obtainWay', {
                         rules: [{ required: true, message: '请选择,获得方式不能为空!' }],
-                        initialValue: this.props.data.obtainWay
+                        initialValue: theData.obtainWay
                     })(
                         <Select placeholder="请选择获得方式" style={{ width: 200 }}
                             onChange={(e) => { this.state.obtainWay = e; }}>
@@ -153,7 +198,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 >
                     {getFieldDecorator('authorizationNumber', {
                         rules: [{ required: true, message: '请输入,授权号不能为空!' }],
-                        initialValue: this.props.data.authorizationNumber
+                        initialValue: theData.authorizationNumber
                     })(
                         <Input placeholder="请输入授权号" />
                         )}
@@ -164,7 +209,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 >
                     {getFieldDecorator('authorizationDate', {
                         rules: [{ type: 'object', required: true, message: '请选择,授权日期不能为空!' }],
-                        initialValue: !this.props.data.authorizationDateFormattedDate ? null : moment(this.props.data.authorizationDateFormattedDate, 'YYYY/MM/DD')
+                        initialValue: !theData.authorizationDateFormattedDate ? null : moment(theData.authorizationDateFormattedDate, 'YYYY/MM/DD')
                     })(
                         <DatePicker style={{ width: 200 }}
                             onChange={(data, dataString) => { this.state.authorizationDateFormattedDate = dataString }} />
@@ -196,7 +241,10 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传知识产权证书 </Button>
                     </Upload>
-                    <p style={{ margin: '10px 0' }}>{theData.propertyRightUrl ? <a onClick={newDownloadFile.bind(null, theData.id, 'property_right', '/api/user/cognizance/downloadPropertyRight', 'downloadPropertyRight')}>{theData.propertyRightDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ margin: '10px 0' }}>{theData.propertyRightUrl ? <a onClick={newDownloadFile.bind(null, theData.id, 'property_right', '/api/user/cognizance/downloadPropertyRight', 'downloadPropertyRight')}>{theData.propertyRightDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传知识产权证书!</span>}</p>
+                    {theData.type != 0 ? <p style={{ margin: '10px 0' }}>
+                        {theData.manuscript ? <a onClick={newDownloadFile.bind(null, this.props.data.id, 'manuscript', '/api/user/cognizance/downloadManuscript', this.props.data.type)}>稿件下载</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传稿件!</span>}
+                    </p> : <span></span>}
                 </div>
                 <FormItem>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>

+ 1 - 1
js/component/account/services/leftTab.jsx

@@ -71,7 +71,7 @@ const LeftTab = React.createClass({
                         企业研发费用详情
                     </Menu.Item>
                     <Menu.Item key="orgTechCenter">
-                        技术中心
+                        企业研发机构
                     </Menu.Item>
                     <Menu.Item key="techProduct">
                         高新技术产品(服务)情况

+ 2 - 32
js/component/account/services/patentAdd.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Icon, Modal, Button, Form, Upload, message, Input, Spin, Checkbox, Select } from 'antd';
+import { Icon, Modal, Button, Form, Upload, message, Input, Spin, Select } from 'antd';
 import { beforeUploadFile, downloadFile, setUserContactsList } from '../../tools.js';
 import './patent.less';
 import ajax from 'jquery/src/ajax/xhr.js'
@@ -8,10 +8,7 @@ import $ from 'jquery/src/ajax';
 const PatentAddFrom = Form.create()(React.createClass({
     getInitialState() {
         return {
-            loading: false,
-            firstCheck: 0,
-            secondCheck: 0,
-            thirdCheck: 0
+            loading: false
         };
     },
     componentWillMount() {
@@ -39,9 +36,6 @@ const PatentAddFrom = Form.create()(React.createClass({
                         'contacts': values.contacts,
                         'secondInventorName': values.secondInventorName,
                         'thirdInventorName': values.thirdInventorName,
-                        'firstInventorIsPublish': this.state.firstCheck,
-                        'secondInventorIsPublish': this.state.secondCheck,
-                        'thirdInventorIsPublish': this.state.thirdCheck,
                         'patentProryStatementUrl': this.state.patentProryStatementUrl
                     }
                 }).done(function (data) {
@@ -58,27 +52,6 @@ const PatentAddFrom = Form.create()(React.createClass({
             }
         });
     },
-    firstInventorCheck(e) {
-        if (e.target.checked == true) {
-            this.state.firstCheck = 1;
-        } else if (e.target.checked == false) {
-            this.state.firstCheck = 0;
-        }
-    },
-    secondInventorCheck(e) {
-        if (e.target.checked == true) {
-            this.state.secondCheck = 1;
-        } else if (e.target.checked == false) {
-            this.state.secondCheck = 0;
-        };
-    },
-    thirdInventorCheck(e) {
-        if (e.target.checked == true) {
-            this.state.thirdCheck = 1;
-        } else if (e.target.checked == false) {
-            this.state.thirdCheck = 0;
-        };
-    },
     avatarUrl(e) {
         this.state.avatarUrl = e;
     },
@@ -146,7 +119,6 @@ const PatentAddFrom = Form.create()(React.createClass({
                     })(
                         <Input className="mini-input" />
                         )}
-                    <Checkbox onChange={this.firstInventorCheck}>是否同意专利局公布</Checkbox>
                 </FormItem>
                 <FormItem
                     {...formItemLayout}
@@ -166,7 +138,6 @@ const PatentAddFrom = Form.create()(React.createClass({
                     {getFieldDecorator('secondInventorName')(
                         <Input className="mini-input" />
                     )}
-                    <Checkbox onChange={this.secondInventorCheck}>是否同意专利局公布</Checkbox>
                 </FormItem>
                 <p>第三发明人</p>
                 <FormItem
@@ -176,7 +147,6 @@ const PatentAddFrom = Form.create()(React.createClass({
                     {getFieldDecorator('thirdInventorName')(
                         <Input className="mini-input" />
                     )}
-                    <Checkbox onChange={this.thirdInventorCheck}>是否同意专利局公布</Checkbox>
                 </FormItem>
                 <div className="hrSituation-roster">
                     <Upload

+ 10 - 2
js/component/account/services/patentDesc.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Icon, Modal, message, Spin, Timeline, Button } from 'antd';
+import { Icon, Modal, message, Spin, Timeline, Button, Popconfirm } from 'antd';
 import { getPatentType, getPatentState, getTime, getPatentField, newDownloadFile, getStepList } from '../../tools.js';
 import './patent.less';
 import ajax from 'jquery/src/ajax/xhr.js';
@@ -117,7 +117,15 @@ const PatentDesc = React.createClass({
                                 {theData.patentWritingUrl ?
                                     <p className="download-file">
                                         <a onClick={newDownloadFile.bind(this, theData.id, 'patent_writing', '/api/user/patent/download')}>专利稿件下载</a>
-                                        {theData.confirmState == 0 ? <Button onClick={this.confirmButton}>确认稿件</Button> : <span></span>}
+                                        {theData.confirmState == 0 ?
+                                            <Popconfirm
+                                                title={"您将确认专利名称为 [ " + theData.patentName + " ] 的稿件,确认操作?"}
+                                                onConfirm={this.confirmButton}
+                                                okText="确认"
+                                                cancelText="取消"
+                                                placement="topLeft">
+                                                <Button>确认稿件</Button>
+                                            </Popconfirm> : <span></span>}
                                     </p> :
                                     <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />专利稿件未上传</p>
                                 }

+ 52 - 5
js/component/account/services/ratepay.jsx

@@ -6,6 +6,37 @@ import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
 const RatepayDescFrom = Form.create()(React.createClass({
+    loadData(year) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/cognizance/ratepayDetail",
+            data: {
+                year: year != undefined ? year : this.props.data.year
+            }
+        }).done((data) => {
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+                return;
+            };
+            this.setState({
+                managementCost: data.data.managementCost,
+                researchCost: data.data.researchCost,
+                grossProfit: data.data.grossProfit,
+                operatingProfit: data.data.operatingProfit
+            });
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getInitialState() {
         return {
             loading: false,
@@ -20,7 +51,10 @@ const RatepayDescFrom = Form.create()(React.createClass({
             _me.state.yearOption.push(
                 <Select.Option value={i.toString()} key={i}>{i}</Select.Option>
             )
-        }
+        };
+        if (this.props.data.year) {
+            this.loadData();
+        };
     },
     handleSubmit(e) {
         e.preventDefault();
@@ -66,16 +100,25 @@ const RatepayDescFrom = Form.create()(React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         if (!this.props.visible && nextProps.visible) {
+            if (nextProps.data.year) {
+                this.loadData(nextProps.data.year);
+            };
             this.props.form.resetFields();
         };
+        if (this.props.visible && !nextProps.visible) {
+            this.state.managementCost = undefined;
+            this.state.researchCost = undefined;
+            this.state.grossProfit = undefined;
+            this.state.operatingProfit = undefined;
+        };
     },
     render() {
         const FormItem = Form.Item;
         const { getFieldDecorator } = this.props.form;
         const theData = this.props.data;
         const formItemLayout = {
-            labelCol: { span: 10 },
-            wrapperCol: { span: 12 },
+            labelCol: { span: 8 },
+            wrapperCol: { span: 16 },
         };
         const _me = this;
         return (
@@ -84,7 +127,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                     {
                         theData.year ? <span>{theData.year}</span> :
                             <Select placeholder="请选择年份" style={{ width: 200 }}
-                                onSelect={(e, n) => { this.state.year = e }}>
+                                onSelect={(e, n) => { this.state.year = e, this.loadData(e); }}>
                                 {this.state.yearOption}
                             </Select>
                     }
@@ -111,6 +154,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.managementCost && this.state.managementCost != this.props.form.getFieldValue('managementCost') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
@@ -122,6 +166,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.operatingProfit && this.state.operatingProfit != this.props.form.getFieldValue('operatingProfit') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
@@ -177,6 +222,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.grossProfit && this.state.grossProfit != this.props.form.getFieldValue('grossProfit') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
@@ -188,6 +234,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.researchCost && this.state.researchCost != this.props.form.getFieldValue('researchCost') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                 </div>
                 <div className="hrSituation-roster">
@@ -214,7 +261,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                             }
                         }}
                     >
-                        <Button><Icon type="upload" /> 上传企业纳税申报表 </Button>
+                        <Button><Icon type="upload" /> 上传企业所得税纳税申报表 </Button>
                     </Upload>
                     <p style={{ marginTop: '10px' }}>{theData.taxReturnUrl ? <a onClick={newDownloadFile.bind(null, theData.id, 'ratepay', '/api/user/cognizance/downloadRatepay')}>{theData.taxReturnDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>

+ 75 - 15
js/component/account/services/standard.jsx

@@ -1,5 +1,6 @@
 import React from 'react';
-import { Icon, Button, Input, Spin, Table, message, Radio, Select, Modal } from 'antd';
+import { Icon, Button, Input, Spin, Table, message, Radio, Select, Modal, Upload } from 'antd';
+import { beforeUploadFile, newDownloadFile } from '../../tools.js';
 import './standard.less';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -24,8 +25,10 @@ const StandardDesc = React.createClass({
                 id: this.props.data.id,
                 standardName: this.state.standardName,
                 standardNumber: this.state.standardNumber,
+                year: this.state.year,
                 standardLevel: this.state.standardLevel,
-                participateWay: this.state.participateWay
+                participateWay: this.state.participateWay,
+                enclosureUrl: this.state.enclosureUrl
             },
             success: function (data) {
                 if (data.data) {
@@ -34,7 +37,8 @@ const StandardDesc = React.createClass({
                         standardName: data.data.standardName,
                         standardNumber: data.data.standardNumber,
                         standardLevel: data.data.standardLevel,
-                        participateWay: data.data.participateWay
+                        participateWay: data.data.participateWay,
+                        enclosureUrl: this.state.enclosureUrl
                     });
                 } else if (data.error && data.error.length) {
                     message.warning(data.error[0].message);
@@ -59,13 +63,25 @@ const StandardDesc = React.createClass({
         });
         this.props.closeDesc(false);
     },
+    componentWillMount() {
+        const Option = Select.Option;
+        const d = new Date();
+        const thisYear = d.getFullYear();
+        let theOption = [];
+        for (let i = thisYear; i >= 1950; i--) {
+            theOption.push(<Option key={i.toString()}>{i}</Option>)
+        };
+        this.state.yearOption = theOption;
+    },
     componentWillReceiveProps(nextProps) {
         this.state.visible = nextProps.showDesc;
         if (nextProps.data) {
             this.state.standardName = nextProps.data.standardName;
             this.state.standardNumber = nextProps.data.standardNumber;
+            this.state.year = nextProps.data.year;
             this.state.standardLevel = nextProps.data.standardLevel;
             this.state.participateWay = nextProps.data.participateWay;
+            this.state.enclosureUrl = nextProps.data.enclosureUrl;
         };
     },
     render() {
@@ -89,19 +105,57 @@ const StandardDesc = React.createClass({
                                 onChange={(e) => { this.setState({ standardNumber: e.target.value }); }} />
                         </div>
                         <div>
+                            <p>制定时间:</p>
+                            <Select
+                                placeholder="请选择年份"
+                                value={this.state.year}
+                                onChange={(e) => { this.setState({ year: e }); }}
+                                style={{ width: 80 }}>
+                                {this.state.yearOption}
+                            </Select>
+                        </div>
+                        <div>
                             <p>标准级别:</p>
                             <Radio.Group value={this.state.standardLevel} onChange={(e) => { this.setState({ standardLevel: e.target.value }) }}>
-                                <Radio value="0">国家</Radio>
-                                <Radio value="1">行业</Radio>
+                                <Radio value={0}>国家</Radio>
+                                <Radio value={1}>行业</Radio>
                             </Radio.Group>
                         </div>
                         <div>
                             <p>参与方式:</p>
                             <Radio.Group value={this.state.participateWay} onChange={(e) => { this.setState({ participateWay: e.target.value }) }}>
-                                <Radio value="0">主持</Radio>
-                                <Radio value="1">参与</Radio>
+                                <Radio value={0}>主持</Radio>
+                                <Radio value={1}>参与</Radio>
                             </Radio.Group>
                         </div>
+                        <div className="hrSituation-roster">
+                            <Upload
+                                name="ratepay"
+                                action={globalConfig.context + "/api/user/cognizance/uploadStandard"}
+                                data={{ 'sign': 'standard', 'uid': this.props.uid }}
+                                beforeUpload={beforeUploadFile}
+                                showUploadList={false}
+                                onChange={(info) => {
+                                    if (info.file.status !== 'uploading') {
+                                        console.log(info.file, info.fileList);
+                                    }
+                                    if (info.file.status === 'done') {
+                                        if (!info.file.response.error.length) {
+                                            message.success(`${info.file.name} 文件上传成功!`);
+                                        } else {
+                                            message.warning(info.file.response.error[0].message);
+                                            return;
+                                        };
+                                        this.state.enclosureUrl = info.file.response.data;
+                                    } else if (info.file.status === 'error') {
+                                        message.error(`${info.file.name} 文件上传失败。`);
+                                    }
+                                }}
+                            >
+                                <Button><Icon type="upload" /> 上传标准制定附件 </Button>
+                            </Upload>
+                            <p style={{ marginTop: '10px' }}>{this.state.enclosureUrl ? <a onClick={newDownloadFile.bind(null, this.props.data.id, 'standard', '/api/user/cognizance/downloadStandard')}>标准定制附件</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                        </div>
                     </Modal>
                 </div>
             );
@@ -146,8 +200,10 @@ const Standard = React.createClass({
                         uid: thisdata.uid,
                         standardName: thisdata.standardName,
                         standardNumber: thisdata.standardNumber,
-                        standardLevel: String(thisdata.standardLevel),
-                        participateWay: String(thisdata.participateWay),
+                        year: thisdata.year,
+                        enclosureUrl: thisdata.enclosureUrl,
+                        standardLevel: thisdata.standardLevel,
+                        participateWay: thisdata.participateWay,
                         createTime: thisdata.createTime,
                         createTimeFormattedDate: thisdata.createTimeFormattedDate
                     });
@@ -195,15 +251,19 @@ const Standard = React.createClass({
                     title: '标准编号',
                     dataIndex: 'standardNumber',
                     key: 'standardNumber'
+                },{
+                    title: '制定时间',
+                    dataIndex: 'year',
+                    key: 'year'
                 }, {
                     title: '标准级别',
                     dataIndex: 'standardLevel',
                     key: 'standardLevel',
                     render: text => {
-                        switch (String(text)) {
-                            case "0":
+                        switch (text) {
+                            case 0:
                                 return "国家";
-                            case "1":
+                            case 1:
                                 return "行业";
                         }
                     }
@@ -212,10 +272,10 @@ const Standard = React.createClass({
                     dataIndex: 'participateWay',
                     key: 'participateWay',
                     render: text => {
-                        switch (String(text)) {
-                            case "0":
+                        switch (text) {
+                            case 0:
                                 return "主持";
-                            case "1":
+                            case 1:
                                 return "参与";
                         }
                     }

+ 1 - 1
js/component/account/services/technology.jsx

@@ -174,7 +174,7 @@ const Technology = React.createClass({
                     dataIndex: 'createTime',
                     key: 'createTime'
                 }, {
-                    title: '咨询师',
+                    title: '负责人',
                     dataIndex: 'consultant',
                     key: 'consultant'
                 }

+ 3 - 3
js/component/account/services/technologyAdd.jsx

@@ -157,14 +157,14 @@ const ApplyAdd = React.createClass({
                             </Radio.Group>
                         </div>
                         <div className="half-item">
-                            <span className="item-title">{this.state.moneyType !== 2 ? '立项' : '后补助'}金额: </span>
+                            <span className="item-title">金额: </span>
                             <Input style={{ width: 200 }} onChange={(e) => { this.state.projectApproval = e.target.value; }} />
                         </div>
                     </div>
                     <div className="clearfix">
                         <div className="half-item">
-                            <span className="item-title">选择咨询师:  </span>
-                            <Select placeholder="请选择咨询师" style={{ width: 200 }}
+                            <span className="item-title">选择负责人:  </span>
+                            <Select placeholder="请选择负责人" style={{ width: 200 }}
                                 onSelect={(e, n) => { this.state.consultant = e }}>
                                 {this.props.authorOption}
                             </Select>

+ 1 - 7
js/component/account/services/technologyChange.jsx

@@ -218,12 +218,6 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                     </div>
                     <div className="clearfix">
                         <div className="half-item">
-                            <span className="item-title">派单信息: </span>
-                            <span>{theData.dispatchInfo}</span>
-                        </div>
-                    </div>
-                    <div className="clearfix">
-                        <div className="half-item">
                             <FormItem
                                 labelCol={{ span: 4 }}
                                 wrapperCol={{ span: 12 }}
@@ -288,7 +282,7 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                         <div className="half-item">
                             <FormItem
                                 {...formItemLayout}
-                                label={this.state.moneyType !== 2 ? '立项金额' : '后补助金额'}
+                                label='金额'
                             >
                                 {getFieldDecorator('projectApproval', {
                                     initialValue: theData.projectApproval

+ 8 - 2
js/component/certify/audit.jsx

@@ -35,7 +35,10 @@ const Content = Form.create()(React.createClass({
             }
         }.bind(this));
     },
-    componentWillMount() {
+    loadDate(){
+        this.setState({
+                loading:true
+            });
         $.ajax({
             method: "get",
             dataType: "json",
@@ -49,7 +52,7 @@ const Content = Form.create()(React.createClass({
                 };
             }.bind(this),
         }).done(function (data) {
-            if (data.error.length) {
+            if (data.error && data.error.length) {
                 message.warning(data.error[0].message);
             };
             this.setState({
@@ -57,6 +60,9 @@ const Content = Form.create()(React.createClass({
             });
         }.bind(this));
     },
+    componentWillMount() {
+        this.loadDate();
+    },
     render() {
         const FormItem = Form.Item;
         const { getFieldDecorator } = this.props.form;

+ 1 - 1
js/component/certify/bank.jsx

@@ -18,7 +18,7 @@ const Content = Form.create()(React.createClass({
                 if (data.data) {
                     this.setState({
                         username: data.data.username,
-                        bankName: data.data.username,
+                        bankName: data.data.bankName,
                         bankAccount: data.data.bankAccount,
                         bankCardNumber: data.data.bankCardNumber
                     })

+ 7 - 6
js/component/certify/certify.less

@@ -10,18 +10,18 @@
                     margin: 0 auto;
                     padding: 10px 0;
                     .logo {
-                        width: 12%;
+                        width: 120px;
                         padding-top: 60px;
                         float: left;
-                        margin-left: 40px;
+                        margin-left: 4%;
                         position: relative;
                         overflow: hidden;
                         img {
                             position: absolute;
                             top: 0;
-                            left: 0;
+                            right: 0;
                             height: 60px;
-                            width: 120px;
+                            width: 60px;
                         }
                     }
                     .certify-text {
@@ -29,6 +29,7 @@
                         float: left;
                         line-height: 60px;
                         font-size: 24px;
+                        margin-left: 20px;
                         .text {
                             border-left: 1px solid #999999;
                         }
@@ -46,7 +47,7 @@
                             }
                         }
                         span {
-                            padding-left: 10px;
+                            padding-left: 20px;
                         }
                     }
                 }
@@ -248,7 +249,7 @@
                                 left: 0;
                             }
                             p {
-                                line-height: 24px;
+                                line-height: 40px;
                             }
                             button {
                                 margin-top: 10px;

+ 8 - 4
js/component/certify/confirm.jsx

@@ -29,9 +29,9 @@ const Content = Form.create()(React.createClass({
                 };
             }.bind(this),
         }).done(function (data) {
-            if (data.error.length) {
+            if (data.error && data.error.length) {
                 message.warning(data.error[0].message);
-            }
+            };
         }.bind(this)).always(function () {
             this.setState({
                 loading: false
@@ -62,6 +62,10 @@ const Content = Form.create()(React.createClass({
             } else {
                 message.warning(data.error[0].message);
             }
+        }.bind(this)).always(function () {
+            this.setState({
+                loading: false
+            });
         }.bind(this));
     },
     componentWillMount() {
@@ -80,7 +84,7 @@ const Content = Form.create()(React.createClass({
         const _me = this;
         return (
             <Spin spinning={this.state.loading} className="certify-spin">
-                <Form horizontal onSubmit={this.handleSubmit} className="certify-form">
+                <Form horizontal className="certify-form">
                     <FormItem wrapperCol={{ span: 12, offset: 4 }}>
                         <p className="certify-title">请确认个人信息</p>
                     </FormItem>
@@ -151,7 +155,7 @@ const Content = Form.create()(React.createClass({
                         </span>
                     </FormItem>
                     <FormItem wrapperCol={{ span: 12, offset: 4 }}>
-                        <Button className="set-submit" type="primary" htmlType="submit">下一步</Button>
+                        <Button className="set-submit" type="primary" onClick={_me.handleSubmit}>下一步</Button>
                         <Button className="exit" type="ghost" onClick={_me.changeStep}>返回修改</Button>
                     </FormItem>
                 </Form >

+ 16 - 24
js/component/certify/personal.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
-import { Input, Button, Form, Upload, Icon, Spin, message, Row, Col } from 'antd';
+import { Input, Button, Form, Upload, Icon, Spin, message, Row, Col ,Cascader} from 'antd';
 import './certify.less';
-import { addressInit, getBase64, beforeUpload } from '../tools.js';
+import { getBase64, beforeUpload,provinceSelect } from '../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
 
@@ -57,11 +57,10 @@ const Content = Form.create()(React.createClass({
             url: globalConfig.context + "/api/user/userPro",
             success: function (data) {
                 if (data.data) {
-                    addressInit('cmbProvince', 'cmbCity', 'cmbArea',
-                        data.data.province, data.data.city, data.data.area);
                     this.setState({
                         positiveIdUrl: data.data.positiveIdUrl,
                         oppositeIdUrl: data.data.oppositeIdUrl,
+                        address:[data.data.province,data.data.city,data.data.area],
                         aftUsername: data.data.aftUsername,
                         username: data.data.username,
                         idNumber: data.data.idNumber,
@@ -87,14 +86,6 @@ const Content = Form.create()(React.createClass({
     handleSubmit(e) {
         e.preventDefault();
         this.props.form.validateFields((err, values) => {
-            //地址值
-            let cmbP = document.getElementById('cmbProvince').value;
-            let cmbC = document.getElementById('cmbCity').value;
-            let cmbA = document.getElementById('cmbArea').value;
-            if (!cmbP || !cmbC || !cmbA) {
-                message.warning("请选择所在地!");
-                return;
-            };
             if (!this.state.positiveIdUrl || !this.state.oppositeIdUrl) {
                 message.warning("请上传身份证!");
                 return;
@@ -115,9 +106,9 @@ const Content = Form.create()(React.createClass({
                         idNumber: values.idNumber,
                         positiveIdUrl: this.state.positiveIdUrl,
                         oppositeIdUrl: this.state.oppositeIdUrl,
-                        province: cmbP,
-                        city: cmbC,
-                        area: cmbA,
+                        province: values.address[0],
+                        city: values.address[1],
+                        area: values.address[2],
                         contactMobile: values.contactMobile,
                         process: 1
                     }
@@ -164,8 +155,7 @@ const Content = Form.create()(React.createClass({
     getIdCardUrl2(e) {
         this.state.oppositeIdUrl = e;
     },
-    componentDidMount() {
-        addressInit('cmbProvince', 'cmbCity', 'cmbArea');
+    componentWillMount() {
         this.getData();
     },
     reloadVCode(e) {
@@ -210,12 +200,11 @@ const Content = Form.create()(React.createClass({
                         wrapperCol={{ span: 18 }}
                         label="所在地"
                     >
-                        {getFieldDecorator('address')(
-                            <div>
-                                <select id="cmbProvince" name="cmbProvince"></select>
-                                <select id="cmbCity" name="cmbCity"></select>
-                                <select id="cmbArea" name="cmbArea"></select>
-                            </div>
+                        {getFieldDecorator('address',{
+                            initialValue: this.state.address || null,
+                            rules: [{type:'array', required: true, message: '请选择地址!' }]
+                        })(
+                            <Cascader options={provinceSelect()} placeholder="请选择" />
                         )}
                     </FormItem>
                     <FormItem
@@ -293,7 +282,10 @@ const Content = Form.create()(React.createClass({
                             </Col>
                             <Col span={8}>
                                 <div className="getVcode">
-                                    <img id="VCode" src={globalConfig.context + '/open/getVCode'} alt="" onClick={this.reloadVCode} />
+                                    <img id="VCode" 
+                                    src={globalConfig.context + '/open/getVCode'} 
+                                    alt="看不清楚点击切换" 
+                                    onClick={this.reloadVCode} />
                                 </div>
                             </Col>
                         </Row>

+ 1 - 2
js/component/certify/result.jsx

@@ -44,7 +44,7 @@ const Content = Form.create()(React.createClass({
                 };
             }.bind(this),
         }).done(function (data) {
-            if (data.error.length) {
+            if (data.error && data.error.length) {
                 message.warning(data.error[0].message);
             };
             this.setState({
@@ -66,7 +66,6 @@ const Content = Form.create()(React.createClass({
                                 <div className="certify-result-state">
                                     <Icon type="check" />
                                     <p>您已通过了实名认证</p>
-                                    <p>建议您下载数字证书,保障您的支付安全。</p>
                                 </div>
                             </div>;
                         case 4:

+ 2 - 1
js/component/certify/top.jsx

@@ -1,5 +1,6 @@
 import React from 'react';
 import './certify.less';
+import logo from '../../../image/logo.jpg';
 
 const LoginTop = React.createClass({
     render() {
@@ -7,7 +8,7 @@ const LoginTop = React.createClass({
             <div className="certify-header">
                 <div className="certify-logo clearfix">
                     <div className="logo">
-                        <img src="" alt="" />
+                        <img src={logo} alt="" />
                     </div>
                     <div className="certify-text">
                         <span className="text">实名认证</span>

文件差異過大導致無法顯示
+ 202 - 1
js/component/dataDic.js


+ 16 - 26
js/component/groupCertify/bank.jsx

@@ -1,6 +1,6 @@
 import React from 'react';
-import { Input, Button, Form, Icon, Spin, message, } from 'antd';
-import { addressInit } from '../tools.js';
+import { Input, Button, Form, Icon, Spin, message, Cascader } from 'antd';
+import { provinceSelect } from '../tools.js';
 import './certify.less';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
@@ -17,11 +17,10 @@ const Content = Form.create()(React.createClass({
             url: globalConfig.context + "/api/user/orgProcess",
             success: function (data) {
                 if (data.data) {
-                    addressInit('cmbProvince', 'cmbCity', 'cmbArea',
-                        data.data.locationProvince, data.data.locationCity, data.data.locationArea);
                     this.setState({
                         contactMobile: data.data.contactMobile,
                         bankAccount: data.data.bankAccount,
+                        address: [data.data.locationProvince, data.data.locationCity, data.data.locationArea],
                         banks: data.data.banks,
                         bankBranch: data.data.bankBranch,
                         bankCardNumber: data.data.bankCardNumber,
@@ -46,13 +45,6 @@ const Content = Form.create()(React.createClass({
     handleSubmit(e) {
         e.preventDefault();
         this.props.form.validateFields((err, values) => {
-            let cmbP = document.getElementById('cmbProvince').value;
-            let cmbC = document.getElementById('cmbCity').value;
-            let cmbA = document.getElementById('cmbArea').value;
-            if (!cmbP || !cmbC || !cmbA) {
-                message.warning("请选择所在地!");
-                return;
-            };
             if (!err) {
                 this.setState({
                     loading: true
@@ -67,9 +59,9 @@ const Content = Form.create()(React.createClass({
                         banks: values.banks,
                         bankBranch: values.bankBranch,
                         bankCardNumber: values.bankCardNumber,
-                        locationProvince: cmbP,
-                        locationCity: cmbC,
-                        locationArea: cmbA,
+                        locationProvince: values.address[0],
+                        locationCity: values.address[1],
+                        locationArea: values.address[2],
                         process: 2
                     }
                 }).done(function (data) {
@@ -93,8 +85,7 @@ const Content = Form.create()(React.createClass({
             callback();
         }
     },
-    componentDidMount() {
-        addressInit('cmbProvince', 'cmbCity', 'cmbArea');
+    componentWillMount() {
         this.getData();
     },
     changeStep() {
@@ -119,12 +110,12 @@ const Content = Form.create()(React.createClass({
                         label="银行开户名"
                         extra={<span><Icon type="exclamation-circle" /> 必须使用以改名称为开户名的银行卡进行认证</span>}
                     >
-                        {getFieldDecorator('bankAccount',{
+                        {getFieldDecorator('bankAccount', {
                             initialValue: this.state.bankAccount || null,
-                            rules: [{required: true, message: '请输入开户银行开户名!' }]
+                            rules: [{ required: true, message: '请输入开户银行开户名!' }]
                         })(
                             <Input placeholder="请输入开户银行开户名" />
-                        )}
+                            )}
                     </FormItem>
                     <FormItem
                         {...formItemLayout}
@@ -142,13 +133,12 @@ const Content = Form.create()(React.createClass({
                         {...formItemLayout}
                         label="开户银行所在地"
                     >
-                        {getFieldDecorator('address')(
-                            <div>
-                                <select id="cmbProvince" name="cmbProvince"></select>
-                                <select id="cmbCity" name="cmbCity"></select>
-                                <select id="cmbArea" name="cmbArea"></select>
-                            </div>
-                        )}
+                        {getFieldDecorator('address', {
+                            initialValue: this.state.address || null,
+                            rules: [{ type: 'array', required: true, message: '请选择地址!' }]
+                        })(
+                            <Cascader options={provinceSelect()} placeholder="请选择地址" />
+                            )}
                     </FormItem>
                     <FormItem
                         {...formItemLayout}

+ 6 - 5
js/component/groupCertify/certify.less

@@ -10,16 +10,16 @@
                     margin: 0 auto;
                     padding: 10px 0;
                     .logo {
-                        width: 6%;
+                        width: 120px;
                         padding-top: 60px;
                         float: left;
-                        margin-left: 100px;
+                        margin-left: 4%;
                         position: relative;
                         overflow: hidden;
                         img {
                             position: absolute;
                             top: 0;
-                            left: 0;
+                            right: 0;
                             height: 60px;
                             width: 60px;
                         }
@@ -29,6 +29,7 @@
                         float: left;
                         line-height: 60px;
                         font-size: 24px;
+                        margin-left: 20px;
                         .text {
                             border-left: 1px solid #999999;
                         }
@@ -46,7 +47,7 @@
                             }
                         }
                         span {
-                            padding-left: 10px;
+                            padding-left: 20px;
                         }
                     }
                 }
@@ -245,7 +246,7 @@
                                 left: 0;
                             }
                             p {
-                                line-height: 24px;
+                                line-height: 40px;
                             }
                             button {
                                 margin-top: 10px;

+ 2 - 2
js/component/groupCertify/confirm.jsx

@@ -88,7 +88,7 @@ const Content = Form.create()(React.createClass({
         const _me = this;
         return (
             <Spin spinning={this.state.loading} className="certify-spin">
-                <Form horizontal onSubmit={this.handleSubmit} className="certify-form">
+                <Form horizontal className="certify-form">
                     <FormItem wrapperCol={{ span: 12, offset: 6 }}>
                         <p className="certify-title">请确认提交的企业信息</p>
                     </FormItem>
@@ -202,7 +202,7 @@ const Content = Form.create()(React.createClass({
                         </span>
                     </FormItem>
                     <FormItem wrapperCol={{ span: 12, offset: 6 }}>
-                        <Button className="set-submit" type="primary" htmlType="submit">下一步</Button>
+                        <Button className="set-submit" type="primary" onClick={_me.handleSubmit}>下一步</Button>
                         <Button className="exit" type="ghost" onClick={_me.changeStep}>返回修改</Button>
                     </FormItem>
                 </Form >

+ 15 - 26
js/component/groupCertify/personal.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
-import { Input, Button, Form, Upload, Icon, Spin, message, Row, Col, DatePicker, Select, Radio } from 'antd';
+import { Input, Button, Form, Upload, Icon, Spin, message, Row, Col, DatePicker, Select, Radio, Cascader } from 'antd';
 import './certify.less';
-import { addressInit, getBase64, beforeUpload, beforeUploadFile } from '../tools.js';
+import { getBase64, beforeUpload, beforeUploadFile, provinceSelect } from '../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
 import moment from 'moment';
@@ -57,8 +57,6 @@ const Content = Form.create()(React.createClass({
             url: globalConfig.context + "/api/user/orgProcess",
             success: function (data) {
                 if (data.data) {
-                    addressInit('cmbProvince', 'cmbCity', 'cmbArea',
-                        data.data.licenceProvince, data.data.licenceCity, data.data.licenceArea);
                     this.setState({
                         contacts: data.data.contacts,
                         contactMobile: data.data.contactMobile,
@@ -66,6 +64,7 @@ const Content = Form.create()(React.createClass({
                         unitName: data.data.unitName,
                         registeredCapital: data.data.registeredCapital,
                         licenceNumber: data.data.licenceNumber,
+                        licenceAddress: [data.data.licenceProvince, data.data.licenceCity, data.data.licenceArea],
                         orgCode: data.data.orgCode,
                         legalPerson: data.data.legalPerson,
                         legalPersonIdCard: data.data.legalPersonIdCard,
@@ -99,14 +98,6 @@ const Content = Form.create()(React.createClass({
     handleSubmit(e) {
         e.preventDefault();
         this.props.form.validateFields((err, values) => {
-            //地址值
-            let cmbP = document.getElementById('cmbProvince').value;
-            let cmbC = document.getElementById('cmbCity').value;
-            let cmbA = document.getElementById('cmbArea').value;
-            if (!cmbP || !cmbC || !cmbA) {
-                message.warning("请选择所在地!");
-                return;
-            };
             if (!this.state.licenceScanningUrl) {
                 message.warning("请上传营业执照副本!");
                 return;
@@ -141,9 +132,9 @@ const Content = Form.create()(React.createClass({
                         unitName: values.unitName,
                         registeredCapital: values.registeredCapital,
                         licenceNumber: values.licenceNumber,
-                        licenceProvince: cmbP,
-                        licenceCity: cmbC,
-                        licenceArea: cmbA,
+                        licenceProvince: values.address[0],
+                        licenceCity: values.address[1],
+                        licenceArea: values.address[2],
                         licenceScanningUrl: this.state.licenceScanningUrl,
                         orgCode: values.orgCode,
                         orgCodeUrl: this.state.orgCodeUrl,
@@ -211,8 +202,7 @@ const Content = Form.create()(React.createClass({
     getLastYearTaxReportUrl(e) {
         this.state.lastYearTaxReportUrl = e;
     },
-    componentDidMount() {
-        addressInit('cmbProvince', 'cmbCity', 'cmbArea');
+    componentWillMount() {
         this.getData();
     },
     reloadVCode() {
@@ -372,13 +362,12 @@ const Content = Form.create()(React.createClass({
                         wrapperCol={{ span: 18 }}
                         label="营业执照所在地"
                     >
-                        {getFieldDecorator('address')(
-                            <div>
-                                <select id="cmbProvince" name="cmbProvince"></select>
-                                <select id="cmbCity" name="cmbCity"></select>
-                                <select id="cmbArea" name="cmbArea"></select>
-                            </div>
-                        )}
+                        {getFieldDecorator('address', {
+                            initialValue: this.state.address || null,
+                            rules: [{ type: 'array', required: true, message: '请选择地址!' }]
+                        })(
+                            <Cascader options={provinceSelect()} placeholder="请选择地址" />
+                            )}
                     </FormItem>
                     <FormItem
                         labelCol={{ span: 6 }}
@@ -426,8 +415,8 @@ const Content = Form.create()(React.createClass({
                         <div className="hrSituation-roster">
                             <Upload
                                 name="ratepay"
-                                action={globalConfig.context + "/api/user/cognizance/upload"}
-                                data={{ 'sign': 'ratepay_' + (new Date().getFullYear() - 1) }}
+                                action={globalConfig.context + "/api/user/cognizance/uploadRatepay"}
+                                data={{ 'sign': 'ratepay' }}
                                 beforeUpload={beforeUploadFile}
                                 showUploadList={false}
                                 onChange={(info) => {

+ 0 - 1
js/component/groupCertify/result.jsx

@@ -70,7 +70,6 @@ const Content = Form.create()(React.createClass({
                                 <div className="certify-result-state">
                                     <Icon type="check" />
                                     <p>您已通过了实名认证</p>
-                                    <p>建议您下载数字证书,保障您的支付安全。</p>
                                 </div>
                             </div>;
                         case "4":

+ 6 - 14
js/component/manageCenter/servicesManage/copyright/comPatentAdd.jsx

@@ -64,7 +64,7 @@ const PatentAddFrom = Form.create()(React.createClass({
                         //"copyrightInfo": values.copyrightInfo, // 软著简介,size 0-255
                         //"copyrightName": values.copyrightName, // 软著名称, size 0-60
                         "outsource": values.outsource, // 外包公司, size 0-60
-                        "workIssue": values.workIssue, // 派单信息, size 0-128
+                        "comment": values.workIssue, // 派单信息, size 0-128
                         "inUrgent": values.inUrgent, //  加急天数,
                         //"comment": values.comment, // 备注 size 0-128
                         "principal": values.principal // 负责人id
@@ -144,7 +144,9 @@ const PatentAddFrom = Form.create()(React.createClass({
                     {...formItemLayout}
                     label="是否加急"
                 >
-                    {getFieldDecorator('inUrgent')(
+                    {getFieldDecorator('inUrgent', {
+                        initialValue: '0'
+                    })(
                         <Select
                             placeholder="请选择加急时间"
                             style={{ width: 200 }}>
@@ -156,19 +158,9 @@ const PatentAddFrom = Form.create()(React.createClass({
                             <Select.Option value="20">16-20个工作日</Select.Option>
                             <Select.Option value="25">21-25个工作日</Select.Option>
                             <Select.Option value="30">26-30个工作日</Select.Option>
+                            <Select.Option value="35">31-35个工作日</Select.Option>
                         </Select>
-                    )}
-                </FormItem>
-                <FormItem
-                    {...formItemLayout}
-                    label="选择咨询师"
-                >
-                    {getFieldDecorator('principal')(
-                        <Select placeholder="请选择咨询师" style={{ width: 200 }}
-                            onSelect={(e, n) => { this.setState({ principal: e }); }}>
-                            {this.props.consultantOption}
-                        </Select>
-                    )}
+                        )}
                 </FormItem>
                 <FormItem
                     {...formItemLayout}

+ 6 - 16
js/component/manageCenter/servicesManage/copyright/comPatentChange.jsx

@@ -142,6 +142,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
             this.setState({
                 id: detailData.id,
                 province: detailData.province,
+                postalAddress:detailData.postalAddress,
                 unitName: detailData.unitName,
                 serialNumber: detailData.serialNumber,
                 createTime: detailData.createTime,
@@ -205,7 +206,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                         "copyrightName": values.copyrightName, // 软著名称, size 0-60
                         "copyrightNumber": values.copyrightNumber,
                         "outsource": values.outsource, // 外包公司, size 0-60
-                        "workIssue": values.workIssue, // 派单信息, size 0-128
+                        //"workIssue": values.workIssue, // 派单信息, size 0-128
                         "inUrgent": values.inUrgent, //  加急天数,
                         "status": values.status, // 状态
                         "comment": values.comment, // 备注 size 0-128
@@ -240,12 +241,12 @@ const CopyrightDescForm = Form.create()(React.createClass({
                 <Row className="express-desc-row">
                     <Col span={4}>公司名称</Col>
                     <Col span={6}>{theData.unitName}</Col>
-                    <Col span={4}>公司组织机构代码</Col>
+                    <Col span={4}>组织机构代码</Col>
                     <Col span={6}>{theData.unitNumber}</Col>
                 </Row>
                 <Row className="express-desc-row">
                     <Col span={4}>公司地址</Col>
-                    <Col span={6}>{theData.province}/{theData.city}/{theData.area}</Col>
+                    <Col span={6}>{theData.postalAddress}</Col>
                     <Col span={4}>联系人</Col>
                     <Col span={6}>
                         {getFieldDecorator('contact', {
@@ -273,18 +274,6 @@ const CopyrightDescForm = Form.create()(React.createClass({
                     </Col>
                 </Row>
                 <Row className="express-desc-row">
-                    <Col span={4}>派单详情</Col>
-                    <Col span={16}>
-                        {getFieldDecorator('workIssue', {
-                            initialValue: theData.workIssue
-                        })(
-                            <Input type="textarea"
-                                placeholder="多行输入"
-                                rows={6} />
-                            )}
-                    </Col>
-                </Row>
-                <Row className="express-desc-row">
                     <Col span={4}>软著名称</Col>
                     <Col span={6}>
                         {getFieldDecorator('copyrightName', {
@@ -306,7 +295,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                     <Col span={4}>加急天数</Col>
                     <Col span={6}>
                         {getFieldDecorator('inUrgent', {
-                            initialValue: theData.inUrgent ? String(theData.inUrgent) : undefined
+                            initialValue: theData.inUrgent ? String(theData.inUrgent) : '0'
                         })(
                             <Select
                                 placeholder="请选择加急时间"
@@ -319,6 +308,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                                 <Select.Option value="20">16-20个工作日</Select.Option>
                                 <Select.Option value="25">21-25个工作日</Select.Option>
                                 <Select.Option value="30">26-30个工作日</Select.Option>
+                                <Select.Option value="35">31-35个工作日</Select.Option>
                             </Select>
                             )}
                     </Col>

+ 3 - 41
js/component/manageCenter/servicesManage/copyright/copyright.jsx

@@ -109,35 +109,6 @@ const copyright = React.createClass({
             });
         }.bind(this));
     },
-    getConsultant() {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            method: "get",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + "/api/admin/copyright/getConsultant",
-            success: function (data) {
-                if (!data.data) {
-                    if (data.error && data.error.length) {
-                        message.warning(data.error[0].message);
-                    }
-                    return;
-                };
-                let _me = this;
-                for (var item in data.data) {
-                    _me.state.consultantOption.push(
-                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
-                    )
-                };
-            }.bind(this),
-        }).always(function () {
-            this.setState({
-                loading: false
-            });
-        }.bind(this));
-    },
     getCompanyList() {
         this.setState({
             loading: true
@@ -217,11 +188,6 @@ const copyright = React.createClass({
                     key: 'status',
                     render: (text) => { return getCopyrightState(text) }
                 }, {
-                    title: '派单信息',
-                    dataIndex: 'workIssue',
-                    key: 'workIssue',
-                    width: '25%'
-                }, {
                     title: '软著名称',
                     dataIndex: 'copyrightName',
                     key: 'copyrightName',
@@ -247,10 +213,12 @@ const copyright = React.createClass({
                                 return '21-25个工作日';
                             case 30:
                                 return '26-30个工作日';
+                            case 35:
+                                return '31-35个工作日';
                         }
                     }
                 }, {
-                    title: '咨询师',
+                    title: '负责人',
                     dataIndex: 'principal',
                     key: 'principal',
                 }, {
@@ -275,10 +243,6 @@ const copyright = React.createClass({
                         };
                         return;
                     }
-                }, {
-                    title: '备注',
-                    dataIndex: 'comment',
-                    key: 'comment',
                 }
             ],
             dataSource: []
@@ -299,7 +263,6 @@ const copyright = React.createClass({
         this.loadData();
         this.getAuthorList();
         this.getCompanyList();
-        this.getConsultant();
     },
     tableRowClick(record, index) {
         this.state.RowData = record;
@@ -393,7 +356,6 @@ const copyright = React.createClass({
                         <span>软著申请管理</span>
                         <PatentAdd
                             companyOption={this.state.companyOption}
-                            consultantOption={this.state.consultantOption}
                             onClick={this.addClick}
                             closeAdd={this.closeAdd} />
                     </div>

+ 2 - 3
js/component/manageCenter/servicesManage/highTech/fosterDesc/ablt.less

@@ -6,10 +6,9 @@
         color: #333;
         font-size: 16px;
         margin-bottom: 10px;
-        span {
+        .proportion {
             font-size: 12px;
-            color: #999;
-            margin-left: 10px;
+            margin-left: 20px;
         }
     }
     .tips-title {

+ 15 - 3
js/component/manageCenter/servicesManage/highTech/fosterDesc/achievement.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
-import { Icon, Form, Button, Input, Spin, Table, message, Select, Modal, InputNumber, Upload } from 'antd';
+import { Icon, Form, Button, Input, Spin, Table, message, Select, Modal, InputNumber, Upload, Switch } from 'antd';
 import './techProduct.less';
-import { getConversionForm, beforeUploadFile, newDownloadFile } from '../../../../tools.js';
+import { getConversionForm, beforeUploadFile, newDownloadFile, getProportion, saveProportion } from '../../../../tools.js';
 import { conversionFormList, technicalSourceList } from '../../../../dataDic.js';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -162,7 +162,7 @@ const AchievementDescFrom = Form.create()(React.createClass({
                     <Upload
                         name="ratepay"
                         action={globalConfig.context + "/api/admin/uploadAchievement"}
-                        data={{ 'sign': 'achievement','uid': this.props.uid }}
+                        data={{ 'sign': 'achievement', 'uid': this.props.uid }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -312,6 +312,8 @@ const Achievement = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
     },
     getInitialState() {
         return {
@@ -432,6 +434,16 @@ const Achievement = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     <span>科技成果转化</span>
+                    <span className="proportion"> 是否已完成:</span>
+                    <Switch
+                        checked={this.state.proportion && this.state.proportion.achievement == 1 ? true : false}
+                        checkedChildren={'已完成'}
+                        unCheckedChildren={'未完成'}
+                        onChange={(e) => {
+                            e ? this.state.proportion.achievement = 1 : this.state.proportion.achievement = 0;
+                            saveProportion(this.state.proportion.id, 'achievement', this.state.proportion.achievement);
+                            this.setState({ proportion: this.state.proportion });
+                        }} />
                 </div>
                 <div className="user-search">
                     <p>

+ 14 - 2
js/component/manageCenter/servicesManage/highTech/fosterDesc/activity.jsx

@@ -1,8 +1,8 @@
 import React from 'react';
-import { Icon, Button, Upload, Input, Spin, Table, message, Select, Modal, DatePicker, Cascader, Transfer, InputNumber } from 'antd';
+import { Icon, Button, Upload, Input, Spin, Table, message, Select, Modal, DatePicker, Cascader, Transfer, InputNumber, Switch } from 'antd';
 import { technicalSourceList } from '../../../../dataDic.js';
 import { techFieldList } from '../../../../DicTechFieldList.js';
-import { getTechField, getTechnicalSource, beforeUploadFile, newDownloadFile } from '../../../../tools.js';
+import { getTechField, getTechnicalSource, beforeUploadFile, newDownloadFile, getProportion, saveProportion } from '../../../../tools.js';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -417,6 +417,8 @@ const Activity = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
     },
     getInitialState() {
         return {
@@ -543,6 +545,16 @@ const Activity = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     <span>企业研究开发活动情况表</span>
+                    <span className="proportion"> 是否已完成:</span>
+                    <Switch
+                        checked={this.state.proportion && this.state.proportion.activity == 1 ? true : false}
+                        checkedChildren={'已完成'}
+                        unCheckedChildren={'未完成'}
+                        onChange={(e) => {
+                            e ? this.state.proportion.activity = 1 : this.state.proportion.activity = 0;
+                            saveProportion(this.state.proportion.id, 'activity', this.state.proportion.activity);
+                            this.setState({ proportion: this.state.proportion });
+                        }} />
                 </div>
                 <div className="user-search">
                     <Input placeholder="研发活动名称" value={this.state.activityName}

+ 28 - 16
js/component/manageCenter/servicesManage/highTech/fosterDesc/activityCostList.jsx

@@ -1,7 +1,8 @@
 import React from 'react';
-import { Icon, Form, Upload, Button, Input, Spin, Table, message, Select, Modal, DatePicker, InputNumber } from 'antd';
+import { Switch, Icon, Form, Upload, Button, Input, Spin, Table, message, Select, Modal, DatePicker, InputNumber } from 'antd';
 import './activityCostList.less';
-import { beforeUploadFile, newDownloadFile } from '../../../../tools.js';
+import { beforeUploadFile, newDownloadFile, getProportion, saveProportion } from '../../../../tools.js';
+import YearSelect from '../../../../yearSelect.jsx';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -57,6 +58,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                         aid: this.state.aid,
                         uid: this.props.uid,
                         activityNumber: this.state.activityNumber,
+                        year: this.state.year,
 
                         internalLaborCost: values.internalLaborCost,
                         internalDirectCost: values.internalDirectCost,
@@ -109,6 +111,8 @@ const ActivityDescFrom = Form.create()(React.createClass({
                             {this.state.activityNumberOption}
                         </Select>
                 }
+                <p className="activityCost-title">费用年份</p>
+                <div><YearSelect defValue={this.state.year} handleyear={(e) => { this.state.year = e; }} /></div>
                 <p className="activityCost-title">内部研究开发费用(万元)</p>
                 <div className="clearfix activityCost-box">
                     <FormItem className="half-item"
@@ -272,7 +276,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     <Upload
                         name="ratepay"
                         action={globalConfig.context + "/api/admin/uploadActivityCost"}
-                        data={{ 'sign': 'activity_cost_account','uid': this.props.uid }}
+                        data={{ 'sign': 'activity_cost_account', 'uid': this.props.uid }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -375,8 +379,7 @@ const Activity = React.createClass({
                 pageSize: this.state.pagination.pageSize,
                 uid: this.props.data.uid,
                 activityNumber: this.state.activityNumber,
-                startDate: this.state.startDateFormattedDate,
-                endDate: this.state.endDateFormattedDate
+                year: this.state.year
             }
         }), $.ajax({
             method: "post",
@@ -405,6 +408,7 @@ const Activity = React.createClass({
                     uid: thisdata.uid,
                     aid: thisdata.aid,
                     activityNumber: thisdata.activityNumber,
+                    year: thisdata.year,
                     startDate: thisdata.startDate,
                     endDate: thisdata.endDate,
 
@@ -453,6 +457,8 @@ const Activity = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
     },
     getInitialState() {
         return {
@@ -477,6 +483,10 @@ const Activity = React.createClass({
                     dataIndex: 'activityNumber',
                     key: 'activityNumber'
                 }, {
+                    title: '费用年份',
+                    dataIndex: 'year',
+                    key: 'year'
+                }, {
                     title: '内部研究开发费用',
                     dataIndex: 'internalAllCost',
                     key: 'internalAllCost'
@@ -585,12 +595,10 @@ const Activity = React.createClass({
         };
     },
     search() {
-
         this.loadData();
     },
     reset() {
-        this.state.startDateFormattedDate = undefined;
-        this.state.endDateFormattedDate = undefined;
+        this.state.year = undefined;
         this.state.activityNumber = undefined;
         this.loadData();
     },
@@ -609,18 +617,22 @@ const Activity = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     <span>企业研究开发费用结构明细</span>
+                    <span className="proportion"> 是否已完成:</span>
+                    <Switch
+                        checked={this.state.proportion && this.state.proportion.activityCost == 1 ? true : false}
+                        checkedChildren={'已完成'}
+                        unCheckedChildren={'未完成'}
+                        onChange={(e) => {
+                            e ? this.state.proportion.activityCost = 1 : this.state.proportion.activityCost = 0;
+                            saveProportion(this.state.proportion.id, 'activityCost', this.state.proportion.activityCost);
+                            this.setState({ proportion: this.state.proportion });
+                        }} />
                 </div>
                 <div className="user-search">
                     <Input placeholder="研发活动编号" value={this.state.activityNumber}
                         onChange={(e) => { this.setState({ activityNumber: e.target.value }); }} />
-                    <span>开始日期:</span>
-                    <DatePicker
-                        value={this.state.startDateFormattedDate ? moment(this.state.startDateFormattedDate) : null}
-                        onChange={(data, dataString) => { this.setState({ startDateFormattedDate: dataString }); }} />
-                    <span>结束日期:</span>
-                    <DatePicker
-                        value={this.state.endDateFormattedDate ? moment(this.state.endDateFormattedDate) : null}
-                        onChange={(data, dataString) => { this.setState({ endDateFormattedDate: dataString }); }} />
+                    <span>年份:</span>
+                    <YearSelect value={this.state.year} handleyear={(e) => { this.state.year = e; }} />
                     <Button type="primary" onClick={this.search}>搜索</Button>
                     <Button onClick={this.reset}>重置</Button>
                     <p>

+ 33 - 25
js/component/manageCenter/servicesManage/highTech/fosterDesc/annualReport.jsx

@@ -199,12 +199,16 @@ const AnnualReportDescFrom = Form.create()(React.createClass({
                             <p>
                                 <span>{theData.lastYearRevenue} </span>
                                 {(() => {
-                                    let s = (theData.lastYearRevenue / theData.totalRevenue * 100).toFixed(2);
-                                    if (s < 50) {
-                                        return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于60%</span>
+                                    if ( theData.totalRevenue != 0 ) {
+                                        let s =  ( theData.lastYearRevenue / theData.totalRevenue * 100).toFixed(2);
+                                        if (s < 60) {
+                                            return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于60%</span>
+                                        } else {
+                                            return <span> 占比总收入的{s}%</span>
+                                        };
                                     } else {
-                                        return <span> 占比总收入的{s}%</span>
-                                    };
+                                        return <span style={{ color: '#ea0862' }}> 占比总收入的0%</span>
+                                    }
                                 })()}
                             </p>
                         </div>
@@ -218,25 +222,29 @@ const AnnualReportDescFrom = Form.create()(React.createClass({
                             <p>
                                 <span>{theData.researchCost} </span>
                                 {(() => {
-                                    let s = (theData.researchCost / theData.salesRevenue * 100).toFixed(2);
-                                    if (theData.salesRevenue < 5000) {
-                                        if (s < 5) {
-                                            return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于60%</span>
-                                        } else {
-                                            return <span> 占比总收入的{s}%</span>
-                                        };
-                                    } else if (5000 < theData.salesRevenue < 20000) {
-                                        if (s < 4) {
-                                            return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于60%</span>
-                                        } else {
-                                            return <span> 占比总收入的{s}%</span>
-                                        };
-                                    } else if (theData.salesRevenue >= 20000) {
-                                        if (s < 3) {
-                                            return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于60%</span>
-                                        } else {
-                                            return <span> 占比总收入的{s}%</span>
-                                        };
+                                    if ( theData.salesRevenue != 0 ) {
+                                        let s = (theData.researchCost / theData.salesRevenue * 100).toFixed(2);
+                                        if (theData.salesRevenue < 5000) {
+                                            if (s < 5) {
+                                                return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于5%</span>
+                                            } else {
+                                                return <span> 占比总收入的{s}%</span>
+                                            };
+                                        } else if (5000 < theData.salesRevenue < 20000) {
+                                            if (s < 4) {
+                                                return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于4%</span>
+                                            } else {
+                                                return <span> 占比总收入的{s}%</span>
+                                            };
+                                        } else if (theData.salesRevenue >= 20000) {
+                                            if (s < 3) {
+                                                return <span style={{ color: '#ea0862' }}> 占比总收入的{s}%,小于3%</span>
+                                            } else {
+                                                return <span> 占比总收入的{s}%</span>
+                                            };
+                                        }
+                                    } else {
+                                        return <span style={{ color: '#ea0862' }}> 占比总收入的0%</span>
                                     }
                                 })()}
                             </p>
@@ -418,7 +426,7 @@ const AnnualReportDesc = React.createClass({
         return (
             <div className="patent-addNew">
                 <Spin spinning={this.state.loading} className='spin-box'>
-                    <Modal title="财务报表信息" visible={this.state.visible}
+                    <Modal title="企业年报信息" visible={this.state.visible}
                         onOk={this.handleOk} onCancel={this.handleCancel}
                         width='1000px'
                         footer=''

+ 983 - 0
js/component/manageCenter/servicesManage/highTech/fosterDesc/companyDetail.jsx

@@ -0,0 +1,983 @@
+import React from 'react';
+import { Icon, Form, Button, Input, Spin, message, InputNumber, DatePicker, Select, Checkbox, Cascader, Table, Radio } from 'antd';
+import './techProduct.less';
+import { provinceSelect } from '../../../../tools';
+import { industryList, scaleList, companyType } from '../../../../dataDic';
+import { techFieldList } from '../../../../DicTechFieldList';
+import moment from 'moment';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+
+const CompanyDetail = Form.create()(React.createClass({
+    loadInfoData(uid) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/basic/info",
+            data: {
+                uid: uid || this.props.data.uid
+            }
+        }).done(function (data) {
+            let thisdata = data.data;
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+                return;
+            };
+            this.setState({
+                data: thisdata,
+                id: thisdata.id,
+                uid: thisdata.uid,
+                hid: thisdata.hid,
+                unitName: thisdata.unitName,
+                postalAddress: thisdata.postalAddress,
+                postcode: thisdata.postcode,
+                contacts: thisdata.contacts,
+                contactMobile: thisdata.contactMobile,
+                contactsFixedTel: thisdata.contactsFixedTel,
+                contactsFax: thisdata.contactsFax,
+                legalPersonTel: thisdata.legalPersonTel,
+                legalPersonFax: thisdata.legalPersonFax,
+                legalPersonEmail: thisdata.legalPersonEmail,
+                registeredCapital: thisdata.registeredCapital,
+                registrationTime: thisdata.registrationTime,
+                legalPerson: thisdata.legalPerson,
+                legalPersonIdCard: thisdata.legalPersonIdCard,
+                orgCode: thisdata.orgCode,
+                ratepayCode: thisdata.ratepayCode,
+                industry: thisdata.industry,
+                enterpriseScale: thisdata.enterpriseScale,
+                foreignInvestment: thisdata.foreignInvestment,
+                taxAuthority: thisdata.taxAuthority,
+                ratepayMethod: thisdata.ratepayMethod,
+                listed: thisdata.listed,
+                listedDate: thisdata.listedDate,
+                listedType: thisdata.listedType,
+                stockCode: thisdata.stockCode,
+                highTechZone: thisdata.highTechZone,
+                highTechName: thisdata.highTechName,
+                riskInvestment: thisdata.riskInvestment,
+                businessScope: thisdata.businessScope,
+                firmTotal: thisdata.firmTotal,
+                techTotal: thisdata.techTotal,
+                listedDateFormattedDate: thisdata.listedDateFormattedDate,
+                registrationTimeFormattedDate: thisdata.registrationTimeFormattedDate,
+                address: [thisdata.province, thisdata.city, thisdata.area],
+                field: thisdata.field ? thisdata.field.split(',') : [],
+                registerType: thisdata.registerType ? thisdata.registerType.split(',') : []
+            });
+        }.bind(this)).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    loadHumanData(uid) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/basic/listNature",
+            data: {
+                uid: uid || this.props.data.uid
+            }
+        }).done(function (data) {
+            let theTableData = [];
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+                return;
+            };
+            data.data.map(function (item) {
+                theTableData.push({
+                    id: item.id,
+                    uid: item.uid,
+                    type: item.type,
+                    name: item.name,
+                    idNumber: item.idNumber,
+                    investment: item.investment
+                });
+            });
+            this.setState({
+                humanTableData: theTableData
+            });
+        }.bind(this)).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    loadLegalData(uid) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/basic/listLegalPerson",
+            data: {
+                uid: uid || this.props.data.uid
+            }
+        }).done(function (data) {
+            let theTableData = [];
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+                return;
+            };
+            data.data.map(function (item) {
+                theTableData.push({
+                    id: item.id,
+                    uid: item.uid,
+                    type: item.type,
+                    name: item.name,
+                    idNumber: item.idNumber,
+                    investment: item.investment
+                });
+            });
+            this.setState({
+                humanLegalData: theTableData
+            });
+        }.bind(this)).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            loading: false,
+            industryOption: [],
+            scaleOption: [],
+            humanTableData: [],
+            legalTableData: [],
+            humanColumns: [
+                {
+                    title: '公民类型',
+                    dataIndex: 'type',
+                    key: 'type',
+                    width: '130px',
+                    render: (text, record, index) => {
+                        return <Select value={record.type} onChange={(e) => { record.type = e; this.setState({ humanTableData: this.state.humanTableData }); }}>
+                            <Select.Option value="0">中国公民</Select.Option>
+                            <Select.Option value="1">外籍公民</Select.Option>
+                        </Select>
+                    }
+                }, {
+                    title: '姓名',
+                    dataIndex: 'name',
+                    key: 'name',
+                    render: (text, record, index) => {
+                        return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ humanTableData: this.state.humanTableData }); }} />
+                    }
+                }, {
+                    title: '身份证(护照)号',
+                    dataIndex: 'idNumber',
+                    key: 'idNumber',
+                    render: (text, record, index) => {
+                        return <Input value={record.idNumber} onChange={(e) => { record.idNumber = e.target.value; this.setState({ humanTableData: this.state.humanTableData }); }} />
+                    }
+                }, {
+                    title: '投资额(万元)',
+                    dataIndex: 'investment',
+                    key: 'investment',
+                    render: (text, record, index) => {
+                        return <InputNumber value={record.investment} onChange={(e) => { record.investment = e; this.setState({ humanTableData: this.state.humanTableData }); }} />
+                    }
+                }
+            ],
+            legalColumns: [
+                {
+                    title: '法人类型',
+                    dataIndex: 'type',
+                    key: 'type',
+                    width: '130px',
+                    render: (text, record, index) => {
+                        return <Select value={record.type} onChange={(e) => { record.type = e; this.setState({ legalTableData: this.state.legalTableData }); }}>
+                            <Select.Option value="0">中国企业法人</Select.Option>
+                            <Select.Option value="1">外观企业法人</Select.Option>
+                        </Select>
+                    }
+                }, {
+                    title: '名称',
+                    dataIndex: 'name',
+                    key: 'name',
+                    render: (text, record, index) => {
+                        return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ legalTableData: this.state.legalTableData }); }} />
+                    }
+                }, {
+                    title: '组织机构代码或统一社会信用代码',
+                    dataIndex: 'orgCode',
+                    key: 'orgCode',
+                    render: (text, record, index) => {
+                        return <Input value={record.orgCode} onChange={(e) => { record.orgCode = e.target.value; this.setState({ legalTableData: this.state.legalTableData }); }} />
+                    }
+                }, {
+                    title: '投资额(万元)',
+                    dataIndex: 'investment',
+                    key: 'investment',
+                    render: (text, record, index) => {
+                        return <InputNumber value={record.investment} onChange={(e) => { record.investment = e; this.setState({ legalTableData: this.state.legalTableData }); }} />
+                    }
+                }
+            ],
+            humanSelectedRowKeys: [],
+            humanSelectedRows: [],
+            legalSelectedRowKeys: [],
+            legalSelectedRows: []
+        };
+    },
+    handleSubmit(e) {
+        this.setState({
+            loading: true
+        });
+        e.preventDefault();
+        this.props.form.validateFields((err, values) => {
+            if (!err) {
+                $.ajax({
+                    method: "POST",
+                    dataType: "json",
+                    crossDomain: false,
+                    url: globalConfig.context + "/api/admin/basic/disposeInfo",
+                    data: {
+                        id: this.state.data.id,
+                        uid: this.props.data.uid || this.state.data.uid,
+                        hid: this.state.data.hid,
+                        unitName: values.unitName,
+                        province: values.address[0],
+                        city: values.address[1],
+                        area: values.address[2],
+                        postalAddress: values.postalAddress,
+                        postcode: values.postcode,
+                        contacts: values.contacts,
+                        contactMobile: values.contactMobile,
+                        contactsFixedTel: values.contactsFixedTel,
+                        contactsFax: values.contactsFax,
+                        legalPersonTel: values.legalPersonTel,
+                        legalPersonFax: values.legalPersonFax,
+                        legalPersonEmail: values.legalPersonEmail,
+                        registeredCapital: values.registeredCapital,
+                        legalPerson: values.legalPerson,
+                        legalPersonIdCard: values.legalPersonIdCard,
+                        orgCode: values.orgCode,
+                        ratepayCode: values.ratepayCode,
+                        industry: values.industry,
+                        enterpriseScale: values.enterpriseScale,
+                        registerType: values.registerType ? values.registerType.join(',') : '',
+                        foreignInvestment: values.foreignInvestment,
+                        field: values.field ? values.field.join(',') : '',
+                        taxAuthority: values.taxAuthority,
+                        ratepayMethod: values.ratepayMethod,
+                        listed: values.listed,
+                        listedType: values.listedType ? Number(values.listedType) : null,
+                        stockCode: values.stockCode,
+                        highTechZone: values.highTechZone,
+                        highTechName: values.highTechName,
+                        riskInvestment: values.riskInvestment,
+                        businessScope: values.businessScope,
+                        firmTotal: values.firmTotal,
+                        techTotal: values.techTotal,
+                        listedDateFormattedDate: values.listedDate ? values.listedDate.format("YYYY-MM-DD") : '',
+                        registrationTimeFormattedDate: values.registrationTime ? values.registrationTime.format("YYYY-MM-DD") : ''
+                    }
+                }).done(function (data) {
+                    if (!data.error.length) {
+                        message.success('保存成功!');
+                        this.setState({
+                            loading: false
+                        });
+                    } else {
+                        message.warning(data.error[0].message);
+                    }
+                }.bind(this));
+            }
+        });
+    },
+    componentWillMount() {
+        let _me = this;
+        industryList.map(function (item) {
+            _me.state.industryOption.push(
+                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+            )
+        });
+        scaleList.map(function (item) {
+            _me.state.scaleOption.push(
+                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+            )
+        });
+        this.loadHumanData();
+        this.loadLegalData();
+        this.loadInfoData();
+    },
+    componentWillReceiveProps() {
+
+    },
+    humanRemove() {
+        let deletedIds = [];
+        for (let idx = 0; idx < this.state.humanSelectedRows.length; idx++) {
+            let rowItem = this.state.humanSelectedRows[idx];
+            if (rowItem.id) {
+                deletedIds.push(rowItem.id)
+            }
+        };
+        this.setState({
+            loading: deletedIds.length > 0
+        });
+        if (deletedIds.length) {
+            $.ajax({
+                url: globalConfig.context + '/api/admin/basic/deleteNature',
+                method: 'post',
+                data: {
+                    data: JSON.stringify(deletedIds)
+                }
+            }).done((res) => {
+                if (!res.error.length) {
+                    Message.success("删除成功");
+                    this.state.humanSelectedRowKeys.sort((a, b) => { return b - a });
+                    for (let idx = 0; idx < this.state.humanSelectedRowKeys.length; idx++) {
+                        let dataIndex = this.state.humanSelectedRowKeys[idx];
+                        this.state.humanTableData.splice(dataIndex, 1);
+                    };
+                    this.setState({
+                        humanTableData: this.state.humanTableData,
+                        humanSelectedRowKeys: []
+                    });
+                } else {
+                    Message.error(res.error[0].message);
+                }
+            }).always(() => {
+                this.setState({
+                    loading: false
+                });
+            })
+        }
+    },
+    humanAdd() {
+        this.state.humanTableData.push({
+            id: null,
+            type: null,
+            uid: this.state.uid,
+            name: '',
+            idNumber: '',
+            investment: 0
+        });
+        this.setState({
+            humanTableData: this.state.humanTableData
+        })
+    },
+    humanSave() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            url: globalConfig.context + '/api/admin/basic/nature',
+            method: 'post',
+            data: {
+                data: JSON.stringify(this.state.humanTableData)
+            }
+        }).done((res) => {
+            if (!res.error.length) {
+                message.success("保存成功");
+                this.loadData();
+            } else {
+                message.error(res.error[0].message);
+            }
+        }).always(() => {
+            this.setState({
+                loading: false
+            });
+        })
+    },
+    legalRemove() {
+        let deletedIds = [];
+        for (let idx = 0; idx < this.state.legalSelectedRows.length; idx++) {
+            let rowItem = this.state.legalSelectedRows[idx];
+            if (rowItem.id) {
+                deletedIds.push(rowItem.id)
+            }
+        };
+        this.setState({
+            loading: deletedIds.length > 0
+        });
+        if (deletedIds.length) {
+            $.ajax({
+                url: globalConfig.context + '/api/admin/basic/deleteLegalPerson',
+                method: 'post',
+                data: {
+                    data: JSON.stringify(deletedIds)
+                }
+            }).done((res) => {
+                if (!res.error.length) {
+                    Message.success("删除成功");
+                    this.state.legalSelectedRowKeys.sort((a, b) => { return b - a });
+                    for (let idx = 0; idx < this.state.legalSelectedRowKeys.length; idx++) {
+                        let dataIndex = this.state.legalSelectedRowKeys[idx];
+                        this.state.legalTableData.splice(dataIndex, 1);
+                    };
+                    this.setState({
+                        legalTableData: this.state.legalTableData,
+                        legalSelectedRowKeys: []
+                    });
+                } else {
+                    Message.error(res.error[0].message);
+                }
+            }).always(() => {
+                this.setState({
+                    loading: false
+                });
+            })
+        }
+    },
+    legalAdd() {
+        this.state.legalTableData.push({
+            id: null,
+            type: null,
+            uid: this.state.uid,
+            name: '',
+            idNumber: '',
+            investment: 0
+        });
+        this.setState({
+            legalTableData: this.state.legalTableData
+        })
+    },
+    legalSave() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            url: globalConfig.context + '/api/admin/basic/legalPerson',
+            method: 'post',
+            data: {
+                data: JSON.stringify(this.state.legalTableData)
+            }
+        }).done((res) => {
+            if (!res.error.length) {
+                message.success("保存成功");
+                this.loadData();
+            } else {
+                message.error(res.error[0].message);
+            }
+        }).always(() => {
+            this.setState({
+                loading: false
+            });
+        })
+    },
+    render() {
+        const FormItem = Form.Item;
+        const { getFieldDecorator } = this.props.form;
+        const theData = this.state;
+        const formItemLayout = {
+            labelCol: { span: 8 },
+            wrapperCol: { span: 16 },
+        };
+        const humanRowSelection = {
+            type: 'checkbox',
+            selectedRowKeys: this.state.humanSelectedRowKeys,
+            onChange: (selectedRowKeys, selectedRows) => {
+                this.setState({
+                    humanSelectedRows: humanSelectedRows,
+                    humanSelectedRowKeys: humanSelectedRowKeys
+                });
+            }
+        };
+        const humanHasSelected = this.state.humanSelectedRowKeys.length > 0;
+        const legalRowSelection = {
+            type: 'checkbox',
+            selectedRowKeys: this.state.legalSelectedRowKeys,
+            onChange: (selectedRowKeys, selectedRows) => {
+                this.setState({
+                    legalSelectedRows: legalSelectedRows,
+                    legalSelectedRowKeys: legalSelectedRowKeys
+                });
+            }
+        };
+        const legalHasSelected = this.state.legalSelectedRowKeys.length > 0;
+        if (this.state.data) {
+            return (
+                <Form onSubmit={this.handleSubmit} className="company-detail-form">
+                    <div className="content-title">
+                        <span>企业基本信息</span>
+                    </div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="企业名称"
+                        >
+                            {getFieldDecorator('unitName', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.unitName
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="行政区域"
+                        >
+                            {getFieldDecorator('address', {
+                                rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
+                                initialValue: theData.address
+                            })(
+                                <Cascader options={provinceSelect()} />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="通信地址"
+                        >
+                            {getFieldDecorator('postalAddress', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.postalAddress
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="邮编"
+                        >
+                            {getFieldDecorator('postcode', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.postcode
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                    </div>
+                    <div className="clearfix">
+                        <p className="content-title">联系人信息</p>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="姓名"
+                        >
+                            {getFieldDecorator('contacts', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.contacts
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="手机"
+                        >
+                            {getFieldDecorator('contactMobile', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.contactMobile
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="电话"
+                        >
+                            {getFieldDecorator('contactsFixedTel', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.contactsFixedTel
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="传真"
+                        >
+                            {getFieldDecorator('contactsFax', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.contactsFax
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                    </div>
+                    <div className="clearfix">
+                        <p className="content-title">企业法人信息</p>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="电话"
+                        >
+                            {getFieldDecorator('legalPersonTel', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.legalPersonTel
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="传真"
+                        >
+                            {getFieldDecorator('legalPersonFax', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.legalPersonFax
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="E-mail"
+                        >
+                            {getFieldDecorator('legalPersonEmail', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.legalPersonEmail
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                    </div>
+                    <div className="content-title">
+                        <span>企业重要信息</span>
+                    </div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="注册资金"
+                        >
+                            {getFieldDecorator('registeredCapital', {
+                                rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
+                                initialValue: theData.registeredCapital
+                            })(
+                                <InputNumber />
+                                )}
+                            <span>万元</span>
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="注册时间"
+                        >
+                            {getFieldDecorator('registrationTime', {
+                                rules: [{ type: 'object', required: true, message: '此项为必填项!' }],
+                                initialValue: theData.registrationTime ? moment(theData.registrationTime) : null
+                            })(
+                                <DatePicker />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="法人代表姓名"
+                        >
+                            {getFieldDecorator('legalPerson', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.legalPerson
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="身份证号"
+                        >
+                            {getFieldDecorator('legalPersonIdCard', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.legalPersonIdCard
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="组织机构代码/统一社会信用代码"
+                        >
+                            {getFieldDecorator('orgCode', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.orgCode
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="税务登记号/统一社会信用代码"
+                        >
+                            {getFieldDecorator('ratepayCode', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.ratepayCode
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="所属行业"
+                        >
+                            {getFieldDecorator('industry', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.industry
+                            })(
+                                <Select>{this.state.industryOption}</Select>
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="企业规模(注册资金)"
+                        >
+                            {getFieldDecorator('enterpriseScale', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.enterpriseScale
+                            })(
+                                <Select>{this.state.scaleOption}</Select>
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="注册类型"
+                        >
+                            {getFieldDecorator('registerType', {
+                                rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
+                                initialValue: theData.registerType
+                            })(
+                                <Cascader options={companyType} />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="外资来源地"
+                        >
+                            {getFieldDecorator('foreignInvestment', {
+                                //rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.foreignInvestment
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                    </div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="领域"
+                        >
+                            {getFieldDecorator('field', {
+                                rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
+                                initialValue: [Number(theData.field[0]), theData.field[1] ? Number(theData.field[1]) : null, theData.field[2] ? Number(theData.field[2]) : null]
+                            })(
+                                <Cascader options={techFieldList} />
+                                )}
+                        </FormItem>
+                    </div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="企业所得税主管税务机关"
+                        >
+                            {getFieldDecorator('taxAuthority', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.taxAuthority
+                            })(
+                                <Radio.Group>
+                                    <Radio value="0">国税</Radio>
+                                    <Radio value="1">地税</Radio>
+                                </Radio.Group>
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="企业所得税征收方式"
+                        >
+                            {getFieldDecorator('ratepayMethod', {
+                                rules: [{ required: true, message: '此项为必填项!' }],
+                                initialValue: theData.ratepayMethod
+                            })(
+                                <Radio.Group>
+                                    <Radio value="0">查账征收</Radio>
+                                    <Radio value="1">核定征收</Radio>
+                                </Radio.Group>
+                                )}
+                        </FormItem>
+                    </div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="是否上市"
+                        >   {getFieldDecorator('listed', {
+                            rules: [{ required: true, message: '此项为必填项!' }],
+                            initialValue: theData.listed
+                        })(
+                            <Radio.Group>
+                                <Radio value="0">否</Radio>
+                                <Radio value="1">是</Radio>
+                            </Radio.Group>
+                            )}
+                        </FormItem>
+                    </div>
+                    <div className="clearfix" style={{ display: this.props.form.getFieldValue('listed') == 1 ? 'block' : 'none' }}>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="上市时间"
+                        >
+                            {getFieldDecorator('listedDate', {
+                                initialValue: theData.listedDate ? moment(theData.listedDate) : null
+                            })(
+                                <DatePicker />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="上市类型"
+                        >   {getFieldDecorator('listedType', {
+                            initialValue: theData.listedType
+                        })(
+                            <Select placeholder="请选择上市类型">
+                                <Select.Option value='0'>股票型上市公司</Select.Option>
+                                <Select.Option value='1'>债券型上市公司</Select.Option>
+                            </Select>
+                            )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="股票代码"
+                        >   {getFieldDecorator('stockCode', {
+                            initialValue: theData.stockCode
+                        })(
+                            <Input />
+                            )}
+                        </FormItem>
+                    </div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="是否属于国家级高新区内企业"
+                        >   {getFieldDecorator('highTechZone', {
+                            rules: [{ required: true, message: '此项为必填项!' }],
+                            initialValue: theData.highTechZone
+                        })(
+                            <Radio.Group>
+                                <Radio value="0">否</Radio>
+                                <Radio value="1">是</Radio>
+                            </Radio.Group>
+                            )}
+                        </FormItem>
+                    </div>
+                    <div className="clearfix" style={{ display: this.props.form.getFieldValue('highTechZone') == 1 ? 'block' : 'none' }}>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="国家级高新区名称"
+                        >   {getFieldDecorator('highTechName', {
+                            initialValue: theData.highTechName
+                        })(
+                            <Input />
+                            )}
+                        </FormItem>
+                    </div>
+                    <div className="content-title">
+                        <span>股权结构</span>
+                    </div>
+                    <div className="clearfix">
+                        <div className="half-item">
+                            <div className="table-title">
+                                <span>自然人股权</span>
+                                <Button style={{ background: "#ea0862", border: "none", color: "#fff" }}
+                                    onClick={this.humanAdd}>添加<Icon type="plus" /></Button>
+                                <Button style={{ background: "#3fcf9e", border: "none", color: "#fff" }}
+                                    disabled={!humanHasSelected}
+                                    onClick={this.humanRemove}>删除<Icon type="minus" /></Button>
+                                <Button type="primary" onClick={this.humanSave}>保存修改</Button>
+                            </div>
+                            <Table className="company-table" style={{ padding: '10px 20px' }}
+                                columns={this.state.humanColumns}
+                                dataSource={this.state.humanTableData}
+                                pagination={false}
+                                rowSelection={humanRowSelection} />
+                        </div>
+                        <div className="half-item">
+                            <div className="table-title">
+                                <span>法人股权</span>
+                                <Button style={{ background: "#ea0862", border: "none", color: "#fff" }}
+                                    onClick={this.legalAdd}>添加<Icon type="plus" /></Button>
+                                <Button style={{ background: "#3fcf9e", border: "none", color: "#fff" }}
+                                    disabled={!legalHasSelected}
+                                    onClick={this.legalRemove}>删除<Icon type="minus" /></Button>
+                                <Button type="primary" onClick={this.legalSave}>保存修改</Button>
+                            </div>
+                            <Table className="company-table" style={{ padding: '10px 20px' }}
+                                columns={this.state.legalColumns}
+                                dataSource={this.state.legalTableData}
+                                pagination={false}
+                                rowSelection={legalRowSelection} />
+                        </div>
+                    </div>
+                    <FormItem style={{ width: '50%' }}
+                        {...formItemLayout}
+                        label="是否引入风险投资"
+                    >
+                        {getFieldDecorator('riskInvestment', {
+                            rules: [{ required: true, message: '此项为必填项!' }],
+                            initialValue: theData.riskInvestment
+                        })(
+                            <Radio.Group>
+                                <Radio value="0">否</Radio>
+                                <Radio value="1">是</Radio>
+                            </Radio.Group>
+                            )}
+                    </FormItem>
+                    <FormItem style={{ width: '50%' }}
+                        {...formItemLayout}
+                        label="经营范围(限400字)"
+                    >
+                        {getFieldDecorator('businessScope', {
+                            rules: [{ required: true, message: '此项为必填项!' }],
+                            initialValue: theData.businessScope
+                        })(
+                            <Input type='textarea' rows={6} />
+                            )}
+                    </FormItem>
+                    <div className="content-title">
+                        <span>员工情况</span>
+                    </div>
+                    <div className="clearfix">
+                        <FormItem className="half-item" style={{ width: '25%' }}
+                            {...formItemLayout}
+                            label="企业职工"
+                        >
+                            {getFieldDecorator('firmTotal', {
+                                initialValue: theData.firmTotal || 0
+                            })(
+                                <InputNumber />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="科技人员"
+                        >
+                            {getFieldDecorator('techTotal', {
+                                initialValue: theData.techTotal || 0
+                            })(
+                                <InputNumber />
+                                )}
+                            <span>其中科技人员占比
+                        {(() => {
+                                    if (!this.props.form.getFieldValue('techTotal') || !this.props.form.getFieldValue('firmTotal')) {
+                                        return 0
+                                    }
+                                    return (this.props.form.getFieldValue('techTotal') / this.props.form.getFieldValue('firmTotal') * 100).toFixed(2)
+                                })()}
+                                %</span>
+                        </FormItem>
+                    </div>
+                    <FormItem style={{ marginTop: '20px' }}>
+                        <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
+                        <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
+                    </FormItem>
+                </Form >
+            );
+        } else {
+            return (<div></div>)
+        };
+    }
+}));
+
+export default CompanyDetail;

+ 45 - 8
js/component/manageCenter/servicesManage/highTech/fosterDesc/content.jsx

@@ -1,8 +1,8 @@
 import React from 'react';
 import { Button, Radio } from 'antd';
 import './content.less';
-import { getTime } from '../../../../tools';
-import OrgTechCenter from './orgTechCenter';
+import { getTime, getProportion } from '../../../../tools';
+import CompanyDetail from './companyDetail';
 
 
 
@@ -10,7 +10,7 @@ const Content = React.createClass({
     getInitialState() {
         return {
             loading: false,
-            component: OrgTechCenter
+            component: CompanyDetail
         };
     },
     returnFoster() {
@@ -18,10 +18,19 @@ const Content = React.createClass({
     },
     onChange(e) {
         switch (e.target.value) {
-            case 'orgTechCenter':
+            case 'companyDetail':
                 this.setState({
-                    component: OrgTechCenter,
-                    radioValue: 'orgTechCenter'
+                    component: CompanyDetail,
+                    radioValue: 'companyDetail'
+                });
+                break;
+            case 'orgTechCenter':
+                require.ensure([], () => {
+                    const OrgTechCenter = require('./orgTechCenter').default;
+                    this.setState({
+                        component: OrgTechCenter,
+                        radioValue: 'orgTechCenter'
+                    });
                 });
                 break;
             case 'activity':
@@ -136,9 +145,31 @@ const Content = React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         if (nextProps.style === "block") {
-            let e = { target: { value: "orgTechCenter" } }
+            let e = { target: { value: "companyDetail" } }
             this.onChange(e);
         };
+        if (nextProps.data) {
+            let _me = this;
+            getProportion(nextProps.data.uid, function (data) {
+                let s = 0;
+                s = (
+                    (data.institution ? 5 : 0)
+                    + (data.activity ? 15 : 0)
+                    + (data.activityCost ? 15 : 0)
+                    + (data.techProject ? 10 : 0)
+                    + (data.intellectualProperty ? 15 : 0)
+                    + (data.achievement ? 10 : 0)
+                    + (data.ratepay ? 5 : 0)
+                    + (data.finance ? 5 : 0)
+                    + (data.humanResource ? 5 : 0)
+                    + (data.honorDatum ? 5 : 0)
+                    + (data.ability ? 5 : 0)
+                    + (data.standard ? 5 : 0))
+                _me.setState({
+                    progressNumber: s
+                });
+            });
+        };
     },
     render() {
         if (this.props.data) {
@@ -151,11 +182,17 @@ const Content = React.createClass({
                             {this.props.data.issuingDate ?
                                 <span className="company-time"> 有效期 {getTime(this.props.data.issuingDate)} 至 {getTime(this.props.data.issuingDate, 36)} </span> : ''
                             }
+                            <span className="company-number">当前进度: </span>
+                            <span className="progress-bar">
+                                <i style={{ width: this.state.progressNumber + '%' }}></i>
+                            </span>
+                            <span className="progress-num">{this.state.progressNumber}%</span>
                             <Button className="foster-return" type="primary" onClick={this.returnFoster}>返回高企培育列表</Button>
                         </div>
                         <div className="clearfix foster-component">
                             <Radio.Group onChange={this.onChange} value={this.state.radioValue}>
-                                <Radio.Button value="orgTechCenter">技术中心</Radio.Button>
+                                <Radio.Button value="companyDetail">企业基本信息</Radio.Button>
+                                <Radio.Button value="orgTechCenter">企业研发机构</Radio.Button>
                                 <Radio.Button value="activity">研发活动</Radio.Button>
                                 <Radio.Button value="activityCostList">研发活动费用详情</Radio.Button>
                                 <Radio.Button value="techProduct">高新技术产品</Radio.Button>

+ 21 - 0
js/component/manageCenter/servicesManage/highTech/fosterDesc/content.less

@@ -19,6 +19,22 @@
             .company-time {
                 color: #333;
             }
+            .progress-bar {
+                display: inline-block;
+                width: 30%;
+                height: 12px;
+                background: #eee;
+                border-radius: 6px;
+                position: relative;
+                >i {
+                    position: absolute;
+                    top: 0;
+                    left: 0;
+                    background: #58a3ff;
+                    height: 12px;
+                    border-radius: 6px;
+                }
+            }
         }
         .foster-component {
             margin-top: 10px;
@@ -57,6 +73,11 @@
     .content-title {
         font-size: 16px;
         color: #333;
+        margin-bottom: 10px;
+        .proportion {
+            font-size: 12px;
+            margin-left: 20px;
+        }
     }
     .user-search {
         input {

+ 91 - 7
js/component/manageCenter/servicesManage/highTech/fosterDesc/finance.jsx

@@ -1,12 +1,44 @@
 import React from 'react';
-import { Icon, Form, Button, Input, Spin, Table, message, Select, Modal, InputNumber, Upload } from 'antd';
+import { Switch, Icon, Form, Button, Input, Spin, Table, message, Select, Modal, InputNumber, Upload } from 'antd';
 import './techProduct.less';
-import { beforeUploadFile, newDownloadFile } from '../../../../tools.js';
+import { beforeUploadFile, newDownloadFile, getProportion, saveProportion } from '../../../../tools.js';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
 const FinanceDescFrom = Form.create()(React.createClass({
+    loadData(uid, year) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/financeDetail",
+            data: {
+                uid: uid != undefined ? uid : this.props.data.uid || this.props.uid,
+                year: year != undefined ? year : this.props.data.year
+            }
+        }).done((data) => {
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+                return;
+            };
+            this.setState({
+                managementCost: data.data.managementCost,
+                researchCost: data.data.researchCost,
+                grossProfit: data.data.grossProfit,
+                operatingProfit: data.data.operatingProfit
+            });
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getInitialState() {
         return {
             loading: false,
@@ -23,7 +55,10 @@ const FinanceDescFrom = Form.create()(React.createClass({
             _me.state.yearOption.push(
                 <Select.Option value={i.toString()} key={i}>{i}</Select.Option>
             )
-        }
+        };
+        if (this.props.data.uid) {
+            this.loadData();
+        };
     },
     handleSubmit(e) {
         e.preventDefault();
@@ -44,6 +79,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                         uid: this.props.uid,
                         mainBusinessIncome: values.mainBusinessIncome,
                         managementCost: values.managementCost,
+                        researchCost: values.researchCost,
                         operatingProfit: values.operatingProfit,
                         variousTax: values.variousTax,
                         currentAsset: values.currentAsset,
@@ -72,16 +108,33 @@ const FinanceDescFrom = Form.create()(React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         if (!this.props.visible && nextProps.visible) {
+            if (nextProps.data.uid) {
+                this.loadData(nextProps.data.uid, nextProps.data.year);
+            };
             this.props.form.resetFields();
         };
+        if (this.props.visible && !nextProps.visible) {
+            this.state.managementCost = undefined;
+            this.state.researchCost = undefined;
+            this.state.grossProfit = undefined;
+            this.state.operatingProfit = undefined;
+        };
+    },
+    checkResearchCost(rule, value, callback) {
+        const form = this.props.form;
+        if (value > form.getFieldValue('managementCost')) {
+            callback('管理费用小于研发费用!');
+        } else {
+            callback();
+        }
     },
     render() {
         const FormItem = Form.Item;
         const { getFieldDecorator } = this.props.form;
         const theData = this.props.data;
         const formItemLayout = {
-            labelCol: { span: 10 },
-            wrapperCol: { span: 12 },
+            labelCol: { span: 8 },
+            wrapperCol: { span: 16 },
         };
         const _me = this;
         return (
@@ -90,7 +143,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                     {
                         theData.year ? <span>{theData.year}</span> :
                             <Select placeholder="请选择年份" style={{ width: 200 }}
-                                onSelect={(e, n) => { this.state.year = e }}>
+                                onSelect={(e, n) => { this.state.year = e, this.loadData(theData.uid, e) }}>
                                 {this.state.yearOption}
                             </Select>
                     }
@@ -117,6 +170,22 @@ const FinanceDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.managementCost && this.state.managementCost != this.props.form.getFieldValue('managementCost') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
+                    </FormItem>
+                    <FormItem className="half-item"
+                        {...formItemLayout}
+                        label="研发费用(万元)"
+                    >
+                        {getFieldDecorator('researchCost', {
+                            rules: [
+                                { type: 'number', required: true, message: '此项为必填项!' }, {
+                                    validator: this.checkResearchCost,
+                                }],
+                            initialValue: theData.researchCost
+                        })(
+                            <InputNumber />
+                            )}
+                        {this.state.researchCost && this.state.researchCost != this.props.form.getFieldValue('researchCost') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
@@ -128,6 +197,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.operatingProfit && this.state.operatingProfit != this.props.form.getFieldValue('operatingProfit') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
@@ -193,6 +263,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.grossProfit && this.state.grossProfit != this.props.form.getFieldValue('grossProfit') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem><FormItem className="half-item"
                         {...formItemLayout}
                         label="净利润(万元)"
@@ -219,7 +290,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                     <Upload
                         name="ratepay"
                         action={globalConfig.context + "/api/admin/uploadFinance"}
-                        data={{ 'sign': 'finance','year': ( this.state.year || theData.year ),'uid': this.props.uid }}
+                        data={{ 'sign': 'finance', 'year': (this.state.year || theData.year), 'uid': this.props.uid }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -335,6 +406,7 @@ const Finance = React.createClass({
                     uid: thisdata.uid,
                     mainBusinessIncome: thisdata.mainBusinessIncome,
                     managementCost: thisdata.managementCost,
+                    researchCost: thisdata.researchCost,
                     operatingProfit: thisdata.operatingProfit,
                     variousTax: thisdata.variousTax,
                     currentAsset: thisdata.currentAsset,
@@ -361,6 +433,8 @@ const Finance = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
     },
     getInitialState() {
         return {
@@ -488,6 +562,16 @@ const Finance = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     <span>财务报表信息</span>
+                    <span className="proportion"> 是否已完成:</span>
+                    <Switch
+                        checked={this.state.proportion && this.state.proportion.finance == 1 ? true : false}
+                        checkedChildren={'已完成'}
+                        unCheckedChildren={'未完成'}
+                        onChange={(e) => {
+                            e ? this.state.proportion.finance = 1 : this.state.proportion.finance = 0;
+                            saveProportion(this.state.proportion.id, 'finance', this.state.proportion.finance);
+                            this.setState({ proportion: this.state.proportion });
+                        }} />
                 </div>
                 <div className="user-search">
                     <p>

+ 40 - 11
js/component/manageCenter/servicesManage/highTech/fosterDesc/honorList.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
-import { Icon, Form, Button, Input, Spin, Table, message, Modal, Upload, DatePicker } from 'antd';
+import { Switch, Icon, Form, Button, Input, Spin, Table, message, Modal, Upload, DatePicker } from 'antd';
 import './techProduct.less';
-import { beforeUploadFile, newDownloadFile } from '../../../../tools.js';
+import { beforeUploadFile, newDownloadFile, getProportion, saveProportion } from '../../../../tools.js';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -27,7 +27,8 @@ const HonorListDescFrom = Form.create()(React.createClass({
                         uid: this.props.uid,
                         name: values.name,
                         issuingMechanism: values.issuingMechanism,
-                        issuingTimeFormattedDate: values.issuingTimeFormattedDate.format("YYYY-MM-DD"),
+                        year: values.year,
+                        //issuingTimeFormattedDate: values.issuingTimeFormattedDate.format("YYYY-MM-DD"),
                         enclosureUrl: this.state.enclosureUrl
                     }
                 }).done(function (data) {
@@ -49,6 +50,16 @@ const HonorListDescFrom = Form.create()(React.createClass({
             this.props.form.resetFields();
         };
     },
+    componentWillMount() {
+        const Option = Select.Option;
+        const d = new Date();
+        const thisYear = d.getFullYear();
+        let theOption = [];
+        for (let i = thisYear; i >= 1950; i--) {
+            theOption.push(<Option key={i.toString()}>{i}</Option>)
+        };
+        this.state.yearOption = theOption;
+    },
     render() {
         const FormItem = Form.Item;
         const { getFieldDecorator } = this.props.form;
@@ -76,12 +87,17 @@ const HonorListDescFrom = Form.create()(React.createClass({
                         {...formItemLayout}
                         label="获取时间"
                     >
-                        {getFieldDecorator('issuingTimeFormattedDate', {
-                            rules: [{ type: 'object', required: true, message: '此项为必填项!' }],
-                            initialValue: theData.issuingTimeFormattedDate ? moment(theData.issuingTimeFormattedDate) : null
+                        {getFieldDecorator('year', {
+                            rules: [{ required: true, message: '此项为必填项!' }],
+                            initialValue: theData.year
                         })(
-                            <DatePicker />
+                            <Select
+                                placeholder="请选择年份"
+                                style={{ width: 80 }}>
+                                {this.state.yearOption}
+                            </Select>
                             )}
+                        <span> 年</span>
                     </FormItem>
                     <FormItem
                         {...formItemLayout}
@@ -99,7 +115,7 @@ const HonorListDescFrom = Form.create()(React.createClass({
                     <Upload
                         name="ratepay"
                         action={globalConfig.context + "/api/admin/uploadHonor"}
-                        data={{ 'sign': 'honor','uid': this.props.uid }}
+                        data={{ 'sign': 'honor', 'uid': this.props.uid }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -219,7 +235,8 @@ const HonorList = React.createClass({
                     enclosureUrl: thisdata.enclosureUrl,
                     enclosureDownloadFileName: thisdata.enclosureDownloadFileName,
                     enclosure: [thisdata.id, thisdata.enclosureDownloadFileName],
-                    issuingTimeFormattedDate: thisdata.issuingTimeFormattedDate,
+                    //issuingTimeFormattedDate: thisdata.issuingTimeFormattedDate,
+                    year: thisdata.year,
                     issuingMechanism: thisdata.issuingMechanism
                 });
             };
@@ -234,6 +251,8 @@ const HonorList = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
     },
     getInitialState() {
         return {
@@ -259,8 +278,8 @@ const HonorList = React.createClass({
                     key: 'name'
                 }, {
                     title: '获取时间',
-                    dataIndex: 'issuingTimeFormattedDate',
-                    key: 'issuingTimeFormattedDate'
+                    dataIndex: 'year',
+                    key: 'year'
                 }, {
                     title: '发证机构',
                     dataIndex: 'issuingMechanism',
@@ -345,6 +364,16 @@ const HonorList = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     <span>企业荣誉及其他证明材料</span>
+                    <span className="proportion"> 是否已完成:</span>
+                    <Switch
+                        checked={this.state.proportion && this.state.proportion.honorDatum == 1 ? true : false}
+                        checkedChildren={'已完成'}
+                        unCheckedChildren={'未完成'}
+                        onChange={(e) => {
+                            e ? this.state.proportion.honorDatum = 1 : this.state.proportion.honorDatum = 0;
+                            saveProportion(this.state.proportion.id, 'honorDatum', this.state.proportion.honorDatum);
+                            this.setState({ proportion: this.state.proportion });
+                        }} />
                 </div>
                 <div className="user-search">
                     <p>

+ 16 - 4
js/component/manageCenter/servicesManage/highTech/fosterDesc/hrSituation.jsx

@@ -1,6 +1,6 @@
 import React from 'react';
-import { Input, InputNumber, Button, Form, Icon, Spin, message, Table, Modal, Upload, Select } from 'antd';
-import { beforeUploadFile, newDownloadFile } from '../../../../tools.js';
+import { Switch, Input, InputNumber, Button, Form, Icon, Spin, message, Table, Modal, Upload, Select } from 'antd';
+import { beforeUploadFile, newDownloadFile, getProportion, saveProportion } from '../../../../tools.js';
 import './hrSituation.less'
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
@@ -452,7 +452,7 @@ const HrSituationDescFrom = Form.create()(React.createClass({
                     <Upload
                         name="ratepay"
                         action={globalConfig.context + "/api/admin/uploadRoster"}
-                        data={{ 'sign': 'roster','year': (this.state.year || theData.year),'uid': this.props.uid }}
+                        data={{ 'sign': 'roster', 'year': (this.state.year || theData.year), 'uid': this.props.uid }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -480,7 +480,7 @@ const HrSituationDescFrom = Form.create()(React.createClass({
                     <Upload
                         name="ratepay"
                         action={globalConfig.context + "/api/admin/uploadSocialSecurity"}
-                        data={{ 'sign': 'social_security','year': (this.state.year || theData.year),'uid': this.props.uid }}
+                        data={{ 'sign': 'social_security', 'year': (this.state.year || theData.year), 'uid': this.props.uid }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -650,6 +650,8 @@ const HrSituation = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
     },
     getInitialState() {
         return {
@@ -770,6 +772,16 @@ const HrSituation = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     <span>人力资源状况</span>
+                    <span className="proportion"> 是否已完成:</span>
+                    <Switch
+                        checked={this.state.proportion && this.state.proportion.humanResource == 1 ? true : false}
+                        checkedChildren={'已完成'}
+                        unCheckedChildren={'未完成'}
+                        onChange={(e) => {
+                            e ? this.state.proportion.humanResource = 1 : this.state.proportion.humanResource = 0;
+                            saveProportion(this.state.proportion.id, 'humanResource', this.state.proportion.humanResource);
+                            this.setState({ proportion: this.state.proportion });
+                        }} />
                 </div>
                 <div className="user-search">
                     <p>

+ 22 - 4
js/component/manageCenter/servicesManage/highTech/fosterDesc/innovationAbility.jsx

@@ -2,7 +2,8 @@ import React from 'react';
 import './ablt.less';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
-import { Input, Button, Spin, message } from 'antd';
+import { Switch, Input, Button, Spin, message } from 'antd';
+import { getProportion, saveProportion } from '../../../../tools.js';
 
 const Base = React.createClass({
     getInitialState() {
@@ -11,7 +12,7 @@ const Base = React.createClass({
             tags: []
         };
     },
-    componentWillMount() {
+    loadData() {
         this.setState({
             loading: true
         });
@@ -25,7 +26,7 @@ const Base = React.createClass({
             success: function (data) {
                 if (data.data) {
                     this.setState({
-                        id:data.data.id,
+                        id: data.data.id,
                         intellectRight: data.data.intellectRight,
                         scienceAchievement: data.data.scienceAchievement,
                         researchInnovation: data.data.researchInnovation,
@@ -40,6 +41,11 @@ const Base = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
+    },
+    componentWillMount() {
+        this.loadData()
     },
     submit() {
         let theTags = this.state.tags.join(",");
@@ -76,7 +82,19 @@ const Base = React.createClass({
             <Spin spinning={this.state.loading} className='spin-box'>
                 <div className="set-ablt">
                     <div className="acc-detail clearfix">
-                        <p className="acc-title">能力标签</p>
+                        <p className="acc-title">
+                            <span>能力标签</span>
+                            <span className="proportion"> 是否已完成:</span>
+                            <Switch
+                                checked={this.state.proportion && this.state.proportion.ability == 1 ? true : false}
+                                checkedChildren={'已完成'}
+                                unCheckedChildren={'未完成'}
+                                onChange={(e) => {
+                                    e ? this.state.proportion.ability = 1 : this.state.proportion.ability = 0;
+                                    saveProportion(this.state.proportion.id, 'ability', this.state.proportion.ability);
+                                    this.setState({ proportion: this.state.proportion });
+                                }} />
+                        </p>
                         <div className="acc-area">
                             <p>知识产权对企业竞争力的作用 (限400字) </p>
                             <Input type="textarea" rows={6}

+ 16 - 3
js/component/manageCenter/servicesManage/highTech/fosterDesc/intellectual.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
-import { Icon, Button, Input, Spin, Table, message, Select, Modal, DatePicker } from 'antd';
+import { Switch, Icon, Button, Input, Spin, Table, message, Select, Modal, DatePicker } from 'antd';
 import { technicalSourceList } from '../../../../dataDic.js';
-import { getCatagory, getIntellectualObtainWay } from '../../../../tools.js';
+import { getCatagory, getIntellectualObtainWay, getProportion, saveProportion } from '../../../../tools.js';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -46,7 +46,8 @@ const Intellectual = React.createClass({
                     evaluationCategory: thisdata.evaluationCategory,
                     authorizationDateFormattedDate: thisdata.authorizationDateFormattedDate,
                     propertyRightUrl: thisdata.propertyRightUrl,
-                    propertyRightDownloadFileName: thisdata.propertyRightDownloadFileName
+                    propertyRightDownloadFileName: thisdata.propertyRightDownloadFileName,
+                    type: thisdata.type
                 });
             };
             this.state.pagination.current = data.data.pageNo;
@@ -60,6 +61,8 @@ const Intellectual = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
     },
     getInitialState() {
         return {
@@ -184,6 +187,16 @@ const Intellectual = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     <span>知识产权列表</span>
+                    <span className="proportion"> 是否已完成:</span>
+                    <Switch
+                        checked={this.state.proportion && this.state.proportion.intellectualProperty == 1 ? true : false}
+                        checkedChildren={'已完成'}
+                        unCheckedChildren={'未完成'}
+                        onChange={(e) => {
+                            e ? this.state.proportion.intellectualProperty = 1 : this.state.proportion.intellectualProperty = 0;
+                            saveProportion(this.state.proportion.id, 'intellectualProperty', this.state.proportion.intellectualProperty);
+                            this.setState({ proportion: this.state.proportion });
+                        }} />
                 </div>
                 <div className="user-search">
                     <span>开始日期:</span>

+ 51 - 10
js/component/manageCenter/servicesManage/highTech/fosterDesc/intellectualDesc.jsx

@@ -7,6 +7,49 @@ import $ from 'jquery/src/ajax';
 import moment from 'moment';
 
 const IntellectualDescFrom = Form.create()(React.createClass({
+    loadData(id, type) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/intellectualDetail",
+            data: {
+                id: id != undefined ? id : this.props.data.id,
+                type: type != undefined ? type : this.props.data.type
+            }
+        }).done((data) => {
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+                return;
+            };
+            this.setState({
+                id: data.data.id,
+                uid: data.data.uid,
+                pid: data.data.pid,
+                intellectualPropertyNumber: data.data.intellectualPropertyNumber,
+                intellectualPropertyName: data.data.intellectualPropertyName,
+                sortNumber: data.data.sortNumber,
+                catagory: data.data.catagory,
+                obtainWay: data.data.obtainWay,
+                authorizationNumber: data.data.authorizationNumber,
+                authorizationDate: data.data.authorizationDate,
+                propertyRightUrl: data.data.propertyRightUrl,
+                type: data.data.type,
+                manuscript: data.data.manuscript,
+                propertyRightDownloadFileName: data.data.propertyRightDownloadFileName,
+                authorizationDateFormattedDate: data.data.authorizationDateFormattedDate
+            });
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getInitialState() {
         return {
             loading: false,
@@ -26,6 +69,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
             )
         });
+        this.loadData();
     },
     handleSubmit(e) {
         e.preventDefault();
@@ -65,16 +109,10 @@ const IntellectualDescFrom = Form.create()(React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         if (!this.props.visible && nextProps.visible) {
+            this.loadData(nextProps.data.id, nextProps.data.type);
             this.props.form.resetFields();
         };
     },
-    // checkIdcardnum(rule, value, callback) {
-    //     if (!/(^\d{15}$)|(^\d{17}(\d|X)$)/.test(value)) {
-    //         callback('请输入正确的身份证号!');
-    //     } else {
-    //         callback();
-    //     }
-    // },
     render() {
         const FormItem = Form.Item;
         const { getFieldDecorator } = this.props.form;
@@ -83,7 +121,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
             wrapperCol: { span: 12 },
         };
         const _me = this;
-        const theData = this.props.data;
+        const theData = this.state;
         return (
             <Form horizontal onSubmit={this.handleSubmit}>
                 <FormItem
@@ -174,7 +212,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                     <Upload
                         name="ratepay"
                         action={globalConfig.context + "/api/admin/uploadPropertyRight"}
-                        data={{ 'sign': 'property_right','uid': this.props.uid }}
+                        data={{ 'sign': 'property_right', 'uid': this.props.uid }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -196,7 +234,10 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传知识产权证书 </Button>
                     </Upload>
-                    <p style={{ margin: '10px 0' }}>{theData.propertyRightUrl ? <a onClick={newDownloadFile.bind(null, this.props.data.id, 'property_right', '/api/admin/downloadPropertyRight')}>{theData.propertyRightDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ margin: '10px 0' }}>{theData.propertyRightUrl ? <a onClick={newDownloadFile.bind(null, this.props.data.id, 'property_right', '/api/admin/downloadPropertyRight')}>{theData.propertyRightDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传知识产权证书!</span>}</p>
+                    {theData.type != 0 ? <p style={{ margin: '10px 0' }}>
+                        {theData.manuscript ? <a onClick={newDownloadFile.bind(null, this.props.data.id, 'manuscript', '/api/admin/downloadManuscript', this.props.data.type)}>稿件下载</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传稿件!</span>}
+                    </p> : <span></span>}
                 </div>
                 <FormItem>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>

+ 15 - 3
js/component/manageCenter/servicesManage/highTech/fosterDesc/orgTechCenter.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
-import { Icon, Form, Button, Input, Spin, Table, message, Modal, Upload, DatePicker } from 'antd';
+import { Icon, Form, Button, Input, Spin, Table, message, Modal, Upload, DatePicker, Switch } from 'antd';
 import './techProduct.less';
-import { beforeUploadFile, newDownloadFile } from '../../../../tools.js';
+import { beforeUploadFile, newDownloadFile, getProportion, saveProportion } from '../../../../tools.js';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -231,6 +231,8 @@ const CenterList = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
     },
     loadData(pageNo) {
         this.state.data = [];
@@ -429,7 +431,17 @@ const CenterList = React.createClass({
         return (
             <div className="user-content" >
                 <div className="content-title">
-                    <span>研发部门</span>
+                    <span>研发部门 </span>
+                    <span className="proportion"> 是否已完成:</span>
+                    <Switch
+                        checked={this.state.proportion && this.state.proportion.institution == 1 ? true : false}
+                        checkedChildren={'已完成'}
+                        unCheckedChildren={'未完成'}
+                        onChange={(e) => {
+                            e ? this.state.proportion.institution = 1 : this.state.proportion.institution = 0;
+                            saveProportion(this.state.proportion.id, 'institution', this.state.proportion.institution);
+                            this.setState({ proportion: this.state.proportion });
+                        }} />
                 </div>
                 <div className="clearfix">
                     <div className="orgTech-item">

+ 67 - 7
js/component/manageCenter/servicesManage/highTech/fosterDesc/ratepay.jsx

@@ -1,11 +1,43 @@
 import React from 'react';
-import { Icon, Form, Button, Input, Spin, Table, message, Select, Modal, InputNumber, Upload } from 'antd';
+import { Switch, Icon, Form, Button, Input, Spin, Table, message, Select, Modal, InputNumber, Upload } from 'antd';
 import './techProduct.less';
-import { beforeUploadFile, newDownloadFile } from '../../../../tools.js';
+import { beforeUploadFile, newDownloadFile, getProportion, saveProportion } from '../../../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
 const RatepayDescFrom = Form.create()(React.createClass({
+    loadData(uid, year) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/ratepayDetail",
+            data: {
+                uid: uid != undefined ? uid : this.props.data.uid,
+                year: year != undefined ? year : this.props.data.year
+            }
+        }).done((data) => {
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+                return;
+            };
+            this.setState({
+                managementCost: data.data.managementCost,
+                researchCost: data.data.researchCost,
+                grossProfit: data.data.grossProfit,
+                operatingProfit: data.data.operatingProfit
+            });
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getInitialState() {
         return {
             loading: false,
@@ -20,7 +52,10 @@ const RatepayDescFrom = Form.create()(React.createClass({
             _me.state.yearOption.push(
                 <Select.Option value={i.toString()} key={i}>{i}</Select.Option>
             )
-        }
+        };
+        if (this.props.data.uid) {
+            this.loadData();
+        };
     },
     handleSubmit(e) {
         e.preventDefault();
@@ -67,16 +102,25 @@ const RatepayDescFrom = Form.create()(React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         if (!this.props.visible && nextProps.visible) {
+            if (nextProps.data.uid) {
+                this.loadData(nextProps.data.uid, nextProps.data.year);
+            };
             this.props.form.resetFields();
         };
+        if (this.props.visible && !nextProps.visible) {
+            this.state.managementCost = undefined;
+            this.state.researchCost = undefined;
+            this.state.grossProfit = undefined;
+            this.state.operatingProfit = undefined;
+        };
     },
     render() {
         const FormItem = Form.Item;
         const { getFieldDecorator } = this.props.form;
         const theData = this.props.data;
         const formItemLayout = {
-            labelCol: { span: 10 },
-            wrapperCol: { span: 12 },
+            labelCol: { span: 8 },
+            wrapperCol: { span: 16 },
         };
         const _me = this;
         return (
@@ -112,6 +156,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.managementCost && this.state.managementCost != this.props.form.getFieldValue('managementCost') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
@@ -123,6 +168,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.operatingProfit && this.state.operatingProfit != this.props.form.getFieldValue('operatingProfit') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
@@ -178,6 +224,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.grossProfit && this.state.grossProfit != this.props.form.getFieldValue('grossProfit') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
@@ -189,13 +236,14 @@ const RatepayDescFrom = Form.create()(React.createClass({
                         })(
                             <InputNumber />
                             )}
+                        {this.state.researchCost && this.state.researchCost != this.props.form.getFieldValue('researchCost') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
                 </div>
                 <div className="hrSituation-roster">
                     <Upload
                         name="ratepay"
                         action={globalConfig.context + "/api/admin/uploadRatepay"}
-                        data={{ 'sign': 'ratepay','year': (this.state.year || theData.year),'uid': this.props.uid }}
+                        data={{ 'sign': 'ratepay', 'year': (this.state.year || theData.year), 'uid': this.props.uid }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -215,7 +263,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                             }
                         }}
                     >
-                        <Button><Icon type="upload" /> 上传企业纳税申报表 </Button>
+                        <Button><Icon type="upload" /> 上传企业所得税纳税申报表 </Button>
                     </Upload>
                     <p style={{ marginTop: '10px' }}>{theData.taxReturnUrl ? <a onClick={newDownloadFile.bind(null, this.props.data.id, 'ratepay', '/api/admin/downloadRatepay')}>{theData.taxReturnDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
@@ -334,6 +382,8 @@ const Ratepay = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
     },
     getInitialState() {
         return {
@@ -453,6 +503,16 @@ const Ratepay = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     <span>企业所得税纳税申信息</span>
+                    <span className="proportion"> 是否已完成:</span>
+                    <Switch
+                        checked={this.state.proportion && this.state.proportion.ratepay == 1 ? true : false}
+                        checkedChildren={'已完成'}
+                        unCheckedChildren={'未完成'}
+                        onChange={(e) => {
+                            e ? this.state.proportion.ratepay = 1 : this.state.proportion.ratepay = 0;
+                            saveProportion(this.state.proportion.id, 'ratepay', this.state.proportion.ratepay);
+                            this.setState({ proportion: this.state.proportion });
+                        }} />
                 </div>
                 <div className="user-search">
                     <p>

+ 90 - 18
js/component/manageCenter/servicesManage/highTech/fosterDesc/standard.jsx

@@ -1,5 +1,6 @@
 import React from 'react';
-import { Icon, Button, Input, Spin, Table, message, Radio, Select, Modal } from 'antd';
+import { Switch, Icon, Button, Input, Spin, Table, message, Radio, Select, Modal, Upload } from 'antd';
+import { beforeUploadFile, newDownloadFile, getProportion, saveProportion } from '../../../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
@@ -21,11 +22,13 @@ const StandardDesc = React.createClass({
             url: globalConfig.context + "/api/admin/developStandard",
             data: {
                 id: this.props.data.id,
-                uid:this.props.uid,
+                uid: this.props.uid,
                 standardName: this.state.standardName,
                 standardNumber: this.state.standardNumber,
+                year: this.state.year,
                 standardLevel: this.state.standardLevel,
-                participateWay: this.state.participateWay
+                participateWay: this.state.participateWay,
+                enclosureUrl: this.state.enclosureUrl
             },
             success: function (data) {
                 if (data.data) {
@@ -34,7 +37,8 @@ const StandardDesc = React.createClass({
                         standardName: data.data.standardName,
                         standardNumber: data.data.standardNumber,
                         standardLevel: data.data.standardLevel,
-                        participateWay: data.data.participateWay
+                        participateWay: data.data.participateWay,
+                        enclosureUrl: this.state.enclosureUrl
                     });
                 } else if (data.error.length && data.error[0].message) {
                     message.warning(data.error[0].message);
@@ -50,7 +54,7 @@ const StandardDesc = React.createClass({
             } else {
                 message.warning(data.error[0].message);
             };
-            this.props.closeDesc(false,true);
+            this.props.closeDesc(false, true);
         }.bind(this));
     },
     handleCancel(e) {
@@ -59,13 +63,25 @@ const StandardDesc = React.createClass({
         });
         this.props.closeDesc(false);
     },
+    componentWillMount() {
+        const Option = Select.Option;
+        const d = new Date();
+        const thisYear = d.getFullYear();
+        let theOption = [];
+        for (let i = thisYear; i >= 1950; i--) {
+            theOption.push(<Option key={i.toString()}>{i}</Option>)
+        };
+        this.state.yearOption = theOption;
+    },
     componentWillReceiveProps(nextProps) {
         this.state.visible = nextProps.showDesc;
         if (nextProps.data) {
             this.state.standardName = nextProps.data.standardName;
             this.state.standardNumber = nextProps.data.standardNumber;
+            this.state.year = nextProps.data.year;
             this.state.standardLevel = nextProps.data.standardLevel;
             this.state.participateWay = nextProps.data.participateWay;
+            this.state.enclosureUrl = nextProps.data.enclosureUrl;
         };
     },
     render() {
@@ -89,19 +105,57 @@ const StandardDesc = React.createClass({
                                 onChange={(e) => { this.setState({ standardNumber: e.target.value }); }} />
                         </div>
                         <div>
+                            <p>制定时间:</p>
+                            <Select
+                                placeholder="请选择年份"
+                                value={this.state.year}
+                                onChange={(e) => { this.setState({ year: e }); }}
+                                style={{ width: 80 }}>
+                                {this.state.yearOption}
+                            </Select>
+                        </div>
+                        <div>
                             <p>标准级别:</p>
                             <Radio.Group value={this.state.standardLevel} onChange={(e) => { this.setState({ standardLevel: e.target.value }) }}>
-                                <Radio value="0">国家</Radio>
-                                <Radio value="1">行业</Radio>
+                                <Radio value={0}>国家</Radio>
+                                <Radio value={1}>行业</Radio>
                             </Radio.Group>
                         </div>
                         <div>
                             <p>参与方式:</p>
                             <Radio.Group value={this.state.participateWay} onChange={(e) => { this.setState({ participateWay: e.target.value }) }}>
-                                <Radio value="0">主持</Radio>
-                                <Radio value="1">参与</Radio>
+                                <Radio value={0}>主持</Radio>
+                                <Radio value={1}>参与</Radio>
                             </Radio.Group>
                         </div>
+                        <div className="hrSituation-roster">
+                            <Upload
+                                name="ratepay"
+                                action={globalConfig.context + "/api/admin/uploadStandard"}
+                                data={{ 'sign': 'standard', 'uid': this.props.uid }}
+                                beforeUpload={beforeUploadFile}
+                                showUploadList={false}
+                                onChange={(info) => {
+                                    if (info.file.status !== 'uploading') {
+                                        console.log(info.file, info.fileList);
+                                    }
+                                    if (info.file.status === 'done') {
+                                        if (!info.file.response.error.length) {
+                                            message.success(`${info.file.name} 文件上传成功!`);
+                                        } else {
+                                            message.warning(info.file.response.error[0].message);
+                                            return;
+                                        };
+                                        this.state.enclosureUrl = info.file.response.data;
+                                    } else if (info.file.status === 'error') {
+                                        message.error(`${info.file.name} 文件上传失败。`);
+                                    }
+                                }}
+                            >
+                                <Button><Icon type="upload" /> 上传标准制定附件 </Button>
+                            </Upload>
+                            <p style={{ marginTop: '10px' }}>{this.state.enclosureUrl ? <a onClick={newDownloadFile.bind(null, this.props.data.id, 'standard', '/api/admin/downloadStandard')}>标准定制附件</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                        </div>
                     </Modal>
                 </div>
             );
@@ -125,7 +179,7 @@ const Standard = React.createClass({
             data: {
                 pageNo: pageNo || 1,
                 pageSize: this.state.pagination.pageSize,
-                uid:this.props.data.uid,
+                uid: this.props.data.uid,
                 standardName: this.state.standardName,
                 standardNumber: this.state.standardNumber,
                 standardLevel: this.state.standardLevel,
@@ -144,8 +198,10 @@ const Standard = React.createClass({
                         uid: thisdata.uid,
                         standardName: thisdata.standardName,
                         standardNumber: thisdata.standardNumber,
-                        standardLevel: String(thisdata.standardLevel),
-                        participateWay: String(thisdata.participateWay),
+                        year: thisdata.year,
+                        enclosureUrl: thisdata.enclosureUrl,
+                        standardLevel: thisdata.standardLevel,
+                        participateWay: thisdata.participateWay,
                         createTime: thisdata.createTime,
                         createTimeFormattedDate: thisdata.createTimeFormattedDate
                     });
@@ -162,6 +218,8 @@ const Standard = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
     },
     getInitialState() {
         return {
@@ -194,14 +252,18 @@ const Standard = React.createClass({
                     dataIndex: 'standardNumber',
                     key: 'standardNumber'
                 }, {
+                    title: '制定时间',
+                    dataIndex: 'year',
+                    key: 'year'
+                }, {
                     title: '标准级别',
                     dataIndex: 'standardLevel',
                     key: 'standardLevel',
                     render: text => {
-                        switch (String(text)) {
-                            case "0":
+                        switch (text) {
+                            case 0:
                                 return "国家";
-                            case "1":
+                            case 1:
                                 return "行业";
                         }
                     }
@@ -210,10 +272,10 @@ const Standard = React.createClass({
                     dataIndex: 'participateWay',
                     key: 'participateWay',
                     render: text => {
-                        switch (String(text)) {
-                            case "0":
+                        switch (text) {
+                            case 0:
                                 return "主持";
-                            case "1":
+                            case 1:
                                 return "参与";
                         }
                     }
@@ -294,6 +356,16 @@ const Standard = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     <span>标准制定情况汇总</span>
+                    <span className="proportion"> 是否已完成:</span>
+                    <Switch
+                        checked={this.state.proportion && this.state.proportion.standard == 1 ? true : false}
+                        checkedChildren={'已完成'}
+                        unCheckedChildren={'未完成'}
+                        onChange={(e) => {
+                            e ? this.state.proportion.standard = 1 : this.state.proportion.standard = 0;
+                            saveProportion(this.state.proportion.id, 'standard', this.state.proportion.standard);
+                            this.setState({ proportion: this.state.proportion });
+                        }} />
                 </div>
                 <div className="user-search">
                     <Input placeholder="标准名称" value={this.state.standardName}

+ 14 - 2
js/component/manageCenter/servicesManage/highTech/fosterDesc/techProduct.jsx

@@ -1,8 +1,8 @@
 import React from 'react';
-import { Icon, Upload, Form, Button, Radio, Input, Spin, Table, message, Select, Modal, Cascader, Transfer, InputNumber } from 'antd';
+import { Switch, Icon, Upload, Form, Button, Radio, Input, Spin, Table, message, Select, Modal, Cascader, Transfer, InputNumber } from 'antd';
 import { technicalSourceList } from '../../../../dataDic.js';
 import { techFieldList } from '../../../../DicTechFieldList.js';
-import { getTechField, getTechnicalSource, beforeUploadFile, newDownloadFile } from '../../../../tools.js';
+import { getTechField, getTechnicalSource, beforeUploadFile, newDownloadFile, getProportion, saveProportion } from '../../../../tools.js';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -413,6 +413,8 @@ const TechProduct = React.createClass({
                 loading: false
             });
         }.bind(this));
+        let _me = this;
+        getProportion(this.props.data.uid, function (data) { _me.setState({ proportion: data }); });
     },
     getInitialState() {
         return {
@@ -535,6 +537,16 @@ const TechProduct = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     <span>高新技术产品(服务)情况表</span>
+                    <span className="proportion"> 是否已完成:</span>
+                    <Switch
+                        checked={this.state.proportion && this.state.proportion.techProject == 1 ? true : false}
+                        checkedChildren={'已完成'}
+                        unCheckedChildren={'未完成'}
+                        onChange={(e) => {
+                            e ? this.state.proportion.techProject = 1 : this.state.proportion.techProject = 0;
+                            saveProportion(this.state.proportion.id, 'techProject', this.state.proportion.techProject);
+                            this.setState({ proportion: this.state.proportion });
+                        }} />
                 </div>
                 <div className="user-search">
                     <p>

+ 15 - 0
js/component/manageCenter/servicesManage/highTech/fosterDesc/techProduct.less

@@ -27,6 +27,21 @@
     }
 }
 
+.company-detail-form {
+    .content-title {
+        font-size: 16px;
+    }
+    .table-title {
+        >span {
+            font-size: 14px;
+            margin-left: 20px;
+        }
+        >button {
+            margin-left: 10px;
+        }
+    }
+}
+
 .upload-box {
     display: inline-block;
     margin-top: 10px;

+ 208 - 179
js/component/manageCenter/servicesManage/highTech/highTechApply.jsx

@@ -24,8 +24,10 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                 year: year || this.props.data.year
             },
             success: function (data) {
-                if (data.error.length || !data.data) {
-                    message.warning(data.error[0].message);
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
                     return;
                 };
                 this.state.data = data.data;
@@ -241,6 +243,7 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                         technicalField2: values.technicalField[1],
                         technicalField3: values.technicalField[2],
                         basicResearchCost: values.basicResearchCost,
+                        largeOrder: values.largeOrder,
                         contacts: values.contacts,
                         accident: values.accident,
                         certificateNumber: values.certificateNumber,
@@ -284,192 +287,212 @@ const CognizanceDescFrom = Form.create()(React.createClass({
         const _me = this;
         if (this.state.data) {
             return (
-                <Form onSubmit={this.handleSubmit} id="highTechApply-form">
-                    <div className="clearfix">
-                        <div className="half-item">
-                            <span className="item-title">公司名称: </span>
-                            <span>{theData.unitName}</span>
-                        </div>
-                        <div className="half-item">
-                            <span className="item-title">公司组织机构代码: </span>
-                            <span>{theData.orgCode}</span>
-                        </div>
-                        <div className="half-item">
-                            <span className="item-title">公司地址: </span>
-                            <span>{theData.postalAddress}</span>
+                <Spin spinning={this.state.loading} >
+                    <Form onSubmit={this.handleSubmit} id="highTechApply-form">
+                        <div className="clearfix">
+                            <div className="half-item">
+                                <span className="item-title">公司名称: </span>
+                                <span>{theData.unitName}</span>
+                            </div>
+                            <div className="half-item">
+                                <span className="item-title">公司组织机构代码: </span>
+                                <span>{theData.orgCode}</span>
+                            </div>
+                            <div className="half-item">
+                                <span className="item-title">公司地址: </span>
+                                <span>{theData.postalAddress}</span>
+                            </div>
+                            <div className="half-item">
+                                <span className="item-title">申请年份: </span>
+                                <span>{theData.year}</span>
+                            </div>
+                            <FormItem className="half-item"
+                                labelCol={{ span: 3 }}
+                                wrapperCol={{ span: 14 }}
+                            >
+                                <span className="item-title">联系人: </span>
+                                {getFieldDecorator('contacts', {
+                                    rules: [{ required: true, message: '此项为必填项!' }],
+                                    initialValue: theData.contacts
+                                })(
+                                    <Select
+                                        style={{ display: 'inline-block', width: '200px' }}
+                                        placeholder='选择一个联系人'>
+                                        {this.state.contactsOption}
+                                    </Select>
+                                    )}
+                            </FormItem>
+                            <FormItem className="half-item"
+                                labelCol={{ span: 3 }}
+                                wrapperCol={{ span: 14 }}
+                            >
+                                <span className="item-title">证书编号: </span>
+                                {getFieldDecorator('certificateNumber', {
+                                    initialValue: theData.certificateNumber
+                                })(
+                                    <Input style={{ width: '200px' }} placeholder='高企证书编号' />
+                                    )}
+                            </FormItem>
+                            <FormItem className="half-item"
+                                labelCol={{ span: 3 }}
+                                wrapperCol={{ span: 14 }}
+                            >
+                                <span className="item-title">订单金额超过十万: </span>
+                                {getFieldDecorator('largeOrder', {
+                                    initialValue: theData.largeOrder
+                                })(
+                                    <Radio.Group>
+                                        <Radio value="0">否</Radio>
+                                        <Radio value="1">是</Radio>
+                                    </Radio.Group>
+                                    )}
+                            </FormItem>
                         </div>
-                        <FormItem className="half-item"
-                            labelCol={{ span: 3 }}
-                            wrapperCol={{ span: 14 }}
+                        <FormItem style={{ width: '50%' }}
+                            labelCol={{ span: 0 }}
+                            wrapperCol={{ span: 24 }}
+                            label="技术领域"
                         >
-                            <span className="item-title">联系人: </span>
-                            {getFieldDecorator('contacts', {
-                                rules: [{ required: true, message: '此项为必填项!' }],
-                                initialValue: theData.contacts
+                            <span className="item-title">技术领域: </span>
+                            {getFieldDecorator('technicalField', {
+                                rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
+                                initialValue: [Number(theData.technicalField1), Number(theData.technicalField2), Number(theData.technicalField3)]
                             })(
-                                <Select
-                                    style={{ display: 'inline-block', width: '200px' }}
-                                    placeholder='选择一个联系人'>
-                                    {this.state.contactsOption}
-                                </Select>
+                                <Cascader options={techFieldList} placeholder="请选择技术领域" />
                                 )}
                         </FormItem>
-                        <FormItem className="half-item"
-                            labelCol={{ span: 3 }}
-                            wrapperCol={{ span: 14 }}
-                        >
-                            <span className="item-title">证书编号: </span>
-                            {getFieldDecorator('certificateNumber', {
-                                initialValue: this.props.data.certificateNumber
-                            })(
-                                <Input style={{ width: '200px' }} placeholder='高企证书编号' />
-                                )}
-                        </FormItem>
-                    </div>
-                    <FormItem style={{ width: '50%' }}
-                        labelCol={{ span: 0 }}
-                        wrapperCol={{ span: 24 }}
-                        label="技术领域"
-                    >
-                        <span className="item-title">技术领域: </span>
-                        {getFieldDecorator('technicalField', {
-                            rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
-                            initialValue: [Number(theData.technicalField1), Number(theData.technicalField2), Number(theData.technicalField3)]
-                        })(
-                            <Cascader options={techFieldList} placeholder="请选择技术领域" />
-                            )}
-                    </FormItem>
-                    <div className="clearfix">
-                        <div>
-                            <span className="form-title">获得知识产权数量(件): </span>
-                        </div>
-                        <div className="half-item">
-                            <span className="item-title">一类: </span>
-                            <span>{theData.firstCatagory}</span>
-                        </div>
-                        <div className="half-item">
-                            <span className="item-title">二类: </span>
-                            <span>{theData.secondCatagory}</span>
-                        </div>
-                    </div>
-                    <div className="clearfix">
-                        <div>
-                            <span className="form-title">人力资源状况(人): </span>
-                        </div>
-                        <div className="half-item">
-                            <span className="item-title">职工总数: </span>
-                            <span>{theData.firmTotal}</span>
-                        </div>
-                        <div className="half-item">
-                            <span className="item-title">科技人员数: </span>
-                            <span>{theData.techTotal}</span>
+                        <div className="clearfix">
+                            <div>
+                                <span className="form-title">获得知识产权数量(件): </span>
+                            </div>
+                            <div className="half-item">
+                                <span className="item-title">一类: </span>
+                                <span>{theData.firstCatagory}</span>
+                            </div>
+                            <div className="half-item">
+                                <span className="item-title">二类: </span>
+                                <span>{theData.secondCatagory}</span>
+                            </div>
                         </div>
-                    </div>
-                    <div className="form-title">近三年经营状况(万元): </div>
-                    <Table pagination={false} dataSource={this.state.moneyTable} columns={this.state.moneyColumns} />
-                    <div className="clearfix">
-                        <div className="half-item">
-                            <span className="item-title">净资产增长率: </span>
-                            <span>{(this.state.netAssetRate * 100).toFixed(2) + '%'}</span>
+                        <div className="clearfix">
+                            <div>
+                                <span className="form-title">人力资源状况(人): </span>
+                            </div>
+                            <div className="half-item">
+                                <span className="item-title">职工总数: </span>
+                                <span>{theData.firmTotal}</span>
+                            </div>
+                            <div className="half-item">
+                                <span className="item-title">科技人员数: </span>
+                                <span>{theData.techTotal}</span>
+                            </div>
                         </div>
-                        <div className="half-item">
-                            <span className="item-title">销售收入增长率: </span>
-                            <span>{(this.state.salesRevenueRate * 100).toFixed(2) + '%'}</span>
+                        <div className="form-title">近三年经营状况(万元): </div>
+                        <Table pagination={false} dataSource={this.state.moneyTable} columns={this.state.moneyColumns} />
+                        <div className="clearfix">
+                            <div className="half-item">
+                                <span className="item-title">净资产增长率: </span>
+                                <span>{(this.state.netAssetRate * 100).toFixed(2) + '%'}</span>
+                            </div>
+                            <div className="half-item">
+                                <span className="item-title">销售收入增长率: </span>
+                                <span>{(this.state.salesRevenueRate * 100).toFixed(2) + '%'}</span>
+                            </div>
                         </div>
-                    </div>
-                    <div className="clearfix">
-                        <div><span className="form-title">近三年研究开发费用总额(万元): </span></div>
-                        <div className="third-item">
-                            <div className="item-title">近三年研究开发费用总额</div>
-                            <p>{theData.researchCost}</p>
+                        <div className="clearfix">
+                            <div><span className="form-title">近三年研究开发费用总额(万元): </span></div>
+                            <div className="third-item">
+                                <div className="item-title">近三年研究开发费用总额</div>
+                                <p>{theData.researchCost}</p>
+                            </div>
+                            <div className="third-item">
+                                <div className="item-title">其中: 在中国境内研发费用总和</div>
+                                <p>{theData.territory}</p>
+                            </div>
+                            <div className="third-item">
+                                <div className="item-title">其中: 基础研究投入费用总额</div>
+                                <div>
+                                    <FormItem
+                                        labelCol={{ span: 0 }}
+                                        wrapperCol={{ span: 24 }}
+                                    >
+                                        {getFieldDecorator('basicResearchCost', {
+                                            rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
+                                            initialValue: theData.basicResearchCost
+                                        })(
+                                            <InputNumber />
+                                            )}
+                                    </FormItem>
+                                </div>
+                            </div>
                         </div>
-                        <div className="third-item">
-                            <div className="item-title">其中: 在中国境内研发费用总和</div>
-                            <p>{theData.territory}</p>
+                        <div>
+                            <span className="item-title">近一年企业总收入(万元): </span>
+                            <span>{theData.totalRevenue}</span>
                         </div>
-                        <div className="third-item">
-                            <div className="item-title">其中: 基础研究投入费用总额</div>
-                            <div>
-                                <FormItem
-                                    labelCol={{ span: 0 }}
-                                    wrapperCol={{ span: 24 }}
-                                >
-                                    {getFieldDecorator('basicResearchCost', {
-                                        rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
-                                        initialValue: theData.basicResearchCost
-                                    })(
-                                        <InputNumber />
-                                        )}
-                                </FormItem>
-                            </div>
+                        <div>
+                            <span className="item-title">近一年高新技术产品收入(万元): </span>
+                            <span>{theData.lastYearRevenue}</span>
                         </div>
-                    </div>
-                    <div>
-                        <span className="item-title">近一年企业总收入(万元): </span>
-                        <span>{theData.totalRevenue}</span>
-                    </div>
-                    <div>
-                        <span className="item-title">近一年高新技术产品收入(万元): </span>
-                        <span>{theData.lastYearRevenue}</span>
-                    </div>
-                    <div className="item-title">申请认定前一年内是否发生过重大安全、重大质量或严重环境违法行为</div>
-                    <FormItem
-                        labelCol={{ span: 0 }}
-                        wrapperCol={{ span: 24 }}
-                    >
-                        {getFieldDecorator('accident', {
-                            rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
-                            initialValue: theData.accident
-                        })(
-                            <Radio.Group>
-                                <Radio value={0}>否</Radio>
-                                <Radio value={1}>是</Radio>
-                            </Radio.Group>
-                            )}
-                    </FormItem>
-                    <div className="form-title">状态流转记录: </div>
-                    <Table pagination={false} dataSource={this.state.stateTable} columns={this.state.stateColumns} />
-                    <div className="clearfix">
-                        <FormItem className="third-item"
-                            {...formItemLayout}
-                            label="状态流转"
+                        <div className="item-title">申请认定前一年内是否发生过重大安全、重大质量或严重环境违法行为</div>
+                        <FormItem
+                            labelCol={{ span: 0 }}
+                            wrapperCol={{ span: 24 }}
                         >
-                            {getFieldDecorator('state')(
-                                <Select placeholder="选择一个状态">{this.state.stateOption}</Select>
-                            )}
+                            {getFieldDecorator('accident', {
+                                rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
+                                initialValue: theData.accident
+                            })(
+                                <Radio.Group>
+                                    <Radio value={0}>否</Radio>
+                                    <Radio value={1}>是</Radio>
+                                </Radio.Group>
+                                )}
                         </FormItem>
-                        <FormItem className="third-item"
-                            labelCol={{ span: 6 }}
+                        <div className="form-title">状态流转记录: </div>
+                        <Table pagination={false} dataSource={this.state.stateTable} columns={this.state.stateColumns} />
+                        <div className="clearfix">
+                            <FormItem className="third-item"
+                                {...formItemLayout}
+                                label="状态流转"
+                            >
+                                {getFieldDecorator('state')(
+                                    <Select placeholder="选择一个状态">{this.state.stateOption}</Select>
+                                )}
+                            </FormItem>
+                            <FormItem className="third-item"
+                                labelCol={{ span: 6 }}
+                                wrapperCol={{ span: 12 }}
+                                label="处理时间"
+                            >
+                                {getFieldDecorator('recordTime')(
+                                    <DatePicker />
+                                )}
+                            </FormItem>
+                            <FormItem className="third-item"
+                                {...formItemLayout}
+                                label="负责人"
+                            >
+                                {getFieldDecorator('principal')(
+                                    <Select placeholder="选择负责人">{this.props.authorOption}</Select>
+                                )}
+                            </FormItem>
+                        </div>
+                        <FormItem
+                            labelCol={{ span: 2 }}
                             wrapperCol={{ span: 12 }}
-                            label="处理时间"
+                            label="备注"
                         >
-                            {getFieldDecorator('recordTime')(
-                                <DatePicker />
+                            {getFieldDecorator('comment')(
+                                <Input />
                             )}
                         </FormItem>
-                        <FormItem className="third-item"
-                            {...formItemLayout}
-                            label="负责人"
-                        >
-                            {getFieldDecorator('principal')(
-                                <Select placeholder="选择负责人">{this.props.authorOption}</Select>
-                            )}
+                        <FormItem style={{ marginTop: '20px' }}>
+                            <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
+                            <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
                         </FormItem>
-                    </div>
-                    <FormItem
-                        labelCol={{ span: 2 }}
-                        wrapperCol={{ span: 12 }}
-                        label="备注"
-                    >
-                        {getFieldDecorator('comment')(
-                            <Input />
-                        )}
-                    </FormItem>
-                    <FormItem style={{ marginTop: '20px' }}>
-                        <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
-                        <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
-                    </FormItem>
-                </Form >
+                    </Form >
+                </Spin>
             );
         } else {
             return (<div></div>)
@@ -619,6 +642,7 @@ const CognizanceAdd = React.createClass({
                 contacts: this.state.contacts,
                 comment: this.state.comment,
                 consultant: this.state.consultant,
+                largeOrder: this.state.largeOrder,
                 uid: this.state.uid
             }
         }).done(function (data) {
@@ -676,14 +700,6 @@ const CognizanceAdd = React.createClass({
                                 {this.props.companyOption}
                             </Select>
                         </div>
-                        <div className="half-item">
-                            <span>选择咨询师:  </span>
-                            <Select placeholder="请选择咨询师" style={{ width: 200 }}
-                                value={this.state.consultant}
-                                onSelect={(e, n) => { this.setState({ consultant: e }); }}>
-                                {this.props.authorOption}
-                            </Select>
-                        </div>
                     </div>
                     <div className="clearfix">
                         <div className="half-item">
@@ -695,6 +711,13 @@ const CognizanceAdd = React.createClass({
                             </Select>
                         </div>
                         <div className="half-item">
+                            <span>订单金额超过十万:  </span>
+                            <Radio.Group onChange={(e) => { this.state.largeOrder = e.target.value }}>
+                                <Radio value="0">否</Radio>
+                                <Radio value="1">是</Radio>
+                            </Radio.Group>
+                        </div>
+                        <div className="half-item">
                             <span>选择联系人:  </span>
                             <Select placeholder="请选择联系人" style={{ width: 200 }}
                                 value={this.state.contacts}
@@ -705,6 +728,7 @@ const CognizanceAdd = React.createClass({
                     </div>
                     <div>
                         <div>
+                            <span>派单详情:  </span>
                             <Input type="textarea" rows={6}
                                 value={this.state.comment}
                                 onChange={(e) => { this.setState({ comment: e.target.value }); }} />
@@ -748,6 +772,7 @@ const Cognizance = React.createClass({
                         serialNumber: thisdata.serialNumber,
                         locationProvince: thisdata.locationProvince,
                         unitName: thisdata.unitName,
+                        largeOrder: thisdata.largeOrder,
                         contacts: [thisdata.contacts, {
                             '1': thisdata.firstContacts,
                             '2': thisdata.secondContacts,
@@ -878,6 +903,10 @@ const Cognizance = React.createClass({
                         };
                     }
                 }, {
+                    title: '年份',
+                    dataIndex: 'year',
+                    key: 'year'
+                }, {
                     title: '派单日',
                     dataIndex: 'createTimeFormattedDate',
                     key: 'createTimeFormattedDate'
@@ -900,7 +929,7 @@ const Cognizance = React.createClass({
                     key: 'issuingDate',
                     render: (text) => { return getTime(text, 36) }
                 }, {
-                    title: '咨询师',
+                    title: '负责人',
                     dataIndex: 'consultant',
                     key: 'consultant'
                 }

+ 1 - 1
js/component/manageCenter/servicesManage/highTech/highTechFoster.jsx

@@ -165,7 +165,7 @@ const Patent = React.createClass({
                     dataIndex: 'endtime',
                     key: 'endtime'
                 }, {
-                    title: '咨询师',
+                    title: '负责人',
                     dataIndex: 'consultant',
                     key: 'consultant',
                 }

+ 1 - 1
js/component/manageCenter/servicesManage/highTech/highTechFoster.less

@@ -36,7 +36,7 @@
         float: left;
         width: 50%;
         height: 36px;
-        margin-bottom: 10px;
+        margin-bottom: 20px;
     }
     .third-item {
         float: left;

+ 11 - 11
js/component/manageCenter/servicesManage/patent/applyFee.jsx

@@ -44,8 +44,8 @@ const applyFee = React.createClass({
                         endTime: thisdata.patentApplicationDate,
                         paymentState: thisdata.paymentState,
                         applicationFee: thisdata.applicationFee,
-                        trialFee: thisdata.trialFee,
-                        printingFee: thisdata.printingFee,
+                        // trialFee: thisdata.trialFee,
+                        // printingFee: thisdata.printingFee,
                         funds: thisdata.funds,
                         reimbursement: thisdata.reimbursement,
                     });
@@ -116,15 +116,15 @@ const applyFee = React.createClass({
                 }, {
                     title: '申请费',
                     dataIndex: 'applicationFee',
-                    key: 'applicationFee',
-                }, {
-                    title: '实审费',
-                    dataIndex: 'trialFee',
-                    key: 'trialFee',
-                }, {
-                    title: '文印费',
-                    dataIndex: 'printingFee',
-                    key: 'printingFee',
+                    key: 'applicationFee'
+                // }, {
+                //     title: '实审费',
+                //     dataIndex: 'trialFee',
+                //     key: 'trialFee'
+                // }, {
+                //     title: '文印费',
+                //     dataIndex: 'printingFee',
+                //     key: 'printingFee'
                 }, {
                     title: '是否请款',
                     dataIndex: 'funds',

+ 15 - 13
js/component/manageCenter/servicesManage/patent/applyFeeDesc.jsx

@@ -28,8 +28,8 @@ const PatentDesc = React.createClass({
             data: {
                 cid: this.props.data.cid,
                 applicationFee: this.state.applicationFee,
-                trialFee: this.state.applicationFee,
-                printingFee: this.state.printingFee,
+                //                trialFee: this.state.applicationFee,
+                //                printingFee: this.state.printingFee,
                 funds: this.state.funds,
                 reimbursement: this.state.reimbursement,
                 paymentState: this.state.paymentState
@@ -64,8 +64,8 @@ const PatentDesc = React.createClass({
         this.state.visible = nextProps.showDesc;
         if (nextProps.data) {
             this.state.applicationFee = nextProps.data.applicationFee;
-            this.state.trialFee = nextProps.data.trialFee;
-            this.state.printingFee = nextProps.data.printingFee;
+            // this.state.trialFee = nextProps.data.trialFee;
+            // this.state.printingFee = nextProps.data.printingFee;
             this.state.funds = nextProps.data.funds;
             this.state.reimbursement = nextProps.data.reimbursement;
             this.state.paymentState = nextProps.data.paymentState;
@@ -94,14 +94,7 @@ const PatentDesc = React.createClass({
                             <p className="applyFee-fee">
                                 <span>申请费:</span>
                                 <Input value={this.state.applicationFee} onChange={(e) => { this.setState({ applicationFee: e.target.value }); }} />
-                            </p>
-                            <p className="applyFee-fee">
-                                <span>实审费:</span>
-                                <Input value={this.state.trialFee} onChange={(e) => { this.setState({ trialFee: e.target.value }); }} />
-                            </p>
-                            <p className="applyFee-fee">
-                                <span>文印费:</span>
-                                <Input value={this.state.printingFee} onChange={(e) => { this.setState({ printingFee: e.target.value }); }} />
+                                <span>元</span>    
                             </p>
                             <div className="applyFee-fee">
                                 <span>是否申请:</span>
@@ -126,4 +119,13 @@ const PatentDesc = React.createClass({
         }
     },
 });
-export default PatentDesc;
+export default PatentDesc;
+
+// <p className="applyFee-fee">
+//     <span>实审费:</span>
+//     <Input value={this.state.trialFee} onChange={(e) => { this.setState({ trialFee: e.target.value }); }} />
+// </p>
+//     <p className="applyFee-fee">
+//         <span>文印费:</span>
+//         <Input value={this.state.printingFee} onChange={(e) => { this.setState({ printingFee: e.target.value }); }} />
+//     </p>

+ 44 - 33
js/component/manageCenter/servicesManage/patent/comPatentAdd.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Icon, Modal, Button, Form, Upload, message, Input, Spin, Checkbox, Select } from 'antd';
+import { Icon, Modal, Button, Form, Upload, message, Input, Spin, Select } from 'antd';
 import './comprehensive.less';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
@@ -96,10 +96,10 @@ const PatentAddFrom = Form.create()(React.createClass({
     getInitialState() {
         return {
             loading: false,
-            companyOption: [],
-            firstCheck: 0,
-            secondCheck: 0,
-            thirdCheck: 0
+            companyOption: []
+            //            firstCheck: 0,
+            //            secondCheck: 0,
+            //            thirdCheck: 0
 
         };
     },
@@ -124,9 +124,10 @@ const PatentAddFrom = Form.create()(React.createClass({
                         'patentDes': values.intro,
                         'secondInventorName': values.secondInventorName,
                         'thirdInventorName': values.thirdInventorName,
-                        'firstInventorIsPublish': this.state.firstCheck,
-                        'secondInventorIsPublish': this.state.secondCheck,
-                        'thirdInventorIsPublish': this.state.thirdCheck,
+                        'office':values.office,
+                        //'firstInventorIsPublish': this.state.firstCheck,
+                        //'secondInventorIsPublish': this.state.secondCheck,
+                        //'thirdInventorIsPublish': this.state.thirdCheck,
                         'patentProryStatementUrl': this.state.avatarUrl
                     }
                 }).done(function (data) {
@@ -144,27 +145,27 @@ const PatentAddFrom = Form.create()(React.createClass({
             }
         });
     },
-    firstInventorCheck(e) {
-        if (e.target.checked == true) {
-            this.state.firstCheck = 1;
-        } else if (e.target.checked == false) {
-            this.state.firstCheck = 0;
-        }
-    },
-    secondInventorCheck(e) {
-        if (e.target.checked == true) {
-            this.state.secondCheck = 1;
-        } else if (e.target.checked == false) {
-            this.state.secondCheck = 0;
-        };
-    },
-    thirdInventorCheck(e) {
-        if (e.target.checked == true) {
-            this.state.thirdCheck = 1;
-        } else if (e.target.checked == false) {
-            this.state.thirdCheck = 0;
-        };
-    },
+    // firstInventorCheck(e) {
+    //     if (e.target.checked == true) {
+    //         this.state.firstCheck = 1;
+    //     } else if (e.target.checked == false) {
+    //         this.state.firstCheck = 0;
+    //     }
+    // },
+    // secondInventorCheck(e) {
+    //     if (e.target.checked == true) {
+    //         this.state.secondCheck = 1;
+    //     } else if (e.target.checked == false) {
+    //         this.state.secondCheck = 0;
+    //     };
+    // },
+    // thirdInventorCheck(e) {
+    //     if (e.target.checked == true) {
+    //         this.state.thirdCheck = 1;
+    //     } else if (e.target.checked == false) {
+    //         this.state.thirdCheck = 0;
+    //     };
+    // },
     avatarUrl(e) {
         this.state.avatarUrl = e;
     },
@@ -211,6 +212,17 @@ const PatentAddFrom = Form.create()(React.createClass({
                         )}
                 </FormItem>
                 <FormItem
+                    {...formItemLayout}
+                    label="事务所"
+                >
+                    {getFieldDecorator('office', {
+                        rules: [{ required: true, message: '请填写一个事务所!' }],
+                        initialValue: this.state.office || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
                     labelCol={{ span: 24 }}
                     wrapperCol={{ span: 18 }}
                     label="专利简要描述"
@@ -233,7 +245,6 @@ const PatentAddFrom = Form.create()(React.createClass({
                     })(
                         <Input className="mini-input" />
                         )}
-                    <Checkbox onChange={this.firstInventorCheck}>告知专利局是否公布</Checkbox>
                 </FormItem>
                 <FormItem
                     {...formItemLayout}
@@ -253,7 +264,6 @@ const PatentAddFrom = Form.create()(React.createClass({
                     {getFieldDecorator('secondInventorName')(
                         <Input className="mini-input" />
                     )}
-                    <Checkbox onChange={this.secondInventorCheck}>告知专利局是否公布</Checkbox>
                 </FormItem>
                 <p>第三发明人</p>
                 <FormItem
@@ -263,7 +273,6 @@ const PatentAddFrom = Form.create()(React.createClass({
                     {getFieldDecorator('thirdInventorName')(
                         <Input className="mini-input" />
                     )}
-                    <Checkbox onChange={this.thirdInventorCheck}>告知专利局是否公布</Checkbox>
                 </FormItem>
                 <FormItem
                     {...formItemLayout}
@@ -336,4 +345,6 @@ const PatentAdd = React.createClass({
         );
     },
 });
-export default PatentAdd;
+export default PatentAdd;
+
+//                    <Checkbox onChange={this.firstInventorCheck}>告知专利局是否公布</Checkbox>

+ 6 - 2
js/component/manageCenter/servicesManage/patent/comPatentDesc.jsx

@@ -116,6 +116,7 @@ const PatentDesc = React.createClass({
             this.state.patentDes = data1[0].data.patentDes;
             this.state.patentName = data1[0].data.patentName;
             this.state.patentNumber = data1[0].data.patentNumber;
+            this.state.office = data1[0].data.office;
             this.state.patentCatagory = data1[0].data.patentCatagory;
             this.state.patentState = data1[0].data.patentState;
             this.state.patentField = data1[0].data.patentField;
@@ -231,6 +232,7 @@ const PatentDesc = React.createClass({
                 "patentField": this.state.patentField,
                 "patentDes": this.state.patentDes,
                 "contacts": this.state.contacts,
+                "office": this.state.office,
                 "patentWritingUrl": this.state.patentWritingUrl,
                 "authorizationNoticeUrl": this.state.authorizationNoticeUrl,
                 "patentCertificateUrl": this.state.patentCertificateUrl,
@@ -300,7 +302,6 @@ const PatentDesc = React.createClass({
         const theData = this.state.data;
 
         if (this.state.data) {
-            let companyAddress = theData.locationProvince || theData.locationCity || theData.locationArea ? theData.locationProvince + '/' + theData.locationCity + '/' + theData.locationArea : '';
             return (
                 <div className="patent-desc">
                     <Spin spinning={this.state.loading} className='spin-box'>
@@ -317,7 +318,7 @@ const PatentDesc = React.createClass({
                                 <p className="widthHalf"><span>公司组织机构代码:</span>{theData.orgCode}</p>
                             </div>
                             <div>
-                                <p className="widthHalf"><span>公司地址:</span>{companyAddress}</p>
+                                <p className="widthHalf"><span>公司地址:</span>{theData.postalAddress}</p>
                                 <div className="widthHalf">
                                     <span>联系人:</span>
                                     <Select placeholder="选择联系人"
@@ -329,6 +330,9 @@ const PatentDesc = React.createClass({
                                 </div>
                             </div>
                             <div>
+                                <p className="widthHalf"><span>事务所:</span><Input value={this.state.office} onChange={(e) => { this.setState({ office: e.target.value }); }} /></p>
+                            </div>
+                            <div>
                                 <p className="widthHalf"><span>编号:</span>{theData.serialNumber}</p>
                                 <p className="widthHalf"><span>申请号/专利号:</span><Input value={this.state.patentNumber} onChange={(e) => { this.setState({ patentNumber: e.target.value }); }} /></p>
                             </div>

+ 0 - 4
js/component/manageCenter/servicesManage/patent/comprehensive.jsx

@@ -201,10 +201,6 @@ const Patent = React.createClass({
                     dataIndex: 'endTime',
                     key: 'endTime',
                     render: text => { return getTime(text) },
-                }, {
-                    title: '资料撰写人',
-                    dataIndex: 'author',
-                    key: 'author',
                 }
             ],
             dataSource: []

+ 1 - 10
js/component/manageCenter/servicesManage/technology/applyAdd.jsx

@@ -228,20 +228,11 @@ const ApplyAdd = React.createClass({
                             </Radio.Group>
                         </div>
                         <div className="half-item">
-                            <span className="item-title">{this.state.moneyType !== 2 ? '立项' : '后补助'}金额: </span>
+                            <span className="item-title">金额: </span>
                             <Input style={{ width: 200 }} onChange={(e) => { this.state.projectApproval = e.target.value; }} />
                             <span>万元</span>
                         </div>
                     </div>
-                    <div className="clearfix">
-                        <div className="half-item">
-                            <span className="item-title">选择咨询师:  </span>
-                            <Select placeholder="请选择咨询师" style={{ width: 200 }}
-                                onSelect={(e, n) => { this.state.consultant = e }}>
-                                {this.props.consultantOption}
-                            </Select>
-                        </div>
-                    </div>
                 </Modal>
             </div>
         );

+ 9 - 14
js/component/manageCenter/servicesManage/technology/applyChange.jsx

@@ -81,13 +81,13 @@ const ApplyChangeFrom = Form.create()(React.createClass({
             });
         }.bind(this));
     },
-    getContactsList() {
+    getContactsList(id) {
         $.ajax({
             method: "get",
             dataType: "json",
             crossDomain: false,
             url: globalConfig.context + "/api/admin/getContacts",
-            data: { "uid": this.props.data.uid },
+            data: { "uid": id || this.props.data.uid },
             success: function (data) {
                 let theOption = [];
                 if (!data.data) {
@@ -103,8 +103,7 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                     );
                 };
                 this.setState({
-                    contactsOption: theOption,
-                    contacts: data.data[this.state.data.contacts]
+                    contactsOption: theOption
                 });
             }.bind(this),
         });
@@ -200,6 +199,7 @@ const ApplyChangeFrom = Form.create()(React.createClass({
         this.loadData();
         this.getOptionList();
         this.getStateData();
+        this.getContactsList();
         this.getDepartmentList();
     },
     handleSubmit(e) {
@@ -255,7 +255,8 @@ const ApplyChangeFrom = Form.create()(React.createClass({
         if (!this.props.visible && nextProps.visible) {
             this.loadData(nextProps.data.pid);
             this.getStateData(nextProps.data.pid);
-            this.getDepartmentList(nextProps.data.pid);
+            this.getContactsList(nextProps.data.uid);
+            this.getDepartmentList(nextProps.data.uid);
         };
     },
     subsidyCheck(e) {
@@ -293,7 +294,7 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                         </div>
                         <div className="half-item">
                             <span className="item-title">公司地址: </span>
-                            <span>{theData.province + ' ' + theData.city + ' ' + theData.area}</span>
+                            <span>{theData.postalAddress}</span>
                         </div>
                         <div className="half-item">
                             <FormItem
@@ -302,7 +303,7 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                                 label="联系人:"
                             >
                                 {getFieldDecorator('contacts', {
-                                    initialValue: this.state.contacts
+                                    initialValue: this.state.data.contacts
                                 })(
                                     <Select>{this.state.contactsOption}</Select>
                                     )}
@@ -323,12 +324,6 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                     </div>
                     <div className="clearfix">
                         <div className="half-item">
-                            <span className="item-title">派单信息: </span>
-                            <span>{theData.dispatchInfo}</span>
-                        </div>
-                    </div>
-                    <div className="clearfix">
-                        <div className="half-item">
                             <FormItem
                                 labelCol={{ span: 4 }}
                                 wrapperCol={{ span: 12 }}
@@ -393,7 +388,7 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                         <div className="half-item">
                             <FormItem
                                 {...formItemLayout}
-                                label={this.state.moneyType !== 2 ? '立项金额' : '后补助金额'}
+                                label='金额'
                             >
                                 {getFieldDecorator('projectApproval', {
                                     initialValue: theData.projectApproval

+ 1 - 1
js/component/manageCenter/servicesManage/technology/applyManage.jsx

@@ -241,7 +241,7 @@ const ApplyManage = React.createClass({
                     dataIndex: 'password',
                     key: 'password'
                 }, {
-                    title: '咨询师',
+                    title: '负责人',
                     dataIndex: 'consultant',
                     key: 'consultant'
                 }

+ 6 - 17
js/component/manageCenter/servicesManage/technology/websiteAdd.jsx

@@ -73,7 +73,7 @@ const WebsiteAdd = React.createClass({
             <div className="cognizance-add">
                 <Modal title="添加科技部门网址" visible={this.state.visible}
                     onOk={this.handleOk} onCancel={this.handleCancel}
-                    width='800px'
+                    width='400px'
                     footer={[
                         <Button key="submit" type="primary" loading={this.state.loading} onClick={this.handleOk}>
                             确认
@@ -83,8 +83,7 @@ const WebsiteAdd = React.createClass({
                             </Button>,
                     ]}
                 >
-                    <div className="clearfix" style={{ marginBottom: '10px' }}>
-                        <div className="half-item">
+                        <div>
                             <span className="item-title">选择公司:  </span>
                             <Select
                                 placeholder="请选择公司"
@@ -95,32 +94,22 @@ const WebsiteAdd = React.createClass({
                                 {this.props.companyAddOption}
                             </Select>
                         </div>
-                    </div>
-                    <div className="clearfix">
-                    	<div className="half-item">
+                    	<div>
                             <span className="item-title">科技部门名称:  </span>
                             <Input value={this.state.department} onChange={(e) => { this.setState({ department: e.target.value }); }} style={{ width: 200 }} />
                         </div>
-                    </div>
-
-                    <div className="clearfix">
-	                 	<div className="half-item">
+	                 	<div>
 	                   		<span className="item-title">网址:  </span>
 	                     	<Input value={this.state.website} onChange={(e) => { this.setState({ website: e.target.value }); }} style={{ width: 200 }} />
 	                	</div>
-                    </div>
-                    <div className="clearfix">
-                    	<div className="half-item">
+                    	<div>
 	                   		<span className="item-title">账号:  </span>
 	                     	<Input value={this.state.accountNumber} onChange={(e) => { this.setState({ accountNumber: e.target.value }); }} style={{ width: 200 }} />
 	                	</div>
-	                </div>
-	                <div className="clearfix">
-                    	<div className="half-item">
+                    	<div>
 	                   		<span className="item-title">密码:  </span>
 	                     	<Input value={this.state.password} onChange={(e) => { this.setState({ password: e.target.value }); }} style={{ width: 200 }} />
 	                	</div>
-	                </div>
                 </Modal>
             </div>
         );

+ 7 - 19
js/component/manageCenter/servicesManage/technology/websiteChange.jsx

@@ -72,11 +72,10 @@ const WebsiteChangeFrom = Form.create()(React.createClass({
                         this.props.form.resetFields();
                         this.state.targetKeys = [];
                         this.state.selectedKeys = [];
-                        this.props.spinState(false);
                     } else {
                         message.warning(data.error[0].message);
-                        this.props.spinState(false);
-                    }
+                    };
+                    this.props.spinState(false);
                 }.bind(this));
             }
         });
@@ -105,23 +104,19 @@ const WebsiteChangeFrom = Form.create()(React.createClass({
         const { getFieldDecorator } = this.props.form;
         const theData = this.state.data;
         const formItemLayout = {
-            labelCol: { span: 4 },
-            wrapperCol: { span: 6 },
+            labelCol: { span: 8 },
+            wrapperCol: { span: 16 },
         };
         const _me = this;
         if (this.state.data) {
             return (
                 <Form onSubmit={this.handleSubmit} id="highTechApply-form">
-                    <div className="half-item">
                         <FormItem
-                            labelCol={{ span: 8 }}
-                            wrapperCol={{ span: 12 }}
-                            label="选择公司:"
+                            {...formItemLayout}
+                            label="公司名称:"
                         >
                             <span>{theData.unitName}</span>
                         </FormItem>
-                    </div>
-                    <div className="clearfix">
                         <FormItem
                             {...formItemLayout}
                             label="科技部门名称:"
@@ -132,8 +127,6 @@ const WebsiteChangeFrom = Form.create()(React.createClass({
                                 <Input />
                                 )}
                         </FormItem>
-                    </div>
-                    <div className="clearfix">
                         <FormItem
                             {...formItemLayout}
                             label="网址:"
@@ -144,8 +137,6 @@ const WebsiteChangeFrom = Form.create()(React.createClass({
                                 <Input />
                                 )}
                         </FormItem>
-                    </div>
-                    <div className="clearfix">
                         <FormItem
                             {...formItemLayout}
                             label="账号:"
@@ -156,8 +147,6 @@ const WebsiteChangeFrom = Form.create()(React.createClass({
                                 <Input />
                                 )}
                         </FormItem>
-                    </div>
-                    <div className="clearfix">
                         <FormItem
                             {...formItemLayout}
                             label="密码:"
@@ -168,7 +157,6 @@ const WebsiteChangeFrom = Form.create()(React.createClass({
                                 <Input />
                                 )}
                         </FormItem>
-                    </div>
                     <FormItem style={{ marginTop: '20px' }}>
                         <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
                         <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
@@ -219,7 +207,7 @@ const WebsiteChange = React.createClass({
                 <Spin spinning={this.state.loading} className='spin-box'>
                     <Modal title="编辑科技部门网址" visible={this.state.visible}
                         onOk={this.handleOk} onCancel={this.handleCancel}
-                        width='800px'
+                        width='400px'
                         footer=''
                     >
                         <WebsiteChangeFrom

+ 7 - 21
js/component/manageCenter/servicesManage/technology/websiteManage.jsx

@@ -23,14 +23,15 @@ const Cognizance = React.createClass({
             data: {
                 pageNo: pageNo || 1,
                 pageSize: this.state.pagination.pageSize,
-                province: this.state.province,
                 unitName: this.state.unitName,
             },
             success: function (data) {
-                if (data.error.length || !data.data || !data.data.list) {
-                    message.warning(data.error[0].message);
+                if (!data.data || !data.data.list) {
+                    if ( data.error && data.error.length ){
+                        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({
@@ -65,7 +66,7 @@ const Cognizance = React.createClass({
             method: "get",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + "/api/user/patent/getUnitNames",
+            url: globalConfig.context + "/api/admin/getUnitNames",
             success: function (data) {
                 if (data.error.length || !data.data) {
                     return;
@@ -136,12 +137,6 @@ const Cognizance = React.createClass({
         };
     },
     componentWillMount() {
-        let _me = this;
-        provinceArr.map(function (item) {
-            _me.state.provinceOption.push(
-                <Select.Option value={item} key={item}>{item}</Select.Option>
-            )
-        });
         this.loadData();
         this.getCompanyList();
     },
@@ -163,7 +158,7 @@ const Cognizance = React.createClass({
             if (rowItem.id) {
                 deletedIds.push(rowItem.id)
             }
-        }
+        };
         this.setState({
             selectedRowKeys: [],
             loading: deletedIds.length > 0
@@ -200,7 +195,6 @@ const Cognizance = React.createClass({
         this.loadData();
     },
     reset() {
-        this.state.province = undefined;
         this.state.unitName = undefined;
         this.loadData();
     },
@@ -228,14 +222,6 @@ const Cognizance = React.createClass({
                 </div>
                 
                 <div className="foster-query">
-                    <Select placeholder="选择省份"
-                        style={{ width: 200 }}
-                        value={this.state.province}
-                        showSearch
-                        filterOption={companySearch}
-                        onChange={(e) => { this.setState({ province: e }) }}>
-                        {this.state.provinceOption}
-                    </Select>
                     <Select placeholder="选择公司"
                         style={{ width: 200 }}
                         value={this.state.unitName}

+ 2 - 2
js/component/manageCenter/userManage/leftTab.jsx

@@ -29,10 +29,10 @@ const LeftTab = React.createClass({
                 mode="vertical"
                 className="account-left"
             >
-                <Menu.Item style={{ display: window.showCustomer ? 'none' : 'block' }} key="userList">
+                <Menu.Item style={{ display: window.showUserList ? 'block' : 'none' }} key="userList">
                     个人用户列表
                 </Menu.Item>
-                <Menu.Item style={{ display: window.showCustomer ? 'none' : 'block' }} key="orgList">
+                <Menu.Item style={{ display: window.showOrgList ? 'block' : 'none' }} key="orgList">
                     组织用户列表
                 </Menu.Item>
                 <Menu.Item style={{ display: window.showCustomer ? 'block' : 'none' }} key="customerList">

+ 95 - 20
js/component/manageCenter/userManage/orgCertify.jsx

@@ -54,6 +54,13 @@ const OrgCertify = Form.create()(React.createClass({
                     identityType: thisData.identityType, //组织性质
                     registeredCapital: thisData.registeredCapital, //注册资金
 
+                    firstContacts: thisData.firstContacts,
+                    firstMobile: thisData.firstMobile,
+                    secondContacts: thisData.secondContacts,
+                    secondMobile: thisData.secondMobile,
+                    thirdContacts: thisData.thirdContacts,
+                    thirdMobile: thisData.thirdMobile,
+
                     legalPerson: thisData.legalPerson,
                     legalPersonIdCard: thisData.legalPersonIdCard,
 
@@ -72,7 +79,7 @@ const OrgCertify = Form.create()(React.createClass({
                     paymentDateFormattedDate: thisData.paymentDateFormattedDate,
                     lastYearTaxReportUrl: thisData.lastYearTaxReportUrl,
                     auditStatus: thisData.auditStatus,
-                    process: thisData.process ? String(thisData.process) : undefined
+                    //process: thisData.process ? String(thisData.process) : undefined
                 });
                 this.props.form.resetFields();
             }.bind(this),
@@ -124,6 +131,13 @@ const OrgCertify = Form.create()(React.createClass({
                         licenceNumber: values.licenceNumber,
                         orgCode: values.orgCode,
 
+                        firstContacts: values.firstContacts,
+                        firstMobile: values.firstMobile,
+                        secondContacts: values.secondContacts,
+                        secondMobile: values.secondMobile,
+                        thirdContacts: values.thirdContacts,
+                        thirdMobile: values.thirdMobile,
+
                         bankAccount: values.bankAccount,
                         banks: values.banks,
                         bankBranch: values.bankBranch,
@@ -132,7 +146,7 @@ const OrgCertify = Form.create()(React.createClass({
                         validationAmount: values.validationAmount, //打款金额
                         paymentDateFormattedDate: values.paymentDateFormattedDate ? values.paymentDateFormattedDate.format("YYYY-MM-DD") : undefined,
                         auditStatus: values.auditStatus,
-                        process: this.state.process,
+                        //process: this.state.process,
 
                         licenceArea: licenceA,
                         licenceCity: licenceC,
@@ -246,6 +260,66 @@ const OrgCertify = Form.create()(React.createClass({
                 </FormItem>
                 <FormItem
                     {...formItemLayout}
+                    label="第一联系人"
+                >
+                    {getFieldDecorator('firstContacts', {
+                        initialValue: this.state.firstContacts
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="第一联系人电话"
+                >
+                    {getFieldDecorator('firstMobile', {
+                        initialValue: this.state.firstMobile
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="第二联系人"
+                >
+                    {getFieldDecorator('secondContacts', {
+                        initialValue: this.state.secondContacts
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="第二联系人电话"
+                >
+                    {getFieldDecorator('secondMobile', {
+                        initialValue: this.state.secondMobile
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="第三联系人"
+                >
+                    {getFieldDecorator('thirdContacts', {
+                        initialValue: this.state.thirdContacts
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="联系人电话"
+                >
+                    {getFieldDecorator('thirdMobile', {
+                        initialValue: this.state.thirdMobile
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
                     label="法人"
                 >
                     {getFieldDecorator('legalPerson', {
@@ -425,23 +499,6 @@ const OrgCertify = Form.create()(React.createClass({
                         </Select>
                         )}
                 </FormItem>
-                <FormItem
-                    {...formItemLayout}
-                    label="认证步骤"
-                >
-                    {getFieldDecorator('process', {
-                        initialValue: this.state.process
-                    })(
-                        <Select placeholder="选择要修改的认证步骤" style={{ width: 200 }}
-                            onChange={(e) => { this.state.process = e }}>
-                            {
-                                certifyStepList.map(function (item, i) {
-                                    return <Select.Option key={i} value={item.value} >{item.key}</Select.Option>
-                                })
-                            }
-                        </Select>
-                        )}
-                </FormItem>
                 <FormItem wrapperCol={{ span: 12, offset: 4 }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
                     <Button className="set-submit" type="ghost" onClick={this.handleCancel} >取消</Button>
@@ -451,4 +508,22 @@ const OrgCertify = Form.create()(React.createClass({
     }
 }));
 
-export default OrgCertify;
+export default OrgCertify;
+
+                // <FormItem
+                //     {...formItemLayout}
+                //     label="认证步骤"
+                // >
+                //     {getFieldDecorator('process', {
+                //         initialValue: this.state.process
+                //     })(
+                //         <Select placeholder="选择要修改的认证步骤" style={{ width: 200 }}
+                //             onChange={(e) => { this.state.process = e }}>
+                //             {
+                //                 certifyStepList.map(function (item, i) {
+                //                     return <Select.Option key={i} value={item.value} >{item.key}</Select.Option>
+                //                 })
+                //             }
+                //         </Select>
+                //         )}
+                // </FormItem>

+ 20 - 19
js/component/manageCenter/userManage/userDesc.jsx

@@ -109,7 +109,7 @@ const UserForm = Form.create()(React.createClass({
                         amountMoney: values.amountMoney,
                         auditStatus: values.auditStatus,
                         paymentDateFormattedDate: values.paymentDateFormattedDate ? values.paymentDateFormattedDate.format("YYYY-MM-DD") : undefined,
-                        process: this.state.process
+                        //process: this.state.process
                     }
                 }).done(function (data) {
                     if (!data.error.length) {
@@ -298,23 +298,6 @@ const UserForm = Form.create()(React.createClass({
                         </Select>
                         )}
                 </FormItem>
-                <FormItem
-                    {...formItemLayout}
-                    label="认证步骤"
-                >
-                    {getFieldDecorator('process', {
-                        initialValue: this.state.process
-                    })(
-                        <Select placeholder="选择要修改的认证步骤" style={{ width: 200 }}
-                            onChange={(e) => { this.state.process = e }}>
-                            {
-                                certifyStepList.map(function (item, i) {
-                                    return <Select.Option key={i} value={item.value} >{item.key}</Select.Option>
-                                })
-                            }
-                        </Select>
-                        )}
-                </FormItem>
                 <FormItem wrapperCol={{ span: 12, offset: 4 }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
                 </FormItem>
@@ -375,4 +358,22 @@ const PatentDesc = React.createClass({
     },
 });
 
-export default PatentDesc;
+export default PatentDesc;
+
+//                 <FormItem
+//                     {...formItemLayout}
+//                     label="认证步骤"
+//                 >
+//                     {getFieldDecorator('process', {
+//                         initialValue: this.state.process
+//                     })(
+//                         <Select placeholder="选择要修改的认证步骤" style={{ width: 200 }}
+//                             onChange={(e) => { this.state.process = e }}>
+//                             {
+//                                 certifyStepList.map(function (item, i) {
+//                                     return <Select.Option key={i} value={item.value} >{item.key}</Select.Option>
+//                                 })
+//                             }
+//                         </Select>
+//                         )}
+//                 </FormItem>

+ 88 - 2
js/component/tools.js

@@ -72,6 +72,46 @@ module.exports = {
         changeProvince();
         cmbProvince.onchange = changeProvince;
     },
+    provinceSelect() {
+        let option = [];
+        provinceList.map(function (item, i) {
+            if ( item.cityList.length ) {
+                let cityArr = [];
+                item.cityList.map(function(city,n){
+                    if ( city.areaList.length ) {
+                        let areaArr = [];
+                        city.areaList.map(function(area,j){
+                            areaArr.push({
+                                value:area,
+                                label:area
+                            });
+                        });
+                        cityArr.push({
+                            value:city.name,
+                            label:city.name,
+                            children:areaArr
+                        });
+                    } else {
+                        cityArr.push({
+                            value:city.name,
+                            label:city.name
+                        });
+                    };
+                });
+                option.push({
+                    value:item.name,
+                    label:item.name,
+                    children:cityArr
+                });
+            } else {
+                option.push({
+                    value:item.name,
+                    label:item.name
+                });
+            };
+        });
+        return option;
+    },
     splitUrl: function (string, i, url) {
         let theList = [];
         let theArr = [];
@@ -324,8 +364,13 @@ module.exports = {
     copyrightDownloadFile: function (id, sign, url) {
         window.open(globalConfig.context + url + '?id=' + id + '&sign=' + sign)
     },
-    newDownloadFile: function (id, sign, url) {
-        window.open(globalConfig.context + url + '?id=' + id + '&sign=' + sign)
+    newDownloadFile: function (id, sign, url,type) {
+        if (!type ) {
+            window.open(globalConfig.context + url + '?id=' + id + '&sign=' + sign);
+        };
+        if ( type ) {
+            window.open(globalConfig.context + url + '?id=' + id + '&sign=' + sign + '&type=' + type);
+        };
     },
     companySearch(input, option) {
         return option.props.children.indexOf(input) >= 0
@@ -440,5 +485,46 @@ module.exports = {
             }
         });
         return theOption;
+    },
+    //高企培育资料完成情况(比重)
+    getProportion(uid,callback){
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/proportion',
+            data:{ "uid": uid },
+            success: function (data) {
+                if (!data.data) {
+                    if ( data.error && data.error.length ) {
+                        message.warning(data.error[0].message);
+                    };
+                    data.data = {}
+                    callback(data.data);
+                };
+                callback(data.data);
+            }
+        });
+    },
+    saveProportion(id,sign,status){
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/confirmProportion',
+            data:{ 
+                "id": id,
+                "sign":sign,
+                "status":status
+            },
+            success: function (data) {
+                if (!data.data) {
+                    if ( data.error && data.error.length ) {
+                        message.warning(data.error[0].message);
+                    };
+                    return;
+                };
+            }
+        });
     }
 }

+ 8 - 4
js/component/yearSelect.jsx

@@ -8,7 +8,7 @@ const Yearselect = React.createClass({
     onChange(e) {
         this.props.handleyear(e);
         this.setState({
-            Year:e
+            Year: e
         });
     },
     componentWillMount() {
@@ -22,14 +22,18 @@ const Yearselect = React.createClass({
         };
         this.state.defYear = this.state.thisYear.toString();
     },
-    componentWillUpdate(nextProps){
-        if ( nextProps.defValue ) {
+    componentWillUpdate(nextProps) {
+        if (nextProps.defValue) {
             this.state.Year = nextProps.defValue;
         };
+        this.state.Year = nextProps.value;
     },
     render() {
         return (
-            <Select value={this.state.Year} className="year-select" onChange={this.onChange}>
+            <Select value={this.state.Year} className="year-select"
+                placeholder="请选择年份"
+                style={{ width: 200 }}
+                onChange={this.onChange}>
                 {this.state.theOption}
             </Select>
         )

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "afanti",
-  "version": "1.0.16",
+  "version": "1.0.17",
   "description": "",
   "main": "index.js",
   "scripts": {