Forráskód Böngészése

添加客户列表,状态流转时间,bug修复

yee 8 éve%!(EXTRA string=óta)
szülő
commit
23fe4ad6e9
34 módosított fájl, 769 hozzáadás és 487 törlés
  1. 2 2
      html/index.html
  2. 5 5
      js/component/account/services/achievement.jsx
  3. 5 6
      js/component/account/services/activity.jsx
  4. 3 3
      js/component/account/services/activityCostList.jsx
  5. 12 0
      js/component/account/services/cognizance.jsx
  6. 2 2
      js/component/account/services/copyright/comPatentChange.jsx
  7. 6 6
      js/component/account/services/finance.jsx
  8. 7 7
      js/component/account/services/honorList.jsx
  9. 4 4
      js/component/account/services/intellectualDesc.jsx
  10. 1 1
      js/component/account/services/leftTab.jsx
  11. 26 20
      js/component/account/services/orgTechCenter.jsx
  12. 8 8
      js/component/account/services/patentDesc.jsx
  13. 8 8
      js/component/account/services/ratepay.jsx
  14. 3 3
      js/component/account/services/techProduct.jsx
  15. 43 18
      js/component/account/services/technology.jsx
  16. 40 96
      js/component/account/services/technologyAdd.jsx
  17. 80 151
      js/component/account/services/technologyChange.jsx
  18. 10 10
      js/component/account/set/hrSituation.jsx
  19. 4 4
      js/component/dataDic.js
  20. 2 2
      js/component/manageCenter/servicesManage/copyright/comPatentChange.jsx
  21. 4 2
      js/component/manageCenter/servicesManage/highTech/fosterDesc/orgTechCenter.jsx
  22. 1 2
      js/component/manageCenter/servicesManage/highTech/highTechApply.jsx
  23. 41 40
      js/component/manageCenter/servicesManage/patent/comPatentDesc.jsx
  24. 1 1
      js/component/manageCenter/servicesManage/patent/comprehensive.jsx
  25. 4 17
      js/component/manageCenter/servicesManage/patent/comprehensive.less
  26. 4 5
      js/component/manageCenter/servicesManage/technology/applyChange.jsx
  27. 4 2
      js/component/manageCenter/set/modal.jsx
  28. 24 17
      js/component/manageCenter/topTab.jsx
  29. 9 1
      js/component/manageCenter/userManage/content.jsx
  30. 373 0
      js/component/manageCenter/userManage/customerList.jsx
  31. 9 6
      js/component/manageCenter/userManage/leftTab.jsx
  32. 2 16
      js/component/manageCenter/userManage/orgList.jsx
  33. 8 22
      js/component/manageCenter/userManage/userList.jsx
  34. 14 0
      js/component/tools.js

+ 2 - 2
html/index.html

@@ -18,8 +18,8 @@
 			<div class="container">
 				<div class="lt">欢迎进入科技认知计算交易平台!</div>
 				<div class="rt">
-					<a href="#" class="login">登录</a>
-					<a href="#">注册</a>
+					<a href= { globalConfig.staticHost + globalConfig.context + '/user/login.html'} class="login">登录</a>
+					<a href= { globalConfig.staticHost + globalConfig.context + '/user/signIn.html'}>注册</a>
 				</div>
 			</div>
 		</header>

