Browse Source

v1.0.29 update

yee 7 years ago
parent
commit
f5e1e92675
38 changed files with 526 additions and 282 deletions
  1. 1 1
      js/component/account/achievement/techAchievement.jsx
  2. 2 2
      js/component/account/achievement/techAchievementDesc.jsx
  3. 1 1
      js/component/account/demand/techDemand.jsx
  4. 1 0
      js/component/account/services/achievement.jsx
  5. 4 4
      js/component/account/services/activity.jsx
  6. 2 2
      js/component/account/services/activityCostList.jsx
  7. 2 2
      js/component/account/services/cognizance.jsx
  8. 5 3
      js/component/account/services/contract/contract.jsx
  9. 36 42
      js/component/account/services/copyright/copyright.jsx
  10. 2 2
      js/component/account/services/honorList.jsx
  11. 5 2
      js/component/account/services/intellectualDesc.jsx
  12. 1 1
      js/component/account/services/techProduct.jsx
  13. 48 16
      js/component/account/services/technology.jsx
  14. 8 5
      js/component/account/services/technologyAdd.jsx
  15. 9 2
      js/component/account/services/technologyChange.jsx
  16. 1 1
      js/component/account/set/hrSituation.jsx
  17. 11 19
      js/component/dataDic.js
  18. 3 14
      js/component/manageCenter/achievement/techAchievement.jsx
  19. 117 33
      js/component/manageCenter/achievement/techAchievementDesc.jsx
  20. 5 4
      js/component/manageCenter/demand/techDemand.jsx
  21. 169 40
      js/component/manageCenter/demand/techDemandDesc.jsx
  22. 6 11
      js/component/manageCenter/servicesManage/contract/contract.jsx
  23. 6 2
      js/component/manageCenter/servicesManage/contract/contractAdd.jsx
  24. 37 43
      js/component/manageCenter/servicesManage/copyright/copyright.jsx
  25. 1 0
      js/component/manageCenter/servicesManage/highTech/fosterDesc/achievement.jsx
  26. 2 2
      js/component/manageCenter/servicesManage/highTech/fosterDesc/activity.jsx
  27. 2 2
      js/component/manageCenter/servicesManage/highTech/fosterDesc/activityCostList.jsx
  28. 5 6
      js/component/manageCenter/servicesManage/highTech/fosterDesc/annualReport.jsx
  29. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/companyDetail.jsx
  30. 1 0
      js/component/manageCenter/servicesManage/highTech/fosterDesc/honorList.jsx
  31. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/hrSituation.jsx
  32. 3 2
      js/component/manageCenter/servicesManage/highTech/fosterDesc/intellectualDesc.jsx
  33. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/techProduct.jsx
  34. 1 1
      js/component/manageCenter/servicesManage/highTech/highTechApply.jsx
  35. 1 3
      js/component/portal/search/achievement.jsx
  36. 1 1
      js/component/portal/search/demand.jsx
  37. 23 9
      js/component/tools.js
  38. 1 1
      package.json

+ 1 - 1
js/component/account/achievement/techAchievement.jsx

@@ -6,7 +6,7 @@ import moment from 'moment';
 import './techAchievement.less';
 import TechAchievementDesc from './techAchievementDesc.jsx';
 import { achievementCategoryList, techAuditStatusList } from '../../dataDic.js';
-import { companySearch, getAchievementCategory, getTechAuditStatus } from '../../tools.js';
+import { getAchievementCategory, getTechAuditStatus } from '../../tools.js';
 
 const AchievementList = React.createClass({
     loadData(pageNo) {

+ 2 - 2
js/component/account/achievement/techAchievementDesc.jsx

@@ -5,7 +5,7 @@ import './techAchievement.less';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import { IndustryObject, getIndustryCategory } from '../../DicIndustryList.js';
-import { beforeUploadFile, splitUrl, companySearch, getAchievementCategory, getDemandType } from '../../tools.js';
+import { beforeUploadFile, splitUrl, getAchievementCategory, getDemandType } from '../../tools.js';
 
 const KeyWordTagGroup = React.createClass({
     getInitialState() {
@@ -1057,7 +1057,7 @@ const AchievementDetailForm = Form.create()(React.createClass({
                             {getFieldDecorator('transferPrice', {
                                 initialValue: theData.transferPrice
                             })(
-                                <InputNumber min={0} max={999999} step={0.01}/>
+                                <InputNumber min={0} max={999999} step={0.01} />
                                 )}
                             <span style={{ marginLeft: '20px' }}>万元</span>
                         </FormItem>

+ 1 - 1
js/component/account/demand/techDemand.jsx

@@ -6,7 +6,7 @@ import moment from 'moment';
 import './techDemand.less';
 import TechDemandDesc from './techDemandDesc.jsx';
 import { demandTypeList } from '../../dataDic.js';
-import { companySearch, getDemandType } from '../../tools.js';
+import { getDemandType } from '../../tools.js';
 
 const DemandList = React.createClass({
     loadData(pageNo) {

+ 1 - 0
js/component/account/services/achievement.jsx

@@ -86,6 +86,7 @@ const AchievementDescFrom = Form.create()(React.createClass({
         if (!this.props.visible && nextProps.visible) {
             this.props.form.resetFields();
             this.state.fileList = [];
+            this.state.enclosureUrl = null;
         };
     },
     render() {

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

@@ -36,7 +36,7 @@ const ActivityForm = Form.create()(React.createClass({
                 this.setState({
                     data: data.data,
                     targetKeys: data.data.intellectualPropertyNumber ? data.data.intellectualPropertyNumber.split(",") : [],
-                    techField: [Number(data.data.technicalField1), data.data.technicalField2 ? Number(data.data.technicalField2) : null, data.data.technicalField3 ? Number(data.data.technicalField3) : null]
+                    techField: [data.data.technicalField1, data.data.technicalField2, data.data.technicalField3]
                 });
             };
         }.bind(this)).always(function (data) {
@@ -239,7 +239,7 @@ const ActivityForm = Form.create()(React.createClass({
                             {getFieldDecorator('budget', {
                                 initialValue: theData.budget
                             })(
-                                <InputNumber min={0} max={999999} step={0.01}/>
+                                <InputNumber min={0} max={999999} step={0.01} />
                                 )}
                             <span>万元</span>
                         </FormItem>
@@ -311,7 +311,7 @@ const ActivityForm = Form.create()(React.createClass({
                         <div style={{ width: '50%' }}>
                             <Upload
                                 name="ratepay"
-                                action={globalConfig.context + "/api/admin/uploadProof"}
+                                action={globalConfig.context + "/api/user/cognizance/uploadProof"}
                                 data={{ 'sign': 'proof', 'uid': this.props.uid }}
                                 beforeUpload={beforeUploadFile}
                                 fileList={this.state.fileList}
@@ -450,7 +450,7 @@ const Activity = React.createClass({
 
                     mockData: this.state.mockData,
 
-                    techField: [Number(thisdata.technicalField1), Number(thisdata.technicalField2), Number(thisdata.technicalField3)],
+                    techField: [thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3],
                     technicalField: getTechField(thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3),
                     technicalField1: thisdata.technicalField1,
                     technicalField2: thisdata.technicalField2,

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

@@ -152,7 +152,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     >
                         {getFieldDecorator('internalAllCost')(
                             <span className="number-box">
-                                {this.state.internalAllCost}
+                                {this.state.internalAllCost || 0}
                             </span>
                         )}
                     </FormItem>
@@ -267,7 +267,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     >
                         {getFieldDecorator('allCost')(
                             <span className="number-box">
-                                {this.state.allCost}
+                                {this.state.allCost || 0}
                             </span>
                         )}
                     </FormItem>

+ 2 - 2
js/component/account/services/cognizance.jsx

@@ -237,7 +237,7 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                         <span className="item-title">技术领域: </span>
                         {getFieldDecorator('technicalField', {
                             rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
-                            initialValue: [Number(theData.technicalField1), Number(theData.technicalField2), Number(theData.technicalField3)]
+                            initialValue: [theData.technicalField1, theData.technicalField2, theData.technicalField3]
                         })(
                             <Cascader options={techFieldList} placeholder="请选择技术领域" />
                             )}
@@ -303,7 +303,7 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                                     })(
                                         <InputNumber min={0} max={999999} step={0.01} />
                                         )}
-                                        <span>万元</span>
+                                    <span>万元</span>
                                 </FormItem>
                             </div>
                         </div>

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

@@ -26,8 +26,10 @@ const Contract = React.createClass({
                 type: this.state.contractType,
                 status: this.state.contractState,
                 serialNumber: this.state.serialNumber,
-                startDateFormattedDate: this.state.startDateFormattedDate,
-                endDateFormattedDate: this.state.endDateFormattedDate,
+                startDateFormattedDate: this.state.startDateFormattedDate[0],
+                endDateFormattedDate: this.state.endDateFormattedDate[1],
+                completeStartDate: this.state.endDateFormattedDate[0],
+                completeEndDate: this.state.endDateFormattedDate[1]
             },
             success: function (data) {
                 let theArr = [];
@@ -267,7 +269,7 @@ const Contract = React.createClass({
                         <Button type="primary" onClick={this.search}>搜索</Button>
                         <Button onClick={this.reset}>重置</Button>
                         <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
-                            <span>创建时间:</span>
+                            <span>签订时间:</span>
                             <RangePicker style={{ width: '240px' }}
                                 allowClear={false}
                                 value={[this.state.startDateFormattedDate[0] ? moment(this.state.startDateFormattedDate[0]) : null,

+ 36 - 42
js/component/account/services/copyright/copyright.jsx

@@ -27,43 +27,43 @@ const copyright = React.createClass({
                 copyrightName: this.state.copyrightName,
                 status: this.state.status,
                 createTime: this.state.createTime,
-                acceptTime: this.state.acceptTime,
-                authTime: this.state.authTime
+                acceptTime: this.state.acceptTime
             },
             success: function (data) {
-                if (data.error.length || !data.data || !data.data.list) {
+                this.state.data = [];
+                if (!data.data || !data.data.list) {
                     message.warning(data.error[0].message);
-                    return;
-                };
-                for (let i = 0; i < data.data.list.length; i++) {
-                    let thisdata = data.data.list[i];
-                    this.state.data.push({
-                        key: i,
-                        id: thisdata.id,
-                        uid: thisdata.uid,
-                        province: thisdata.province,
-                        unitName: thisdata.unitName,
-                        serialNumber: thisdata.serialNumber,
-                        createTime: thisdata.createTime,
-                        acceptTime: thisdata.acceptTime,
-                        principal: thisdata.principal,
-                        contact: thisdata.contact,
-                        copyrightName: thisdata.copyrightName,
-                        copyrightNumber: thisdata.copyrightNumber,
-                        status: thisdata.status,
-                        comment: thisdata.comment,
-                        workIssue: thisdata.workIssue,
-                        outsource: thisdata.outsource,
-                        inUrgent: thisdata.inUrgent,
-                        authorizedDate: thisdata.authorizedDate,
-                        fisrtContact: thisdata.fisrtContact,
-                        secondContact: thisdata.secondContact,
-                        thirdContact: thisdata.thirdContact,
-                        authorizedDateFormattedDate: thisdata.authorizedDateFormattedDate,
-                        createTimeFormattedDate: thisdata.createTimeFormattedDate,
-                        acceptTimeFormattedDate: thisdata.acceptTimeFormattedDate,
-                        expectTime: [thisdata.acceptTime, thisdata.inUrgent]
-                    });
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        this.state.data.push({
+                            key: i,
+                            id: thisdata.id,
+                            uid: thisdata.uid,
+                            province: thisdata.province,
+                            unitName: thisdata.unitName,
+                            serialNumber: thisdata.serialNumber,
+                            createTime: thisdata.createTime,
+                            acceptTime: thisdata.acceptTime,
+                            principal: thisdata.principal,
+                            contact: thisdata.contact,
+                            copyrightName: thisdata.copyrightName,
+                            copyrightNumber: thisdata.copyrightNumber,
+                            status: thisdata.status,
+                            comment: thisdata.comment,
+                            workIssue: thisdata.workIssue,
+                            outsource: thisdata.outsource,
+                            inUrgent: thisdata.inUrgent,
+                            authorizedDate: thisdata.authorizedDate,
+                            fisrtContact: thisdata.fisrtContact,
+                            secondContact: thisdata.secondContact,
+                            thirdContact: thisdata.thirdContact,
+                            authorizedDateFormattedDate: thisdata.authorizedDateFormattedDate,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate,
+                            acceptTimeFormattedDate: thisdata.acceptTimeFormattedDate,
+                            expectTime: [thisdata.acceptTime, thisdata.inUrgent]
+                        });
+                    };
                 };
                 this.state.pagination.defaultCurrent = data.data.pageNo;
                 this.state.pagination.total = data.data.totalCount;
@@ -161,9 +161,9 @@ const copyright = React.createClass({
                     render: (text) => {
                         if (text[0]) {
                             if (text[1]) {
-                                return getTime(getInUrgentTime(moment(text[0]), text[1]))
+                                return getTime(getInUrgentTime(moment(text[0]), text[1],function(data){ debugger;}))
                             } else {
-                                return getTime(getInUrgentTime(moment(text[0]), 45))
+                                return getTime(getInUrgentTime(moment(text[0]), 45,function(data){ debugger;}))
                             }
                         };
                         return;
@@ -258,12 +258,6 @@ const copyright = React.createClass({
                                 value={[this.state.acceptTime[0] ? moment(this.state.acceptTime[0]) : null,
                                 this.state.acceptTime[1] ? moment(this.state.acceptTime[1]) : null]}
                                 onChange={(date, dateString) => { this.setState({ acceptTime: dateString }) }} />
-                            <span>下证时间:</span>
-                            <RangePicker style={{ width: '240px' }}
-                                allowClear={false}
-                                value={[this.state.authTime[0] ? moment(this.state.authTime[0]) : null,
-                                this.state.authTime[1] ? moment(this.state.authTime[1]) : null]}
-                                onChange={(date, dateString) => { this.setState({ authTime: dateString }) }} />
                         </div>
                     </div>
                     <div className="foster-table">

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

@@ -48,6 +48,7 @@ const HonorListDescFrom = Form.create()(React.createClass({
         if (!this.props.visible && nextProps.visible) {
             this.props.form.resetFields();
             this.state.fileList = [];
+            this.state.enclosureUrl = null;
         };
     },
     componentWillMount() {
@@ -188,8 +189,7 @@ const HonorListDesc = React.createClass({
                     <Modal maskClosable={false} title="企业荣誉及其他证明材料" visible={this.state.visible}
                         onOk={this.handleOk} onCancel={this.handleCancel}
                         width='800px'
-                        footer=''
-                    >
+                        footer='' >
                         <HonorListDescFrom
                             data={this.props.data}
                             spinState={this.spinChange}

+ 5 - 2
js/component/account/services/intellectualDesc.jsx

@@ -38,7 +38,8 @@ const IntellectualDescFrom = Form.create()(React.createClass({
         return {
             loading: false,
             intellectualGetOption: [],
-            catagoryOption: []
+            catagoryOption: [],
+            data: {}
         };
     },
     componentWillMount() {
@@ -53,7 +54,9 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
             )
         });
-        this.loadData();
+        if (this.props.data.id) {
+            this.loadData(this.props.data.id, this.props.data.type);
+        };
     },
     handleSubmit(e) {
         e.preventDefault();

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

@@ -382,7 +382,7 @@ const TechProduct = React.createClass({
                     serialNumber: thisdata.serialNumber,
                     productName: thisdata.productName,
 
-                    techField: [Number(thisdata.technicalField1), Number(thisdata.technicalField2), Number(thisdata.technicalField3)],
+                    techField: [thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3],
                     technicalField: getTechField(thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3),
                     technicalField1: thisdata.technicalField1,
                     technicalField2: thisdata.technicalField2,

+ 48 - 16
js/component/account/services/technology.jsx

@@ -82,15 +82,19 @@ const Technology = React.createClass({
             crossDomain: false,
             url: globalConfig.context + "/api/user/patent/getAdmin",
             success: function (data) {
-                if (data.error.length || !data.data) {
-                    return;
-                };
-                let _me = this;
-                for (var item in data.data) {
-                    _me.state.authorOption.push(
-                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
-                    )
+                let theOption = [];
+                if (data.error && data.error.length) {
+                    message.error(data.error[0].message);
+                } else {
+                    for (var item in data.data) {
+                        theOption.push(
+                            <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                        )
+                    };
                 };
+                this.setState({
+                    authorOption: theOption
+                });
             }.bind(this),
         }).always(function () {
             this.setState({
@@ -106,14 +110,15 @@ const Technology = React.createClass({
             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>
-                    );
+                if (data.error && data.error.length) {
+                    message.error(data.error[0].message);
+                } else {
+                    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
@@ -121,6 +126,30 @@ const Technology = React.createClass({
             }.bind(this),
         });
     },
+    getDepartment() {
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/techproject/getDepartment",
+            success: function (data) {
+                let theOption = [];
+                if (data.error && data.error.length) {
+                    message.error(data.error[0].message);
+                } else {
+                    for (let item in data.data) {
+                        let theData = data.data[item];
+                        theOption.push(
+                            <Select.Option value={item} key={item}>{theData}</Select.Option>
+                        );
+                    };
+                };
+                this.setState({
+                    departmentOption: theOption
+                });
+            }.bind(this),
+        });
+    },
     getInitialState() {
         return {
             authorOption: [],
@@ -192,6 +221,7 @@ const Technology = React.createClass({
         this.loadData();
         this.getAuthorList();
         this.getContactsList();
+        this.getDepartment();
     },
     tableRowClick(record, index) {
         this.state.RowData = record;
@@ -258,11 +288,13 @@ const Technology = React.createClass({
                 <ApplyChange
                     data={this.state.RowData}
                     contactsOption={this.state.contactsOption}
+                    departmentOption={this.state.departmentOption}
                     showDesc={this.state.showDesc}
                     closeDesc={this.closeDesc} />
                 <ApplyAdd
                     authorOption={this.state.authorOption}
                     contactsOption={this.state.contactsOption}
+                    departmentOption={this.state.departmentOption}
                     showAdd={this.state.showAdd}
                     closeAdd={this.closeAdd} />
             </div >

+ 8 - 5
js/component/account/services/technologyAdd.jsx

@@ -1,5 +1,6 @@
 import React from 'react';
 import { Button, Input, Select, message, Modal, Radio } from 'antd';
+import { companySearch } from '../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
@@ -111,11 +112,13 @@ const ApplyAdd = React.createClass({
                     <div className="clearfix">
                         <div className="half-item">
                             <span className="item-title">申报科技部门:  </span>
-                            <Input
-                                placeholder="请填写申报部门"
-                                style={{ width: '200px' }}
-                                onChange={(e) => { this.state.department = e.target.value; }}
-                            />
+                            <Select placeholder="请选择申报部门" style={{ width: 300 }}
+                                notFoundContent="未获取到申报部门列表"
+                                showSearch
+                                filterOption={companySearch}
+                                onSelect={(e, n) => { this.state.department = e }}>
+                                {this.props.departmentOption}
+                            </Select>
                         </div>
                     </div>
                     <div className="clearfix">

+ 9 - 2
js/component/account/services/technologyChange.jsx

@@ -2,7 +2,7 @@ import React from 'react';
 import { Icon, Form, Button, Input, Select, Spin, Table, message, Modal, Radio, Upload } from 'antd';
 import { cognizanceStateList } from '../../dataDic.js';
 import { getProvince } from '../../NewDicProvinceList';
-import { getCognizanceState, beforeUpload, beforeUploadFile, downloadFile } from '../../tools.js';
+import { getCognizanceState, beforeUploadFile, downloadFile, companySearch } from '../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
@@ -214,7 +214,13 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                             {getFieldDecorator('department', {
                                 initialValue: this.state.department
                             })(
-                                <Input />
+                                <Select placeholder="请选择申报部门"
+                                    style={{ width: 300 }}
+                                    notFoundContent="未获取到申报部门列表"
+                                    showSearch
+                                    filterOption={companySearch} >
+                                    {this.props.departmentOption}
+                                </Select>
                                 )}
                         </FormItem>
                     </div>
@@ -384,6 +390,7 @@ const ApplyChange = React.createClass({
                             visible={this.state.visible}
                             data={this.props.data}
                             contactsOption={this.props.contactsOption}
+                            departmentOption={this.props.departmentOption}
                             spinState={this.spinChange}
                             closeModal={this.handleCancel} />
                     </Modal>

+ 1 - 1
js/component/account/set/hrSituation.jsx

@@ -735,7 +735,7 @@ const HrSituation = React.createClass({
             method: "POST",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + "/api/user/cognizance/deleteFinance",
+            url: globalConfig.context + "/api/user/deleteHumanResource",
             data: {
                 ids: deletedIds
             }

File diff suppressed because it is too large
+ 11 - 19
js/component/dataDic.js


+ 3 - 14
js/component/manageCenter/achievement/techAchievement.jsx

@@ -48,6 +48,7 @@ const AchievementList = React.createClass({
                             dataCategory: thisdata.dataCategory,
                             name: thisdata.name,
                             keyword: thisdata.keyword,
+                            theName:thisdata.username || thisdata.ownerName,
                             category: thisdata.category,
                             ownerName: thisdata.username ? thisdata.username : thisdata.ownerName,
                             ownerType: thisdata.ownerType,
@@ -112,20 +113,8 @@ const AchievementList = React.createClass({
                     render: text => { return getAchievementCategory(text); }
                 }, {
                     title: '所有人名称',
-                    dataIndex: 'ownerName',
-                    key: 'ownerName',
-                }, {
-                    title: '所有人类型',
-                    dataIndex: 'ownerType',
-                    key: 'ownerType',
-                    render: text => {
-                        switch (text) {
-                            case "0":
-                                return <span>个人</span>;
-                            case "1":
-                                return <span>组织</span>
-                        }
-                    }
+                    dataIndex: 'theName',
+                    key: 'theName',
                 }, {
                     title: '审核状态',
                     dataIndex: 'auditStatus',

+ 117 - 33
js/component/manageCenter/achievement/techAchievementDesc.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Tabs, Table, Icon, Tooltip, Modal, message, AutoComplete, Spin, Upload, Input, InputNumber, Select, Button, Radio, Form, Cascader, Tag } from 'antd';
+import { Tabs, Table, Icon, Tooltip, Modal, message, AutoComplete, Spin, Upload, Input, InputNumber, Select, Button, Radio, Form, Cascader, Tag, Switch } from 'antd';
 import './techAchievement.less';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -168,6 +168,7 @@ const AchievementDetailShow = Form.create()(React.createClass({
                 this.setState({
                     data: thisData,
                     orgDisplay: thisData.ownerType,
+                    switchValue: Boolean(!thisData.ownerId),
                     tags: thisData.keyword ? (thisData.keyword.replace(/(,|、)/g, ",")).split(',') : [],
                     technicalPictureUrl: thisData.technicalPictureUrl ? splitUrl(thisData.technicalPictureUrl, ',', globalConfig.avatarHost + '/upload') : [],
                     maturityPictureUrl: thisData.maturityPictureUrl ? splitUrl(thisData.maturityPictureUrl, ',', globalConfig.avatarHost + '/upload') : []
@@ -463,8 +464,31 @@ const AchievementDetailShow = Form.create()(React.createClass({
                         <FormItem className="half-item"
                             {...formItemLayout}
                             label="成果所有人名称" >
-                            <span>{theData.ownerName}</span>
+                            <span>{theData.iOwnerName}</span>
                         </FormItem>
+                        {this.state.switchValue ?
+                            <div className="clearfix" >
+                                <FormItem className="half-item"
+                                    {...formItemLayout}
+                                    label="联系电话" >
+                                    <span>{theData.ownerMobile}</span>
+                                </FormItem>
+                                <FormItem className="half-item"
+                                    {...formItemLayout}
+                                    label="证件号" >
+                                    <span>{theData.ownerIdNumber}</span>
+                                </FormItem>
+                                <FormItem className="half-item"
+                                    {...formItemLayout}
+                                    label="电子邮箱" >
+                                    <span>{theData.ownerEmail}</span>
+                                </FormItem>
+                                <FormItem className="half-item"
+                                    {...formItemLayout}
+                                    label="通讯地址" >
+                                    <span>{theData.ownerPostalAddress}</span>
+                                </FormItem>
+                            </div> : <div></div>}
                     </div>
                     <div className="clearfix">
                         <FormItem className="half-item"
@@ -609,6 +633,7 @@ const AchievementDetailForm = Form.create()(React.createClass({
             loading: false,
             auditStatus: 0,
             textFileList: [],
+            switchValue: false,
             techPlanFileList: [],
             data: {},
             tags: [],
@@ -641,6 +666,7 @@ const AchievementDetailForm = Form.create()(React.createClass({
                 this.setState({
                     data: thisData,
                     orgDisplay: thisData.ownerType,
+                    switchValue: Boolean(!thisData.ownerId),
                     tags: thisData.keyword ? (thisData.keyword.replace(/(,|、)/g, ",")).split(',') : [],
                     technicalPictureUrl: thisData.technicalPictureUrl ? splitUrl(thisData.technicalPictureUrl, ',', globalConfig.avatarHost + '/upload') : [],
                     maturityPictureUrl: thisData.maturityPictureUrl ? splitUrl(thisData.maturityPictureUrl, ',', globalConfig.avatarHost + '/upload') : []
@@ -756,10 +782,6 @@ const AchievementDetailForm = Form.create()(React.createClass({
                 message.warning('关键词数量不能小于3个!');
                 return;
             };
-            if (values.iOwnerName && this.state.dataSourceObj && !this.state.dataSourceObj[values.iOwnerName]) {
-                message.warning('请选择一个有效的公司!');
-                return;
-            };
             if (values.bargainingMode == 1 && !values.transferPrice) {
                 message.warning('议价方式为[ 定价 ]时, [ 转让价格 ]不能为空!');
                 return;
@@ -803,14 +825,24 @@ const AchievementDetailForm = Form.create()(React.createClass({
                         technicalPictureUrl: theTechnicalPictureUrl,
                         fieldA: values.field ? values.field[0] : undefined,
                         fieldB: values.field ? values.field[1] : undefined,
-                        contacts: values.contacts,
                         maturity: values.maturity,
                         maturityPictureUrl: theMaturityPictureUrl,
                         maturityTextFileUrl: this.state.maturityTextFileUrl,
                         maturityVideoUrl: values.maturityVideoUrl,
                         innovation: values.innovation,
-                        ownerId: this.state.dataSourceObj ? this.state.dataSourceObj[values.iOwnerName] : this.props.data.ownerId,
+                        //
+                        switchSign: this.state.switchValue ? 1 : 0,
+                        //
+                        ownerId: !this.state.switchValue ? (this.state.dataSourceObj ? this.state.dataSourceObj[values.iOwnerName] : this.props.data.ownerId) : undefined,
+                        contacts: !this.state.switchValue ? values.contacts : undefined,
                         ownerType: this.props.detailApiUrl.indexOf('org') != -1 ? 1 : 0,
+                        //自定义
+                        ownerName: this.state.switchValue ? values.ownerName : undefined,
+                        ownerIdNumber: this.state.switchValue ? values.ownerIdNumber : undefined,
+                        ownerMobile: this.state.switchValue ? values.ownerMobile : undefined,
+                        ownerEmail: this.state.switchValue ? values.ownerEmail : undefined,
+                        ownerPostalAddress: this.state.switchValue ? values.ownerPostalAddress : undefined,
+                        //
                         cooperationMode: values.cooperationMode,
                         transferMode: values.transferMode,
                         bargainingMode: values.bargainingMode,
@@ -854,6 +886,7 @@ const AchievementDetailForm = Form.create()(React.createClass({
             };
             this.state.data = {};
             this.state.tags = [];
+            this.state.switchValue = false;
             this.state.technicalPictureUrl = [];
             this.state.maturityPictureUrl = [];
             this.state.textFileList = [];
@@ -1075,40 +1108,91 @@ const AchievementDetailForm = Form.create()(React.createClass({
                             <Input />
                             )}
                     </FormItem>
-                    <div className="clearfix" >
+                    <FormItem
+                        labelCol={{ span: 4 }}
+                        wrapperCol={{ span: 18 }}
+                        label="自定义成果所有人" >
+                        <Switch checked={this.state.switchValue} onChange={(e) => { this.setState({ switchValue: e }); }} />
+                    </FormItem>
+                    {this.state.switchValue ? <div className="clearfix" >
                         <FormItem className="half-item"
                             {...formItemLayout}
                             label="成果所有人" >
-                            {getFieldDecorator('iOwnerName', {
-                                rules: [{ required: true, message: '此项为必填项!' }],
-                                initialValue: theData.iOwnerName || ''
+                            {getFieldDecorator('ownerName', {
+                                initialValue: theData.ownerName
                             })(
-                                <AutoComplete
-                                    dataSource={this.state.dataSource}
-                                    style={{ width: 200 }}
-                                    onSearch={this.state.therottleSearch}
-                                    placeholder="输入成果所有人"
-                                    onSelect={(e) => {
-                                        this.getContactsList(this.state.dataSourceObj[e]);
-                                    }} />
+                                <Input />
                                 )}
                         </FormItem>
-                        {this.props.detailApiUrl.indexOf('org') >= 0 ? <FormItem className="half-item"
+                        <FormItem className="half-item"
                             {...formItemLayout}
-                            label="联系" >
-                            {getFieldDecorator('contacts', {
-                                initialValue: theData.contacts
+                            label="联系电话" >
+                            {getFieldDecorator('ownerMobile', {
+                                initialValue: theData.ownerMobile
                             })(
-                                <Select style={{ width: 260 }}
-                                    placeholder="请选择联系人"
-                                    notFoundContent="未获取到联系人列表"
-                                    showSearch
-                                    filterOption={companySearch}>
-                                    {this.state.contactsOption}
-                                </Select>
+                                <Input />
                                 )}
-                        </FormItem> : <div></div>}
-                    </div>
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="证件号" >
+                            {getFieldDecorator('ownerIdNumber', {
+                                initialValue: theData.ownerIdNumber
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="电子邮箱" >
+                            {getFieldDecorator('ownerEmail', {
+                                initialValue: theData.ownerEmail
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="通讯地址" >
+                            {getFieldDecorator('ownerPostalAddress', {
+                                initialValue: theData.ownerPostalAddress
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                    </div> : <div className="clearfix" >
+                            <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="成果所有人" >
+                                {getFieldDecorator('iOwnerName', {
+                                    initialValue: theData.iOwnerName || ''
+                                })(
+                                    <AutoComplete
+                                        dataSource={this.state.dataSource}
+                                        style={{ width: 200 }}
+                                        onSearch={this.state.therottleSearch}
+                                        placeholder="输入成果所有人"
+                                        onSelect={(e) => {
+                                            this.getContactsList(this.state.dataSourceObj[e]);
+                                        }} />
+                                    )}
+                            </FormItem>
+                            {this.props.detailApiUrl.indexOf('org') >= 0 ? <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="联系人" >
+                                {getFieldDecorator('contacts', {
+                                    initialValue: theData.contacts
+                                })(
+                                    <Select style={{ width: 260 }}
+                                        placeholder="请选择联系人"
+                                        notFoundContent="未获取到联系人列表"
+                                        showSearch
+                                        filterOption={companySearch}>
+                                        {this.state.contactsOption}
+                                    </Select>
+                                    )}
+                            </FormItem> : <div></div>}
+                        </div>}
                     <div className="clearfix">
                         <FormItem className="half-item"
                             {...formItemLayout}

+ 5 - 4
js/component/manageCenter/demand/techDemand.jsx

@@ -55,6 +55,7 @@ const DemandList = React.createClass({
                             keyword: thisdata.keyword,
                             infoSources: thisdata.infoSources,
                             username: thisdata.username,
+                            theName: thisdata.username || thisdata.employerName,
                             demandType: thisdata.demandType,
                             validityPeriod: thisdata.validityPeriod,
                             employerName: thisdata.employerName,
@@ -139,8 +140,8 @@ const DemandList = React.createClass({
                     }
                 }, {
                     title: '雇主名称',
-                    dataIndex: 'username',
-                    key: 'username',
+                    dataIndex: 'theName',
+                    key: 'theName',
                 }, {
                     title: '审核状态',
                     dataIndex: 'auditStatus',
@@ -455,12 +456,12 @@ const DemandList = React.createClass({
                             <Select.Option value="0" >未发布</Select.Option>
                             <Select.Option value="1" >已发布</Select.Option>
                         </Select>
-                        <span style={{marginLeft:'10px'}}>有效期限 : </span>
+                        <span style={{ marginLeft: '10px' }}>有效期限 : </span>
                         <RangePicker
                             value={[this.state.validityPeriodDate[0] ? moment(this.state.validityPeriodDate[0]) : null,
                             this.state.validityPeriodDate[1] ? moment(this.state.validityPeriodDate[1]) : null]}
                             onChange={(data, dataString) => { this.setState({ validityPeriodDate: dataString }); }} />
-                        <span style={{marginLeft:'10px'}}>发布时间 : </span>
+                        <span style={{ marginLeft: '10px' }}>发布时间 : </span>
                         <RangePicker
                             value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
                             this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}

+ 169 - 40
js/component/manageCenter/demand/techDemandDesc.jsx

@@ -1,11 +1,12 @@
 import React from 'react';
-import { Tabs, Table, Icon, Tooltip, Modal, Popover, message, Spin, Upload, Input, InputNumber, Select, DatePicker, Button, Radio, Form, Cascader, Tag } from 'antd';
+import { AutoComplete, Switch, Tabs, Table, Icon, Tooltip, Modal, Popover, message, Spin, Upload, Input, InputNumber, Select, DatePicker, Button, Radio, Form, Cascader, Tag } from 'antd';
 import moment from 'moment';
 import './techDemand.less';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import { IndustryObject, getIndustryCategory } from '../../DicIndustryList.js';
 import { beforeUploadFile, getTechAuditStatus, splitUrl, companySearch, getTechField, getDemandType, getAchievementCategory } from '../../tools.js';
+import throttle from '../../throttle.js';
 
 const KeyWordTagGroup = React.createClass({
     getInitialState() {
@@ -164,6 +165,7 @@ const DemandDetailShow = Form.create()(React.createClass({
                 };
                 this.setState({
                     data: thisData,
+                    switchValue: Boolean(!thisData.employerId),
                     tags: thisData.keyword ? (thisData.keyword.replace(/(,|、)/g, ",")).split(',') : [],
                     pictureUrl: thisData.pictureUrl ? splitUrl(thisData.pictureUrl, ',', globalConfig.avatarHost + '/upload') : []
                 });
@@ -299,18 +301,43 @@ const DemandDetailShow = Form.create()(React.createClass({
                             label="需求名称" >
                             <span>{theData.name}</span>
                         </FormItem>
+                    </div>
+                    {this.state.switchValue ? <div>
                         <FormItem className="half-item"
                             {...formItemLayout}
                             label="雇主名称" >
-                            <span>{theData.username}</span>
+                            <span>{theData.employerName}</span>
                         </FormItem>
                         <FormItem className="half-item"
                             {...formItemLayout}
-                            label="联系" >
-                            <span>{this.state.contactsObj[theData.contacts]}</span>
+                            label="联系电话" >
+                            <span>{theData.employerContactsMobile}</span>
                         </FormItem>
                         <FormItem className="half-item"
                             {...formItemLayout}
+                            label="电子邮箱" >
+                            <span>{theData.employerContactsMailbox}</span>
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="通讯地址" >
+                            <span>{theData.employerAddress}</span>
+                        </FormItem>
+                    </div> : <div className="clearfix">
+                            <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="雇主名称" >
+                                <span>{theData.username}</span>
+                            </FormItem>
+                            <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="联系人" >
+                                <span>{this.state.contactsObj[theData.contacts]}</span>
+                            </FormItem>
+                        </div>}
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
                             label="负责人" >
                             <span>{this.props.techBrodersObj[theData.techBrokerId]}</span>
                         </FormItem>
@@ -560,13 +587,14 @@ const DemandDetailForm = Form.create()(React.createClass({
             visible: false,
             loading: false,
             auditStatus: 0,
+            switchValue: false,
             textFileList: [],
             videoFileList: [],
             contactsOption: [],
             data: {},
             tags: [],
-            pictureUrl: []
-
+            pictureUrl: [],
+            dataSource: []
         };
     },
     getContactsList(theUid) {
@@ -623,6 +651,7 @@ const DemandDetailForm = Form.create()(React.createClass({
                 };
                 this.setState({
                     data: thisData,
+                    switchValue: Boolean(!thisData.employerId),
                     tags: thisData.keyword ? (thisData.keyword.replace(/(,|、)/g, ",")).split(',') : [],
                     pictureUrl: thisData.pictureUrl ? splitUrl(thisData.pictureUrl, ',', globalConfig.avatarHost + '/upload') : []
                 });
@@ -687,12 +716,21 @@ const DemandDetailForm = Form.create()(React.createClass({
                         fixedScheme: values.fixedScheme,
                         costEscrow: values.costEscrow,
                         budgetCost: values.budgetCost,
-                        employerId: values.employerId || this.state.data.employerId,
+                        //
+                        switchSign: this.state.switchValue ? 1 : 0,
+                        //
+                        employerId: !this.state.switchValue ? (this.state.dataSourceObj ? this.state.dataSourceObj[values.employerId] : this.props.data.employerId) : null,
+                        contacts: !this.state.switchValue ? values.contacts : null,
+                        //自定义
+                        employerName: this.state.switchValue ? values.employerName : null,
+                        employerAddress: this.state.switchValue ? values.employerAddress : null,
+                        employerContactsMobile: this.state.switchValue ? values.employerContactsMobile : null,
+                        employerContactsMailbox: this.state.switchValue ? values.employerContactsMailbox : null,
+                        //
                         releaseStatus: values.releaseStatus,
                         principalId: values.principalId,
                         validityPeriodFormattedDate: values.validityPeriod ? values.validityPeriod.format('YYYY-MM-DD') : undefined,
                         //
-                        contacts: values.contacts,
                         status: this.state.status,
                         auditStatus: this.state.auditStatus
                     }
@@ -711,7 +749,63 @@ const DemandDetailForm = Form.create()(React.createClass({
             }
         });
     },
+    handleSearch(e) {
+        if (this.props.detailApiUrl.indexOf('org') != -1) {
+            $.ajax({
+                method: "get",
+                dataType: "json",
+                crossDomain: false,
+                url: globalConfig.context + "/api/admin/achievement/orgOwner",
+                data: { name: e },
+                success: function (data) {
+                    let theArr = [];
+                    let theObj = {};
+                    if (!data.data) {
+                        if (data.error && data.error.length) {
+                            message.warning(data.error[0].message);
+                        };
+                    } else if (!$.isEmptyObject(data.data)) {
+                        data.data.map(function (item) {
+                            theArr.push(item.unitName);
+                            theObj[item.unitName] = item.uid;
+                        });
+                    };
+                    this.setState({
+                        dataSource: theArr,
+                        dataSourceObj: theObj
+                    });
+                }.bind(this),
+            });
+        } else {
+            $.ajax({
+                method: "get",
+                dataType: "json",
+                crossDomain: false,
+                url: globalConfig.context + "/api/admin/achievement/userOwner",
+                data: { name: e },
+                success: function (data) {
+                    let theArr = [];
+                    let theObj = {};
+                    if (!data.data) {
+                        if (data.error && data.error.length) {
+                            message.warning(data.error[0].message);
+                        };
+                    } else if (!$.isEmptyObject(data.data)) {
+                        for (let item in data.data) {
+                            theArr.push(data.data[item]);
+                            theObj[data.data[item]] = item;
+                        };
+                    };
+                    this.setState({
+                        dataSource: theArr,
+                        dataSourceObj: theObj
+                    });
+                }.bind(this),
+            });
+        };
+    },
     componentWillMount() {
+        this.state.therottleSearch = throttle(this.handleSearch, 1000, { leading: false }).bind(this);
         if (this.props.data && this.props.data.id) {
             this.loadData(this.props.data.id, this.props.detailApiUrl);
         };
@@ -724,6 +818,7 @@ const DemandDetailForm = Form.create()(React.createClass({
             this.state.contactsOption = [];
             this.state.data = {};
             this.state.tags = [];
+            this.state.switchValue = false;
             this.state.pictureUrl = [];
             this.state.textFileList = [];
             this.state.videoFileList = [];
@@ -758,48 +853,82 @@ const DemandDetailForm = Form.create()(React.createClass({
                                 <Input />
                                 )}
                         </FormItem>
-                        <FormItem className="half-item" style={{ display: theData.username ? 'block' : 'none' }}
+                    </div>
+                    <FormItem style={{ marginBottom: '10px' }} labelCol={{ span: 3 }}
+                        label="自定义雇主" >
+                        <Switch checked={this.state.switchValue} onChange={(e) => { this.setState({ switchValue: e }); }} />
+                    </FormItem>
+                    {this.state.switchValue ? <div className="clearfix" >
+                        <FormItem className="half-item"
                             {...formItemLayout}
                             label="雇主名称" >
-                            <span>{theData.username}</span>
+                            {getFieldDecorator('employerName', {
+                                initialValue: theData.employerName
+                            })(
+                                <Input />
+                                )}
                         </FormItem>
-                        <FormItem className="half-item" style={{ display: theData.username ? 'none' : 'block' }}
+                        <FormItem className="half-item"
                             {...formItemLayout}
-                            label="雇主名称" >
-                            {getFieldDecorator('employerId', {
-                                initialValue: theData.employerId
+                            label="联系电话" >
+                            {getFieldDecorator('employerContactsMobile', {
+                                initialValue: theData.employerContactsMobile
                             })(
-                                <Select
-                                    placeholder="请选择"
-                                    notFoundContent="未找到"
-                                    style={{ width: 260 }}
-                                    showSearch
-                                    filterOption={companySearch}
-                                    onSelect={(e, n) => {
-                                        theData.uid = e;
-                                        if (this.props.detailApiUrl.indexOf('org') >= 0) {
-                                            this.getContactsList(e);
-                                        };
-                                    }}>
-                                    {this.props.detailApiUrl.indexOf('org') >= 0 ? this.props.companyOption : this.props.userOption}
-                                </Select>
+                                <Input />
                                 )}
                         </FormItem>
-                        {this.props.detailApiUrl.indexOf('org') >= 0 ? <FormItem className="half-item"
+                        <FormItem className="half-item"
                             {...formItemLayout}
-                            label="联系人" >
-                            {getFieldDecorator('contacts', {
-                                initialValue: theData.contacts
+                            label="电子邮箱" >
+                            {getFieldDecorator('employerContactsMailbox', {
+                                initialValue: theData.employerContactsMailbox
                             })(
-                                <Select style={{ width: 260 }}
-                                    placeholder="请选择联系人"
-                                    notFoundContent="未获取到联系人列表"
-                                    showSearch
-                                    filterOption={companySearch}>
-                                    {this.state.contactsOption}
-                                </Select>
+                                <Input />
                                 )}
-                        </FormItem> : <div></div>}
+                        </FormItem>
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="通讯地址" >
+                            {getFieldDecorator('employerAddress', {
+                                initialValue: theData.employerAddress
+                            })(
+                                <Input />
+                                )}
+                        </FormItem>
+                    </div> : <div className="clearfix">
+                            <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="雇主名称" >
+                                {getFieldDecorator('employerId', {
+                                    initialValue: theData.username || ''
+                                })(
+                                    <AutoComplete
+                                        dataSource={this.state.dataSource}
+                                        style={{ width: 200 }}
+                                        onSearch={this.state.therottleSearch}
+                                        placeholder="雇主名称"
+                                        onSelect={(e) => {
+                                            this.getContactsList(this.state.dataSourceObj[e]);
+                                        }} />
+                                    )}
+                            </FormItem>
+                            {this.props.detailApiUrl.indexOf('org') >= 0 ? <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="联系人" >
+                                {getFieldDecorator('contacts', {
+                                    initialValue: theData.contacts
+                                })(
+                                    <Select style={{ width: 260 }}
+                                        placeholder="请选择联系人"
+                                        notFoundContent="未获取到联系人列表"
+                                        showSearch
+                                        filterOption={companySearch}>
+                                        {this.state.contactsOption}
+                                    </Select>
+                                    )}
+                            </FormItem> : <div></div>}
+                        </div>}
+                    <div className="clearfix">
                         {theData.techBrokerId ? <FormItem className="half-item"
                             {...formItemLayout}
                             label="负责人" >

+ 6 - 11
js/component/manageCenter/servicesManage/contract/contract.jsx

@@ -172,8 +172,6 @@ const Contract = React.createClass({
             showAdd: false,
             showDesc: false,
             searchMore: true,
-            startDateFormattedDate: [],
-            endDateFormattedDate: [],
             selectedRowKeys: [],
             selectedRows: [],
             pagination: {
@@ -374,8 +372,8 @@ const Contract = React.createClass({
         this.state.contractState = undefined;
         this.state.contractType = undefined;
         this.state.contractId = undefined;
-        this.state.startDateFormattedDate = [];
-        this.state.endDateFormattedDate = [];
+        this.state.startDateFormattedDate = undefined;
+        this.state.endDateFormattedDate = undefined;
         this.loadData();
     },
     render() {
@@ -389,7 +387,6 @@ const Contract = React.createClass({
             }
         };
         const hasSelected = this.state.selectedRowKeys.length > 0;
-        const { MonthPicker, RangePicker } = DatePicker;
         return (
             <div className="foster-box">
                 <div className="foster-content">
@@ -450,16 +447,14 @@ const Contract = React.createClass({
                             onClick={this.delectRow}>删除<Icon type="minus" /></Button>
                         <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
                             <span>创建时间:</span>
-                            <RangePicker style={{ width: '240px' }}
+                            <DatePicker style={{ width: '240px' }}
                                 allowClear={false}
-                                value={[this.state.startDateFormattedDate[0] ? moment(this.state.startDateFormattedDate[0]) : null,
-                                this.state.startDateFormattedDate[1] ? moment(this.state.startDateFormattedDate[1]) : null]}
+                                value={this.state.startDateFormattedDate ? moment(this.state.startDateFormattedDate) : null}
                                 onChange={(date, dateString) => { this.setState({ startDateFormattedDate: dateString }) }} />
                             <span>结束时间:</span>
-                            <RangePicker style={{ width: '240px' }}
+                            <DatePicker style={{ width: '240px' }}
                                 allowClear={false}
-                                value={[this.state.endDateFormattedDate[0] ? moment(this.state.endDateFormattedDate[0]) : null,
-                                this.state.endDateFormattedDate[1] ? moment(this.state.endDateFormattedDate[1]) : null]}
+                                value={this.state.endDateFormattedDate ? moment(this.state.endDateFormattedDate) : null}
                                 onChange={(date, dateString) => { this.setState({ endDateFormattedDate: dateString }) }} />
                         </div>
                     </div>

+ 6 - 2
js/component/manageCenter/servicesManage/contract/contractAdd.jsx

@@ -154,6 +154,10 @@ const ContractAddFrom = Form.create()(React.createClass({
         this.props.form.validateFields((err, values) => {
             if (!err) {
                 this.props.spinState(true);
+                if (!values.principals || !values.recordTime ) {
+                    message.warning('请填写审核信息!');
+                    return;
+                };
                 $.ajax({
                     method: "POST",
                     dataType: "json",
@@ -252,9 +256,9 @@ const ContractAddFrom = Form.create()(React.createClass({
                         {getFieldDecorator('previousFee', {
                             initialValue: theData.previousFee
                         })(
-                            <Input style={{ width: '80px', marginRight: '20px' }} />
+                            <InputNumber min={0} max={9999} step={0.01} style={{ width: '80px', marginRight: '20px' }} />
                             )}
-                        <span>元</span>
+                        <span>元</span>
                     </FormItem>
                 </div>
                 <FormItem

+ 37 - 43
js/component/manageCenter/servicesManage/copyright/copyright.jsx

@@ -31,46 +31,46 @@ const copyright = React.createClass({
                 copyrightName: this.state.copyrightName,
                 status: this.state.searchStatus,
                 createTime: this.state.createTime,
-                acceptTime: this.state.acceptTime,
-                authTime: this.state.authTime
+                acceptTime: this.state.acceptTime
             },
             success: function (data) {
-                if (data.error.length || !data.data || !data.data.list) {
+                this.state.data = [];
+                if (!data.data || !data.data.list) {
                     message.warning(data.error[0].message);
-                    return;
-                };
-                for (let i = 0; i < data.data.list.length; i++) {
-                    let thisdata = data.data.list[i];
-                    this.state.data.push({
-                        key: i,
-                        id: thisdata.id,
-                        uid: thisdata.uid,
-                        province: thisdata.province,
-                        unitName: thisdata.unitName,
-                        serialNumber: thisdata.serialNumber,
-                        contractNumber: thisdata.contractNumber,
-                        createTime: thisdata.createTime,
-                        acceptTime: thisdata.acceptTime,
-                        principal: thisdata.principal,
-                        contact: thisdata.contact,
-                        copyrightName: thisdata.copyrightName,
-                        copyrightNumber: thisdata.copyrightNumber,
-                        status: thisdata.status,
-                        comment: thisdata.comment,
-                        workIssue: thisdata.workIssue,
-                        outsource: thisdata.outsource,
-                        inUrgent: thisdata.inUrgent,
-                        expectTime: [thisdata.acceptTime, thisdata.inUrgent],
-                        authorizedDate: thisdata.authorizedDate,
-                        fisrtContact: thisdata.fisrtContact,
-                        secondContact: thisdata.secondContact,
-                        thirdContact: thisdata.thirdContact,
-                        authorizedDateFormattedDate: thisdata.authorizedDateFormattedDate,
-                        createTimeFormattedDate: thisdata.createTimeFormattedDate,
-                        acceptTimeFormattedDate: thisdata.acceptTimeFormattedDate,
-                        founder: thisdata.founder,
-                        techPrincipal: thisdata.techPrincipal
-                    });
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        this.state.data.push({
+                            key: i,
+                            id: thisdata.id,
+                            uid: thisdata.uid,
+                            province: thisdata.province,
+                            unitName: thisdata.unitName,
+                            serialNumber: thisdata.serialNumber,
+                            contractNumber: thisdata.contractNumber,
+                            createTime: thisdata.createTime,
+                            acceptTime: thisdata.acceptTime,
+                            principal: thisdata.principal,
+                            contact: thisdata.contact,
+                            copyrightName: thisdata.copyrightName,
+                            copyrightNumber: thisdata.copyrightNumber,
+                            status: thisdata.status,
+                            comment: thisdata.comment,
+                            workIssue: thisdata.workIssue,
+                            outsource: thisdata.outsource,
+                            inUrgent: thisdata.inUrgent,
+                            expectTime: [thisdata.acceptTime, thisdata.inUrgent],
+                            authorizedDate: thisdata.authorizedDate,
+                            fisrtContact: thisdata.fisrtContact,
+                            secondContact: thisdata.secondContact,
+                            thirdContact: thisdata.thirdContact,
+                            authorizedDateFormattedDate: thisdata.authorizedDateFormattedDate,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate,
+                            acceptTimeFormattedDate: thisdata.acceptTimeFormattedDate,
+                            founder: thisdata.founder,
+                            techPrincipal: thisdata.techPrincipal
+                        });
+                    };
                 };
                 this.state.pagination.defaultCurrent = data.data.pageNo;
                 this.state.pagination.total = data.data.totalCount;
@@ -582,12 +582,6 @@ const copyright = React.createClass({
                                 value={[this.state.acceptTime[0] ? moment(this.state.acceptTime[0]) : null,
                                 this.state.acceptTime[1] ? moment(this.state.acceptTime[1]) : null]}
                                 onChange={(date, dateString) => { this.setState({ acceptTime: dateString }) }} />
-                            <span>下证时间:</span>
-                            <RangePicker style={{ width: '240px' }}
-                                allowClear={false}
-                                value={[this.state.authTime[0] ? moment(this.state.authTime[0]) : null,
-                                this.state.authTime[1] ? moment(this.state.authTime[1]) : null]}
-                                onChange={(date, dateString) => { this.setState({ authTime: dateString }) }} />
                         </div>
                     </div>
                     <div className="foster-table">

+ 1 - 0
js/component/manageCenter/servicesManage/highTech/fosterDesc/achievement.jsx

@@ -87,6 +87,7 @@ const AchievementDescFrom = Form.create()(React.createClass({
         if (!this.props.visible && nextProps.visible) {
             this.props.form.resetFields();
             this.state.fileList = [];
+            this.state.enclosureUrl = null;
         };
     },
     render() {

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

@@ -34,7 +34,7 @@ const ActivityForm = Form.create()(React.createClass({
             this.setState({
                 data: data.data,
                 targetKeys: data.data.intellectualPropertyNumber ? data.data.intellectualPropertyNumber.split(",") : [],
-                techField: [Number(data.data.technicalField1), data.data.technicalField2 ? Number(data.data.technicalField2) : null, data.data.technicalField3 ? Number(data.data.technicalField3) : null]
+                techField: [data.data.technicalField1, data.data.technicalField2, data.data.technicalField3]
             });
         }.bind(this)).always(function (data) {
             this.setState({ loading: false });
@@ -456,7 +456,7 @@ const Activity = React.createClass({
 
                     mockData: this.state.mockData,
 
-                    techField: [Number(thisdata.technicalField1), Number(thisdata.technicalField2), Number(thisdata.technicalField3)],
+                    techField: [thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3],
                     technicalField: getTechField(thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3),
                     technicalField1: thisdata.technicalField1,
                     technicalField2: thisdata.technicalField2,

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

@@ -132,7 +132,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                         label="共计(万元)"
                     >
                         <span className="number-box">
-                            {this.state.internalAllCost}
+                            {this.state.internalAllCost || 0}
                         </span>
                     </FormItem>
                     <FormItem className="half-item"
@@ -246,7 +246,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     >
                         {getFieldDecorator('allCost')(
                             <span className="number-box">
-                                {this.state.allCost}
+                                {this.state.allCost || 0}
                             </span>
                         )}
                     </FormItem>

+ 5 - 6
js/component/manageCenter/servicesManage/highTech/fosterDesc/annualReport.jsx

@@ -496,6 +496,9 @@ const AnnualReportAdd = React.createClass({
                 state: 0
             }
         }).done(function (data) {
+            this.setState({
+                loading: false
+            });
             if (!data.error.length) {
                 message.success('保存成功!');
                 this.setState({
@@ -504,10 +507,7 @@ const AnnualReportAdd = React.createClass({
                 this.props.closeAdd(false, true);
             } else {
                 message.warning(data.error[0].message);
-                this.setState({
-                    loading: false
-                });
-            }
+            };
         }.bind(this));
     },
     handleCancel(e) {
@@ -534,8 +534,7 @@ const AnnualReportAdd = React.createClass({
                         <Button key="back" onClick={this.handleCancel}>
                             返回
                             </Button>,
-                    ]}
-                >
+                    ]} >
                     <div className="clearfix">
                         <div className="half-item">
                             <span>选择申请年份: </span>

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

@@ -766,7 +766,7 @@ const CompanyDetail = Form.create()(React.createClass({
                         >
                             {getFieldDecorator('field', {
                                 rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
-                                initialValue: [Number(theData.field[0]), theData.field[1] ? Number(theData.field[1]) : null, theData.field[2] ? Number(theData.field[2]) : null]
+                                initialValue: theData.field
                             })(
                                 <Cascader options={techFieldList} />
                                 )}

+ 1 - 0
js/component/manageCenter/servicesManage/highTech/fosterDesc/honorList.jsx

@@ -49,6 +49,7 @@ const HonorListDescFrom = Form.create()(React.createClass({
         if (!this.props.visible && nextProps.visible) {
             this.props.form.resetFields();
             this.state.fileList = [];
+            this.state.enclosureUrl = null;
         };
     },
     componentWillMount() {

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

@@ -754,7 +754,7 @@ const HrSituation = React.createClass({
             method: "POST",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + "/api/user/cognizance/deleteFinance",
+            url: globalConfig.context + "/api/admin/deleteHumanResource",
             data: {
                 ids: deletedIds
             }

+ 3 - 2
js/component/manageCenter/servicesManage/highTech/fosterDesc/intellectualDesc.jsx

@@ -53,7 +53,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
             )
         });
-        if (this.props.data.id && this.props.data.type != undefined && this.props.data.type != null) {
+        if (this.props.data.id && this.props.data.type && this.props.data.type) {
             this.loadData();
         };
     },
@@ -228,7 +228,8 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                         {theData.propertyRightUrl ?
                             <span className="download-file">
                                 <a onClick={newDownloadFile.bind(null, this.props.data.id, 'property_right', '/api/admin/downloadPropertyRight')}>{theData.propertyRightDownloadFileName}</a>
-                                <a onClick={() => { var newTab = window.open('about:blank'); getPreview(theData.id, 'intellectualProperty', 'property_right', function (data) {
+                                <a onClick={() => {
+                                    var newTab = window.open('about:blank'); getPreview(theData.id, 'intellectualProperty', 'property_right', function (data) {
                                         newTab.location.href = data;
                                     });
                                 }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>

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

@@ -388,7 +388,7 @@ const TechProduct = React.createClass({
                     serialNumber: thisdata.serialNumber,
                     productName: thisdata.productName,
 
-                    techField: [Number(thisdata.technicalField1), Number(thisdata.technicalField2), Number(thisdata.technicalField3)],
+                    techField: [thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3],
                     technicalField: getTechField(thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3),
                     technicalField1: thisdata.technicalField1,
                     technicalField2: thisdata.technicalField2,

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

@@ -473,7 +473,7 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                             <span className="item-title">技术领域: </span>
                             {getFieldDecorator('technicalField', {
                                 rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
-                                initialValue: [Number(theData.technicalField1), Number(theData.technicalField2), Number(theData.technicalField3)]
+                                initialValue: [theData.technicalField1, theData.technicalField2, theData.technicalField3]
                             })(
                                 <Cascader options={techFieldList} placeholder="请选择技术领域" />
                                 )}

+ 1 - 3
js/component/portal/search/achievement.jsx

@@ -93,9 +93,7 @@ const Content = React.createClass({
                             name: thisdata.name,
                             dataCategory: thisdata.dataCategory,
                             category: thisdata.category,
-                            ownerName: thisdata.username || thisdata.unitName,
-                            username: thisdata.username,
-                            unitName: thisdata.unitName,
+                            ownerName: thisdata.ownerName,
                             releaseDate: thisdata.releaseDate,
                             ownerType: thisdata.ownerType,
                             fieldA: thisdata.fieldA,

+ 1 - 1
js/component/portal/search/demand.jsx

@@ -97,7 +97,7 @@ const Content = React.createClass({
                             budgetCost: thisdata.budgetCost,
                             problemDes: thisdata.problemDes,
                             releaseDate: thisdata.releaseDate,
-                            employerName: thisdata.username || thisdata.unitName,
+                            employerName: thisdata.employerName,
                             releaseDateFormattedDate: thisdata.releaseDateFormattedDate
                         });
                     };

+ 23 - 9
js/component/tools.js

@@ -15,7 +15,6 @@ import {
     technologyStateList,
     copyrightStateList,
     auditStatusList,
-    vocations,
     scaleList,
     companyType,
     industryList,
@@ -294,15 +293,30 @@ module.exports = {
     companySearch(input, option) {
         return option.props.children.indexOf(input) >= 0
     },
-    getInUrgentTime(date, inUrgent) {
+    getInUrgentTime(date, inUrgent,callback) {
         let now = new Date(date);
-        for (var i = 1; i <= inUrgent;) {
-            now.setDate(now.getDate() + 1);
-            if (!vocations[getKey(now)]) {
-                i++;
-            };
-        };
-        return now;
+        let theYear = now.getFullYear();
+        $.ajax({
+            type: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/open/html/json/vacations' + theYear,
+            success: (result)=>{
+                if (!data.data) {
+                    if ( data.error && data.error.length ) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (var i = 1; i <= inUrgent;) {
+                        now.setDate(now.getDate() + 1);
+                        if (!vocations[getKey(now)]) {
+                            i++;
+                        };
+                    };
+                    callback(now);
+                };
+            }
+        });
 
         function getKey(date) {
             var year = date.getFullYear(),

+ 1 - 1
package.json

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