+ 5 - 5
js/component/account/services/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 './techProduct.less';
-import { getConversionForm, beforeUploadFile, downloadFile } from '../../tools.js';
+import { getConversionForm, beforeUploadFile, newDownloadFile } from '../../tools.js';
 import { conversionFormList, technicalSourceList } from '../../dataDic.js';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -160,7 +160,7 @@ const AchievementDescFrom = Form.create()(React.createClass({
                 <div className="hrSituation-roster">
                     <Upload
                         name="ratepay"
-                        action={globalConfig.context + "/api/user/cognizance/upload"}
+                        action={globalConfig.context + "/api/user/cognizance/uploadAchievement"}
                         data={{ 'sign': 'achievement' }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
@@ -183,7 +183,7 @@ const AchievementDescFrom = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传科技成果附件 </Button>
                     </Upload>
-                    <p style={{ marginTop: '10px' }}>{theData.enclosureUrl ? <a onClick={downloadFile.bind(null, theData.enclosureUrl, theData.enclosureDownloadFileName)}>{theData.enclosureDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ marginTop: '10px' }}>{theData.enclosureUrl ? <a onClick={newDownloadFile.bind(null, theData.id, 'achievement', '/api/user/cognizance/downloadAchievement')}>{theData.enclosureDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <FormItem style={{ marginTop: '20px' }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
@@ -297,7 +297,7 @@ const Achievement = React.createClass({
                     year: thisdata.year,
                     enclosureUrl: thisdata.enclosureUrl,
                     enclosureDownloadFileName: thisdata.enclosureDownloadFileName,
-                    enclosure: [thisdata.enclosureUrl, thisdata.enclosureDownloadFileName]
+                    enclosure: [thisdata.id, thisdata.enclosureDownloadFileName]
                 });
             };
             this.state.activityNumberList = activityNumber.data;
@@ -357,7 +357,7 @@ const Achievement = React.createClass({
                     dataIndex: 'enclosure',
                     key: 'enclosure',
                     render: (text) => {
-                        return <a onClick={downloadFile.bind(null, text[0], text[1])}>{text[1]}</a>
+                        return <a onClick={newDownloadFile.bind(null, text[0], 'achievement', '/api/user/cognizance/downloadAchievement')}>{text[1]}</a>
                     }
                 }
             ],

+ 5 - 6
js/component/account/services/activity.jsx

@@ -2,7 +2,7 @@ import React from 'react';
 import { Icon, Button, Upload, Input, Spin, Table, message, Select, Modal, DatePicker, Cascader, Transfer, InputNumber } from 'antd';
 import { technicalSourceList } from '../../dataDic.js';
 import { techFieldList } from '../../DicTechFieldList.js';
-import { getTechField, getTechnicalSource, beforeUploadFile, downloadFile } from '../../tools.js';
+import { getTechField, getTechnicalSource, beforeUploadFile, newDownloadFile } from '../../tools.js';
 import './activity.less';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
@@ -73,6 +73,7 @@ const ActivityDesc = React.createClass({
     componentWillReceiveProps(nextProps) {
         this.state.visible = nextProps.showDesc;
         if (!this.props.showDesc && nextProps.showDesc) {
+            this.state.id = nextProps.data.id;
             this.state.activityName = nextProps.data.activityName;
             this.state.activityNumber = nextProps.data.activityNumber;
             this.state.startDateFormattedDate = nextProps.data.startDateFormattedDate;
@@ -251,7 +252,7 @@ const ActivityDesc = React.createClass({
                         <div style={{ width: '50%' }}>
                             <Upload
                                 name="ratepay"
-                                action={globalConfig.context + "/api/user/cognizance/upload"}
+                                action={globalConfig.context + "/api/user/cognizance/uploadProof"}
                                 data={{ 'sign': 'proof' }}
                                 beforeUpload={beforeUploadFile}
                                 showUploadList={false}
@@ -274,7 +275,7 @@ const ActivityDesc = React.createClass({
                             >
                                 <Button><Icon type="upload" /> 上传立项证明材料 </Button>
                             </Upload>
-                            <p>{this.state.proofUrl ? <a onClick={downloadFile.bind(null, this.state.proofUrl, this.state.proofDownloadFileName)}>{this.state.proofDownloadFileName}</a> : <span>未上传!</span>}</p>
+                            <p>{this.state.proofUrl ? <a onClick={newDownloadFile.bind(null, this.state.id, 'proof', '/api/user/cognizance/downloadProof')}>{this.state.proofDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                         </div>
                     </Modal>
                 </div>
@@ -300,9 +301,7 @@ const Activity = React.createClass({
                 pageNo: pageNo || 1,
                 pageSize: this.state.pagination.pageSize,
                 activityNumber: this.state.activityNumber,
-                activityName: this.state.activityName,
-                startDate: this.state.startDate,
-                endDate: this.state.endDate
+                activityName: this.state.activityName
             }
         }), $.ajax({
             method: "get",

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

@@ -1,7 +1,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, downloadFile } from '../../tools.js';
+import { beforeUploadFile, newDownloadFile } from '../../tools.js';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -266,7 +266,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                 <div style={{ width: '50%', marginTop: '20px' }}>
                     <Upload
                         name="ratepay"
-                        action={globalConfig.context + "/api/user/cognizance/upload"}
+                        action={globalConfig.context + "/api/user/cognizance/uploadActivityCost"}
                         data={{ 'sign': 'activity_cost_account' }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
@@ -289,7 +289,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传研发费用台账 </Button>
                     </Upload>
-                    <p style={{ marginTop: '20px' }}>{theData.accountUrl ? <a onClick={downloadFile.bind(null, theData.accountUrl, theData.accountDownloadFileName)}>{theData.accountDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ marginTop: '20px' }}>{theData.accountUrl ? <a onClick={newDownloadFile.bind(null, theData.id, 'activity_cost_account', '/api/user/cognizance/downloadActivityCost')}>{theData.accountDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <FormItem style={{ marginTop: '20px' }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>

+ 12 - 0
js/component/account/services/cognizance.jsx

@@ -48,6 +48,8 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                     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({
@@ -264,6 +266,16 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                     <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>

+ 2 - 2
js/component/account/services/copyright/comPatentChange.jsx

@@ -329,7 +329,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传软著申请书 </Button>
                     </Upload>
-                    <p style={{ margin: '10px 0' }}>{theData.applicationUrl ? <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_apply', '/api/user/copyright/download')}>{theData.applicationUrlDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ margin: '10px 0' }}>{theData.applicationUrl ? <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_apply', '/api/user/copyright/download')}>软著申请书</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <div className="hrSituation-roster">
                     <Upload
@@ -357,7 +357,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传软著证书 </Button>
                     </Upload>
-                    <p style={{ margin: '10px 0' }}>{theData.certificateUrl ? <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_auth', '/api/user/copyright/download')}>{theData.certificateUrlDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ margin: '10px 0' }}>{theData.certificateUrl ? <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_auth', '/api/user/copyright/download')}>软著证书</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <p>状态流转记录: </p>
                 <Table style={{ margin: '10px 0' }}

+ 6 - 6
js/component/account/services/finance.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
 import { Icon, Form, Button, Input, Spin, Table, message, Select, Modal, InputNumber, Upload } from 'antd';
 import './techProduct.less';
-import { beforeUploadFile, downloadFile } from '../../tools.js';
+import { beforeUploadFile, newDownloadFile } from '../../tools.js';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -215,8 +215,8 @@ const FinanceDescFrom = Form.create()(React.createClass({
                 <div className="hrSituation-roster">
                     <Upload
                         name="ratepay"
-                        action={globalConfig.context + "/api/user/cognizance/upload"}
-                        data={{ 'sign': 'finance_' + (this.state.year || theData.year) }}
+                        action={globalConfig.context + "/api/user/cognizance/uploadFinance"}
+                        data={{ 'sign': 'finance', year: this.state.year || theData.year }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -238,7 +238,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传企业财务报表 </Button>
                     </Upload>
-                    <p style={{ marginTop: '10px' }}>{theData.financeUrl ? <a onClick={downloadFile.bind(null, theData.financeUrl, theData.financeDownloadFileName)}>{theData.financeDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ marginTop: '10px' }}>{theData.financeUrl ? <a onClick={newDownloadFile.bind(null, theData.id, 'finance', '/api/user/cognizance/downloadFinance')}>{theData.financeDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <FormItem style={{ marginTop: '20px' }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
@@ -344,7 +344,7 @@ const Finance = React.createClass({
                     year: thisdata.year,
                     financeUrl: thisdata.financeUrl,
                     financeDownloadFileName: thisdata.financeDownloadFileName,
-                    finance: [thisdata.financeUrl, thisdata.financeDownloadFileName]
+                    finance: [thisdata.id, thisdata.financeDownloadFileName]
                 });
             };
             this.state.pagination.current = data.data.pageNo;
@@ -410,7 +410,7 @@ const Finance = React.createClass({
                     dataIndex: 'finance',
                     key: 'finance',
                     render: (text) => {
-                        return <a onClick={downloadFile.bind(null, text[0], text[1])}>{text[1]}</a>
+                        return <a onClick={newDownloadFile.bind(null, text[0], 'finance', '/api/user/cognizance/downloadFinance')}>{text[1]}</a>
                     }
                 }
             ],

+ 7 - 7
js/component/account/services/honorList.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
 import { Icon, Form, Button, Input, Spin, Table, message, Modal, Upload, DatePicker } from 'antd';
 import './techProduct.less';
-import { beforeUploadFile, downloadFile } from '../../tools.js';
+import { beforeUploadFile, newDownloadFile } from '../../tools.js';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -97,8 +97,8 @@ const HonorListDescFrom = Form.create()(React.createClass({
                 <div className="hrSituation-roster">
                     <Upload
                         name="ratepay"
-                        action={globalConfig.context + "/api/user/cognizance/upload"}
-                        data={{ 'sign': 'achievement' }}
+                        action={globalConfig.context + "/api/user/cognizance/uploadHonor"}
+                        data={{ 'sign': 'honor' }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -118,9 +118,9 @@ const HonorListDescFrom = Form.create()(React.createClass({
                             }
                         }}
                     >
-                        <Button><Icon type="upload" /> 上传科技成果附件 </Button>
+                        <Button><Icon type="upload" /> 企业相关资质证书 </Button>
                     </Upload>
-                    <p style={{ marginTop: '10px' }}>{theData.enclosureUrl ? <a onClick={downloadFile.bind(null, theData.enclosureUrl, theData.enclosureDownloadFileName)}>{theData.enclosureDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ marginTop: '10px' }}>{theData.enclosureUrl ? <a onClick={newDownloadFile.bind(null, theData.id, 'honor', '/api/user/cognizance/downloadHonor')}>{theData.enclosureDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <FormItem style={{ marginTop: '20px' }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
@@ -218,7 +218,7 @@ const HonorList = React.createClass({
                     issuingTime: thisdata.issuingTime,
                     enclosureUrl: thisdata.enclosureUrl,
                     enclosureDownloadFileName: thisdata.enclosureDownloadFileName,
-                    enclosure: [thisdata.enclosureUrl, thisdata.enclosureDownloadFileName],
+                    enclosure: [thisdata.id, thisdata.enclosureDownloadFileName],
                     issuingTimeFormattedDate: thisdata.issuingTimeFormattedDate,
                     issuingMechanism: thisdata.issuingMechanism
                 });
@@ -270,7 +270,7 @@ const HonorList = React.createClass({
                     dataIndex: 'enclosure',
                     key: 'enclosure',
                     render: (text) => {
-                        return <a onClick={downloadFile.bind(null, text[0], text[1])}>{text[1]}</a>
+                        return <a onClick={newDownloadFile.bind(null, text[0], 'honor', '/api/user/cognizance/downloadHonor')}>{text[1]}</a>
                     }
                 }
             ],

+ 4 - 4
js/component/account/services/intellectualDesc.jsx

@@ -2,7 +2,7 @@ import React from 'react';
 import { Icon, Modal, Button, Form, message, Input, Spin, Select, DatePicker, Upload } from 'antd';
 import './patent.less';
 import { intellectualGetList, catagoryList } from '../../dataDic.js';
-import { beforeUploadFile, downloadFile } from '../../tools.js';
+import { beforeUploadFile, newDownloadFile } from '../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
 import moment from 'moment';
@@ -173,8 +173,8 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 <div>
                     <Upload
                         name="ratepay"
-                        action={globalConfig.context + "/api/user/cognizance/upload"}
-                        data={{ 'sign': 'property_ritht' }}
+                        action={globalConfig.context + "/api/user/cognizance/uploadPropertyRight"}
+                        data={{ 'sign': 'property_right' }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -196,7 +196,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传知识产权证书 </Button>
                     </Upload>
-                    <p style={{ margin: '10px 0' }}>{theData.propertyRightUrl ? <a onClick={downloadFile.bind(null, theData.propertyRightUrl, theData.propertyRightDownloadFileName)}>{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>
                 </div>
                 <FormItem>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>

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

@@ -77,7 +77,7 @@ const LeftTab = React.createClass({
                         高新技术产品(服务)情况
                     </Menu.Item>
                     <Menu.Item key="ratepay">
-                        纳税申报信息
+                        所得税纳税申报信息
                     </Menu.Item>
                     <Menu.Item key="finance">
                         财务报表信息

+ 26 - 20
js/component/account/services/orgTechCenter.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
 import { Icon, Form, Button, Input, Spin, Table, message, Modal, Upload, DatePicker } from 'antd';
 import './techProduct.less';
-import { beforeUploadFile, downloadFile } from '../../tools.js';
+import { beforeUploadFile, newDownloadFile } 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 CenterListDescFrom = Form.create()(React.createClass({
                         projectName: values.projectName,
                         projectTimeFormattedDate: values.projectTimeFormattedDate.format("YYYY-MM-DD"),
                         institution: values.institution,
-                        termTimeFormattedDate: values.termTimeFormattedDate.format("YYYY-MM-DD"),
+                        termStartTimeFormattedDate: values.termTimeFormattedDate[0].format("YYYY-MM-DD"),
+                        termEndTimeFormattedDate: values.termTimeFormattedDate[1].format("YYYY-MM-DD"),
                         protocolUrl: this.state.protocolUrl
                     }
                 }).done(function (data) {
@@ -47,6 +48,7 @@ const CenterListDescFrom = Form.create()(React.createClass({
     render() {
         const FormItem = Form.Item;
         const { getFieldDecorator } = this.props.form;
+        const { RangePicker } = DatePicker;
         const theData = this.props.data;
         const formItemLayout = {
             labelCol: { span: 4 },
@@ -69,7 +71,7 @@ const CenterListDescFrom = Form.create()(React.createClass({
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
-                        label="名称"
+                        label="项目名称"
                     >
                         {getFieldDecorator('projectName', {
                             rules: [{ required: true, message: '此项为必填项!' }],
@@ -83,15 +85,15 @@ const CenterListDescFrom = Form.create()(React.createClass({
                         label="期限"
                     >
                         {getFieldDecorator('termTimeFormattedDate', {
-                            rules: [{ type: 'object', required: true, message: '此项为必填项!' }],
-                            initialValue: theData.termTimeFormattedDate ? moment(theData.termTimeFormattedDate) : null
+                            rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
+                            initialValue: theData.termStartTimeFormattedDate && theData.termEndTimeFormattedDate ? [moment(theData.termStartTimeFormattedDate), moment(theData.termEndTimeFormattedDate)] : [null, null]
                         })(
-                            <DatePicker />
+                            <RangePicker />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
-                        label="大学机构"
+                        label="科研院所"
                     >
                         {getFieldDecorator('institution', {
                             rules: [{ required: true, message: '此项为必填项!' }],
@@ -104,7 +106,7 @@ const CenterListDescFrom = Form.create()(React.createClass({
                 <div className="hrSituation-roster">
                     <Upload
                         name="ratepay"
-                        action={globalConfig.context + "/api/user/cognizance/upload"}
+                        action={globalConfig.context + "/api/user/cognizance/uploadProtocol"}
                         data={{ 'sign': 'protocol' }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
@@ -127,7 +129,7 @@ const CenterListDescFrom = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传研发费用台账 </Button>
                     </Upload>
-                    <p style={{ marginTop: '10px' }}>{theData.protocolUrl ? <a onClick={downloadFile.bind(null, theData.protocolUrl, theData.protocolDownloadFileName)}>{theData.protocolDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ marginTop: '10px' }}>{theData.protocolUrl ? <a onClick={newDownloadFile.bind(null, theData.id, 'protocol', '/api/user/cognizance/downloadProtocol')}>{theData.protocolDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <FormItem style={{ marginTop: '20px' }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
@@ -255,10 +257,11 @@ const CenterList = React.createClass({
                     projectName: thisdata.projectName,
                     protocolDownloadFileName: thisdata.protocolDownloadFileName,
                     protocolUrl: thisdata.protocolUrl,
-                    protocol: [thisdata.protocolUrl, thisdata.protocolDownloadFileName],
+                    protocol: [thisdata.id, thisdata.protocolDownloadFileName],
                     institution: thisdata.institution,
-                    termTimeFormattedDate: thisdata.termTimeFormattedDate
-
+                    termTimeFormattedDate: [thisdata.termStartTimeFormattedDate, thisdata.termEndTimeFormattedDate],
+                    termStartTimeFormattedDate: thisdata.termStartTimeFormattedDate,
+                    termEndTimeFormattedDate: thisdata.termEndTimeFormattedDate
                 });
             };
             this.state.pagination.current = data.data.pageNo;
@@ -296,15 +299,18 @@ const CenterList = React.createClass({
                     dataIndex: 'projectTimeFormattedDate',
                     key: 'projectTimeFormattedDate'
                 }, {
-                    title: '名称',
+                    title: '项目名称',
                     dataIndex: 'projectName',
                     key: 'projectName'
                 }, {
                     title: '期限',
                     dataIndex: 'termTimeFormattedDate',
-                    key: 'termTimeFormattedDate'
+                    key: 'termTimeFormattedDate',
+                    render: (text) => {
+                        return text[0] + ' - ' + text[1];
+                    }
                 }, {
-                    title: '大学机构',
+                    title: '科研院所',
                     dataIndex: 'institution',
                     key: 'institution'
                 }, {
@@ -312,7 +318,7 @@ const CenterList = React.createClass({
                     dataIndex: 'protocol',
                     key: 'protocol',
                     render: (text) => {
-                        return <a onClick={downloadFile.bind(null, text[0], text[1])}>{text[1]}</a>
+                        return <a onClick={newDownloadFile.bind(null, text[0], 'protocol', '/api/user/cognizance/downloadProtocol')}>{text[1]}</a>
                     }
                 }
             ],
@@ -451,7 +457,7 @@ const CenterList = React.createClass({
                     <div style={{ margin: '10px 0' }}>
                         <Upload
                             name="ratepay"
-                            action={globalConfig.context + "/api/user/cognizance/upload"}
+                            action={globalConfig.context + "/api/user/cognizance/uploadInstitution"}
                             data={{ 'sign': 'institution' }}
                             beforeUpload={beforeUploadFile}
                             showUploadList={false}
@@ -472,13 +478,13 @@ const CenterList = React.createClass({
                                 }
                             }}
                         >
-                            <Button disabled={this.state.ButtonDisabled}><Icon type="upload" /> 上传研发费用台账 </Button>
+                            <Button disabled={this.state.ButtonDisabled}><Icon type="upload" /> 上传研发部门制度 </Button>
                         </Upload>
-                        <p style={{ marginTop: '10px' }}>{this.state.systemUrl ? <a onClick={downloadFile.bind(null, this.state.systemUrl, this.state.systemDownloadFileName)}>{this.state.systemDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                        <p style={{ marginTop: '10px' }}>{this.state.systemUrl ? <a onClick={newDownloadFile.bind(null, this.state.cid, 'institution', '/api/user/cognizance/downloadInstitution')}>{this.state.systemDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                     </div>
                 </div>
                 <Button disabled={this.state.ButtonDisabled} type='primary' onClick={this.saveCenterDetail}>保存</Button>
-                <div className="content-title" style={{marginTop:'10px'}}>
+                <div className="content-title" style={{ marginTop: '10px' }}>
                     <span>产学研情况</span>
                 </div>
                 <div className="user-search">

+ 8 - 8
js/component/account/services/patentDesc.jsx

@@ -111,28 +111,28 @@ const PatentDesc = React.createClass({
                             </div>
                             <div className="patent-download">
                                 <span>专利相关材料:</span>
-                                {theData.patentWritingUrl !== null && theData.patentWritingUrl !== undefined && theData.patentWritingUrl !== '' ?
+                                {theData.patentWritingUrl ?
                                     <p className="download-file">
-                                        <a onClick={newDownloadFile.bind(this, theData.id, 'patent_writing', '/api/user/patent/download')}>{theData.patentWritingDownloadFileName}</a>
+                                        <a onClick={newDownloadFile.bind(this, theData.id, 'patent_writing', '/api/user/patent/download')}>专利稿件下载</a>
                                         {theData.confirmState == 0 ? <Button onClick={this.confirmButton}>确认稿件</Button> : <span></span>}
                                     </p> :
                                     <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />专利稿件未上传</p>
                                 }
-                                {theData.authorizationNoticeUrl !== null && theData.authorizationNoticeUrl !== undefined && theData.authorizationNoticeUrl !== '' ?
+                                {theData.authorizationNoticeUrl  ?
                                     <p className="download-file">
-                                        <a onClick={newDownloadFile.bind(this, theData.id, 'authorization_notice', '/api/user/patent/download')}>{theData.authorizationNoticeDownloadFileName}</a>
+                                        <a onClick={newDownloadFile.bind(this, theData.id, 'authorization_notice', '/api/user/patent/download')}>授权通知书下载</a>
                                     </p> :
                                     <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />授权通知书未上传</p>
                                 }
-                                {theData.patentCertificateUrl !== null && theData.patentCertificateUrl !== undefined && theData.patentCertificateUrl !== '' ?
+                                {theData.patentCertificateUrl  ?
                                     <p className="download-file">
-                                        <a onClick={newDownloadFile.bind(this, theData.id, 'patent_certificate', '/api/user/patent/download')}>{theData.patentCertificateDownloadFileName}</a>
+                                        <a onClick={newDownloadFile.bind(this, theData.id, 'patent_certificate', '/api/user/patent/download')}>专利证书下载</a>
                                     </p> :
                                     <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />专利证书未上传</p>
                                 }
-                                {theData.patentProryStatementUrl !== null && theData.patentProryStatementUrl !== undefined && theData.patentProryStatementUrl !== '' ?
+                                {theData.patentProryStatementUrl  ?
                                     <p className="download-file">
-                                        <a onClick={newDownloadFile.bind(this, theData.id, 'patent_prory_statement', '/api/user/patent/download')}>{theData.patentProryStatementDownloadFileName}</a>
+                                        <a onClick={newDownloadFile.bind(this, theData.id, 'patent_prory_statement', '/api/user/patent/download')}>专利代理委托书下载</a>
                                     </p> :
                                     <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />专利代理委托书未上传</p>
                                 }

+ 8 - 8
js/component/account/services/ratepay.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
 import { Icon, Form, Button, Input, Spin, Table, message, Select, Modal, InputNumber, Upload } from 'antd';
 import './techProduct.less';
-import { beforeUploadFile, downloadFile } from '../../tools.js';
+import { beforeUploadFile, newDownloadFile } from '../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
@@ -193,8 +193,8 @@ const RatepayDescFrom = Form.create()(React.createClass({
                 <div className="hrSituation-roster">
                     <Upload
                         name="ratepay"
-                        action={globalConfig.context + "/api/user/cognizance/upload"}
-                        data={{ 'sign': 'ratepay_' + (this.state.year || theData.year) }}
+                        action={globalConfig.context + "/api/user/cognizance/uploadRatepay"}
+                        data={{ 'sign': 'ratepay', year: this.state.year || theData.year }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -216,7 +216,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传企业纳税申报表 </Button>
                     </Upload>
-                    <p style={{ marginTop: '10px' }}>{theData.taxReturnUrl ? <a onClick={downloadFile.bind(null, theData.taxReturnUrl, theData.taxReturnDownloadFileName)}>{theData.taxReturnDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <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>
                 <FormItem style={{ marginTop: '20px' }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
@@ -263,7 +263,7 @@ const RatepayDesc = 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='800px'
                         footer=''
@@ -320,7 +320,7 @@ const Ratepay = React.createClass({
                     year: thisdata.year,
                     taxReturnUrl: thisdata.taxReturnUrl,
                     taxReturnDownloadFileName: thisdata.taxReturnDownloadFileName,
-                    taxReturn: [thisdata.taxReturnUrl, thisdata.taxReturnDownloadFileName]
+                    taxReturn: [thisdata.id, thisdata.taxReturnDownloadFileName]
                 });
             };
             this.state.pagination.current = data.data.pageNo;
@@ -378,7 +378,7 @@ const Ratepay = React.createClass({
                     dataIndex: 'taxReturn',
                     key: 'taxReturn',
                     render: (text) => {
-                        return <a onClick={downloadFile.bind(null, text[0], text[1])}>{text[1]}</a>
+                        return <a onClick={newDownloadFile.bind(null, text[0], 'ratepay', '/api/user/cognizance/downloadRatepay')}>{text[1]}</a>
                     }
                 }
             ],
@@ -452,7 +452,7 @@ const Ratepay = React.createClass({
         return (
             <div className="user-content" >
                 <div className="content-title">
-                    <span>纳税申报信息</span>
+                    <span>所得税纳税申报信息</span>
                 </div>
                 <div className="user-search">
                     <p>

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

@@ -2,7 +2,7 @@ import React from 'react';
 import { Icon, Upload, Form, Button, Radio, Input, Spin, Table, message, Select, Modal, DatePicker, Cascader, Transfer, InputNumber } from 'antd';
 import { technicalSourceList } from '../../dataDic.js';
 import { techFieldList } from '../../DicTechFieldList.js';
-import { getTechField, getTechnicalSource, beforeUploadFile, downloadFile } from '../../tools.js';
+import { getTechField, getTechnicalSource, beforeUploadFile, newDownloadFile } from '../../tools.js';
 import './techProduct.less';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
@@ -230,7 +230,7 @@ const TechProductDescFrom = Form.create()(React.createClass({
                 <div style={{ width: '50%' }}>
                     <Upload
                         name="ratepay"
-                        action={globalConfig.context + "/api/user/cognizance/upload"}
+                        action={globalConfig.context + "/api/user/cognizance/uploadTecProduct"}
                         data={{ 'sign': 'tech_product' }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
@@ -253,7 +253,7 @@ const TechProductDescFrom = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传高新技术产品台帐 </Button>
                     </Upload>
-                    <p style={{ marginTop: '10px' }}>{theData.accountUrl ? <a onClick={downloadFile.bind(null, theData.accountUrl, theData.accountDownloadFileName)}>{theData.accountDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ marginTop: '10px' }}>{theData.accountUrl ? <a onClick={newDownloadFile.bind(null, theData.id, 'tech_product', '/api/user/cognizance/downloadTecProduct')}>{theData.accountDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <FormItem style={{ marginTop: '20px' }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>

+ 43 - 18
js/component/account/services/technology.jsx

@@ -27,16 +27,16 @@ const Technology = React.createClass({
                 }
                 for (let i = 0; i < data.data.list.length; i++) {
                     let thisdata = data.data.list[i];
-                    switch (thisdata.contacts){
-                    	case 1:
-                    		thisdata.contacts = thisdata.firstContacts;
-                    		break;
-                    	case 2:
-                    		thisdata.contacts = thisdata.secondContacts;
-                    		break;
-                    	case 3:
-                    		thisdata.contacts = thisdata.thirdContacts;
-                    		break;
+                    switch (thisdata.contacts) {
+                        case 1:
+                            thisdata.contacts = thisdata.firstContacts;
+                            break;
+                        case 2:
+                            thisdata.contacts = thisdata.secondContacts;
+                            break;
+                        case 3:
+                            thisdata.contacts = thisdata.thirdContacts;
+                            break;
                     }
                     this.state.data.push({
                         key: i,
@@ -93,6 +93,29 @@ const Technology = React.createClass({
             });
         }.bind(this));
     },
+    getContactsList() {
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/getContacts",
+            success: function (data) {
+                let theOption = [];
+                if (data.error.length || !data.data) {
+                    return;
+                };
+                for (let item in data.data) {
+                    let theData = data.data[item];
+                    theOption.push(
+                        <Select.Option value={item} key={item}>{theData}</Select.Option>
+                    );
+                };
+                this.setState({
+                    contactsOption: theOption
+                });
+            }.bind(this),
+        });
+    },
     getInitialState() {
         return {
             authorOption: [],
@@ -137,7 +160,7 @@ const Technology = React.createClass({
                     title: '项目类型',
                     dataIndex: 'projectCatagory',
                     key: 'projectCatagory'
-                },{
+                }, {
                     title: '技术领域',
                     dataIndex: 'techField',
                     key: 'techField'
@@ -146,7 +169,7 @@ const Technology = React.createClass({
                     dataIndex: 'state',
                     key: 'state',
                     render: text => { return getTechnologyState(text) },
-                },{
+                }, {
                     title: '派单日',
                     dataIndex: 'createTime',
                     key: 'createTime'
@@ -162,7 +185,7 @@ const Technology = React.createClass({
     componentWillMount() {
         this.loadData();
         this.getAuthorList();
-        //        this.getContactsList();
+        this.getContactsList();
     },
     tableRowClick(record, index) {
         this.state.RowData = record;
@@ -218,11 +241,11 @@ const Technology = React.createClass({
                 <div className="content-title">
                     <span>科技项目申报管理</span>
                     <div className="foster-query" style={{ float: "right" }}>
-	                    <div>
-	                        <Button style={{ background: "#ea0862", border: "none", color: "#fff" }}
-	                            onClick={this.addClick}>申请新科技项目<Icon type="plus" /></Button>
-	                    </div>
-	                </div>
+                        <div>
+                            <Button style={{ background: "#ea0862", border: "none", color: "#fff" }}
+                                onClick={this.addClick}>申请新科技项目<Icon type="plus" /></Button>
+                        </div>
+                    </div>
                 </div>
                 <div className="patent-table">
                     <Spin spinning={this.state.loading}>
@@ -234,10 +257,12 @@ const Technology = React.createClass({
                 </div>
                 <ApplyChange
                     data={this.state.RowData}
+                    contactsOption={this.state.contactsOption}
                     showDesc={this.state.showDesc}
                     closeDesc={this.closeDesc} />
                 <ApplyAdd
                     authorOption={this.state.authorOption}
+                    contactsOption={this.state.contactsOption}
                     showAdd={this.state.showAdd}
                     closeAdd={this.closeAdd} />
             </div >

+ 40 - 96
js/component/account/services/technologyAdd.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Button, Input, Select, message, Modal, Checkbox } from 'antd';
+import { Button, Input, Select, message, Modal, Radio } from 'antd';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
@@ -10,54 +10,8 @@ const ApplyAdd = React.createClass({
             loading: false
         };
     },
-    getContactsList() {
-        $.ajax({
-            method: "post",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + "/api/user/getContacts",
-            success: function (data) {
-                let theOption = [];
-                if (data.error.length || !data.data) {
-                    return;
-                };
-                for (let item in data.data) {
-                    let theData = data.data[item];
-                    theOption.push(
-                        <Select.Option value={item} key={item}>{theData}</Select.Option>
-                    );
-                };
-                this.setState({
-                    contactsOption: theOption
-                });
-            }.bind(this),
-        });
-        $.ajax({
-            method: "post",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + "/api/user/getDepartment",
-            success: function (data) {
-                if (data.error.length || !data.data) {
-                    message.warning(data.error[0].message);
-                    return;
-                };
-                let theOption = [];
-                for (var item in data.data) {
-                    theOption.push(
-                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
-                    );
-                };
-                this.setState({
-                    departmentOption: theOption
-                })
-                
-            }.bind(this),
-        });
-    },
     componentWillReceiveProps(nextProps) {
         this.state.visible = nextProps.showAdd;
-        this.getContactsList();
     },
     showModal() {
         this.setState({
@@ -119,19 +73,15 @@ const ApplyAdd = React.createClass({
             loading: e
         });
     },
-    projectEstablishmentCheck(e) {
-        if (e.target.checked == true) {
-            this.state.projectMode = 1;
-        } else if (e.target.checked == false) {
-            this.state.projectMode = 0;
-        };
-    },
     subsidyCheck(e) {
-        if (e.target.checked == true) {
+        if (e.target.value == 1) {
             this.state.subsidy = 1;
-        } else if (e.target.checked == false) {
-            this.state.subsidy = 0;
+        } else if (e.target.value == 2) {
+            this.state.projectMode = 1;
         };
+        this.setState({
+            moneyType: e.target.value
+        });
     },
     render() {
         return (
@@ -153,72 +103,66 @@ const ApplyAdd = React.createClass({
                             <span className="item-title">选择联系人:  </span>
                             <Select placeholder="请选择联系人" style={{ width: 200 }}
                                 onSelect={(e, n) => { this.state.contacts = e }}>
-                                {this.state.contactsOption}
+                                {this.props.contactsOption}
                             </Select>
                         </div>
-                        
+
                     </div>
                     <div className="clearfix">
                         <div className="half-item">
-                            <span className="item-title">选择申报科技部门:  </span>
-                            <Select 
-                                placeholder="请选择申报部门" 
-                                style={{ width: 200 }}
-                                onSelect={(e, n) => { this.state.department = e; }}>
-                                {this.state.departmentOption}
-                            </Select>
+                            <span className="item-title">申报科技部门:  </span>
+                            <Input
+                                placeholder="请填写申报部门"
+                                style={{ width: '200px' }}
+                                onChange={(e) => { this.state.department = e.target.value; }}
+                            />
                         </div>
                     </div>
                     <div className="clearfix">
-                    	<div>
+                        <div>
                             <span className="item-title">派单信息:  </span>
                         </div>
                         <Input type="textarea" rows={6} onChange={(e) => { this.state.dispatchInfo = e.target.value; }} />
                     </div>
                     <div className="clearfix">
-	                 	<div className="half-item">
-	                   		<span className="item-title">项目名称:  </span>
-	                     	<Input  style={{ width: 200 }} onChange={(e) => { this.state.projectName = e.target.value; }} />
-	                	</div>
+                        <div className="half-item">
+                            <span className="item-title">项目名称:  </span>
+                            <Input style={{ width: 200 }} onChange={(e) => { this.state.projectName = e.target.value; }} />
+                        </div>
                     </div>
                     <div className="clearfix">
-                    	<div className="half-item">
-	                   		<span className="item-title">项目类型:  </span>
-	                     	<Input  style={{ width: 200 }} onChange={(e) => { this.state.projectCatagory = e.target.value; }} />
-	                	</div>
-	                </div>
-	                <div className="clearfix">
-                    	<div className="half-item">
-	                   		<span className="item-title">技术领域:  </span>
-	                     	<Input  style={{ width: 200 }} onChange={(e) => { this.state.techField = e.target.value; }} />
-	                	</div>
-	                </div>
-	                <div className="clearfix">
-                    	<div>
-                            <span className="item-title">项目介绍:  </span>
+                        <div className="half-item">
+                            <span className="item-title">项目类型:  </span>
+                            <Input style={{ width: 200 }} onChange={(e) => { this.state.projectCatagory = e.target.value; }} />
                         </div>
-                        <Input type="textarea" rows={6} onChange={(e) => { this.state.projectDes = e.target.value; }} />
                     </div>
-                    
                     <div className="clearfix">
                         <div className="half-item">
-                            <span className="item-title">是否立项: </span>
-                            <Checkbox onChange={this.projectEstablishmentCheck}></Checkbox>
+                            <span className="item-title">技术领域:  </span>
+                            <Input style={{ width: 200 }} onChange={(e) => { this.state.techField = e.target.value; }} />
                         </div>
-                        <div className="half-item">
-                        	<span className="item-title">立项金额: </span>
-                            <Input style={{ width: 150,marginRight:10 }} onChange={(e) => { this.state.projectApproval = e.target.value; }}  />
-                            <span>万元</span>
+                    </div>
+                    <div className="clearfix">
+                        <div>
+                            <span className="item-title">项目介绍:  </span>
                         </div>
+                        <Input type="textarea" rows={6} onChange={(e) => { this.state.projectDes = e.target.value; }} />
                     </div>
                     <div className="clearfix">
                         <div className="half-item">
-                            <span className="item-title">是否后补助: </span>
-                            <Checkbox onChange={this.subsidyCheck}></Checkbox>
+                            <span className="item-title">立项/后补助: </span>
+                            <Radio.Group onChange={this.subsidyCheck}>
+                                <Radio value={1}>立项</Radio>
+                                <Radio value={2}>后补助</Radio>
+                            </Radio.Group>
+                        </div>
+                        <div className="half-item">
+                            <span className="item-title">{this.state.moneyType !== 2 ? '立项' : '后补助'}金额: </span>
+                            <Input style={{ width: 200 }} onChange={(e) => { this.state.projectApproval = e.target.value; }} />
                         </div>
                     </div>
                     <div className="clearfix">
-                    	<div className="half-item">
+                        <div className="half-item">
                             <span className="item-title">选择咨询师:  </span>
                             <Select placeholder="请选择咨询师" style={{ width: 200 }}
                                 onSelect={(e, n) => { this.state.consultant = e }}>

+ 80 - 151
js/component/account/services/technologyChange.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Icon, Form, Button, Input, Select, Spin, Table, DatePicker, message, Modal, Checkbox, Upload } from 'antd';
+import { Icon, Form, Button, Input, Select, Spin, Table, DatePicker, message, Modal, Radio, Upload } from 'antd';
 import { cognizanceStateList } from '../../dataDic.js';
 import { getCognizanceState, beforeUpload, beforeUploadFile, downloadFile } from '../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js';
@@ -19,23 +19,20 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                 pid: id || this.props.data.pid
             },
             success: function (data) {
- 
                 if (data.error.length || !data.data) {
                     message.warning(data.error[0].message);
                     return;
                 };
                 this.state.data = data.data;
-
+                this.state.moneyType = undefined;
                 if (data.data.projectMode == 1) {
                     this.state.projectMode = data.data.projectMode;
-                    this.setState({projectModeState:true});
-                }
+                    this.setState({ moneyType: 2 });
+                };
                 if (data.data.subsidy == 1) {
                     this.state.subsidy = data.data.subsidy;
-                    this.setState({subsidyState:true});
-                }
-                this.getDepartmentList();
-                this.getContactsList();
+                    this.setState({ moneyType: 1 });
+                };
             }.bind(this),
         }).always(function () {
             this.setState({
@@ -78,63 +75,11 @@ const ApplyChangeFrom = Form.create()(React.createClass({
             });
         }.bind(this));
     },
-    getDepartmentList () {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            method: "post",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + "/api/user/getDepartment",
-            success: function (data) {
-                this.state.departmentOption = [];
-                if (data.error.length || !data.data) {
-                    message.warning(data.error[0].message);
-                    return;
-                };
-                for (var item in data.data) {
-                    this.state.departmentOption.push(
-                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
-                    )
-                };
-                this.setState({department:data.data[this.state.data.department]});
-            }.bind(this),
-        }).always(function () {
-            this.setState({
-                loading: false
-            });
-        }.bind(this));
-    },
-    getContactsList() {
-        $.ajax({
-            method: "post",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + "/api/user/getContacts",
-            success: function (data) {
-                let theOption = [];
-                if (data.error.length || !data.data) {
-                    return;
-                };
-                for (let item in data.data) {
-                    let theData = data.data[item];
-                    theOption.push(
-                        <Select.Option value={item} key={item}>{theData}</Select.Option>
-                    );
-                };
-                this.setState({
-                    contactsOption: theOption,
-                    contacts: data.data[this.state.data.contacts]
-                });
-            }.bind(this),
-        });
-    },
     getInitialState() {
         return {
             loading: false,
             departmentOption: [],
-            projectDes:'',
+            projectDes: '',
             projectMode: 0,
             subsidy: 0,
             projectModeState: false,
@@ -208,23 +153,17 @@ const ApplyChangeFrom = Form.create()(React.createClass({
             this.getStateData(nextProps.data.pid);
         };
     },
-    projectEstablishmentCheck(e) {
-        if (e.target.checked == true) {
-            this.setState({projectModeState:true})
-            this.state.projectMode = 1;
-        } else if (e.target.checked == false) {
-            this.setState({projectModeState:false})
-            this.state.projectMode = 0;
-        };
-    },
     subsidyCheck(e) {
-        if (e.target.checked == true) {
-            this.setState({subsidyState:true})
+        if (e.target.value == 1) {
             this.state.subsidy = 1;
-        } else if (e.target.checked == false) {
-            this.setState({subsidyState:false})
+            this.state.projectMode = 0;
+        } else if (e.target.value == 2) {
             this.state.subsidy = 0;
+            this.state.projectMode = 1;
         };
+        this.setState({
+            moneyType: e.target.value
+        });
     },
     render() {
         const FormItem = Form.Item;
@@ -249,33 +188,33 @@ 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.province + ' ' + theData.city + ' ' + theData.area}</span>
                         </div>
                         <div className="half-item">
-                            <FormItem 
+                            <FormItem
                                 labelCol={{ span: 4 }}
                                 wrapperCol={{ span: 10 }}
                                 label="联系人:"
                             >
                                 {getFieldDecorator('contacts', {
-                                    initialValue: this.state.contacts
-                                    })(
-                                        <Select>{this.state.contactsOption}</Select>
-                                    )}      
+                                    initialValue: String(theData.contacts)
+                                })(
+                                    <Select>{this.props.contactsOption}</Select>
+                                    )}
                             </FormItem>
                         </div>
                     </div>
                     <div className="clearfix">
                         <FormItem className="third-item"
                             {...formItemLayout}
-	                            label="科技部门"
-	                        >
-                                {getFieldDecorator('department', {
-                                    initialValue: this.state.department
-                                    })(
-                                        <Select>{this.state.departmentOption}</Select>
-                                    )}
-	                 	</FormItem>
+                            label="科技部门"
+                        >
+                            {getFieldDecorator('department', {
+                                initialValue: this.state.department
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
                     </div>
                     <div className="clearfix">
                         <div className="half-item">
@@ -284,92 +223,80 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                         </div>
                     </div>
                     <div className="clearfix">
-                    	<div className="half-item">
-	                        <FormItem
-		                        labelCol={{ span: 4 }}
-                        		wrapperCol={{ span: 12 }}
-		                        label="项目名称"
-		                    >
+                        <div className="half-item">
+                            <FormItem
+                                labelCol={{ span: 4 }}
+                                wrapperCol={{ span: 12 }}
+                                label="项目名称"
+                            >
                                 {getFieldDecorator('projectName', {
                                     initialValue: theData.projectName
-                                    })(
-                                        <Input />
+                                })(
+                                    <Input />
                                     )}
-		                    </FormItem>
-	                    </div>
+                            </FormItem>
+                        </div>
                     </div>
                     <div className="clearfix">
-                    	<div className="half-item">
-	                        <FormItem
-		                        labelCol={{ span: 4 }}
-	                        	wrapperCol={{ span: 12 }}
-		                        label="项目类型"
-		                    >
+                        <div className="half-item">
+                            <FormItem
+                                labelCol={{ span: 4 }}
+                                wrapperCol={{ span: 12 }}
+                                label="项目类型"
+                            >
                                 {getFieldDecorator('projectCatagory', {
                                     initialValue: theData.projectCatagory
-                                    })(
-                                        <Input />
+                                })(
+                                    <Input />
                                     )}
-		                    </FormItem>
-	                    </div>
+                            </FormItem>
+                        </div>
                     </div>
                     <div className="clearfix">
-                    	<div className="half-item">
-	                        <FormItem
-		                        labelCol={{ span: 4 }}
-	                        	wrapperCol={{ span: 12 }}
-		                        label="技术领域"
-		                    >
+                        <div className="half-item">
+                            <FormItem
+                                labelCol={{ span: 4 }}
+                                wrapperCol={{ span: 12 }}
+                                label="技术领域"
+                            >
                                 {getFieldDecorator('techField', {
                                     initialValue: theData.techField
-                                    })(
-                                        <Input />
+                                })(
+                                    <Input />
                                     )}
-		                    </FormItem>
-		                </div>
+                            </FormItem>
+                        </div>
                     </div>
                     <div className="clearfix">
-                     	<span className="item-title">项目简介: </span>
-                            {getFieldDecorator('projectDes', {
-                                initialValue: theData.projectDes
-                                })(
-                                    <Input type="textarea"
-                          	            placeholder="多行输入"
-                                        rows={6} />
-                                )}
+                        <span className="item-title">项目简介: </span>
+                        {getFieldDecorator('projectDes', {
+                            initialValue: theData.projectDes
+                        })(
+                            <Input type="textarea"
+                                placeholder="多行输入"
+                                rows={6} />
+                            )}
                     </div>
                     <div className="clearfix">
                         <div className="half-item">
-                            <span className="item-title">是否立项: </span>
-                            <Checkbox 
-                                onChange={this.projectEstablishmentCheck}
-                                checked={this.state.projectModeState}
-                                >
-                            </Checkbox>
+                            <span className="item-title">立项/后补助: </span>
+                            <Radio.Group value={this.state.moneyType} onChange={this.subsidyCheck}>
+                                <Radio value={1}>立项</Radio>
+                                <Radio value={2}>后补助</Radio>
+                            </Radio.Group>
                         </div>
                         <div className="half-item">
                             <FormItem
-			                    {...formItemLayout}
-			                    label="立项金额"
-			                >
+                                {...formItemLayout}
+                                label={this.state.moneyType !== 2 ? '立项金额' : '后补助金额'}
+                            >
                                 {getFieldDecorator('projectApproval', {
                                     initialValue: theData.projectApproval
                                 })(
-                                    <Input style={{ width:150,marginRight:10 }}/>
-                                )}
+                                    <Input style={{ width: 200 }} />
+                                    )}
                                 <span>万元</span>
-			                </FormItem>
-                            
-                        </div>
-                    </div>
-                    <div className="clearfix">
-                        <div className="half-item">
-                            <span className="item-title">是否后补助: </span>
-                            <Checkbox 
-                                onChange={this.subsidyCheck}
-                                checked={this.state.subsidyState}
-                                >
-                            </Checkbox>
+                            </FormItem>
                         </div>
                     </div>
                     <div className="hrSituation-roster">
@@ -459,7 +386,9 @@ const ApplyChange = React.createClass({
                         <ApplyChangeFrom
                             visible={this.state.visible}
                             data={this.props.data}
-                            spinState={this.spinChange} closeModal={this.handleCancel} />
+                            contactsOption={this.props.contactsOption}
+                            spinState={this.spinChange}
+                            closeModal={this.handleCancel} />
                     </Modal>
                 </Spin>
             </div>

+ 10 - 10
js/component/account/set/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, downloadFile } from '../../tools.js';
+import { beforeUploadFile, newDownloadFile } from '../../tools.js';
 import './hrSituation.less'
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
@@ -450,8 +450,8 @@ const HrSituationDescFrom = Form.create()(React.createClass({
                 <div className="hrSituation-roster">
                     <Upload
                         name="ratepay"
-                        action={globalConfig.context + "/api/user/cognizance/upload"}
-                        data={{ 'sign': 'roster_' + (this.state.year || theData.year) }}
+                        action={globalConfig.context + "/api/user/cognizance/uploadRoster"}
+                        data={{ sign: 'roster', year: this.state.year || theData.year }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -473,13 +473,13 @@ const HrSituationDescFrom = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传花名册 </Button>
                     </Upload>
-                    <p style={{ marginTop: '10px' }}>{theData.rosterUrl ? <a onClick={downloadFile.bind(null, theData.rosterUrl, theData.rosterDownloadFileName)}>{theData.rosterDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ marginTop: '10px' }}>{theData.rosterUrl ? <a onClick={newDownloadFile.bind(null, theData.id, 'roster', '/api/user/cognizance/downloadHumanResource')}>{theData.rosterDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <div className="hrSituation-roster">
                     <Upload
                         name="ratepay"
-                        action={globalConfig.context + "/api/user/cognizance/upload"}
-                        data={{ 'sign': 'social_security_' + (this.state.year || theData.year) }}
+                        action={globalConfig.context + "/api/user/cognizance/uploadSocialSecurity"}
+                        data={{ 'sign': 'social_security', year: this.state.year || theData.year }}
                         beforeUpload={beforeUploadFile}
                         showUploadList={false}
                         onChange={(info) => {
@@ -501,7 +501,7 @@ const HrSituationDescFrom = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传社保情况 </Button>
                     </Upload>
-                    <p style={{ marginTop: '10px' }}>{theData.socialSecurityUrl ? <a onClick={downloadFile.bind(null, theData.socialSecurityUrl, theData.socialSecurityDownloadFileName)}>{theData.socialSecurityDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ marginTop: '10px' }}>{theData.socialSecurityUrl ? <a onClick={newDownloadFile.bind(null, theData.id, 'social_security', '/api/user/cognizance/downloadHumanResource')}>{theData.socialSecurityDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <div>
                     <span style={{ color: "red" }}>提示</span>
@@ -632,7 +632,7 @@ const HrSituation = React.createClass({
                     socialSecurityUrl: thisdata.socialSecurityUrl,
                     socialSecurityDownloadFileName: thisdata.socialSecurityDownloadFileName,
 
-                    attachment: [thisdata.rosterUrl, thisdata.rosterDownloadFileName, thisdata.socialSecurityUrl, thisdata.socialSecurityDownloadFileName],
+                    attachment: [thisdata.id, thisdata.rosterDownloadFileName, thisdata.socialSecurityDownloadFileName],
                     newEmployment: thisdata.newEmployment,
                     graduateNumber: thisdata.graduateNumber
                 });
@@ -697,8 +697,8 @@ const HrSituation = React.createClass({
                     key: 'attachment',
                     render: (text) => {
                         return <div>
-                            <a style={{ marginRight: '10px' }} onClick={downloadFile.bind(null, text[0], text[1])}> {text[1]} </a>
-                            <a onClick={downloadFile.bind(null, text[2], text[3])}> {text[3]} </a>
+                            <a style={{ marginRight: '10px' }} onClick={newDownloadFile.bind(null, text[0], 'roster', '/api/user/cognizance/downloadHumanResource')}> {text[1]} </a>
+                            <a onClick={newDownloadFile.bind(null, text[0], 'social_security', '/api/user/cognizance/downloadHumanResource')}> {text[2]} </a>
                         </div>
                     }
                 }

+ 4 - 4
js/component/dataDic.js

@@ -84,7 +84,7 @@ module.exports = {
             key: "已结款"
         },{
             value: "14",
-            key: "撤销"
+            key: "退单"
         }],
     patentFieldList:[
        {
@@ -295,7 +295,7 @@ module.exports = {
             key: "已结款"
         },{
             value: "12",
-            key: "撤销"
+            key: "退单"
         }
     ],
     technologyStateList:[
@@ -328,7 +328,7 @@ module.exports = {
             key: "已结款"
         },{
             value: "9",
-            key: "撤销"
+            key: "退单"
         }
     ],
     copyrightStateList:[
@@ -364,7 +364,7 @@ module.exports = {
             key: "已结款"
         },{
             value: "10",
-            key: "撤销"
+            key: "退单"
         }
     ],
     //法定节假日

+ 2 - 2
js/component/manageCenter/servicesManage/copyright/comPatentChange.jsx

@@ -367,7 +367,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传软著申请书 </Button>
                     </Upload>
-                    <p style={{ margin: '10px 0' }}>{theData.applicationUrl ? <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_apply', '/api/admin/copyright/download')}>{theData.applicationUrlDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ margin: '10px 0' }}>{theData.applicationUrl ? <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_apply', '/api/admin/copyright/download')}>软著申请书</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <div className="hrSituation-roster">
                     <Upload
@@ -395,7 +395,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                     >
                         <Button><Icon type="upload" /> 上传软著证书 </Button>
                     </Upload>
-                    <p style={{ margin: '10px 0' }}>{theData.certificateUrl ? <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_auth', '/api/admin/copyright/download')}>{theData.certificateUrlDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                    <p style={{ margin: '10px 0' }}>{theData.certificateUrl ? <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_auth', '/api/admin/copyright/download')}>软著证书</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                 </div>
                 <p>状态流转记录: </p>
                 <Table style={{ margin: '10px 0' }}

+ 4 - 2
js/component/manageCenter/servicesManage/highTech/fosterDesc/orgTechCenter.jsx

@@ -72,7 +72,7 @@ const CenterListDescFrom = Form.create()(React.createClass({
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
-                        label="名称"
+                        label="项目名称"
                     >
                         {getFieldDecorator('projectName', {
                             rules: [{ required: true, message: '此项为必填项!' }],
@@ -264,7 +264,9 @@ const CenterList = React.createClass({
                     protocolUrl: thisdata.protocolUrl,
                     protocol: [thisdata.id, thisdata.protocolDownloadFileName],
                     institution: thisdata.institution,
-                    termTimeFormattedDate: [thisdata.termStartTimeFormattedDate, thisdata.termEndTimeFormattedDate]
+                    termTimeFormattedDate: [thisdata.termStartTimeFormattedDate, thisdata.termEndTimeFormattedDate],
+                    termStartTimeFormattedDate: thisdata.termStartTimeFormattedDate,
+                    termEndTimeFormattedDate: thisdata.termEndTimeFormattedDate
                 });
             };
             this.state.pagination.current = data.data.pageNo;

+ 1 - 2
js/component/manageCenter/servicesManage/highTech/highTechApply.jsx

@@ -51,7 +51,6 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                 }];
                 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;
-                console.log(this.state.netAssetRate, this.state.salesRevenueRate);
             }.bind(this),
         }).always(function () {
             this.setState({
@@ -227,7 +226,7 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                         contacts: values.contacts,
                         accident: values.accident,
                         certificateNumber: values.certificateNumber,
-                        recordTimeFormattedDate: values.recordTime ? values.recordTime.format("YYYY-MM-DD") : undefined,
+                        recordTimeFormattedDate: values.recordTime ? values.recordTime.format("YYYY-MM-DD HH:mm:ss") : undefined,
                         state: values.state,
                         principal: values.principal,
                         comment: values.comment,

+ 41 - 40
js/component/manageCenter/servicesManage/patent/comPatentDesc.jsx

@@ -111,6 +111,12 @@ const PatentDesc = React.createClass({
                 return;
             };
             this.state.data = data1[0].data;
+            this.state.patentDes = data1[0].data.patentDes;
+            this.state.patentName = data1[0].data.patentName;
+            this.state.patentNumber = data1[0].data.patentNumber;
+            this.state.patentCatagory = data1[0].data.patentCatagory;
+            this.state.patentState = data1[0].data.patentState;
+            this.state.patentField = data1[0].data.patentField;
             this.state.contacts = data1[0].data.contacts;
             if (data2[0].error.length) {
                 message.warning(data2[0].error[0].message);
@@ -263,12 +269,6 @@ const PatentDesc = React.createClass({
         this.state.adminOption = [];
         if (nextProps.data && !this.state.visible && nextProps.showDesc) {
             this.state.xid = nextProps.data.pid;
-            this.state.patentDes = nextProps.data.patentDes;
-            this.state.patentName = nextProps.data.patentName;
-            this.state.patentNumber = nextProps.data.patentNumber;
-            this.state.patentCatagory = String(nextProps.data.patentCatagory);
-            this.state.patentState = String(nextProps.data.patentState);
-            this.state.patentField = String(nextProps.data.patentField);
             this.loadData();
             this.getContactsList(nextProps.data.uid);
         };
@@ -313,7 +313,7 @@ const PatentDesc = React.createClass({
                             <div>
                                 <p className="widthHalf"><span>公司地址:</span>{companyAddress}</p>
                                 <div className="widthHalf">
-                                    <span className="three2eight">联系人:</span>
+                                    <span>联系人:</span>
                                     <Select placeholder="选择联系人"
                                         style={{ width: 200 }}
                                         value={this.state.contacts}
@@ -323,19 +323,19 @@ const PatentDesc = React.createClass({
                                 </div>
                             </div>
                             <div>
-                                <p className="widthHalf"><span className="two2four">编号</span>{theData.serialNumber}</p>
-                                <p className="widthHalf"><span className="seven2eight">申请号/专利号</span><Input value={this.state.patentNumber} onChange={(e) => { this.setState({ patentNumber: e.target.value }); }} /></p>
+                                <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>
                             <div>
                                 <p className="widthHalf"><span>专利名称:</span><Input value={this.state.patentName} onChange={(e) => { this.setState({ patentName: e.target.value }); }} /></p>
-                                <div className="widthHalf"><span className="four2eight">专利类型</span>
-                                    <Select value={this.state.data.patentCatagory} style={{ width: 200 }} onChange={(e) => { this.setState({ patentCatagory: e }); } }>{this.state.patentTypeOption}</Select>
+                                <div className="widthHalf"><span>专利类型</span>
+                                    <Select value={this.state.patentCatagory} style={{ width: 200 }} onChange={(e) => { this.setState({ patentCatagory: e }); }}>{this.state.patentTypeOption}</Select>
                                 </div>
                             </div>
                             <div>
                                 <p className="widthHalf"><span>专利状态:</span>{getPatentState(theData.patentState)}</p>
-                                <div className="widthHalf"><span className="four2eight">专利领域</span>
-                                    <Select value={this.state.patentField} style={{ width: 200 }} onChange={(e) => { this.setState({ patentField: e }); } }>{this.state.patentFieldOption}</Select>
+                                <div className="widthHalf"><span>专利领域</span>
+                                    <Select value={this.state.patentField} style={{ width: 200 }} onChange={(e) => { this.setState({ patentField: e }); }}>{this.state.patentFieldOption}</Select>
                                 </div>
                             </div>
                             <div>
@@ -343,7 +343,7 @@ const PatentDesc = React.createClass({
                                 <Input type="textarea"
                                     placeholder="多行输入"
                                     value={this.state.patentDes}
-                                    onChange={(e) => { this.setState({ patentDes: e.target.value }); } }
+                                    onChange={(e) => { this.setState({ patentDes: e.target.value }); }}
                                     rows={6} />
                             </div>
                             <div>
@@ -364,70 +364,71 @@ const PatentDesc = React.createClass({
                             </div>
                             <div className="clearfix">
                                 <div>材料管理:
-                                    {theData.patentWritingUrl !== null && theData.patentWritingUrl !== undefined && theData.patentWritingUrl !== '' ?
-                                    <p className="download-file">
-                                        <a onClick={newDownloadFile.bind(null, this.state.xid, "patent_writing", "/api/admin/patent/download")}>授权通知书</a>
-                                        {theData.confirmState == '0' ?
-                                            <Button onClick={this.confirmButton}>确认稿件</Button> : <span></span>
-                                        }
-                                    </p> :
-                                    <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />专利稿件未上传</p>
+                                    {theData.patentWritingUrl ?
+                                        <p className="download-file">
+                                            <a onClick={newDownloadFile.bind(null, this.state.xid, "patent_writing", "/api/admin/patent/download")}>专利稿件</a>
+                                            {theData.confirmState == '0' ?
+                                                <Button onClick={this.confirmButton}>确认稿件</Button> : <span></span>
+                                            }
+                                        </p> :
+                                        <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />专利稿件未上传</p>
                                     }
-                                    {theData.authorizationNoticeUrl !== null && theData.authorizationNoticeUrl !== undefined && theData.authorizationNoticeUrl !== '' ?
+                                    {theData.authorizationNoticeUrl ?
                                         <p className="download-file">
                                             <a onClick={newDownloadFile.bind(null, this.state.xid, "authorization_notice", "/api/admin/patent/download")}>授权通知书</a>
                                         </p> :
                                         <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />授权通知书未上传</p>
                                     }
-                                    {theData.patentCertificateUrl !== null && theData.patentCertificateUrl !== undefined && theData.patentCertificateUrl !== '' ?
+                                    {theData.patentCertificateUrl ?
                                         <p className="download-file">
                                             <a onClick={newDownloadFile.bind(null, this.state.xid, "patent_certificate", "/api/admin/patent/download")}>专利证书</a>
                                         </p> :
                                         <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />专利证书未上传</p>
                                     }
-                                    {theData.patentProryStatementUrl !== null && theData.patentProryStatementUrl !== undefined && theData.patentProryStatementUrl !== '' ?
+                                    {theData.patentProryStatementUrl ?
                                         <p className="download-file">
-                                            <a onClick={newDownloadFile.bind(null, this.state.xid, "patent_prory_statement", "/api/admin/patent/download")}>{theData.patentProryStatementDownloadFileName}</a>
+                                            <a onClick={newDownloadFile.bind(null, this.state.xid, "patent_prory_statement", "/api/admin/patent/download")}>专利代理委托书</a>
                                         </p> :
                                         <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />专利代理委托书未上传</p>
                                     }
-                                    {theData.lastYearTaxReportUrl !== null && theData.lastYearTaxReportUrl !== undefined && theData.lastYearTaxReportUrl !== '' ?
+                                    {theData.lastYearTaxReportUrl ?
                                         <p className="download-file">
-                                            <a onClick={newDownloadFile.bind(null, this.state.xid, "last_year_ratepay", "/api/admin/patent/downloadHonor")}>{theData.lastYearTaxReportDownloadFileName}</a>
+                                            <a onClick={newDownloadFile.bind(null, this.state.xid, "last_year_ratepay", "/api/admin/patent/downloadHonor")}>上年度纳税报表</a>
                                         </p> :
-                                        <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />上年度纳税报表</p>
+                                        <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />上年度纳税报表未上传</p>
                                     }
                                 </div>
-                                <Avatar urlData={this.getPatentWritingUrl} name='patent_writing' uid={theData.uid}/>
-                                <Avatar urlData={this.getAuthorizationNoticeUrl} name='authorization_notice' uid={theData.uid}/>
-                                <Avatar urlData={this.getPatentCertificateUrl} name='patent_certificate' uid={theData.uid}/>
+                                <Avatar urlData={this.getPatentWritingUrl} name='patent_writing' uid={theData.uid} />
+                                <Avatar urlData={this.getAuthorizationNoticeUrl} name='authorization_notice' uid={theData.uid} />
+                                <Avatar urlData={this.getPatentCertificateUrl} name='patent_certificate' uid={theData.uid} />
                             </div>
                             <div className="avatar-text"><span>专利稿件上传</span><span>授权通知书上传</span><span>专利证书上传</span></div>
                             <div className="clearfix">
                                 <p>专利状态流转记录:</p>
-                                <Table 
+                                <Table
                                     style={{ margin: '10px 0' }}
                                     pagination={false}
-                                    dataSource={this.state.stateTable}  
+                                    dataSource={this.state.stateTable}
                                     columns={this.state.stateColumns} />
                                 <div className="widthThird">
                                     <span>状态流转:</span>
-                                    <Select placeholder='请选择状态' value={this.state.patentStateAdd} style={{ width: 150 }} onChange={(e) => { this.setState({ patentStateAdd: e }); } }>{this.state.patentStateOption}</Select>
+                                    <Select placeholder='请选择状态' value={this.state.patentStateAdd} style={{ width: 150 }} onChange={(e) => { this.setState({ patentStateAdd: e }); }}>{this.state.patentStateOption}</Select>
                                 </div>
                                 <p className="widthThird">
                                     <span>处理时间:</span>
-                                    <DatePicker 
-                                    value={this.state.recordTime ? moment(this.state.recordTime) : undefined} 
-                                    onChange={(data,dataString)=>{this.setState({recordTime : dataString});}}/>
+                                    <DatePicker
+                                        value={this.state.recordTime ? moment(this.state.recordTime) : undefined}
+                                        format="YYYY-MM-DD HH:mm:ss"
+                                        onChange={(data, dataString) => { this.setState({ recordTime: dataString }); }} />
                                 </p>
                                 <div className="widthThird">
                                     <span>负责人:</span>
-                                    <Select placeholder='请填写负责人' value={this.state.adminName} style={{ width: 150 }} onChange={(e) => { this.setState({ adminName: e }); } }>{this.state.adminOption}</Select>
+                                    <Select placeholder='请填写负责人' value={this.state.adminName} style={{ width: 150 }} onChange={(e) => { this.setState({ adminName: e }); }}>{this.state.adminOption}</Select>
                                 </div>
                             </div>
                             <div>
                                 <span>备注:</span>
-                                <Input value={this.state.comment} placeholder='请填写备注' style={{ width: 400 }} onChange={(e)=>{this.setState({comment : e.target.value});}}/>
+                                <Input value={this.state.comment} placeholder='请填写备注' style={{ width: 400 }} onChange={(e) => { this.setState({ comment: e.target.value }); }} />
                             </div>
                         </Modal>
                     </Spin>

+ 1 - 1
js/component/manageCenter/servicesManage/patent/comprehensive.jsx

@@ -50,7 +50,7 @@ const Patent = React.createClass({
                         patentNumber: thisdata.patentNumber || '',
                         unitName: thisdata.unitName || '',
                         patentName: thisdata.patentName || '',
-                        patentType: thisdata.patentCatagory || '0',
+                        patentCatagory: thisdata.patentCatagory || '0',
                         patentState: thisdata.patentState || '0',
                         patentField: thisdata.patentField || '0',
                         patentDes: thisdata.patentDes || '',

+ 4 - 17
js/component/manageCenter/servicesManage/patent/comprehensive.less

@@ -66,8 +66,7 @@
 
 .ant-modal-content {
     .ant-modal-header {
-        padding: 10px 16px;
-        //background: #2d2d2d;
+        padding: 10px 16px; //background: #2d2d2d;
         .ant-modal-title {
             //color: #fff;
             font-size: 16px;
@@ -138,21 +137,9 @@
                 input {
                     width: 200px;
                 }
-                .two2four {
-                    letter-spacing: 2em;
-                    margin-right: -2em;
-                }
-                .four2eight {
-                    letter-spacing: 4/3em;
-                    margin-right: -4/3em;
-                }
-                .seven2eight {
-                    letter-spacing: 3/11em;
-                    margin-right: -3/11em;
-                }
-                .three2eight {
-                    letter-spacing: 2.5em;
-                    margin-right: -2.5em;
+                >span {
+                    display: inline-block;
+                    width: 110px;
                 }
             }
             .widthThird {

+ 4 - 5
js/component/manageCenter/servicesManage/technology/applyChange.jsx

@@ -29,11 +29,11 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                 if (data.data.projectMode == 1) {
                     this.state.projectMode = data.data.projectMode;
                     this.setState({ moneyType: 2 });
-                }
+                };
                 if (data.data.subsidy == 1) {
                     this.state.subsidy = data.data.subsidy;
                     this.setState({ moneyType: 1 });
-                }
+                };
                 this.getContactsList();
             }.bind(this),
         }).always(function () {
@@ -197,8 +197,7 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                         projectApproval: values.projectApproval,
                         subsidy: this.state.subsidy,
                         approvalUrl: this.state.approvalUrl,
-
-                        recordTimeFormattedDate: values.recordTime ? values.recordTime.format("YYYY-MM-DD") : undefined,
+                        recordTimeFormattedDate: values.recordTime ? values.recordTime.format("YYYY-MM-DD HH:mm:ss") : undefined,
                         state: values.state,
                         principal: values.principal,
                         comment: values.comment,
@@ -395,7 +394,7 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                         >
                             <Button><Icon type="upload" /> 项目材料上传 </Button>
                         </Upload>
-                        <p style={{ marginTop: '10px' }}>{theData.approvalUrl ? <a onClick={techDownloadFile.bind(null, "/api/admin/techproject/download", this.state.data.id)}>{theData.approvalDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
+                        <p style={{ marginTop: '10px' }}>{theData.approvalUrl ? <a onClick={techDownloadFile.bind(null, "/api/admin/techproject/download", this.state.data.id)}>项目材料</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
                     </div>
                     <div className="form-title">状态流转记录: </div>
                     <Table pagination={false} dataSource={this.state.stateTable} columns={this.state.stateColumns} />

+ 4 - 2
js/component/manageCenter/set/modal.jsx

@@ -119,7 +119,9 @@ export default class TheModal extends React.Component {
         });
     }
     getRolesSelection() {
-        if (this.state.id != '1') {
+        if (!this.state.id) {
+            return <li></li>
+        } else if (this.state.id != '1') {
             return <li>
                 <span className='modal-text'>角色</span>
                 <Select
@@ -157,7 +159,7 @@ export default class TheModal extends React.Component {
         return (
             <div className="modal" >
                 <Spin spinning={this.state.loading} >
-                    <Modal title="角色管理"
+                    <Modal title="管理员详情"
                         closable={false}
                         visible={this.state.visible}
                         onOk={this.postData.bind(this)}

+ 24 - 17
js/component/manageCenter/topTab.jsx

@@ -26,6 +26,18 @@ const MessageModal = React.createClass({
                     return '共' + total + '条数据';
                 }
             },
+            UnreadPagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.loadUnread(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
             columns: [
                 {
                     title: '编号',
@@ -106,7 +118,7 @@ const MessageModal = React.createClass({
             });
         }.bind(this));
     },
-    loadUnread() {
+    loadUnread(pageNo) {
         this.state.data = [];
         this.setState({
             loading: true
@@ -116,10 +128,10 @@ const MessageModal = React.createClass({
             dataType: "json",
             crossDomain: false,
             url: globalConfig.context + "/api/admin/notice/unread",
-            // data: {
-            //     pageNo: pageNo || 1,
-            //     pageSize: this.state.pagination.pageSize,
-            // }
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.UnreadPagination.pageSize,
+            }
         }).done((data) => {
             if (!data.data) {
                 if (data.error && data.error.length) {
@@ -140,15 +152,12 @@ const MessageModal = React.createClass({
                     createTimeFormattedDate: thisdata.createTimeFormattedDate,
                 });
             };
+            this.state.UnreadPagination.current = data.data.pageNo;
+            this.state.UnreadPagination.total = data.data.totalCount;
             this.setState({
-                unreadData: this.state.data
+                unreadData: this.state.data,
+                UnreadPagination: this.state.UnreadPagination
             });
-            // this.state.pagination.current = data.data.pageNo;
-            // this.state.pagination.total = data.data.totalCount;
-            // this.setState({
-            //     dataSource: this.state.data,
-            //     pagination: this.state.pagination
-            // });
         }).always(function () {
             this.setState({
                 loading: false
@@ -180,15 +189,13 @@ const MessageModal = React.createClass({
                 <Spin spinning={this.state.loading} className='spin-box'>
                     <Modal title="信息中心" visible={this.state.visible}
                         onOk={this.handleOk} onCancel={this.handleCancel}
-                        width='600px' footer={
-                            <Button key="back" onClick={this.handleCancel}>返回</Button>
-                        }
+                        width='600px' footer=''
                     >
                         <Tabs defaultActiveKey="1">
                             <Tabs.TabPane tab="新信息" key="1">
                                 <Table columns={this.state.columns}
                                     dataSource={this.state.unreadData}
-                                    pagination={false} />
+                                    pagination={this.state.UnreadPagination} />
                             </Tabs.TabPane>
                             <Tabs.TabPane tab="已读信息" key="2">
                                 <Table columns={this.state.columns}
@@ -408,7 +415,7 @@ const TopTab = React.createClass({
                     <a onClick={() => { this.setState({ messageModalShow: true }); }} className="user-badge">
                         <Icon type="mail" />
                         {(() => {
-                            if (this.state.badge) {
+                            if (!window.showSystem && this.state.badge) {
                                 return <Badge status="processing" />
                             }
                         })()}

+ 9 - 1
js/component/manageCenter/userManage/content.jsx

@@ -16,7 +16,7 @@ class Content extends Component {
         if (window.location.hash) {
             this.getKey(window.location.hash.substr(1));
         } else {
-            this.getKey('userList');
+            this.getKey(window.showCustomer ? 'customerList' : 'userList');
         };
     }
     getKey(key) {
@@ -37,6 +37,14 @@ class Content extends Component {
                     });
                 });
                 break;
+            case 'customerList':
+                require.ensure([], () => {
+                    const CustomerList = require('./customerList').default;
+                    this.setState({
+                        component: <CustomerList />,
+                    });
+                });
+                break;
         };
         window.location.hash = key;
     }

+ 373 - 0
js/component/manageCenter/userManage/customerList.jsx

@@ -0,0 +1,373 @@
+import React from 'react';
+import { Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker, Modal } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import moment from 'moment';
+import './userList.less';
+import OrgDesc from './orgDesc.jsx';
+import UserDesc from './userDesc.jsx';
+import { auditStatusList } from '../../dataDic.js';
+import { getAuditState } from '../../tools.js';
+
+const OrgAdd = React.createClass({
+    getInitialState() {
+        return {
+            visible: false,
+            loading: false
+        };
+    },
+    showModal() {
+        this.state.mobile = undefined;
+        this.state.unitName = undefined;
+        this.setState({
+            visible: true,
+        });
+    },
+    handleCancel(e) {
+        this.setState({
+            visible: false,
+        });
+    },
+    handleOk() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/addNewUser",
+            data: {
+                mobile: this.state.mobile,
+                unitName: this.state.unitName,
+                type: 1
+            }
+        }).done(function (data) {
+            this.setState({
+                loading: false
+            });
+            if (!data.error.length) {
+                message.success('新增成功!');
+                this.setState({
+                    visible: false,
+                });
+                this.props.closeDesc(false, true);
+            } else {
+                message.warning(data.error[0].message);
+            };
+        }.bind(this));
+    },
+    render() {
+        return (
+            <div className="patent-desc" style={{ float: 'right', marginRight: '20px' }}>
+                <Button type="primary" onClick={this.showModal}>添加团体用户</Button>
+                <Modal title="新增团体用户" visible={this.state.visible}
+                    onCancel={this.handleCancel}
+                    width='350px'
+                    footer={[
+                        <Button key="submit" type="primary" loading={this.state.loading} onClick={this.handleOk}>提交</Button>,
+                        <Button key="back" onClick={this.handleCancel}>返回</Button>
+                    ]}
+                    className="admin-desc-content">
+                    <div className='orgAdd-input'>
+                        <span>用户手机号码:</span>
+                        <Input
+                            value={this.state.mobile}
+                            onChange={(e) => { this.setState({ mobile: e.target.value }); }} />
+                    </div>
+                    <div className='orgAdd-input'>
+                        <span>公司名称:</span>
+                        <Input
+                            value={this.state.unitName}
+                            onChange={(e) => { this.setState({ unitName: e.target.value }); }} />
+                    </div>
+                </Modal>
+            </div>
+        );
+    }
+});
+const UserAdd = React.createClass({
+    getInitialState() {
+        return {
+            visible: false,
+            loading: false
+        };
+    },
+    showModal() {
+        this.state.mobile;
+        this.setState({
+            visible: true,
+        });
+    },
+    handleCancel(e) {
+        this.setState({
+            visible: false,
+        });
+    },
+    handleOk() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/addNewUser",
+            data: {
+                mobile: this.state.mobile,
+                type: 0
+            }
+        }).done(function (data) {
+            this.setState({
+                loading: false
+            });
+            if (!data.error.length) {
+                message.success('新增成功!');
+                this.setState({
+                    visible: false,
+                });
+                this.props.closeDesc(false, true);
+            } else {
+                message.warning(data.error[0].message);
+            };
+        }.bind(this));
+    },
+    render() {
+        return (
+            <div className="patent-desc" style={{ float: 'right', marginRight: '20px' }}>
+                <Button type="primary" onClick={this.showModal}>添加个人用户</Button>
+                <Modal title="新增个人用户" visible={this.state.visible}
+                    onCancel={this.handleCancel}
+                    width='350px'
+                    footer={[
+                        <Button key="submit" type="primary" loading={this.state.loading} onClick={this.handleOk}>提交</Button>,
+                        <Button key="back" onClick={this.handleCancel}>返回</Button>
+                    ]}
+                    className="admin-desc-content">
+                    <div className='orgAdd-input'>
+                        <span>用户手机号码:</span>
+                        <Input
+                            value={this.state.mobile}
+                            onChange={(e) => { this.setState({ mobile: e.target.value }); }} />
+                    </div>
+                </Modal>
+            </div>
+        );
+    }
+});
+const CustomerList = React.createClass({
+    loadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/customer",
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.pagination.pageSize,
+                mobile: this.state.searchLoginId, //登录名
+                email: this.state.searchEmail,
+                createTime: this.state.searchTime,
+                number: this.state.searchAftId, //阿凡提号
+                unitName: this.state.searchUnitName,
+                auditStatus: this.state.searchAuditStatus
+            },
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }
+                    return;
+                };
+                for (let i = 0; i < data.data.length; i++) {
+                    let thisdata = data.data[i];
+                    this.state.data.push({
+                        key: i,
+                        id: thisdata.id,
+                        type: thisdata.type,
+                        mobile: thisdata.mobile,
+                        email: thisdata.email,
+                        createTime: thisdata.createTime,
+                        aftUsername: thisdata.aftUsername,
+                        number: thisdata.number,
+                        auditStatus: thisdata.auditStatus,
+                        createTimeFormattedDate: thisdata.createTimeFormattedDate,
+                        adminName: thisdata.adminName,
+                        unitName: thisdata.unitName
+                    });
+                };
+                this.state.pagination.current = data.data.pageNo;
+                this.state.pagination.total = data.data.totalCount;
+                this.setState({
+                    dataSource: this.state.data,
+                    pagination: this.state.pagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            searchMore: true,
+            data: [],
+            loading: false,
+            searchTime: [,],
+            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: 'number',
+                    key: 'number',
+                }, {
+                    title: '登录名',
+                    dataIndex: 'mobile',
+                    key: 'mobile',
+                }, {
+                    title: '公司名称',
+                    dataIndex: 'unitName',
+                    key: 'unitName',
+                }, {
+                    title: '认证状态',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                    render: text => { return getAuditState(text); }
+                }, {
+                    title: '注册时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate',
+                }, {
+                    title: '认证名称',
+                    dataIndex: 'aftUsername',
+                    key: 'aftUsername',
+                }, {
+                    title: '联系方式',
+                    dataIndex: 'email',
+                    key: 'email',
+                }, {
+                    title: '业务员',
+                    dataIndex: 'adminName',
+                    key: 'adminName',
+                }
+            ],
+            dataSource: []
+        };
+    },
+    componentWillMount() {
+        this.loadData();
+    },
+    tableRowClick(record, index) {
+        this.state.RowData = record;
+        switch (record.type) {
+            case '0':
+                this.setState({
+                    userShowDesc: true
+                });
+                break;
+            case '1':
+                this.setState({
+                    orgShowDesc: true
+                });
+                break;
+        };
+    },
+    closeDesc(e, s) {
+        this.state.userShowDesc = e;
+        this.state.orgShowDesc = e;
+        if (s) {
+            this.loadData();
+        };
+    },
+    search() {
+        this.loadData();
+    },
+    reset() {
+        this.state.searchAftId = undefined;
+        this.state.searchLoginId = undefined;
+        this.state.searchAuditStatus = undefined;
+        this.state.searchUnitName = undefined;
+        this.state.searchEmail = undefined;
+        this.state.searchTime = [];
+        this.loadData();
+    },
+    searchSwitch() {
+        this.setState({
+            searchMore: !this.state.searchMore
+        });
+    },
+    searchcreateTime(date, dateString) {
+        this.state.createTime = dateString;
+    },
+    render() {
+        const { RangePicker } = DatePicker;
+        return (
+            <div className="user-content" >
+                <div className="content-title">
+                    <span>我的客户管理</span>
+                    <OrgAdd closeDesc={this.closeDesc} />
+                    <UserAdd closeDesc={this.closeDesc} />
+                </div>
+                <div className="user-search">
+                    <Input placeholder="阿凡提号" value={this.state.searchAftId}
+                        onChange={(e) => { this.setState({ searchAftId: e.target.value }); }} />
+                    <Input placeholder="登录号" value={this.state.searchLoginId}
+                        onChange={(e) => { this.setState({ searchLoginId: e.target.value }); }} />
+                    <Select placeholder="选择认证状态" style={{ width: 140 }}
+                        value={this.state.searchAuditStatus}
+                        onChange={(e) => { this.setState({ searchAuditStatus: e }) }}>
+                        {
+                            auditStatusList.map(function (item, i) {
+                                return <Select.Option key={i} value={item.value} >{item.key}</Select.Option>
+                            })
+                        }
+                    </Select>
+                    <Input placeholder="公司名称" value={this.state.searchUnitName}
+                        onChange={(e) => { this.setState({ searchUnitName: e.target.value }); }} />
+                    <Input placeholder="联系方式" value={this.state.searchEmail}
+                        onChange={(e) => { this.setState({ searchEmail: e.target.value }); }} />
+                    <Button type="primary" onClick={this.search}>搜索</Button>
+                    <Button onClick={this.reset}>重置</Button>
+                    <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
+                    <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
+                        <p>
+                            <span>注册时间:</span>
+                            <RangePicker
+                                allowClear={false}
+                                value={[moment(this.state.searchTime[0]), moment(this.state.searchTime[1])]}
+                                onChange={(data, dataString) => { this.setState({ searchTime: dataString }); }} />
+                        </p>
+                    </div>
+                </div>
+                <div className="patent-table">
+                    <Spin spinning={this.state.loading}>
+                        <Table columns={this.state.columns}
+                            dataSource={this.state.dataSource}
+                            pagination={this.state.pagination}
+                            onRowClick={this.tableRowClick} />
+                    </Spin>
+                </div>
+                <UserDesc data={this.state.RowData} showDesc={this.state.userShowDesc} closeDesc={this.closeDesc} />
+                <OrgDesc data={this.state.RowData} showDesc={this.state.orgShowDesc} closeDesc={this.closeDesc} />
+            </div >
+        );
+    }
+});
+
+export default CustomerList;

+ 9 - 6
js/component/manageCenter/userManage/leftTab.jsx

@@ -8,7 +8,7 @@ const MenuItemGroup = Menu.ItemGroup;
 const LeftTab = React.createClass({
     getInitialState() {
         return {
-            current: 'userList',
+            current: window.showCustomer ? 'userList' : 'customerList',
         };
     },
     handleClick(e) {
@@ -17,8 +17,8 @@ const LeftTab = React.createClass({
             current: e.key,
         });
     },
-    componentWillMount(){
-        if ( window.location.hash ) {
+    componentWillMount() {
+        if (window.location.hash) {
             this.state.current = window.location.hash.substr(1);
         };
     },
@@ -28,13 +28,16 @@ const LeftTab = React.createClass({
                 selectedKeys={[this.state.current]}
                 mode="vertical"
                 className="account-left"
-                >
-                <Menu.Item key="userList">
+            >
+                <Menu.Item style={{ display: window.showCustomer ? 'none' : 'block' }} key="userList">
                     个人用户列表
                 </Menu.Item>
-                <Menu.Item key="orgList">
+                <Menu.Item style={{ display: window.showCustomer ? 'none' : 'block' }} key="orgList">
                     组织用户列表
                 </Menu.Item>
+                <Menu.Item style={{ display: window.showCustomer ? 'block' : 'none' }} key="customerList">
+                    我的客户列表
+                </Menu.Item>
             </Menu>
         );
     },

+ 2 - 16
js/component/manageCenter/userManage/orgList.jsx

@@ -6,6 +6,7 @@ import moment from 'moment';
 import './userList.less';
 import OrgDesc from './orgDesc.jsx';
 import { auditStatusList } from '../../dataDic.js';
+import { getAuditState } from '../../tools.js';
 
 const OrgAdd = React.createClass({
     getInitialState() {
@@ -175,22 +176,7 @@ const OrgList = React.createClass({
                     title: '认证状态',
                     dataIndex: 'auditStatus',
                     key: 'auditStatus',
-                    render: text => {
-                        switch (String(text)) {
-                            case "0":
-                                return "未提交审核";
-                            case "1":
-                                return "提交审核";
-                            case "2":
-                                return "审核未打款";
-                            case "3":
-                                return "审核已打款";
-                            case "4":
-                                return "认证未通过";
-                            case "5":
-                                return "已认证";
-                        }
-                    },
+                    render: text => { return getAuditState(text); }
                 }, {
                     title: '注册时间',
                     dataIndex: 'createTimeFormattedDate',

+ 8 - 22
js/component/manageCenter/userManage/userList.jsx

@@ -6,6 +6,7 @@ import moment from 'moment';
 import './userList.less';
 import UserDesc from './userDesc.jsx';
 import { auditStatusList } from '../../dataDic.js';
+import { getAuditState } from '../../tools.js';
 
 const OrgAdd = React.createClass({
     getInitialState() {
@@ -161,22 +162,7 @@ const UserList = React.createClass({
                     title: '认证状态',
                     dataIndex: 'auditStatus',
                     key: 'auditStatus',
-                    render: text => {
-                        switch (String(text)) {
-                            case "0":
-                                return "未提交审核";
-                            case "1":
-                                return "提交审核";
-                            case "2":
-                                return "审核未打款";
-                            case "3":
-                                return "审核已打款";
-                            case "4":
-                                return "认证未通过";
-                            case "5":
-                                return "已认证";
-                        }
-                    },
+                    render: text => { return getAuditState(text); }
                 }, {
                     title: '注册时间',
                     dataIndex: 'createTimeFormattedDate',
@@ -218,12 +204,12 @@ const UserList = React.createClass({
         this.loadData();
     },
     reset() {
-        this.state.searchAftId = "";
-        this.state.searchLoginId = "";
-        this.state.searchAuditStatus = "";
-        this.state.searchAftUsername = "";
-        this.state.searchEmail = "";
-        this.state.searchTime = [,];
+        this.state.searchAftId = null;
+        this.state.searchLoginId = null;
+        this.state.searchAuditStatus = null;
+        this.state.searchAftUsername = null;
+        this.state.searchEmail = null;
+        this.state.searchTime = [];
         this.loadData();
     },
     searchSwitch() {

+ 14 - 0
js/component/tools.js

@@ -14,6 +14,7 @@ import {
     cognizanceStateList,
     technologyStateList,
     copyrightStateList,
+    auditStatusList,
     vocations
 } from './dataDic.js';
 import { provinceList } from './DicProvinceList.js';
@@ -291,6 +292,18 @@ module.exports = {
             return theType;
         }
     },
+    //显示用户认证状态
+    getAuditState: function (e) {
+        if (e) {
+            let theType = '';
+            auditStatusList.map(function (item) {
+                if (item.value == e) {
+                    theType = item.key;
+                };
+            });
+            return theType;
+        }
+    },
     getCopyrightState: function (e) {
         if (e) {
             let theType = '';
@@ -378,6 +391,7 @@ module.exports = {
         });
         return theArr;
     },
+    
     setUserContactsList(){
         let theOption = [];
         $.ajax({