Browse Source

Accept Merge Request #47 meger v1.0.39 : (master -> prod)

Merge Request: meger v1.0.39
Created By: @seirios
Accepted By: @seirios
URL: https://coding.net/t/aft/p/AFT-WEB/git/merge/47
seirios 7 years ago
parent
commit
bb039085b7
61 changed files with 1195 additions and 684 deletions
  1. 6 4
      js/component/account/demand/techDemandDesc.jsx
  2. 5 2
      js/component/account/index/normal.jsx
  3. 1 1
      js/component/account/services/achievement.jsx
  4. 125 64
      js/component/account/services/activity.jsx
  5. 2 2
      js/component/account/services/annualReport.jsx
  6. 18 5
      js/component/account/services/contract/contract.jsx
  7. 10 12
      js/component/account/services/contract/contractDetail.jsx
  8. 30 15
      js/component/account/services/copyright/copyright.jsx
  9. 1 1
      js/component/account/services/honorList.jsx
  10. 1 0
      js/component/account/services/orgTechCenter.jsx
  11. 22 13
      js/component/account/services/patent.jsx
  12. 3 3
      js/component/account/services/patentDesc.jsx
  13. 68 5
      js/component/account/services/techProduct.jsx
  14. 3 4
      js/component/account/services/technologyChange.jsx
  15. 2 2
      js/component/account/set/hrSituation.jsx
  16. 3 0
      js/component/dataDic.js
  17. 3 3
      js/component/login/loginForm.jsx
  18. 54 51
      js/component/manageCenter/achievement/techAchievementDesc.jsx
  19. 1 1
      js/component/manageCenter/demand/demandOrder.jsx
  20. 14 9
      js/component/manageCenter/demand/techDemandDesc.jsx
  21. 39 12
      js/component/manageCenter/idea/activity/activityUserList.jsx
  22. 18 16
      js/component/manageCenter/idea/bannerManage/bannerManage.jsx
  23. 3 41
      js/component/manageCenter/idea/bigShot/lecture.jsx
  24. 11 13
      js/component/manageCenter/idea/bigShot/star.jsx
  25. 10 3
      js/component/manageCenter/idea/news/news.jsx
  26. 1 1
      js/component/manageCenter/servicesManage/contract/contractDetail.jsx
  27. 2 1
      js/component/manageCenter/servicesManage/copyright/comPatentChange.jsx
  28. 13 14
      js/component/manageCenter/servicesManage/copyright/copyright.jsx
  29. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/achievement.jsx
  30. 126 64
      js/component/manageCenter/servicesManage/highTech/fosterDesc/activity.jsx
  31. 3 3
      js/component/manageCenter/servicesManage/highTech/fosterDesc/annualReport.jsx
  32. 2 2
      js/component/manageCenter/servicesManage/highTech/fosterDesc/companyDetail.jsx
  33. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/honorList.jsx
  34. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/intellectualDesc.jsx
  35. 2 2
      js/component/manageCenter/servicesManage/highTech/fosterDesc/standard.jsx
  36. 69 5
      js/component/manageCenter/servicesManage/highTech/fosterDesc/techProduct.jsx
  37. 47 11
      js/component/manageCenter/servicesManage/highTech/highTechInfo.jsx
  38. 1 1
      js/component/manageCenter/servicesManage/patent/correction.jsx
  39. 2 2
      js/component/manageCenter/servicesManage/technology/applyChange.jsx
  40. 4 2
      js/component/manageCenter/servicesManage/technology/applyManage.jsx
  41. 13 0
      js/component/manageCenter/set/content.less
  42. 158 70
      js/component/manageCenter/set/member.jsx
  43. 144 91
      js/component/manageCenter/set/modal.jsx
  44. 12 4
      js/component/manageCenter/set/role.jsx
  45. 5 3
      js/component/manageCenter/topTab.jsx
  46. 1 0
      js/component/manageCenter/userManage/customerList.jsx
  47. 2 5
      js/component/manageCenter/userManage/customerSearch.jsx
  48. 1 1
      js/component/manageCenter/userManage/highTechSearch.jsx
  49. 5 4
      js/component/manageCenter/userManage/orgDesc.jsx
  50. 1 0
      js/component/manageCenter/userManage/orgList.jsx
  51. 1 1
      js/component/manageCenter/userManage/userDesc.jsx
  52. 1 0
      js/component/manageCenter/userManage/userList.jsx
  53. 25 13
      js/component/portal/portal.less
  54. 23 23
      js/component/portal/search/achievement.jsx
  55. 0 1
      js/component/portal/search/achievementDesc.jsx
  56. 20 20
      js/component/portal/search/demand.jsx
  57. 9 7
      js/component/portal/top.jsx
  58. 5 7
      js/component/subscriberDetail/detail.less
  59. 1 1
      package.json
  60. 24 24
      webpack.config.js
  61. 16 16
      webpack/entry.config.js

+ 6 - 4
js/component/account/demand/techDemandDesc.jsx

@@ -418,7 +418,7 @@ const DemandDetailShow = Form.create()(React.createClass({
                         <FormItem className="half-item"
                             {...formItemLayout}
                             label="固定人数" >
-                            <span>{theData.peopleNumber} 人</span>
+                            <span>{theData.peopleNumber || 0} 人</span>
                         </FormItem>
                     </div>
                     <FormItem
@@ -431,7 +431,7 @@ const DemandDetailShow = Form.create()(React.createClass({
                         <FormItem className="half-item"
                             {...formItemLayout}
                             label="预算费用" >
-                            <span>{theData.budgetCost} 万元</span>
+                            <span>{theData.budgetCost || 0} 万元</span>
                         </FormItem>
                         <FormItem className="half-item"
                             {...formItemLayout}
@@ -935,9 +935,11 @@ const DemandDetail = React.createClass({
                     render: text => {
                         switch (text) {
                             case "0":
-                                return <span>个人需求</span>;
+                                return <span>成果</span>;
                             case "1":
-                                return <span>团体需求</span>;
+                                return <span>技术</span>;
+                            case "2":
+                                return <span>项目</span>;
                         }
                     }
                 }, {

+ 5 - 2
js/component/account/index/normal.jsx

@@ -92,14 +92,17 @@ const Content = React.createClass({
                     </div>
                     <div className="index-record">
                         <p className="acc-title">我的轨迹</p>
-                        <ul className="record-list clearfix">
+                        {this.state.type ? <ul className="record-list clearfix">
                             <li>专利:<a href={globalConfig.context + "/user/account/services.html#patent"}>{this.state.patentNum || 0}</a> 项</li>
                             <li>软著:<a href={globalConfig.context + "/user/account/services.html#copyright"}>{this.state.copyrightNum || 0}</a> 项</li>
                             <li>知识产权:<a href={globalConfig.context + "/user/account/services.html#intellectual"}>{this.state.intellectualPropertyNum || 0}</a> 项</li>
                             <li>科技项目:<a href={globalConfig.context + "/user/account/services.html#technology"}>{this.state.techProjectNum || 0}</a> 项</li>
                             <li>技术成果:<a href={globalConfig.context + "/user/account/achievement.html#techAchievement"}>{this.state.achievementNum || 0}</a> 项</li>
                             <li>发布需求:<a href={globalConfig.context + "/user/account/demand.html#techDemand"}>{this.state.demandNum || 0}</a> 项</li>
-                        </ul>
+                        </ul> : <ul className="record-list clearfix">
+                                <li>技术成果:<a href={globalConfig.context + "/user/account/achievement.html#techAchievement"}>{this.state.achievementNum || 0}</a> 项</li>
+                                <li>发布需求:<a href={globalConfig.context + "/user/account/demand.html#techDemand"}>{this.state.demandNum || 0}</a> 项</li>
+                            </ul>}
                     </div>
                     <div className="index-activity">
                         <Collection />

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

@@ -86,7 +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;
+            this.state.enclosureUrl = undefined;
         };
     },
     render() {

+ 125 - 64
js/component/account/services/activity.jsx

@@ -9,6 +9,55 @@ import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
 
+if (!Array.prototype.includes) {
+    Object.defineProperty(Array.prototype, 'includes', {
+        value: function (searchElement, fromIndex) {
+
+            // 1. Let O be ? ToObject(this value).
+            if (this == null) {
+                throw new TypeError('"this" is null or not defined');
+            }
+
+            var o = Object(this);
+
+            // 2. Let len be ? ToLength(? Get(O, "length")).
+            var len = o.length >>> 0;
+
+            // 3. If len is 0, return false.
+            if (len === 0) {
+                return false;
+            }
+
+            // 4. Let n be ? ToInteger(fromIndex).
+            //    (If fromIndex is undefined, this step produces the value 0.)
+            var n = fromIndex | 0;
+
+            // 5. If n ≥ 0, then
+            //  a. Let k be n.
+            // 6. Else n < 0,
+            //  a. Let k be len + n.
+            //  b. If k < 0, let k be 0.
+            var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+
+            // 7. Repeat, while k < len
+            while (k < len) {
+                // a. Let elementK be the result of ? Get(O, ! ToString(k)).
+                // b. If SameValueZero(searchElement, elementK) is true, return true.
+                // c. Increase k by 1.
+                // NOTE: === provides the correct "SameValueZero" comparison needed here.
+                if (o[k] === searchElement) {
+                    return true;
+                }
+                k++;
+            }
+
+            // 8. Return false
+            return false;
+        }
+    });
+}
+
+
 const ActivityForm = Form.create()(React.createClass({
     getInitialState() {
         return {
@@ -97,7 +146,7 @@ const ActivityForm = Form.create()(React.createClass({
         if (!this.props.visible && nextProps.visible) {
             this.state.mockData = nextProps.data.mockData;
             this.props.form.resetFields();
-            this.state.proofUrl = null;
+            this.state.proofUrl = undefined;
             this.state.fileList = [];
             if (nextProps.data.id) {
                 this.loadData(nextProps.data.id);
@@ -229,7 +278,7 @@ const ActivityForm = Form.create()(React.createClass({
                                 selectedKeys={this.state.selectedKeys}
                                 onChange={this.intellectualChange}
                                 onSelectChange={this.intellectualSelectChange}
-                                render={item => `${item.name}-${item.key}`}
+                                render={item => `${item.name}-${item.number}`}
                             />
                         </div>
                         <FormItem className="half-div"
@@ -392,7 +441,6 @@ const ActivityDesc = React.createClass({
     },
 });
 
-
 const Activity = React.createClass({
     loadData(pageNo) {
         this.state.data = [];
@@ -422,74 +470,77 @@ const Activity = React.createClass({
         })).done((data1, data2) => {
             let data = data1[0];
             let intellectualList = data2[0];
+            let theArr = [], theObj = {};
             if (data.error.length || !data.data || !data.data.list) {
                 message.warning(data.error[0].message);
-                return;
+            } 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,
+                        activityNumber: thisdata.activityNumber,
+                        activityName: thisdata.activityName,
+                        startDate: thisdata.startDate,
+                        endDate: thisdata.endDate,
+
+                        mockData: this.state.mockData,
+
+                        techField: [thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3],
+                        technicalField: getTechField(thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3),
+                        technicalField1: thisdata.technicalField1,
+                        technicalField2: thisdata.technicalField2,
+                        technicalField3: thisdata.technicalField3,
+                        technicalSource: thisdata.technicalSource ? String(thisdata.technicalSource) : undefined,
+                        intellectualPropertyNumber: thisdata.intellectualPropertyNumber ? thisdata.intellectualPropertyNumber.split(",") : [],
+                        intellectualPropertyNumberText: thisdata.intellectualPropertyNumber,
+                        budget: thisdata.budget,
+                        firstYearExpenditure: thisdata.firstYearExpenditure,
+                        secondYearExpenditure: thisdata.secondYearExpenditure,
+                        thirdYearExpenditure: thisdata.thirdYearExpenditure,
+                        implement: thisdata.implement,
+                        technologyInnovation: thisdata.technologyInnovation,
+                        achievement: thisdata.achievement,
+                        internalLaborCost: thisdata.internalLaborCost,
+                        internalDirectCost: thisdata.internalDirectCost,
+                        internalDepreciationCost: thisdata.internalDepreciationCost,
+                        internalAmortizationCost: thisdata.internalAmortizationCost,
+                        internalDesignCost: thisdata.internalDesignCost,
+                        internalEquipmentCost: thisdata.internalEquipmentCost,
+                        internalOtherCost: thisdata.internalOtherCost,
+                        externalTotalCost: thisdata.externalTotalCost,
+                        externalAbroadCost: thisdata.externalAbroadCost,
+                        enterpriseFiller: thisdata.enterpriseFiller,
+                        signDate: thisdata.signDate,
+                        sortNumber: thisdata.sortNumber,
+                        startDateFormattedDate: thisdata.startDateFormattedDate,
+                        endDateFormattedDate: thisdata.endDateFormattedDate,
+                        projectMode: thisdata.projectMode,
+                        proofUrl: thisdata.proofUrl,
+                        proofDownloadFileName: thisdata.proofDownloadFileName
+                    });
+                };
+                this.state.pagination.current = data.data.pageNo;
+                this.state.pagination.total = data.data.totalCount;
             };
             if (intellectualList.error.length || !intellectualList.data || !intellectualList.data.list) {
                 message.warning(intellectualList.error[0].message);
-                return;
-            };
-            let theArr = [];
-            for (let i = 0; i < intellectualList.data.list.length; i++) {
-                theArr.push({
-                    key: intellectualList.data.list[i].intellectualPropertyNumber,
-                    name: intellectualList.data.list[i].intellectualPropertyName
-                });
-            };
-            this.state.mockData = theArr;
-            for (let i = 0; i < data.data.list.length; i++) {
-                let thisdata = data.data.list[i];
-                this.state.data.push({
-                    key: i,
-                    id: thisdata.id,
-                    uid: thisdata.uid,
-                    activityNumber: thisdata.activityNumber,
-                    activityName: thisdata.activityName,
-                    startDate: thisdata.startDate,
-                    endDate: thisdata.endDate,
-
-                    mockData: this.state.mockData,
-
-                    techField: [thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3],
-                    technicalField: getTechField(thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3),
-                    technicalField1: thisdata.technicalField1,
-                    technicalField2: thisdata.technicalField2,
-                    technicalField3: thisdata.technicalField3,
-                    technicalSource: String(thisdata.technicalSource),
-                    intellectualPropertyNumber: thisdata.intellectualPropertyNumber ? thisdata.intellectualPropertyNumber.split(",") : [],
-                    intellectualPropertyNumberText: thisdata.intellectualPropertyNumber,
-                    budget: thisdata.budget,
-                    firstYearExpenditure: thisdata.firstYearExpenditure,
-                    secondYearExpenditure: thisdata.secondYearExpenditure,
-                    thirdYearExpenditure: thisdata.thirdYearExpenditure,
-                    implement: thisdata.implement,
-                    technologyInnovation: thisdata.technologyInnovation,
-                    achievement: thisdata.achievement,
-                    internalLaborCost: thisdata.internalLaborCost,
-                    internalDirectCost: thisdata.internalDirectCost,
-                    internalDepreciationCost: thisdata.internalDepreciationCost,
-                    internalAmortizationCost: thisdata.internalAmortizationCost,
-                    internalDesignCost: thisdata.internalDesignCost,
-                    internalEquipmentCost: thisdata.internalEquipmentCost,
-                    internalOtherCost: thisdata.internalOtherCost,
-                    externalTotalCost: thisdata.externalTotalCost,
-                    externalAbroadCost: thisdata.externalAbroadCost,
-                    enterpriseFiller: thisdata.enterpriseFiller,
-                    signDate: thisdata.signDate,
-                    sortNumber: thisdata.sortNumber,
-                    startDateFormattedDate: thisdata.startDateFormattedDate,
-                    endDateFormattedDate: thisdata.endDateFormattedDate,
-                    projectMode: thisdata.projectMode,
-                    proofUrl: thisdata.proofUrl,
-                    proofDownloadFileName: thisdata.proofDownloadFileName
-                });
+            } else {
+                for (let i = 0; i < intellectualList.data.list.length; i++) {
+                    theArr.push({
+                        key: intellectualList.data.list[i].id,
+                        number: intellectualList.data.list[i].intellectualPropertyNumber,
+                        name: intellectualList.data.list[i].intellectualPropertyName
+                    });
+                    theObj[intellectualList.data.list[i].id] = intellectualList.data.list[i].intellectualPropertyNumber;
+                };
             };
-            this.state.pagination.current = data.data.pageNo;
-            this.state.pagination.total = data.data.totalCount;
             this.setState({
                 dataSource: this.state.data,
-                pagination: this.state.pagination
+                pagination: this.state.pagination,
+                mockData: theArr,
+                mockDataObj: theObj
             });
         }).always(function () {
             this.setState({
@@ -500,6 +551,7 @@ const Activity = React.createClass({
     getInitialState() {
         return {
             mockData: [],
+            mockDataObj: {},
             selectedRowKeys: [],
             selectedRows: [],
             loading: false,
@@ -536,7 +588,16 @@ const Activity = React.createClass({
                 }, {
                     title: '知识产权编号',
                     dataIndex: 'intellectualPropertyNumberText',
-                    key: 'intellectualPropertyNumberText'
+                    key: 'intellectualPropertyNumberText',
+                    render: (text) => {
+                        let arr = [], _me = this;
+                        if (text && text.split(',').length) {
+                            text.split(',').map((item) => {
+                                arr.push(_me.state.mockDataObj[item]);
+                            });
+                        };
+                        return arr.join(',');
+                    }
                 }, {
                     title: '开始时间',
                     dataIndex: 'startDateFormattedDate',

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

@@ -333,8 +333,8 @@ const AnnualReportDescFrom = Form.create()(React.createClass({
                             </p>
                         </div>
                         <div className="four-item" style={{ marginRight: '25%' }}>
-                            <p className="item-title">在中国境内研发费用: </p>
-                            <p>{theData.territory}</p>
+                            <p className="item-title">其中:在中国境内研发费用: </p>
+                            <p>{theData.researchCost}</p>
                         </div>
                         <div className="four-item">
                             <p className="item-title">纳税总额: </p>

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

@@ -27,7 +27,7 @@ const Contract = React.createClass({
                 status: this.state.contractState,
                 serialNumber: this.state.serialNumber,
                 startDateFormattedDate: this.state.startDateFormattedDate[0],
-                endDateFormattedDate: this.state.endDateFormattedDate[1],
+                endDateFormattedDate: this.state.startDateFormattedDate[1],
                 completeStartDate: this.state.endDateFormattedDate[0],
                 completeEndDate: this.state.endDateFormattedDate[1]
             },
@@ -128,7 +128,13 @@ const Contract = React.createClass({
                     title: '合同状态',
                     dataIndex: 'status',
                     key: 'status',
-                    render: (text) => { return getContractState(text) }
+                    render: (text) => {
+                        if (text == '3') {
+                            return '已完成'
+                        } else {
+                            return getContractState(text)
+                        }
+                    }
                 }, {
                     title: '合同类型',
                     dataIndex: 'type',
@@ -160,9 +166,16 @@ const Contract = React.createClass({
             )
         });
         contractStateList.map(function (item) {
-            sArr.push(
-                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
-            )
+            if (item.value == '3') {
+                sArr.push(
+                    <Select.Option value={item.value} key={item.key}>已完成</Select.Option>
+                )
+            } else {
+                sArr.push(
+                    <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+                )
+            }
+
         });
         this.setState({
             typeOption: tArr,

+ 10 - 12
js/component/account/services/contract/contractDetail.jsx

@@ -5,7 +5,7 @@ import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import moment from 'moment';
 import { copyrightStateList } from '../../../dataDic.js';
-import { companySearch, getCopyrightState, getPatentType, getPatentState, getCognizanceState, getTechnologyState } from '../../../tools.js';
+import { companySearch, getContractState, getCopyrightState, getPatentType, getPatentState, getCognizanceState, getTechnologyState } from '../../../tools.js';
 
 const ContractDetailForm = Form.create()(React.createClass({
     getInitialState() {
@@ -20,7 +20,7 @@ const ContractDetailForm = Form.create()(React.createClass({
                     title: '申请状态',
                     dataIndex: 'status',
                     key: 'status',
-                    render: (text) => { return getCopyrightState(text) }
+                    render: (text) => { return getContractState(text) }
                 }, {
                     title: '处理时间',
                     dataIndex: 'recordTimeFormattedDate',
@@ -92,23 +92,21 @@ const ContractDetailForm = Form.create()(React.createClass({
                     key: 'inUrgent',
                     render: (text) => {
                         switch (text) {
-                            case 0:
-                                return '不加急(45个工作日)';
-                            case 3:
+                            case '3':
                                 return '3个工作日';
-                            case 5:
+                            case '5':
                                 return '5个工作日';
-                            case 10:
+                            case '10':
                                 return '6-10个工作日';
-                            case 15:
+                            case '15':
                                 return '11-15个工作日';
-                            case 20:
+                            case '20':
                                 return '16-20个工作日';
-                            case 25:
+                            case '25':
                                 return '21-25个工作日';
-                            case 30:
+                            case '30':
                                 return '26-30个工作日';
-                            case 35:
+                            case '35':
                                 return '31-35个工作日';
                             default:
                                 return '不加急(45个工作日)';

+ 30 - 15
js/component/account/services/copyright/copyright.jsx

@@ -49,7 +49,7 @@ const copyright = React.createClass({
                             contact: thisdata.contact,
                             copyrightName: thisdata.copyrightName,
                             copyrightNumber: thisdata.copyrightNumber,
-                            status: thisdata.status,
+                            status: thisdata.status == '9' ? '8' : thisdata.status,
                             comment: thisdata.comment,
                             workIssue: thisdata.workIssue,
                             outsource: thisdata.outsource,
@@ -112,7 +112,13 @@ const copyright = React.createClass({
                     title: '认证状态',
                     dataIndex: 'status',
                     key: 'status',
-                    render: (text) => { return getCopyrightState(text) }
+                    render: (text) => {
+                        if (text == '9') {
+                            return '已完成'
+                        } else {
+                            return getCopyrightState(text)
+                        }
+                    }
                 }, {
                     title: '软著名称',
                     dataIndex: 'copyrightName',
@@ -156,18 +162,21 @@ const copyright = React.createClass({
                     dataIndex: 'acceptTimeFormattedDate',
                     key: 'acceptTimeFormattedDate',
                 }, {
-                    title: '(预计)下证时间',
+                    title: '下证时间',
                     dataIndex: 'expectTime',
                     key: 'expectTime',
-                    render: (text) => {
-                        if (text[0]) {
-                            if (text[1]) {
-                                return getTime(getInUrgentTime(moment(text[0]), text[1], this.state.vacations))
-                            } else {
-                                return getTime(getInUrgentTime(moment(text[0]), 45, this.state.vacations))
-                            }
-                        };
-                        return;
+                    render: (text, record) => {
+                        if (record.authorizedDate) {
+                            return record.authorizedDateFormattedDate
+                        } else {
+                            if (text[0]) {
+                                if (text[1]) {
+                                    return getTime(getInUrgentTime(moment(text[0]), text[1], this.state.vacations))
+                                } else {
+                                    return getTime(getInUrgentTime(moment(text[0]), 45, this.state.vacations))
+                                }
+                            };
+                        }
                     }
                 }, {
                     title: '备注',
@@ -181,9 +190,15 @@ const copyright = React.createClass({
     componentWillMount() {
         let _me = this;
         copyrightStateList.map(function (item) {
-            _me.state.stateOption.push(
-                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
-            )
+            if (item.value == '9') {
+                _me.state.stateOption.push(
+                    <Select.Option value={item.value} key={item.key}>已完成</Select.Option>
+                )
+            } else {
+                _me.state.stateOption.push(
+                    <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+                )
+            }
         });
         getVacations((data) => { this.setState({ vacations: data }); });
         this.loadData();

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

@@ -48,7 +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;
+            this.state.enclosureUrl = undefined;
         };
     },
     componentWillMount() {

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

@@ -24,6 +24,7 @@ const CenterListDescFrom = Form.create()(React.createClass({
                     crossDomain: false,
                     url: globalConfig.context + "/api/user/cognizance/disposeCenterDetail",
                     data: {
+                        id: this.props.data.id,
                         cid: this.props.cid,
                         projectName: values.projectName,
                         projectTimeFormattedDate: values.projectTimeFormattedDate ? values.projectTimeFormattedDate.format("YYYY-MM-DD") : null,

+ 22 - 13
js/component/account/services/patent.jsx

@@ -44,7 +44,7 @@ const Patent = React.createClass({
                         patentNum: thisdata.patentNumber,
                         patentName: thisdata.patentName,
                         patentCatagory: thisdata.patentCatagory ? getPatentType(thisdata.patentCatagory) : '',
-                        patentState: getPatentState(thisdata.patentState),
+                        patentState: thisdata.patentState,
                         patentField: thisdata.patentField,
                         patentDes: thisdata.patentDes,
                         patentProryStatementUrl: thisdata.patentProryStatementUrl, //专利代理委托书
@@ -54,7 +54,7 @@ const Patent = React.createClass({
                         confirmState: thisdata.confirmState, //稿件确认状态
                         authorizedTime: getTime(thisdata.authorizedDate),
                         startTime: getTime(thisdata.patentApplicationDate),
-                        endTime: getTime(thisdata.patentApplicationDate, 2),
+                        endTime: getTime(thisdata.patentApplicationDate, 12),
                         firstInventorName: thisdata.firstInventorName,
                         firstInventorNationality: thisdata.firstInventorNationality, //国籍
                         firstInventorIdNumber: thisdata.firstInventorIdNumber,   //id
@@ -124,6 +124,13 @@ const Patent = React.createClass({
                     title: '专利状态',
                     dataIndex: 'patentState',
                     key: 'patentState',
+                    render: (text) => {
+                        if (text == '13') {
+                            return '已完成'
+                         } else {
+                            return getPatentState(text)
+                        }
+                    }
                 }, {
                     title: '申请日',
                     dataIndex: 'startTime',
@@ -145,9 +152,15 @@ const Patent = React.createClass({
             )
         });
         patentStateList.map(function (item) {
-            _me.state.patentStateOption.push(
-                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
-            )
+            if (item.value == '13') {
+                _me.state.patentStateOption.push(
+                    <Select.Option value={item.value} key={item.key}>已完成</Select.Option>
+                )
+            } else {
+                _me.state.patentStateOption.push(
+                    <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+                )
+            }
         });
         this.loadData();
         this.state.contactsOption = setUserContactsList();
@@ -165,17 +178,13 @@ const Patent = React.createClass({
         };
     },
     search() {
-        this.state.searchNum;
-        this.state.searchName;
-        this.state.searchType;
-        this.state.searchState;
         this.loadData();
     },
     reset() {
-        this.state.searchNum = "";
-        this.state.searchName = "";
-        this.state.searchType = "";
-        this.state.searchState = "";
+        this.state.searchNum = undefined;
+        this.state.searchName = undefined;
+        this.state.searchType = undefined;
+        this.state.searchState = undefined;
         this.loadData();
     },
     render() {

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

@@ -1,6 +1,6 @@
 import React from 'react';
 import { Icon, Modal, message, Spin, Timeline, Button, Popconfirm } from 'antd';
-import { getPatentType, getPatentState, getTime, getPatentField, newDownloadFile } from '../../tools.js';
+import { getPatentType, getPatentState, getTime, getIndustryType, newDownloadFile } from '../../tools.js';
 import './patent.less';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -140,7 +140,7 @@ const PatentDesc = React.createClass({
                             </div>
                             <div>
                                 <p className="widthHalf"><span>专利状态:</span>{getPatentState(theData.patentState)}</p>
-                                <p className="widthHalf"><span>专利领域:</span>{getPatentField(theData.patentField)}</p>
+                                <p className="widthHalf"><span>所属行业:</span>{getIndustryType(theData.patentField)}</p>
                             </div>
                             <div>
                                 <span>简介:</span>{theData.patentDes}
@@ -188,7 +188,7 @@ const PatentDesc = React.createClass({
                                 <span>专利授权日:</span>{theData.authorizedFormattedDate}
                             </div>
                             <div>
-                                <span>每年年费缴费截止日:</span>{getTime(theData.authorizedDate, 12)}
+                                <span>每年年费缴费截止日:</span>{getTime(theData.patentApplicationDate, 12)}
                             </div>
                             <div>
                                 <p>第一发明人:</p>

+ 68 - 5
js/component/account/services/techProduct.jsx

@@ -8,6 +8,54 @@ import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
+if (!Array.prototype.includes) {
+    Object.defineProperty(Array.prototype, 'includes', {
+        value: function (searchElement, fromIndex) {
+
+            // 1. Let O be ? ToObject(this value).
+            if (this == null) {
+                throw new TypeError('"this" is null or not defined');
+            }
+
+            var o = Object(this);
+
+            // 2. Let len be ? ToLength(? Get(O, "length")).
+            var len = o.length >>> 0;
+
+            // 3. If len is 0, return false.
+            if (len === 0) {
+                return false;
+            }
+
+            // 4. Let n be ? ToInteger(fromIndex).
+            //    (If fromIndex is undefined, this step produces the value 0.)
+            var n = fromIndex | 0;
+
+            // 5. If n ≥ 0, then
+            //  a. Let k be n.
+            // 6. Else n < 0,
+            //  a. Let k be len + n.
+            //  b. If k < 0, let k be 0.
+            var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+
+            // 7. Repeat, while k < len
+            while (k < len) {
+                // a. Let elementK be the result of ? Get(O, ! ToString(k)).
+                // b. If SameValueZero(searchElement, elementK) is true, return true.
+                // c. Increase k by 1.
+                // NOTE: === provides the correct "SameValueZero" comparison needed here.
+                if (o[k] === searchElement) {
+                    return true;
+                }
+                k++;
+            }
+
+            // 8. Return false
+            return false;
+        }
+    });
+}
+
 const TechProductDescFrom = Form.create()(React.createClass({
     getInitialState() {
         return {
@@ -155,7 +203,7 @@ const TechProductDescFrom = Form.create()(React.createClass({
                     })(
                         <Cascader
                             options={techFieldList}
-                            onChange={(value, selectedOptions) => { this.setState({ techField: value }); console.log(value) }}
+                            onChange={(value, selectedOptions) => { this.setState({ techField: value }); }}
                             placeholder="请选择"
                             showSearch
                         />
@@ -189,7 +237,7 @@ const TechProductDescFrom = Form.create()(React.createClass({
                     selectedKeys={this.state.selectedKeys}
                     onChange={this.intellectualChange}
                     onSelectChange={this.intellectualSelectChange}
-                    render={item => `${item.name}-${item.key}`}
+                    render={item => `${item.name}-${item.number}`}
                 />
                 <div className="clearfix">
                     <FormItem className="half-item"
@@ -362,14 +410,17 @@ const TechProduct = React.createClass({
                 };
                 return;
             };
-            let theArr = [];
+            let theArr = [], theObj = {};
             for (let i = 0; i < intellectualList.data.list.length; i++) {
                 theArr.push({
-                    key: intellectualList.data.list[i].intellectualPropertyNumber,
+                    key: intellectualList.data.list[i].id,
+                    number: intellectualList.data.list[i].intellectualPropertyNumber,
                     name: intellectualList.data.list[i].intellectualPropertyName
                 });
+                theObj[intellectualList.data.list[i].id] = intellectualList.data.list[i].intellectualPropertyNumber;
             };
             this.state.mockData = theArr;
+            this.state.mockDataObj = theObj;
             for (let i = 0; i < data.data.list.length; i++) {
                 let thisdata = data.data.list[i];
                 this.state.data.push({
@@ -378,6 +429,7 @@ const TechProduct = React.createClass({
                     uid: thisdata.uid,
 
                     mockData: this.state.mockData,
+                    mockDataObj: theObj,
 
                     serialNumber: thisdata.serialNumber,
                     productName: thisdata.productName,
@@ -422,6 +474,8 @@ const TechProduct = React.createClass({
             selectedRowKeys: [],
             selectedRows: [],
             loading: false,
+            mockData:[],
+            mockDataObj:{},
             pagination: {
                 defaultCurrent: 1,
                 defaultPageSize: 10,
@@ -464,7 +518,16 @@ const TechProduct = React.createClass({
                 }, {
                     title: '知识产权编号',
                     dataIndex: 'PropertyNumber',
-                    key: 'PropertyNumber'
+                    key: 'PropertyNumber',
+                    render: (text) => {
+                        let arr = [], _me = this;
+                        if (text && text.split(',').length) {
+                            text.split(',').map((item) => {
+                                arr.push(_me.state.mockDataObj[item]);
+                            });
+                        };
+                        return arr.join(',');
+                    }
                 }
             ],
             dataSource: []

+ 3 - 4
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, beforeUploadFile, downloadFile, companySearch } from '../../tools.js';
+import { getTechnologyState, beforeUploadFile, downloadFile, companySearch } from '../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
@@ -58,13 +58,12 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                     message.warning(data.error[0].message);
                     return;
                 };
-                var myDate = new Date();
                 this.state.stateTable = [];
                 for (let i = 0; i < data.data.length; i++) {
                     this.state.stateTable.push({
                         key: i,
                         state: data.data[i].state,
-                        recordTime: myDate.toLocaleDateString(data.data[i].recordTime),
+                        recordTime: data.data[i].recordTimeFormattedDate,
                         principal: data.data[i].principal,
                         comment: data.data[i].comment
                     });
@@ -89,7 +88,7 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                 title: '科技项目状态',
                 dataIndex: 'state',
                 key: 'state',
-                render: (text) => { return getCognizanceState(text) }
+                render: (text) => { return getTechnologyState(text) }
             }, {
                 title: '处理时间',
                 dataIndex: 'recordTime',

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

@@ -110,8 +110,8 @@ const HrSituationDescFrom = Form.create()(React.createClass({
             this.props.form.resetFields();
             this.state.fileList_roster = [];
             this.state.fileList_social_security = [];
-            this.state.rosterUrl = null;
-            this.state.socialSecurityUrl = null;
+            this.state.rosterUrl = undefined;
+            this.state.socialSecurityUrl = undefined;
         };
     },
     render() {

+ 3 - 0
js/component/dataDic.js

@@ -50,6 +50,9 @@ module.exports = {
         },{
             value: "2",
             key: "电学"
+        },{
+            value: "3",
+            key: "材料学"
         }
     ],
     //知识产权类型

+ 3 - 3
js/component/login/loginForm.jsx

@@ -30,7 +30,9 @@ const LoginForm = Form.create()(React.createClass({
                         "remember": values.remember
                     }
                 }).done(function (res) {
-                    if (!res.error.length) {
+                    if (res.error && res.error.length) {
+                        message.warning(res.error[0].message);
+                    } else {
                         let data = res.data;
                         if (data && data.requestURI) {
                             let path = globalConfig.context + data.requestURI
@@ -44,8 +46,6 @@ const LoginForm = Form.create()(React.createClass({
                         } else {
                             window.location.href = globalConfig.context + "/user/account/index.html";
                         }
-                    } else {
-                        message.warning(res.error[0].message);
                     }
                 }.bind(this)).always(function () {
                     this.props.spinState(false);

+ 54 - 51
js/component/manageCenter/achievement/techAchievementDesc.jsx

@@ -516,57 +516,60 @@ const AchievementDetailShow = Form.create()(React.createClass({
                         label="成熟度证明材料(视频地址)" >
                         <span>{theData.maturityVideoUrl}</span>
                     </FormItem>
-                    <div className="clearfix" >
-                        <FormItem className="half-item"
-                            {...formItemLayout}
-                            label="成果所有人名称" >
-                            <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 className="clearfix" >
-                                <FormItem className="half-item"
-                                    {...formItemLayout}
-                                    label="联系电话" >
-                                    {theData.ownerType == "1" ? <span>{this.state.contactsObj[theData.contacts]}</span> : <span>{theData.iOwnerMobile}</span>}
-                                </FormItem>
-                                <FormItem className="half-item"
-                                    {...formItemLayout}
-                                    label="证件号" >
-                                    <span>{theData.iOwnerIdNumber}</span>
-                                </FormItem>
-                                <FormItem className="half-item"
-                                    {...formItemLayout}
-                                    label="电子邮箱" >
-                                    <span>{theData.iOwnerEmail}</span>
-                                </FormItem>
-                                <FormItem className="half-item"
-                                    {...formItemLayout}
-                                    label="通讯地址" >
-                                    <span>{theData.iOwnerPostalAddress}</span>
-                                </FormItem>
-                            </div>}
-                    </div>
+                    {this.state.switchValue ?
+                        <div className="clearfix" >
+                            <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="成果所有人名称" >
+                                <span>{theData.ownerName}</span>
+                            </FormItem>
+                            <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 className="clearfix" >
+                            <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="成果所有人名称" >
+                                <span>{theData.iOwnerName}</span>
+                            </FormItem>
+                            <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="联系电话" >
+                                {theData.ownerType == "1" ? <span>{this.state.contactsObj[theData.contacts]}</span> : <span>{theData.iOwnerMobile}</span>}
+                            </FormItem>
+                            <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="证件号" >
+                                <span>{theData.iOwnerIdNumber}</span>
+                            </FormItem>
+                            <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="电子邮箱" >
+                                <span>{theData.iOwnerEmail}</span>
+                            </FormItem>
+                            <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="通讯地址" >
+                                <span>{theData.iOwnerPostalAddress}</span>
+                            </FormItem>
+                        </div>}
                     <div className="clearfix">
                         <FormItem className="half-item"
                             {...formItemLayout}

+ 1 - 1
js/component/manageCenter/demand/demandOrder.jsx

@@ -151,7 +151,7 @@ const DemandDetail = React.createClass({
                 <div className="patent-desc">
                     <Modal maskClosable={false} visible={this.state.visible}
                         onOk={this.checkPatentProcess} onCancel={this.handleCancel}
-                        width='800px'
+                        width='900px'
                         footer={null}
                         title="订单详情"
                         className="demand-order-content">

+ 14 - 9
js/component/manageCenter/demand/techDemandDesc.jsx

@@ -225,7 +225,6 @@ const DemandDetailShow = Form.create()(React.createClass({
     },
     modifyBroker() {
         this.props.form.validateFields((err, values) => {
-            debugger
             if (!err) {
                 this.setState({
                     loading: true
@@ -327,14 +326,14 @@ const DemandDetailShow = Form.create()(React.createClass({
     },
     componentWillMount() {
         this.loadData(this.props.data.id, this.props.detailApiUrl);
-        if (this.props.data.employerId) {
+        if (this.props.data.employerId && this.props.data.dataCategory) {
             this.getContactsList(this.props.data.employerId);
         };
     },
     componentWillReceiveProps(nextProps) {
         if (!this.props.visible && nextProps.visible) {
             this.loadData(nextProps.data.id, nextProps.detailApiUrl);
-            if (nextProps.data.employerId) {
+            if (nextProps.data.employerId && nextProps.data.dataCategory) {
                 this.getContactsList(nextProps.data.employerId);
             };
             this.props.form.resetFields();
@@ -390,11 +389,15 @@ const DemandDetailShow = Form.create()(React.createClass({
                                 label="雇主名称" >
                                 <span>{theData.username}</span>
                             </FormItem>
-                            <FormItem className="half-item"
+                            {this.props.data.dataCategory ? <FormItem className="half-item"
                                 {...formItemLayout}
                                 label="联系人" >
                                 <span>{this.state.contactsObj[theData.contacts]}</span>
-                            </FormItem>
+                            </FormItem> : <FormItem className="half-item"
+                                {...formItemLayout}
+                                label="联系人" >
+                                    <span>{theData.contactsName}</span>
+                                </FormItem>}
                         </div>}
                     <div className="clearfix">
                         <FormItem className="half-item"
@@ -566,7 +569,7 @@ const DemandDetailShow = Form.create()(React.createClass({
                         <FormItem className="half-item"
                             {...formItemLayout}
                             label="固定人数" >
-                            <span>{theData.peopleNumber} 人</span>
+                            <span>{theData.peopleNumber || 0} 人</span>
                         </FormItem>
                     </div>
                     <FormItem
@@ -579,7 +582,7 @@ const DemandDetailShow = Form.create()(React.createClass({
                         <FormItem className="half-item"
                             {...formItemLayout}
                             label="预算费用" >
-                            <span>{theData.budgetCost} 万元</span>
+                            <span>{theData.budgetCost || 0} 万元</span>
                         </FormItem>
                         <FormItem className="half-item"
                             {...formItemLayout}
@@ -1281,9 +1284,11 @@ const DemandDetail = React.createClass({
                     render: text => {
                         switch (text) {
                             case "0":
-                                return <span>个人需求</span>;
+                                return <span>成果</span>;
                             case "1":
-                                return <span>团体需求</span>;
+                                return <span>技术</span>;
+                            case "2":
+                                return <span>项目</span>;
                         }
                     }
                 }, {

+ 39 - 12
js/component/manageCenter/idea/activity/activityUserList.jsx

@@ -131,16 +131,16 @@ const ActivityTable = React.createClass({
         }
     },
     delectRow() {
-        let deletedIds = [];
-        for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
-            let rowItem = this.state.selectedRows[idx];
-            if (rowItem.id) {
-                deletedIds.push(rowItem.id)
-            };
-        };
+        let theAid = null, theUid = null;
+        if (this.state.selectedRows && this.state.selectedRows.length) {
+            theAid = this.state.selectedRows[0].aid;
+            theUid = this.state.selectedRows[0].uid;
+        } else {
+            return;
+        }
         this.setState({
             selectedRowKeys: [],
-            loading: deletedIds.length > 0
+            loading: true
         });
         $.ajax({
             method: "POST",
@@ -148,7 +148,8 @@ const ActivityTable = React.createClass({
             crossDomain: false,
             url: globalConfig.context + '/api/admin/activityUser/delete',
             data: {
-                ids: deletedIds
+                aid: theAid,
+                uid: theUid
             }
         }).done(function (data) {
             if (data.error && data.error.length) {
@@ -162,6 +163,31 @@ const ActivityTable = React.createClass({
             this.loadData();
         }.bind(this));
     },
+    cleanCache() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/activity/cleanCache',
+            data: {
+                'cacheKey': 'activity_portal_list_cache_key'
+            },
+            success: function (data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                } else {
+                    message.success('清除缓存成功!');
+                };
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     reset() {
         this.state.searchName = undefined;
         this.state.searchMobile = undefined;
@@ -175,8 +201,8 @@ const ActivityTable = React.createClass({
             selectedRowKeys: this.state.selectedRowKeys,
             onChange: (selectedRowKeys, selectedRows) => {
                 this.setState({
-                    selectedRows: selectedRows,
-                    selectedRowKeys: selectedRowKeys
+                    selectedRows: selectedRows.slice(-1),
+                    selectedRowKeys: selectedRowKeys.slice(-1),
                 });
             }
         };
@@ -210,9 +236,10 @@ const ActivityTable = React.createClass({
                     <Button type='danger' disabled={!hasSelected} onClick={this.delectRow}>
                         删除<Icon type="minus" />
                     </Button>
+                    <Button type="primary" onClick={() => { this.cleanCache() }}>清除缓存</Button>
                 </div>
                 <Spin spinning={this.state.loading}>
-                    <Table
+                    <Table className="no-all-select"
                         columns={this.state.columns}
                         dataSource={this.state.tableData}
                         pagination={this.state.pagination}

+ 18 - 16
js/component/manageCenter/idea/bannerManage/bannerManage.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Icon, Button, Spin, message, Table, Input, Modal, DatePicker, Upload, Select } from 'antd';
+import { Icon, Button, Spin, message, Table, Input, Modal, DatePicker, Upload, Select, Pagination } from 'antd';
 import { beforeUpload, getBase64 } from '../../../tools';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
@@ -61,13 +61,13 @@ const Lecture = React.createClass({
             },
             success: function (data) {
                 let theArr = [];
-                if (!data.data) {
+                if (!data.data || !data.data.list) {
                     if (data.error && data.error.length) {
                         message.warning(data.error[0].message);
                     };
                 } else {
-                    for (let i = 0; i < data.data.length; i++) {
-                        let thisdata = data.data[i];
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
                         theArr.push({
                             key: i,
                             id: thisdata.id, //主键
@@ -81,8 +81,8 @@ const Lecture = React.createClass({
                             endDate: thisdata.endDate //广告图结束时间
                         });
                     };
-                    this.state.pagination.current = data.data.pageNo;
-                    this.state.pagination.total = data.data.totalCount;
+                    this.state.pagination.pageNo = pageNo || 1;
+                    this.state.pagination.total = data.data.total || 0;
                 };
                 this.setState({
                     tableData: theArr,
@@ -137,16 +137,9 @@ const Lecture = React.createClass({
             keysObj: {},
             RowData: {},
             pagination: {
-                defaultCurrent: 1,
-                defaultPageSize: 10,
-                showQuickJumper: true,
+                pageNo: 1,
                 pageSize: 10,
-                onChange: function (page) {
-                    this.loadData(page);
-                }.bind(this),
-                showTotal: function (total) {
-                    return '共' + total + '条数据';
-                }
+                total: 0
             },
             columns: [
                 {
@@ -316,6 +309,7 @@ const Lecture = React.createClass({
             }
         };
         const hasSelected = this.state.selectedRowKeys.length > 0;
+        const { pageNo, pageSize, total } = this.state.pagination;
         return (
             <div className="admin-content" >
                 <div className="admin-content-title">广告图管理</div>
@@ -342,9 +336,17 @@ const Lecture = React.createClass({
                     <Spin spinning={this.state.loading}>
                         <Table className="no-all-select" columns={this.state.columns}
                             dataSource={this.state.tableData}
-                            pagination={this.state.pagination}
+                            pagination={false}
                             rowSelection={rowSelection}
                             onRowClick={this.tableRowClick} />
+                        <div className="clearfix">
+                            <Pagination style={{ marginTop: '10px', float: 'right' }}
+                                onChange={(e) => { this.loadData(e); }}
+                                total={total}
+                                showTotal={() => { return '共' + total + '条数据' }}
+                                current={pageNo}
+                                pageSize={pageSize} />
+                        </div>
                     </Spin>
                 </div>
                 <Modal title="广告图详情" width={1000}

+ 3 - 41
js/component/manageCenter/idea/bigShot/lecture.jsx

@@ -77,6 +77,7 @@ const Lecture = React.createClass({
                             id: thisdata.id,
                             uid: thisdata.uid,
                             lectureTime: thisdata.lectureTime,
+                            lecturer: thisdata.lecturer,
                             endTime: thisdata.endTime,
                             name: thisdata.name,
                             summary: thisdata.summary,
@@ -125,6 +126,7 @@ const Lecture = React.createClass({
                             id: thisdata.id,
                             uid: thisdata.uid,
                             lectureTime: thisdata.lectureTime,
+                            lecturer: thisdata.lecturer,
                             endTime: thisdata.endTime,
                             name: thisdata.name,
                             summary: thisdata.summary,
@@ -170,6 +172,7 @@ const Lecture = React.createClass({
                             id: thisdata.id,
                             uid: thisdata.uid,
                             lectureTime: thisdata.lectureTime,
+                            lecturer: thisdata.lecturer,
                             endTime: thisdata.endTime,
                             name: thisdata.name,
                             summary: thisdata.summary,
@@ -193,7 +196,6 @@ const Lecture = React.createClass({
         }.bind(this));
     },
     loadData() {
-        //    this.loadUserData();
         this.loadLectureData();
         this.loadHotData();
         this.loadDynamicData();
@@ -205,18 +207,6 @@ const Lecture = React.createClass({
             addModal: {},
             selectedRowKeys: [],
             selectedRows: [],
-            // userPagination: {
-            //     defaultCurrent: 1,
-            //     defaultPageSize: 10,
-            //     showQuickJumper: true,
-            //     pageSize: 10,
-            //     onChange: function (page) {
-            //         this.loadUserData(page);
-            //     }.bind(this),
-            //     showTotal: function (total) {
-            //         return '共' + total + '条数据';
-            //     }
-            // },
             lecturePagination: {
                 defaultCurrent: 1,
                 defaultPageSize: 10,
@@ -229,34 +219,6 @@ const Lecture = React.createClass({
                     return '共' + total + '条数据';
                 }
             },
-            // userColumns: [
-            //     {
-            //         title: '编号',
-            //         dataIndex: 'number',
-            //         key: 'number',
-            //     }, {
-            //         title: '姓名',
-            //         dataIndex: 'username',
-            //         key: 'username',
-            //     }, {
-            //         title: '从事领域',
-            //         dataIndex: 'engagedField',
-            //         key: 'engagedField',
-            //         render: text => { return getTechField(text[0], text[1], text[2]) }
-            //     }, {
-            //         title: '职称名字',
-            //         dataIndex: 'professionalTitle',
-            //         key: 'professionalTitle',
-            //     }, {
-            //         title: '工作单位',
-            //         dataIndex: 'workUnit',
-            //         key: 'workUnit',
-            //     }, {
-            //         title: '成果数量',
-            //         dataIndex: 'achievementNums',
-            //         key: 'achievementNums',
-            //     }
-            // ],
             lectureColumns: [
                 {
                     title: '讲堂名称',

+ 11 - 13
js/component/manageCenter/idea/bigShot/star.jsx

@@ -33,7 +33,7 @@ const Star = React.createClass({
                     for (let i = 0; i < data.data.list.length; i++) {
                         let thisdata = data.data.list[i];
                         theArr.push({
-                            key: i,
+                            key: thisdata.uid,
                             uid: thisdata.uid,
                             engagedField: thisdata.engagedField ? thisdata.engagedField.split(',') : [],
                             username: thisdata.username,
@@ -76,7 +76,7 @@ const Star = React.createClass({
                     for (let i = 0; i < data.data.length; i++) {
                         let thisdata = data.data[i];
                         theArr.push({
-                            key: i,
+                            key: thisdata.uid,
                             uid: thisdata.uid,
                             engagedField: thisdata.engagedField ? thisdata.engagedField.split(',') : [],
                             username: thisdata.username,
@@ -116,7 +116,7 @@ const Star = React.createClass({
                     for (let i = 0; i < data.data.length; i++) {
                         let thisdata = data.data[i];
                         theArr.push({
-                            key: i,
+                            key: thisdata.uid,
                             uid: thisdata.uid,
                             engagedField: thisdata.engagedField ? thisdata.engagedField.split(',') : [],
                             username: thisdata.username,
@@ -229,17 +229,16 @@ const Star = React.createClass({
     },
     addIndex(record) {
         let theBool = true;
+        if (this.state.hotTableData.length == 4) {
+            message.warning('大咖列表最多只能显示4条记录!');
+            theBool = false;
+        };
         this.state.hotTableData.map((item, i) => {
             if (item.uid == record.uid) {
                 message.warning('该条记录已经存在于大咖列表中!');
                 theBool = false;
                 return;
             };
-            if (i == 4) {
-                message.warning('大咖列表最多只能显示4条记录!');
-                theBool = false;
-                return;
-            };
         });
         if (theBool) {
             this.state.hotTableData.push(record);
@@ -248,17 +247,16 @@ const Star = React.createClass({
     },
     addStar(record) {
         let theBool = true;
+        if (this.state.starTableData.length == 6) {
+            message.warning('明星列表最多只能显示6条记录!');
+            theBool = false;
+        };
         this.state.starTableData.map((item, i) => {
             if (item.uid == record.uid) {
                 message.warning('该条记录已经存在于明星列表中!');
                 theBool = false;
                 return;
             };
-            if (i == 6) {
-                message.warning('明星列表最多只能显示6条记录!');
-                theBool = false;
-                return;
-            };
         });
         if (theBool) {
             this.state.starTableData.push(record);

+ 10 - 3
js/component/manageCenter/idea/news/news.jsx

@@ -198,6 +198,12 @@ const News = React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         if (this.props.newsType != nextProps.newsType) {
+            this.state.searchTitle = undefined;
+            this.state.searchAuthor = undefined;
+            this.state.startDate = undefined;
+            this.state.endDate = undefined;
+            this.state.searchSource = undefined;
+            this.state.searchHot = undefined;
             this.loadData(1, nextProps.newsType);
         };
     },
@@ -228,7 +234,7 @@ const News = React.createClass({
                 titleImg: this.state.RowData.titleImg,
                 author: this.state.RowData.author,
                 type: this.props.newsType,
-                hot: this.state.RowData.hot,
+                hot: this.state.RowData.hot || 0,
                 source: this.state.RowData.source,
                 sourceUrl: this.state.RowData.sourceUrl,
                 summary: this.state.RowData.summary,
@@ -336,6 +342,7 @@ const News = React.createClass({
                             case 4: return <span>国家政策管理</span>;
                             case 5: return <span>地方政策管理</span>;
                             case 2: return <span>政府往来管理</span>;
+                            case 3: return <span>技淘动态管理</span>;
                         }
                     })()}
                     <Button type="primary" style={{ float: 'right' }}
@@ -354,13 +361,13 @@ const News = React.createClass({
                         <Input placeholder="来源" style={{ width: 100 }}
                             value={this.state.searchSource}
                             onChange={(e) => { this.setState({ searchSource: e.target.value }); }} />
-                        <Select placeholder="显示在首页"
+                        {this.props.newsType == 2 || this.props.newsType == 3 ? <Select placeholder="显示在首页"
                             style={{ width: 100 }}
                             value={this.state.searchHot}
                             onChange={(e) => { this.setState({ searchHot: e }) }}>
                             <Select.Option value="0" >不显示</Select.Option>
                             <Select.Option value="1" >显示</Select.Option>
-                        </Select>
+                        </Select> : <span></span>}
                         <span>发布时间</span>
                         <DatePicker style={{ width: 110 }}
                             format="YYYY-MM-DD"

+ 1 - 1
js/component/manageCenter/servicesManage/contract/contractDetail.jsx

@@ -356,7 +356,7 @@ const ContractDetailForm = Form.create()(React.createClass({
                         "copyrightName": item.copyrightName,  //项目名称
                         "serialNumber": item.serialNumber,
                         "status": item.status,   //状态
-                        "inUrgent": item.inUrgent, //加急天数
+                        "inUrgent": item.inUrgent ? Number(item.inUrgent) : null, //加急天数
                         "principal": item.principal,  //当前负责人(技术员)
                         "tableType": "copyright"
                     });

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

@@ -115,6 +115,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                     province: detailData.province,
                     postalAddress: detailData.postalAddress,
                     unitName: detailData.unitName,
+                    orgCode: detailData.orgCode,
                     serialNumber: detailData.serialNumber,
                     createTime: detailData.createTime,
                     acceptTime: detailData.acceptTime,
@@ -222,7 +223,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                     <FormItem className="half-item"
                         {...formItemLayout}
                         label="组织机构代码" >
-                        <span>{theData.unitNumber}</span>
+                        <span>{theData.orgCode}</span>
                     </FormItem>
                 </div>
                 <div className="clearfix">

+ 13 - 14
js/component/manageCenter/servicesManage/copyright/copyright.jsx

@@ -492,27 +492,26 @@ const copyright = React.createClass({
                 dataIndex: 'acceptTimeFormattedDate',
                 key: 'acceptTimeFormattedDate',
             }, {
-                title: '(预计)下证时间',
+                title: '下证时间',
                 dataIndex: 'expectTime',
                 key: 'expectTime',
-                render: (text) => {
-                    if (text[0]) {
-                        if (text[1]) {
-                            return getTime(getInUrgentTime(moment(text[0]), text[1], this.state.vacations))
-                        } else {
-                            return getTime(getInUrgentTime(moment(text[0]), 45, this.state.vacations))
-                        }
-                    };
-                    return;
+                render: (text, record) => {
+                    if (record.authorizedDate) {
+                        return record.authorizedDateFormattedDate
+                    } else {
+                        if (text[0]) {
+                            if (text[1]) {
+                                return getTime(getInUrgentTime(moment(text[0]), text[1], this.state.vacations)) + '(预计)'
+                            } else {
+                                return getTime(getInUrgentTime(moment(text[0]), 45, this.state.vacations)) + '(预计)'
+                            }
+                        };
+                    }
                 }
             }, {
                 title: '创建人',
                 dataIndex: 'founder',
                 key: 'founder'
-            }, {
-                title: '技术员',
-                dataIndex: 'techPrincipal',
-                key: 'techPrincipal',
             }
         ];
         const rowSelection = {

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

@@ -87,7 +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;
+            this.state.enclosureUrl = undefined;
         };
     },
     render() {

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

@@ -7,6 +7,54 @@ import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
+if (!Array.prototype.includes) {
+    Object.defineProperty(Array.prototype, 'includes', {
+        value: function (searchElement, fromIndex) {
+
+            // 1. Let O be ? ToObject(this value).
+            if (this == null) {
+                throw new TypeError('"this" is null or not defined');
+            }
+
+            var o = Object(this);
+
+            // 2. Let len be ? ToLength(? Get(O, "length")).
+            var len = o.length >>> 0;
+
+            // 3. If len is 0, return false.
+            if (len === 0) {
+                return false;
+            }
+
+            // 4. Let n be ? ToInteger(fromIndex).
+            //    (If fromIndex is undefined, this step produces the value 0.)
+            var n = fromIndex | 0;
+
+            // 5. If n ≥ 0, then
+            //  a. Let k be n.
+            // 6. Else n < 0,
+            //  a. Let k be len + n.
+            //  b. If k < 0, let k be 0.
+            var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+
+            // 7. Repeat, while k < len
+            while (k < len) {
+                // a. Let elementK be the result of ? Get(O, ! ToString(k)).
+                // b. If SameValueZero(searchElement, elementK) is true, return true.
+                // c. Increase k by 1.
+                // NOTE: === provides the correct "SameValueZero" comparison needed here.
+                if (o[k] === searchElement) {
+                    return true;
+                }
+                k++;
+            }
+
+            // 8. Return false
+            return false;
+        }
+    });
+}
+
 const ActivityForm = Form.create()(React.createClass({
     getInitialState() {
         return {
@@ -106,6 +154,7 @@ const ActivityForm = Form.create()(React.createClass({
         };
     },
     intellectualChange(nextTargetKeys, direction, moveKeys) {
+        debugger
         this.setState({ targetKeys: nextTargetKeys });
     },
     intellectualSelectChange(sourceSelectedKeys, targetSelectedKeys) {
@@ -222,11 +271,11 @@ const ActivityForm = Form.create()(React.createClass({
                                     height: 300,
                                 }}
                                 titles={['未选择', '已选择']}
-                                targetKeys={this.state.targetKeys}
-                                selectedKeys={this.state.selectedKeys}
+                                targetKeys={this.state.targetKeys || []}
+                                selectedKeys={this.state.selectedKeys || []}
                                 onChange={this.intellectualChange}
                                 onSelectChange={this.intellectualSelectChange}
-                                render={item => `${item.name}-${item.key}`}
+                                render={item => `${item.name}-${item.number}`}
                             />
                         </div>
                         <FormItem className="half-div"
@@ -428,74 +477,77 @@ const Activity = React.createClass({
         })).done((data1, data2) => {
             let data = data1[0];
             let intellectualList = data2[0];
+            let theArr = [], theObj = {};
             if (data.error.length || !data.data || !data.data.list) {
                 message.warning(data.error[0].message);
-                return;
+            } 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,
+                        activityNumber: thisdata.activityNumber,
+                        activityName: thisdata.activityName,
+                        startDate: thisdata.startDate,
+                        endDate: thisdata.endDate,
+
+                        mockData: this.state.mockData,
+
+                        techField: [thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3],
+                        technicalField: getTechField(thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3),
+                        technicalField1: thisdata.technicalField1,
+                        technicalField2: thisdata.technicalField2,
+                        technicalField3: thisdata.technicalField3,
+                        technicalSource: thisdata.technicalSource ? String(thisdata.technicalSource) : undefined,
+                        intellectualPropertyNumber: thisdata.intellectualPropertyNumber ? thisdata.intellectualPropertyNumber.split(",") : [],
+                        intellectualPropertyNumberText: thisdata.intellectualPropertyNumber,
+                        budget: thisdata.budget,
+                        firstYearExpenditure: thisdata.firstYearExpenditure,
+                        secondYearExpenditure: thisdata.secondYearExpenditure,
+                        thirdYearExpenditure: thisdata.thirdYearExpenditure,
+                        implement: thisdata.implement,
+                        technologyInnovation: thisdata.technologyInnovation,
+                        achievement: thisdata.achievement,
+                        internalLaborCost: thisdata.internalLaborCost,
+                        internalDirectCost: thisdata.internalDirectCost,
+                        internalDepreciationCost: thisdata.internalDepreciationCost,
+                        internalAmortizationCost: thisdata.internalAmortizationCost,
+                        internalDesignCost: thisdata.internalDesignCost,
+                        internalEquipmentCost: thisdata.internalEquipmentCost,
+                        internalOtherCost: thisdata.internalOtherCost,
+                        externalTotalCost: thisdata.externalTotalCost,
+                        externalAbroadCost: thisdata.externalAbroadCost,
+                        enterpriseFiller: thisdata.enterpriseFiller,
+                        signDate: thisdata.signDate,
+                        sortNumber: thisdata.sortNumber,
+                        startDateFormattedDate: thisdata.startDateFormattedDate,
+                        endDateFormattedDate: thisdata.endDateFormattedDate,
+                        projectMode: thisdata.projectMode,
+                        proofUrl: thisdata.proofUrl,
+                        proofDownloadFileName: thisdata.proofDownloadFileName
+                    });
+                };
+                this.state.pagination.current = data.data.pageNo;
+                this.state.pagination.total = data.data.totalCount;
             };
             if (intellectualList.error.length || !intellectualList.data || !intellectualList.data.list) {
                 message.warning(intellectualList.error[0].message);
-                return;
-            };
-            let theArr = [];
-            for (let i = 0; i < intellectualList.data.list.length; i++) {
-                theArr.push({
-                    key: intellectualList.data.list[i].intellectualPropertyNumber,
-                    name: intellectualList.data.list[i].intellectualPropertyName
-                });
-            };
-            this.state.mockData = theArr;
-            for (let i = 0; i < data.data.list.length; i++) {
-                let thisdata = data.data.list[i];
-                this.state.data.push({
-                    key: i,
-                    id: thisdata.id,
-                    uid: thisdata.uid,
-                    activityNumber: thisdata.activityNumber,
-                    activityName: thisdata.activityName,
-                    startDate: thisdata.startDate,
-                    endDate: thisdata.endDate,
-
-                    mockData: this.state.mockData,
-
-                    techField: [thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3],
-                    technicalField: getTechField(thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3),
-                    technicalField1: thisdata.technicalField1,
-                    technicalField2: thisdata.technicalField2,
-                    technicalField3: thisdata.technicalField3,
-                    technicalSource: thisdata.technicalSource ? String(thisdata.technicalSource) : undefined,
-                    intellectualPropertyNumber: thisdata.intellectualPropertyNumber ? thisdata.intellectualPropertyNumber.split(",") : [],
-                    intellectualPropertyNumberText: thisdata.intellectualPropertyNumber,
-                    budget: thisdata.budget,
-                    firstYearExpenditure: thisdata.firstYearExpenditure,
-                    secondYearExpenditure: thisdata.secondYearExpenditure,
-                    thirdYearExpenditure: thisdata.thirdYearExpenditure,
-                    implement: thisdata.implement,
-                    technologyInnovation: thisdata.technologyInnovation,
-                    achievement: thisdata.achievement,
-                    internalLaborCost: thisdata.internalLaborCost,
-                    internalDirectCost: thisdata.internalDirectCost,
-                    internalDepreciationCost: thisdata.internalDepreciationCost,
-                    internalAmortizationCost: thisdata.internalAmortizationCost,
-                    internalDesignCost: thisdata.internalDesignCost,
-                    internalEquipmentCost: thisdata.internalEquipmentCost,
-                    internalOtherCost: thisdata.internalOtherCost,
-                    externalTotalCost: thisdata.externalTotalCost,
-                    externalAbroadCost: thisdata.externalAbroadCost,
-                    enterpriseFiller: thisdata.enterpriseFiller,
-                    signDate: thisdata.signDate,
-                    sortNumber: thisdata.sortNumber,
-                    startDateFormattedDate: thisdata.startDateFormattedDate,
-                    endDateFormattedDate: thisdata.endDateFormattedDate,
-                    projectMode: thisdata.projectMode,
-                    proofUrl: thisdata.proofUrl,
-                    proofDownloadFileName: thisdata.proofDownloadFileName
-                });
+            } else {
+                for (let i = 0; i < intellectualList.data.list.length; i++) {
+                    theArr.push({
+                        key: intellectualList.data.list[i].id,
+                        number: intellectualList.data.list[i].intellectualPropertyNumber,
+                        name: intellectualList.data.list[i].intellectualPropertyName
+                    });
+                    theObj[intellectualList.data.list[i].id] = intellectualList.data.list[i].intellectualPropertyNumber;
+                };
             };
-            this.state.pagination.current = data.data.pageNo;
-            this.state.pagination.total = data.data.totalCount;
             this.setState({
                 dataSource: this.state.data,
-                pagination: this.state.pagination
+                pagination: this.state.pagination,
+                mockData: theArr,
+                mockDataObj: theObj
             });
         }).always(function () {
             this.setState({
@@ -508,6 +560,7 @@ const Activity = React.createClass({
     getInitialState() {
         return {
             mockData: [],
+            mockDataObj: {},
             selectedRowKeys: [],
             selectedRows: [],
             loading: false,
@@ -544,7 +597,16 @@ const Activity = React.createClass({
                 }, {
                     title: '知识产权编号',
                     dataIndex: 'intellectualPropertyNumberText',
-                    key: 'intellectualPropertyNumberText'
+                    key: 'intellectualPropertyNumberText',
+                    render: (text) => {
+                        let arr = [], _me = this;
+                        if (text && text.split(',').length) {
+                            text.split(',').map((item) => {
+                                arr.push(_me.state.mockDataObj[item]);
+                            });
+                        };
+                        return arr.join(',');
+                    }
                 }, {
                     title: '开始时间',
                     dataIndex: 'startDateFormattedDate',

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

@@ -251,8 +251,8 @@ const AnnualReportDescFrom = Form.create()(React.createClass({
                             </p>
                         </div>
                         <div className="four-item" style={{ marginRight: '25%' }}>
-                            <p className="item-title">在中国境内研发费用: </p>
-                            <p>{theData.territory}</p>
+                            <p className="item-title">其中:在中国境内研发费用: </p>
+                            <p>{theData.researchCost}</p>
                         </div>
                         <div className="four-item">
                             <p className="item-title">纳税总额: </p>
@@ -718,7 +718,7 @@ const AnnualReport = React.createClass({
             method: "POST",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + "/api/user/deleteAnnualReport",
+            url: globalConfig.context + "/api/admin/deleteAnnualReport",
             data: {
                 ids: deletedIds
             }

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

@@ -949,7 +949,7 @@ const CompanyDetail = Form.create()(React.createClass({
                             {getFieldDecorator('firmTotal', {
                                 initialValue: theData.firmTotal || 0
                             })(
-                                <InputNumber min={0} max={999999} step={0.01} />
+                                <InputNumber min={0} max={999999} step={1} />
                                 )}
                         </FormItem>
                         <FormItem className="half-item"
@@ -959,7 +959,7 @@ const CompanyDetail = Form.create()(React.createClass({
                             {getFieldDecorator('techTotal', {
                                 initialValue: theData.techTotal || 0
                             })(
-                                <InputNumber min={0} max={999999} step={0.01} />
+                                <InputNumber min={0} max={999999} step={1} />
                                 )}
                             <span>其中科技人员占比
                         {(() => {

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

@@ -49,7 +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;
+            this.state.enclosureUrl = undefined;
         };
     },
     componentWillMount() {

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

@@ -238,7 +238,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                             <span className="download-file">
                                 <a onClick={newDownloadFile.bind(null, this.props.data.id, 'manuscript', '/api/admin/downloadManuscript', this.props.data.type)}>稿件下载</a>
                                 <a onClick={() => {
-                                    var newTab = window.open('about:blank'); getPreview(theData.pid, 'intellectualProperty', theData.type == 1 ? 'patent_writing' : 'copyright_apply', function (data) { console.log(data); newTab.location.href = data; });
+                                    var newTab = window.open('about:blank'); getPreview(theData.pid, 'intellectualProperty', theData.type == 1 ? 'patent_writing' : 'copyright_apply', function (data) { newTab.location.href = data; });
                                 }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                             </span>
                             : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传稿件!</span>}

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

@@ -82,6 +82,8 @@ const StandardDesc = React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         if (!this.state.visible && nextProps.showDesc) {
+            this.state.fileList = [];
+            this.state.enclosureUrl = undefined;
             if (nextProps.data) {
                 this.state.standardName = nextProps.data.standardName;
                 this.state.standardNumber = nextProps.data.standardNumber;
@@ -90,8 +92,6 @@ const StandardDesc = React.createClass({
                 this.state.participateWay = nextProps.data.participateWay;
                 this.state.enclosureUrl = nextProps.data.enclosureUrl;
             };
-            this.state.fileList = [];
-            this.state.enclosureUrl = undefined;
         };
         this.state.visible = nextProps.showDesc;
     },

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

@@ -7,6 +7,55 @@ import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
+if (!Array.prototype.includes) {
+    Object.defineProperty(Array.prototype, 'includes', {
+        value: function (searchElement, fromIndex) {
+
+            // 1. Let O be ? ToObject(this value).
+            if (this == null) {
+                throw new TypeError('"this" is null or not defined');
+            }
+
+            var o = Object(this);
+
+            // 2. Let len be ? ToLength(? Get(O, "length")).
+            var len = o.length >>> 0;
+
+            // 3. If len is 0, return false.
+            if (len === 0) {
+                return false;
+            }
+
+            // 4. Let n be ? ToInteger(fromIndex).
+            //    (If fromIndex is undefined, this step produces the value 0.)
+            var n = fromIndex | 0;
+
+            // 5. If n ≥ 0, then
+            //  a. Let k be n.
+            // 6. Else n < 0,
+            //  a. Let k be len + n.
+            //  b. If k < 0, let k be 0.
+            var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+
+            // 7. Repeat, while k < len
+            while (k < len) {
+                // a. Let elementK be the result of ? Get(O, ! ToString(k)).
+                // b. If SameValueZero(searchElement, elementK) is true, return true.
+                // c. Increase k by 1.
+                // NOTE: === provides the correct "SameValueZero" comparison needed here.
+                if (o[k] === searchElement) {
+                    return true;
+                }
+                k++;
+            }
+
+            // 8. Return false
+            return false;
+        }
+    });
+}
+
+
 const TechProductDescFrom = Form.create()(React.createClass({
     getInitialState() {
         return {
@@ -155,7 +204,7 @@ const TechProductDescFrom = Form.create()(React.createClass({
                     })(
                         <Cascader
                             options={techFieldList}
-                            onChange={(value, selectedOptions) => { this.setState({ techField: value }); console.log(value) }}
+                            onChange={(value, selectedOptions) => { this.setState({ techField: value }); }}
                             placeholder="请选择"
                             showSearch
                         />
@@ -189,7 +238,7 @@ const TechProductDescFrom = Form.create()(React.createClass({
                     selectedKeys={this.state.selectedKeys}
                     onChange={this.intellectualChange}
                     onSelectChange={this.intellectualSelectChange}
-                    render={item => `${item.name}-${item.key}`}
+                    render={item => `${item.name}-${item.number}`}
                 />
                 <div className="clearfix">
                     <FormItem className="half-item"
@@ -368,14 +417,17 @@ const TechProduct = React.createClass({
                 message.warning(intellectualList.error[0].message);
                 return;
             };
-            let theArr = [];
+            let theArr = [], theObj = {};
             for (let i = 0; i < intellectualList.data.list.length; i++) {
                 theArr.push({
-                    key: intellectualList.data.list[i].intellectualPropertyNumber,
+                    key: intellectualList.data.list[i].id,
+                    number: intellectualList.data.list[i].intellectualPropertyNumber,
                     name: intellectualList.data.list[i].intellectualPropertyName
                 });
+                theObj[intellectualList.data.list[i].id] = intellectualList.data.list[i].intellectualPropertyNumber;
             };
             this.state.mockData = theArr;
+            this.state.mockDataObj = theObj;
             for (let i = 0; i < data.data.list.length; i++) {
                 let thisdata = data.data.list[i];
                 this.state.data.push({
@@ -384,6 +436,7 @@ const TechProduct = React.createClass({
                     uid: thisdata.uid,
 
                     mockData: this.state.mockData,
+                    mockDataObj: this.state.mockDataObj,
 
                     serialNumber: thisdata.serialNumber,
                     productName: thisdata.productName,
@@ -430,6 +483,8 @@ const TechProduct = React.createClass({
         return {
             selectedRowKeys: [],
             selectedRows: [],
+            mockData: [],
+            mockDataObj: {},
             loading: false,
             pagination: {
                 defaultCurrent: 1,
@@ -473,7 +528,16 @@ const TechProduct = React.createClass({
                 }, {
                     title: '知识产权编号',
                     dataIndex: 'PropertyNumber',
-                    key: 'PropertyNumber'
+                    key: 'PropertyNumber',
+                    render: (text) => {
+                        let arr = [], _me = this;
+                        if (text && text.split(',').length) {
+                            text.split(',').map((item) => {
+                                arr.push(_me.state.mockDataObj[item]);
+                            });
+                        };
+                        return arr.join(',');
+                    }
                 }
             ],
             dataSource: []

+ 47 - 11
js/component/manageCenter/servicesManage/highTech/highTechInfo.jsx

@@ -13,11 +13,21 @@ import './highTechFoster.less';
 
 
 const highTechInfo = React.createClass({
+    getIntellectualNumber(text) {
+        let arr = [], _me = this;
+        if (text && text.split(',').length) {
+            text.split(',').map((item) => {
+                arr.push(_me.state.intellectualObj[item]);
+            });
+        };
+        return arr.join(',');
+    },
     getInitialState() {
         return {
             loading: false,
             year: new Date().getFullYear() - 1,
             field: [],
+            intellectualObj: {},
             registerType: [],
             netAssetRate: 0,
             salesRevenueRate: 0,
@@ -98,7 +108,7 @@ const highTechInfo = React.createClass({
                 {
                     title: '知识产权编号',
                     dataIndex: 'intellectualPropertyNumber',
-                    key: 'intellectualPropertyNumber',
+                    key: 'intellectualPropertyNumber'
                 }, {
                     title: '知识产权名称',
                     dataIndex: 'intellectualPropertyName',
@@ -503,6 +513,7 @@ const highTechInfo = React.createClass({
             };
         }.bind(this)).always(function () {
             this.loadIntellectualListData(uid);
+            this.loadIntellectualObjectData(uid);
         }.bind(this));
     },
     loadIntellectualListData(uid) {
@@ -547,6 +558,31 @@ const highTechInfo = React.createClass({
             this.loadHRData(uid);
         }.bind(this));
     },
+    loadIntellectualObjectData(uid) {
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/intellectualList",
+            data: {
+                uid: uid
+            }
+        }).done(function (data) {
+            let theObj = {};
+            if (data.error && data.error.length) {
+                message.warning(data.error[0].message);
+            } else {
+                data.data.list.map(function (item) {
+                    theObj[item.id] = item.intellectualPropertyNumber;
+                });
+            };
+            this.setState({
+                intellectualObj: theObj
+            });
+        }.bind(this)).always(function () {
+            this.loadHRData(uid);
+        }.bind(this));
+    },
     //第三
     loadHRData(uid) {
         $.ajax({
@@ -609,7 +645,7 @@ const highTechInfo = React.createClass({
                 uid: uid
             }
         }).done(function (data) {
-            let theArr = [];
+            let theArr = [], _me = this;
             if (!data.data) {
                 if (data.error && data.error.length) {
                     message.warning(data.error[0].message);
@@ -640,7 +676,7 @@ const highTechInfo = React.createClass({
                                 </div>
                                 <div className="half-item">
                                     <span className="item-title">知识产权编号</span>
-                                    <span>{item.intellectualPropertyNumber}</span>
+                                    <span>{_me.getIntellectualNumber(item.intellectualPropertyNumber)}</span>
                                 </div>
                                 <div className="half-item">
                                     <span className="item-title">研发费用总预算</span>
@@ -892,7 +928,7 @@ const highTechInfo = React.createClass({
                 year: this.state.year
             }
         }).done(function (data) {
-            let theArr = [];
+            let theArr = [], _me = this;
             if (!data.data) {
                 if (data.error && data.error.length) {
                     message.warning(data.error[0].message);
@@ -926,7 +962,7 @@ const highTechInfo = React.createClass({
                                 </div>
                                 <div className="half-item">
                                     <span className="item-title">知识产权编号</span>
-                                    <span>{item.intellectualPropertyNumber}</span>
+                                    <span>{_me.getIntellectualNumber(item.intellectualPropertyNumber)}</span>
                                 </div>
                             </div>
                             <div className="all-item">
@@ -1027,7 +1063,7 @@ const highTechInfo = React.createClass({
         };
     },
     render() {
-        let theData = this.state;
+        const theData = this.state;
         return (
             <Spin spinning={theData.loading}>
                 <div id="Info-box">
@@ -1301,27 +1337,27 @@ const highTechInfo = React.createClass({
                         <div className="clearfix">
                             <div className="half-item">
                                 <span className="item-title">近三年研究开发费用总额</span>
-                                <span>{theData.researchCost}</span>
+                                <span>{theData.researchCost || 0}</span>
                                 <span> 万元</span>
                             </div>
                             <div className="half-item">
                                 <span className="item-title">在中国境内研发费用总和</span>
-                                <span>{theData.territory}</span>
+                                <span>{theData.territory || 0}</span>
                                 <span> 万元</span>
                             </div>
                             <div className="half-item">
                                 <span className="item-title">基础研究投入费用总额</span>
-                                <span>{theData.basicResearchCost}</span>
+                                <span>{theData.basicResearchCost || 0}</span>
                                 <span> 万元</span>
                             </div>
                             <div className="half-item">
                                 <span className="item-title">近一年企业总收入</span>
-                                <span>{theData.totalRevenue}</span>
+                                <span>{theData.totalRevenue || 0}</span>
                                 <span> 万元</span>
                             </div>
                             <div className="half-item">
                                 <span className="item-title">近一年高新技术产品收入</span>
-                                <span>{theData.lastYearRevenue}</span>
+                                <span>{theData.lastYearRevenue || 0}</span>
                                 <span> 万元</span>
                             </div>
                             <div className="half-item">

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

@@ -41,7 +41,7 @@ const Correction = React.createClass({
                         patentType: thisdata.patentCatagory,
                         patentName: thisdata.patentName,
                         patentState: thisdata.patentState,
-                        endData: [thisdata.patentCatagory, thisdata.authorizedDate],
+                        endData: [thisdata.patentCatagory, thisdata.recordTime],
                         author: thisdata.author,
                         authorizedDate: thisdata.authorizedDate
                     });

+ 2 - 2
js/component/manageCenter/servicesManage/technology/applyChange.jsx

@@ -530,7 +530,7 @@ const ApplyChange = React.createClass({
         this.setState({
             visible: false,
         });
-        this.props.closeDesc(false);
+        this.props.closeDesc(false, true);
     },
     handleCancel(e) {
         this.setState({
@@ -555,7 +555,7 @@ const ApplyChange = React.createClass({
                             visible={this.state.visible}
                             authorOption={this.props.authorOption}
                             data={this.props.data}
-                            spinState={this.spinChange} closeModal={this.handleCancel} />
+                            spinState={this.spinChange} closeModal={this.handleOk} />
                     </Spin>
                 </Modal>
             </div>

+ 4 - 2
js/component/manageCenter/servicesManage/technology/applyManage.jsx

@@ -393,9 +393,11 @@ const ApplyManage = React.createClass({
             this.loadData();
         }.bind(this));
     },
-    closeDesc(e) {
+    closeDesc(e, s) {
         this.state.showDesc = e;
-        this.loadData();
+        if (s) {
+            this.loadData();
+        }
     },
     closeAdd(e) {
         this.state.showAdd = e;

+ 13 - 0
js/component/manageCenter/set/content.less

@@ -14,6 +14,15 @@
     .member-table {
         margin-top: 20px;
     }
+    .set-search {
+        >input {
+            width: 120px;
+        }
+        >* {
+            margin-right: 10px;
+            margin-top: 10px;
+        }
+    }
 }
 
 .ant-modal-body {
@@ -31,6 +40,10 @@
             >input {
                 width: 200px;
             }
+            .modal-det {
+                width: 200px;
+                text-align: left;
+            }
         }
     }
     .modal-text {

+ 158 - 70
js/component/manageCenter/set/member.jsx

@@ -1,54 +1,58 @@
 import React from 'react';
-import { Table, Button, Spin, message, Icon } from 'antd';
-import { getProvince } from '../../NewDicProvinceList';
-import ajax from 'jquery/src/ajax/xhr.js'
+import { Table, Button, Spin, message, Icon, Select, Input } from 'antd';
+import { provinceSelect, provinceList, getProvince } from '../../NewDicProvinceList.js';
+import { companySearch } from '../../tools';
+import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import TheModal from './modal.jsx';
 
 const Member = React.createClass({
     loadData(pageNo) {
-        this.state.data = [];
         this.setState({
             loading: true
         });
-        return $.ajax({
+        $.ajax({
             type: 'get',
             cache: false,
             url: globalConfig.context + "/api/admin/supervise/adminList",
             dataType: "json",
             data: {
                 pageNo: pageNo || 1,
-                pageSize: this.state.pagination.pageSize
+                pageSize: this.state.pagination.pageSize,
+                province: this.state.searchProvince,
+                mobile: this.state.searchMobile,
+                name: this.state.searchName
             },
             success: function (data) {
+                let theArr = [];
                 if (!data.data) {
                     if (data.error && data.error.length) {
                         message.warning(data.error[0].message);
                     };
-                    return;
-                };
-                for (let i = 0; i < data.data.list.length; i++) {
-                    let thisdata = data.data.list[i];
-                    this.state.onlyProvince = thisdata.province;
-                    this.state.data.push({
-                        key: i,
-                        id: thisdata.id,
-                        mobile: thisdata.mobile,
-                        name: thisdata.name,
-                        email: thisdata.email,
-                        createTime: thisdata.createTime,
-                        number: thisdata.number,
-                        province: thisdata.province,
-                        position: thisdata.position,
-                        superior: thisdata.superior,
-                        superiorId: thisdata.superiorId,
-                        createTimeFormattedDate: thisdata.createTimeFormattedDate
-                    });
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        this.state.onlyProvince = thisdata.province;
+                        theArr.push({
+                            key: i,
+                            id: thisdata.id,
+                            mobile: thisdata.mobile,
+                            name: thisdata.name,
+                            email: thisdata.email,
+                            createTime: thisdata.createTime,
+                            number: thisdata.number,
+                            province: thisdata.province,
+                            position: thisdata.position,
+                            superior: thisdata.superior,
+                            superiorId: thisdata.superiorId,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate
+                        });
+                    };
+                    this.state.pagination.current = data.data.pageNo;
+                    this.state.pagination.total = data.data.totalCount;
                 };
-                this.state.pagination.current = data.data.pageNo;
-                this.state.pagination.total = data.data.totalCount;
                 this.setState({
-                    data: this.state.data,
+                    data: theArr,
                     pagination: this.state.pagination
                 });
             }.bind(this),
@@ -58,9 +62,54 @@ const Member = React.createClass({
             });
         }.bind(this));
     },
+    loadInitialData() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            url: globalConfig.context + '/api/roles',
+            cache: false
+        }).done((rolesres) => {
+            let theAdminRole = [], rolesObj = {};
+            if (rolesres.data && window.adminData) {
+                rolesres.data.map((item) => {
+                    theAdminRole.push(item.id);
+                    rolesObj[item.id] = item.roleName;
+                })
+            }
+            this.setState({
+                roles: rolesres.data,
+                theAdminRole: theAdminRole,
+                rolesObj:rolesObj,
+                loading: false
+            });
+        })
+    },
+    loadBindRoles(uid) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            url: globalConfig.context + '/api/admin/role',
+            cache: false,
+            data: {
+                "uid": window.adminData.uid
+            }
+        }).done((data) => {
+            this.setState({
+                currentRoles: data.data || [],
+                loading: false
+            });
+        })
+    },
     getInitialState() {
         return {
             data: [],
+            roles: [],
+            currentRoles:[],
+            rolesObj: {},
+            theAdminRole: [],
+            provinceList: [],
             dataSource: [],
             selectedRowKeys: [],
             selectedRows: [],
@@ -78,11 +127,54 @@ const Member = React.createClass({
                 showTotal: function (total) {
                     return '共' + total + '条数据';
                 }
-            }
+            },
+            columns: [
+                {
+                    title: '编号',
+                    dataIndex: 'number',
+                    key: 'number'
+                }, {
+                    title: '登录账号',
+                    dataIndex: 'mobile',
+                    key: 'mobile'
+                }, {
+                    title: '名字',
+                    dataIndex: 'name',
+                    key: 'name'
+                }, {
+                    title: '职位',
+                    dataIndex: 'position',
+                    key: 'position'
+                }, {
+                    title: '上级管理员',
+                    dataIndex: 'superior',
+                    key: 'superior'
+                }, {
+                    title: '省份',
+                    dataIndex: 'province',
+                    key: 'province',
+                    render: text => {
+                        return text ? text.split(',').map((item) => {
+                            return getProvince(item) + ' '
+                        }) : []
+                    }
+                }, {
+                    title: '邮箱',
+                    dataIndex: 'email',
+                    key: 'email'
+                }, {
+                    title: '创建时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate'
+                }
+            ]
         }
     },
-    componentDidMount() {
+    componentWillMount() {
+        this.state.provinceList = provinceSelect();
         this.loadData();
+        this.loadInitialData();
+        this.loadBindRoles();
     },
     addNew() {
         let e = {}
@@ -97,6 +189,12 @@ const Member = React.createClass({
             modalShow: true
         })
     },
+    reset() {
+        this.state.searchMobile = undefined;
+        this.state.searchName = undefined;
+        this.state.searchProvince = undefined;
+        this.loadData();
+    },
     handleReturn(show, render) {
         this.state.modalShow = show;
         if (render) {
@@ -104,44 +202,6 @@ const Member = React.createClass({
         }
     },
     render() {
-        const columns = [{
-            title: '编号',
-            dataIndex: 'number',
-            key: 'number'
-        }, {
-            title: '登录账号',
-            dataIndex: 'mobile',
-            key: 'mobile'
-        }, {
-            title: '名字',
-            dataIndex: 'name',
-            key: 'name'
-        }, {
-            title: '职位',
-            dataIndex: 'position',
-            key: 'position'
-        }, {
-            title: '上级管理员',
-            dataIndex: 'superior',
-            key: 'superior'
-        }, {
-            title: '省份',
-            dataIndex: 'province',
-            key: 'province',
-            render: text => {
-                return text ? text.split(',').map((item) => {
-                    return getProvince(item) + ' '
-                }) : []
-            }
-        }, {
-            title: '邮箱',
-            dataIndex: 'email',
-            key: 'email'
-        }, {
-            title: '创建时间',
-            dataIndex: 'createTimeFormattedDate',
-            key: 'createTimeFormattedDate'
-        }];
         return (
             <Spin spinning={this.state.loading}>
                 <div className="set-content">
@@ -150,9 +210,37 @@ const Member = React.createClass({
                         <Button style={{ background: "#ea0862", border: "none", color: "#fff" }}
                             onClick={this.addNew}>添加<Icon type="plus" /></Button>
                     </div>
-                    <TheModal data={this.state.modalData} onlyProvince={this.state.onlyProvince} show={this.state.modalShow} handleReturn={this.handleReturn} />
+                    <div className="set-search">
+                        <Input placeholder="登录号"
+                            value={this.state.searchMobile}
+                            onChange={(e) => { this.setState({ searchMobile: e.target.value }); }} />
+                        <Input placeholder="管理员名字"
+                            value={this.state.searchName}
+                            onChange={(e) => { this.setState({ searchName: e.target.value }); }} />
+                        <Select style={{ width: 120 }}
+                            placeholder="选择一个省份"
+                            showSearch
+                            filterOption={companySearch}
+                            value={this.state.searchProvince}
+                            onChange={(e) => { this.setState({ searchProvince: e }) }} >
+                            {this.state.provinceList.map((item) => {
+                                return <Select.Option key={String(item.value)}>{item.label}</Select.Option>
+                            })}
+                        </Select>
+                        <Button type="primary" onClick={() => { this.loadData() }}>搜索</Button>
+                        <Button onClick={this.reset}>重置</Button>
+                    </div>
+                    <TheModal
+                        theAdminRole={this.state.theAdminRole}
+                        currentRoles={this.state.currentRoles}
+                        roles={this.state.roles}
+                        rolesObj={this.state.rolesObj}
+                        data={this.state.modalData}
+                        onlyProvince={this.state.onlyProvince}
+                        show={this.state.modalShow}
+                        handleReturn={this.handleReturn} />
                     <Table className='member-table'
-                        columns={columns}
+                        columns={this.state.columns}
                         onRowClick={this.edit}
                         dataSource={this.state.data}
                         pagination={this.state.pagination} />

+ 144 - 91
js/component/manageCenter/set/modal.jsx

@@ -13,6 +13,22 @@ const ProvinceAdd = React.createClass({
             citys: []
         };
     },
+    componentWillMount() {
+        let theArr = [];
+        this.state.theProvince = [this.props.locations[this.props.index].province];
+        this.state.citys = this.props.locations[this.props.index].city || [];
+        this.props.provinceList.map((item) => {
+            if (item.id == this.props.locations[this.props.index].province) {
+                item.cityList.map((city) => {
+                    theArr.push({
+                        value: city.id,
+                        label: city.name
+                    })
+                });
+            };
+        });
+        this.state.cityOption = theArr;
+    },
     componentWillReceiveProps(nextProps) {
         let theArr = [];
         this.state.theProvince = [nextProps.locations[nextProps.index].province];
@@ -153,10 +169,12 @@ const TheModal = React.createClass({
             roles: [],
             visible: false,
             loading: false,
+            theSwitch: true,
             bindroles: [],
             locations: [],
             cityOption: [],
-            locationsObj: {}
+            locationsObj: {},
+            adminSelectObj: {}
         }
     },
     handleCancel() {
@@ -165,20 +183,6 @@ const TheModal = React.createClass({
         });
         this.props.handleReturn(false, false);
     },
-    loadInitialData() {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            url: globalConfig.context + '/api/roles',
-            cache: false
-        }).done((rolesres) => {
-            this.setState({
-                roles: rolesres.data,
-                loading: false
-            });
-        })
-    },
     loadAdminSelectList() {
         this.setState({
             loading: true
@@ -201,6 +205,7 @@ const TheModal = React.createClass({
             };
             this.setState({
                 adminSelectOption: theArr,
+                adminSelectObj: data.data,
                 loading: false
             });
         })
@@ -263,8 +268,24 @@ const TheModal = React.createClass({
                 "uid": uid
             }
         }).done((data) => {
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+                return;
+            } else if (data.data) {
+                this.state.theSwitch = true;
+                for (let i = 0; i < data.data.length; i++) {
+                    for (let n = 0; n < this.props.currentRoles.length; n++) {
+                        if (data.data[i] === this.props.currentRoles[n]) {
+                            this.state.theSwitch = false;
+                        }
+                    }
+                };
+            };
             this.setState({
                 bindroles: data.data || [],
+                theSwitch: this.state.theSwitch,
                 loading: false
             });
         })
@@ -302,9 +323,6 @@ const TheModal = React.createClass({
         this.loadAdminOwnLocation();
     },
     componentWillReceiveProps(nextProps) {
-        if (nextProps.show && !this.state.roles.length) {
-            this.loadInitialData();
-        };
         if (!this.state.visible && nextProps.show) {
             if (nextProps.data.id) {
                 this.loadBindRoles(nextProps.data.id);
@@ -371,8 +389,8 @@ const TheModal = React.createClass({
     },
     getRolesOptions() {
         let options = [];
-        for (let i = 0; i < this.state.roles.length; i++) {
-            options.push(<Select.Option key={String(this.state.roles[i].id)}>{this.state.roles[i].roleName}</Select.Option>);
+        for (let i = 0; i < this.props.roles.length; i++) {
+            options.push(<Select.Option key={String(this.props.roles[i].id)}>{this.props.roles[i].roleName}</Select.Option>);
         }
         return options;
     },
@@ -398,79 +416,114 @@ const TheModal = React.createClass({
     render() {
         return (
             <div className="modal" >
-                <Spin spinning={this.state.loading} >
-                    <Modal maskClosable={false} title="管理员详情"
-                        closable={false} width={1000}
-                        visible={this.state.visible}
-                        onOk={this.postData}
-                        onCancel={this.handleCancel} >
-                        <ul className="modal-content clearfix">
-                            <li className="list">
-                                <span className='modal-text'>名字</span>
-                                <Input value={this.state.name} onChange={(e) => { this.state.name = e.target.value; this.setState({ name: this.state.name }); }} />
-                            </li>
-                            <li className="list">
-                                <span className='modal-text'>职位</span>
-                                <Input value={this.state.position} onChange={(e) => { this.state.position = e.target.value; this.setState({ position: this.state.position }); }} />
-                            </li>
-                            <li className="list">
-                                <span className='modal-text'>上级</span>
-                                <Select style={{ verticalAlign: 'middle', width: 200 }}
-                                    placeholder="选择一个上级" notFoundContent="没有获取到管理员列表"
-                                    showSearch
-                                    filterOption={companySearch}
-                                    value={this.state.superiorId}
-                                    onChange={(e) => { this.setState({ superiorId: e }) }} >
-                                    {this.state.adminSelectOption}
-                                </Select>
-                            </li>
-                            <li className="list">
-                                <span className='modal-text'>登录账号</span>
-                                <Input value={this.state.mobile} onChange={(e) => { this.state.mobile = e.target.value; this.setState({ mobile: this.state.mobile }); }} />
-                            </li>
-                            <li className="list">
-                                <span className='modal-text'>邮箱</span>
-                                <Input value={this.state.email} onChange={(e) => { this.state.email = e.target.value; this.setState({ email: this.state.email }); }} />
-                            </li>
-                            {this.getRolesSelection()}
-                            {this.state.id ? <li className="list">
-                                <span></span>
-                                <Popconfirm
-                                    title={"用户 [ " + this.state.name + " ] 的密码将会重置为123456,确认操作?"}
-                                    onConfirm={this.resetPwd}
-                                    okText="确认"
-                                    cancelText="取消"
-                                    placement="topLeft">
-                                    <Button>重置密码</Button>
-                                </Popconfirm>
-                            </li> : <li></li>}
-                        </ul>
-                        <div>
-                            <span className='modal-text' style={{ verticalAlign: 'top' }}>地区</span>
-                            {window.showPermissionList && window.showRoleList ? <div style={{ display: 'inline-block', width: '88%' }}>
-                                {this.state.locations.map((item, i) => {
-                                    return <ProvinceAdd
-                                        provinceList={this.state.provinceList}
-                                        provinceOption={this.state.provinceOption}
-                                        getLocations={this.getLocations}
-                                        delLocations={this.delLocations}
-                                        locations={this.state.locations}
-                                        index={i} key={i} />
-                                })}
-                                <Button style={{ verticalAlign: 'middle' }} type="dashed" size="small"
-                                    onClick={this.provinceAdd}>
-                                    <Icon type="plus" />
-                                </Button>
-                            </div> : <div style={{ display: 'inline-block', width: '88%' }}>
+                <Modal maskClosable={false} title="管理员详情"
+                    closable={false} width={1000}
+                    visible={this.state.visible}
+                    onOk={this.postData}
+                    onCancel={this.handleCancel} >
+                    <Spin spinning={this.state.loading} >
+                        {this.state.theSwitch ? <div className="modal-box">
+                            <ul className="modal-content clearfix">
+                                <li className="list">
+                                    <span className='modal-text'>名字</span>
+                                    <Input value={this.state.name} onChange={(e) => { this.state.name = e.target.value; this.setState({ name: this.state.name }); }} />
+                                </li>
+                                <li className="list">
+                                    <span className='modal-text'>职位</span>
+                                    <Input value={this.state.position} onChange={(e) => { this.state.position = e.target.value; this.setState({ position: this.state.position }); }} />
+                                </li>
+                                <li className="list">
+                                    <span className='modal-text'>上级</span>
+                                    <Select style={{ verticalAlign: 'middle', width: 200 }}
+                                        placeholder="选择一个上级" notFoundContent="没有获取到管理员列表"
+                                        showSearch
+                                        filterOption={companySearch}
+                                        value={this.state.superiorId}
+                                        onChange={(e) => { this.setState({ superiorId: e }) }} >
+                                        {this.state.adminSelectOption}
+                                    </Select>
+                                </li>
+                                <li className="list">
+                                    <span className='modal-text'>登录账号</span>
+                                    <Input value={this.state.mobile} onChange={(e) => { this.state.mobile = e.target.value; this.setState({ mobile: this.state.mobile }); }} />
+                                </li>
+                                <li className="list">
+                                    <span className='modal-text'>邮箱</span>
+                                    <Input value={this.state.email} onChange={(e) => { this.state.email = e.target.value; this.setState({ email: this.state.email }); }} />
+                                </li>
+                                {this.getRolesSelection()}
+                                {this.state.id ? <li className="list">
+                                    <span></span>
+                                    <Popconfirm
+                                        title={"用户 [ " + this.state.name + " ] 的密码将会重置为123456,确认操作?"}
+                                        onConfirm={this.resetPwd}
+                                        okText="确认"
+                                        cancelText="取消"
+                                        placement="topLeft">
+                                        <Button>重置密码</Button>
+                                    </Popconfirm>
+                                </li> : <li></li>}
+                            </ul>
+                            <div>
+                                <span className='modal-text' style={{ verticalAlign: 'top' }}>地区</span>
+                                {window.showPermissionList && window.showRoleList ? <div style={{ display: 'inline-block', width: '88%' }}>
                                     {this.state.locations.map((item, i) => {
-                                        return <Tag key={i}>{getProvince(item.province) + ' ' + (item.city ? item.city.map((c) => {
-                                            return getProvince(c) + ' '
-                                        }) : '')}</Tag>
+                                        return <ProvinceAdd
+                                            provinceList={this.state.provinceList}
+                                            provinceOption={this.state.provinceOption}
+                                            getLocations={this.getLocations}
+                                            delLocations={this.delLocations}
+                                            locations={this.state.locations}
+                                            index={i} key={i} />
                                     })}
-                                </div>}
-                        </div>
-                    </Modal>
-                </Spin>
+                                    <Button style={{ verticalAlign: 'middle' }} type="dashed" size="small"
+                                        onClick={this.provinceAdd}>
+                                        <Icon type="plus" />
+                                    </Button>
+                                </div> : <div style={{ display: 'inline-block', width: '88%' }}>
+                                        {this.state.locations.map((item, i) => {
+                                            return <Tag key={i}>{getProvince(item.province) + ' ' + (item.city ? item.city.map((c) => {
+                                                return getProvince(c) + ' '
+                                            }) : '')}</Tag>
+                                        })}
+                                    </div>}
+                            </div>
+                        </div> : <div className="modal-box">
+                                <ul className="modal-content clearfix">
+                                    <li className="list">
+                                        <span className='modal-text'>名字</span>
+                                        <span className="modal-det">{this.state.name}</span>
+                                    </li>
+                                    <li className="list">
+                                        <span className='modal-text'>职位</span>
+                                        <span className="modal-det">{this.state.position}</span>
+                                    </li>
+                                    <li className="list">
+                                        <span className='modal-text'>上级</span>
+                                        <span className="modal-det">{this.state.adminSelectObj[this.state.superiorId]}</span>
+                                    </li>
+                                    <li className="list">
+                                        <span className='modal-text'>登录账号</span>
+                                        <span className="modal-det">{this.state.mobile}</span>
+                                    </li>
+                                    <li className="list">
+                                        <span className='modal-text'>邮箱</span>
+                                        <span className="modal-det">{this.state.email}</span>
+                                    </li>
+                                </ul>
+                                <div>
+                                    <span className='modal-text' style={{ verticalAlign: 'top' }}>地区</span>
+                                    <div style={{ display: 'inline-block', width: '88%' }}>
+                                        {this.state.locations.map((item, i) => {
+                                            return <Tag key={i}>{getProvince(item.province) + ' ' + (item.city ? item.city.map((c) => {
+                                                return getProvince(c) + ' '
+                                            }) : '')}</Tag>
+                                        })}
+                                    </div>
+                                </div>
+                            </div>}
+                    </Spin>
+                </Modal>
             </div >
         );
     }

+ 12 - 4
js/component/manageCenter/set/role.jsx

@@ -179,10 +179,18 @@ const Role = React.createClass({
                 let _me = this;
                 if (record.permissions) {
                     return <div>
-                        {record.permissions.map((tag) => {
-                            return <Tag key={tag} closable={false}>
-                                {_me.state.permissions[tag]}
-                            </Tag>
+                        {record.permissions.map((tag, i) => {
+                            if (i < 3) {
+                                return <Tag key={tag} closable={false}>
+                                    {_me.state.permissions[tag]}
+                                </Tag>
+                            } else if (i == 3) {
+                                return <Tag key={tag} closable={false}>
+                                    ...
+                                </Tag>
+                            } else {
+                                return false;
+                            }
                         }
                         )}
                     </div>

+ 5 - 3
js/component/manageCenter/topTab.jsx

@@ -423,7 +423,9 @@ const TopTab = React.createClass({
         });
     },
     componentWillMount() {
-        this.loadData();
+        if (this.props.active) {
+            this.loadData();
+        };
     },
     loadData() {
         this.setState({
@@ -474,14 +476,14 @@ const TopTab = React.createClass({
                         this.setState({ userModalShow: true });
                     }}> {adminData.name || adminData.mobile} </a> : <a onClick={this.logOut}>{this.state.username}</a>} <a onClick={this.logOut}>[ 退出 ]</a></span>
                     <span className="acc-top-user-toindex"><a href={globalConfig.context + "/portal/index.html"}>返回首页</a></span>
-                    <a onClick={() => { this.setState({ messageModalShow: true }); }} className="user-badge">
+                    {this.props.active ? <a onClick={() => { this.setState({ messageModalShow: true }); }} className="user-badge">
                         <Icon type="mail" />
                         {(() => {
                             if (!window.showSystem && this.state.badge) {
                                 return <Badge status="processing" />
                             }
                         })()}
-                    </a>
+                    </a> : <div></div>}
                 </div>
                 <div className="acc-index">
                     <div className="acc-index-imgbox">

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

@@ -202,6 +202,7 @@ const CustomerList = React.createClass({
                             email: thisdata.email,
                             createTime: thisdata.createTime,
                             aftUsername: thisdata.aftUsername,
+                            managerName: thisdata.managerName,
                             number: thisdata.number,
                             auditStatus: thisdata.type == 0 ? thisdata.userAuditStatus : thisdata.orgAuditStatus,
                             createTimeFormattedDate: thisdata.createTimeFormattedDate,

+ 2 - 5
js/component/manageCenter/userManage/customerSearch.jsx

@@ -15,8 +15,8 @@ const CustomerSearch = React.createClass({
             crossDomain: false,
             url: globalConfig.context + "/api/admin/supervise/findUser",
             data: {
-                "name": this.state.searchName,
-                "mobile": this.state.searchMobile,
+                "name": this.state.searchName || undefined,
+                "mobile": this.state.searchMobile || undefined,
                 "type": Number(this.state.searchType)
             },
             success: function (data) {
@@ -43,9 +43,6 @@ const CustomerSearch = React.createClass({
     search() {
         this.loadData();
     },
-    reset() {
-        this.loadData();
-    },
     render() {
         return (
             <div className="user-content" >

+ 1 - 1
js/component/manageCenter/userManage/highTechSearch.jsx

@@ -79,7 +79,7 @@ const HighTechSearch = React.createClass({
                     dataIndex: 'key',
                     key: 'key',
                 }, {
-                    title: '省份',
+                    title: '地区',
                     dataIndex: 'district',
                     key: 'district',
                     render: (text) => { return getProvince(text) }

+ 5 - 4
js/component/manageCenter/userManage/orgDesc.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Icon, Modal, message, Spin, Button, Tabs, Input, Select, Form, DatePicker, Cascader, Upload } from 'antd';
+import { Icon, Modal, message, Spin, Button, Tabs, Input, InputNumber, Select, Form, DatePicker, Cascader, Upload } from 'antd';
 import './userList.less';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -83,7 +83,7 @@ const OrgShow = Form.create()(React.createClass({
                     paymentDateFormattedDate: thisData.paymentDateFormattedDate,
                     lastYearTaxReportUrl: thisData.lastYearTaxReportUrl,
                     auditStatus: thisData.auditStatus,
-                    level: thisData.level,
+                    level: thisData.lvl,
 
                     aid: thisData.aid,   //业务员ID
                     mid: thisData.mid  //客户经理ID
@@ -305,7 +305,7 @@ const OrgShow = Form.create()(React.createClass({
                             {...formItemLayout}
                             label="注册资金" >
                             {getFieldDecorator('registeredCapital')(
-                                <span>{this.state.registeredCapital}</span>
+                                <span>{this.state.registeredCapital || 0} 万元</span>
                             )}
                         </FormItem>
                         <FormItem
@@ -782,8 +782,9 @@ const OrgCertify = Form.create()(React.createClass({
                             {getFieldDecorator('registeredCapital', {
                                 initialValue: this.state.registeredCapital
                             })(
-                                <Input />
+                                <InputNumber min={0} max={999999} step={1} />
                                 )}
+                            <span> 万元</span>
                         </FormItem>
                         <FormItem
                             {...formItemLayout}

+ 1 - 0
js/component/manageCenter/userManage/orgList.jsx

@@ -122,6 +122,7 @@ const OrgList = React.createClass({
                             email: thisdata.email,
                             createTime: thisdata.createTime,
                             aftUsername: thisdata.aftUsername,
+                            managerName: thisdata.managerName,
                             number: thisdata.number,
                             orgAuditStatus: thisdata.orgAuditStatus,
                             createTimeFormattedDate: thisdata.createTimeFormattedDate,

+ 1 - 1
js/component/manageCenter/userManage/userDesc.jsx

@@ -56,7 +56,7 @@ const UserShow = Form.create()(React.createClass({
                     paymentDate: thisData.paymentDate,
                     expert: thisData.expert,
                     celebrity: thisData.celebrity,
-                    level: thisData.level,
+                    level: thisData.lvl,
                     aid: thisData.aid,   //业务员ID
                     mid: thisData.mid  //客户经理ID
                 });

+ 1 - 0
js/component/manageCenter/userManage/userList.jsx

@@ -121,6 +121,7 @@ const UserList = React.createClass({
                             email: thisdata.email,
                             createTime: thisdata.createTime,
                             aftUsername: thisdata.aftUsername,
+                            managerName: thisdata.managerName,
                             username: thisdata.username,
                             number: thisdata.number,
                             auditStatus: thisdata.auditStatus,

+ 25 - 13
js/component/portal/portal.less

@@ -387,15 +387,13 @@
                 .logo {
                     height: 120px;
                     width: 120px;
-                    position: relative;
-                    padding-top: 120px;
                     margin: 0 auto;
+                    line-height: 120px;
+                    text-align: center;
                     img {
-                        height: 120px;
-                        width: auto;
-                        position: absolute;
-                        top: 0;
-                        left: 0;
+                        max-width: 120px;
+                        max-height: 120px;
+                        vertical-align: middle;
                     }
                 }
                 >div:not(:first-child) {
@@ -517,9 +515,9 @@
     }
 }
 
-.detial_sub {
+.detail_sub {
     line-height: 32px;
-    .detial_sub_icon {
+    .detail_sub_icon {
         vertical-align: middle;
         display: inline-block;
         height: 20px;
@@ -533,12 +531,12 @@
             height: 20px;
         }
     }
-    .detial_sub_title {
+    .detail_sub_title {
         color: #666;
         margin-left: 6px;
         margin-right: 6px;
     }
-    .detial_sub_text {
+    .detail_sub_text {
         color: #333;
         i {
             background: #ccc;
@@ -547,10 +545,21 @@
             margin-right: 6px;
         }
     }
+    .detail_sub_demandDes {
+        display: inline-block;
+        width: 480px;
+        line-height: 20px;
+        height: 22px;
+        vertical-align: middle;
+        color: #333;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
     .money_text {
         color: #58a3ff;
     }
-    .detial_sub_score {
+    .detail_sub_score {
         display: inline-block;
         width: 90px;
         >span {
@@ -582,9 +591,12 @@
             left: -12px;
             top: -1px;
         }
-        >span {
+        >p {
             font-size: 20px;
             color: #58a3ff;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
         }
     }
     .interest_list_name {

+ 23 - 23
js/component/portal/search/achievement.jsx

@@ -274,7 +274,7 @@ const Content = React.createClass({
                             {this.state.dataSource.map((item) => {
                                 return <li key={item.id} onClick={() => { this.tableRowClick(item) }}>
                                     <div className="interest_list_title" style={{ paddingLeft: '20px' }}>
-                                        <span>{item.name}</span>
+                                        <p title={item.name}>{item.name}</p>
                                     </div>
                                     <div className="interest_list_name" style={{ paddingLeft: '20px' }}>
                                         <p>{item.ownerName}</p>
@@ -283,47 +283,47 @@ const Content = React.createClass({
                                             <img src={item.level ? certify : uncertify} alt="" />
                                         </div>
                                     </div>
-                                    <div className="detial_sub">
-                                        <span className="detial_sub_icon">
+                                    <div className="detail_sub">
+                                        <span className="detail_sub_icon">
                                             <img src={demand_ico_5} alt="成果" />
                                         </span>
-                                        <span className="detial_sub_title">关键词: </span>
-                                        <span className="detial_sub_text">{item.keyword}</span>
+                                        <span className="detail_sub_title">关键词: </span>
+                                        <span className="detail_sub_text">{item.keyword}</span>
                                     </div>
-                                    <div className="detial_sub">
-                                        <span className="detial_sub_icon">
+                                    <div className="detail_sub">
+                                        <span className="detail_sub_icon">
                                             <img src={demand_ico_2} alt="类型" />
                                         </span>
-                                        <span className="detial_sub_title">技术类型: </span>
-                                        <span className="detial_sub_text">{getAchievementCategory(item.category)}</span>
+                                        <span className="detail_sub_title">技术类型: </span>
+                                        <span className="detail_sub_text">{getAchievementCategory(item.category)}</span>
                                     </div>
-                                    <div className="detial_sub">
-                                        <span className="detial_sub_icon">
+                                    <div className="detail_sub">
+                                        <span className="detail_sub_icon">
                                             <img src={demand_ico_1} alt="行业" />
                                         </span>
-                                        <span className="detial_sub_title">行业分类: </span>
-                                        <span className="detial_sub_text">{getIndustryCategory(item.fieldA, item.fieldB)}</span>
+                                        <span className="detail_sub_title">行业分类: </span>
+                                        <span className="detail_sub_text">{getIndustryCategory(item.fieldA, item.fieldB)}</span>
                                     </div>
-                                    <div className="detial_sub">
-                                        <span className="detial_sub_icon">
+                                    <div className="detail_sub">
+                                        <span className="detail_sub_icon">
                                             <img src={demand_ico_3} alt="标价" />
                                         </span>
-                                        <span className="detial_sub_title">标价: </span>
+                                        <span className="detail_sub_title">标价: </span>
                                         <span className="money_text">{item.transferPrice ? (item.transferPrice + '万元') : '价格面议'}</span>
                                     </div>
-                                    <div className="detial_sub">
-                                        <span className="detial_sub_icon">
+                                    <div className="detail_sub">
+                                        <span className="detail_sub_icon">
                                             <img src={achievement_ico_1} alt="交易方式" />
                                         </span>
-                                        <span className="detial_sub_title">交易方式: </span>
+                                        <span className="detail_sub_title">交易方式: </span>
                                         <span className="money_text">{getTransferMode(item.transferMode)}</span>
                                     </div>
-                                    <div className="detial_sub">
-                                        <span className="detial_sub_icon">
+                                    <div className="detail_sub">
+                                        <span className="detail_sub_icon">
                                             <img src={achievement_ico_2} alt="成熟度" />
                                         </span>
-                                        <span className="detial_sub_title">技术成熟度: </span>
-                                        <span className="detial_sub_score" >
+                                        <span className="detail_sub_title">技术成熟度: </span>
+                                        <span className="detail_sub_score" >
                                             <span style={{ width: (item.maturity ? Number(item.maturity) * 20 : 0) + '%' }}>
                                                 <img src={score_ioc} alt={getMaturity(item.maturity)} />
                                             </span>

+ 0 - 1
js/component/portal/search/achievementDesc.jsx

@@ -106,7 +106,6 @@ const AchievementDetail = React.createClass({
                 this.setState({
                     dataSource: theArr
                 });
-                console.log(this.state.logsOrderStatus)
             }.bind(this),
         }).always(function () {
             this.setState({

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

@@ -253,7 +253,7 @@ const Content = React.createClass({
                                 return <li key={item.id} onClick={() => { this.tableRowClick(item) }}>
                                     <div className="interest_list_title">
                                         <img src={demand_sup} alt="" />
-                                        <span>{item.name}</span>
+                                        <p title={item.name}>{item.name}</p>
                                     </div>
                                     <div className="interest_list_name" style={{ paddingLeft: '20px' }}>
                                         <p>{item.employerName}</p>
@@ -262,40 +262,40 @@ const Content = React.createClass({
                                             <img src={item.level ? certify : uncertify} alt="" />
                                         </div>
                                     </div>
-                                    <div className="detial_sub">
-                                        <span className="detial_sub_icon">
+                                    <div className="detail_sub">
+                                        <span className="detail_sub_icon">
                                             <img src={demand_ico_5} alt="需求" />
                                         </span>
-                                        <span className="detial_sub_title">关键词: </span>
-                                        <span className="detial_sub_text">{item.keyword}</span>
+                                        <span className="detail_sub_title">关键词: </span>
+                                        <span className="detail_sub_text">{item.keyword}</span>
                                     </div>
-                                    <div className="detial_sub">
-                                        <span className="detial_sub_icon">
+                                    <div className="detail_sub">
+                                        <span className="detail_sub_icon">
                                             <img src={demand_ico_5} alt="需求" />
                                         </span>
-                                        <span className="detial_sub_title">需求描述: </span>
-                                        <span className="detial_sub_text">{item.problemDes}</span>
+                                        <span className="detail_sub_title">需求描述: </span>
+                                        <span title={item.problemDes} className="detail_sub_demandDes">{item.problemDes}</span>
                                     </div>
-                                    <div className="detial_sub">
-                                        <span className="detial_sub_icon">
+                                    <div className="detail_sub">
+                                        <span className="detail_sub_icon">
                                             <img src={demand_ico_3} alt="预算" />
                                         </span>
-                                        <span className="detial_sub_title">预算: </span>
+                                        <span className="detail_sub_title">预算: </span>
                                         <span className="money_text">{item.budgetCost ? item.budgetCost + ' 万元' : '价格面议'}</span>
                                     </div>
-                                    <div className="detial_sub">
-                                        <span className="detial_sub_icon">
+                                    <div className="detail_sub">
+                                        <span className="detail_sub_icon">
                                             <img src={demand_ico_2} alt="类型" />
                                         </span>
-                                        <span className="detial_sub_title">类型: </span>
-                                        <span className="detial_sub_text">{getDemandType(item.demandType)}</span>
+                                        <span className="detail_sub_title">类型: </span>
+                                        <span className="detail_sub_text">{getDemandType(item.demandType)}</span>
                                     </div>
-                                    <div className="detial_sub">
-                                        <span className="detial_sub_icon">
+                                    <div className="detail_sub">
+                                        <span className="detail_sub_icon">
                                             <img src={demand_ico_1} alt="行业" />
                                         </span>
-                                        <span className="detial_sub_title">行业: </span>
-                                        <span className="detial_sub_text">{getIndustryCategory(item.industryCategoryA, item.industryCategoryB)}</span>
+                                        <span className="detail_sub_title">行业: </span>
+                                        <span className="detail_sub_text">{getIndustryCategory(item.industryCategoryA, item.industryCategoryB)}</span>
                                     </div>
                                 </li>
                             })}

+ 9 - 7
js/component/portal/top.jsx

@@ -85,8 +85,9 @@ const LoginTop = React.createClass({
                                 </li>
                                 <li>
                                     <a href={globalConfig.context + '/portal/activity/activityIndex.html'}>活动圈</a>
-                                    <ul className="secondary_navigation_nav" style={{ 'width': (1 * 75) + 'px', left: '-' + (1 * 75 / 2 - 74.25 / 2) + 'px' }}>
-                                        <li><a href={globalConfig.context + '/portal/activity/details.html'}>活动详情</a></li>
+                                    <ul className="secondary_navigation_nav" style={{ 'width': (2 * 75) + 'px', left: '-' + (2 * 75 / 2 - 74.25 / 2) + 'px' }}>
+                                        <li><a href={globalConfig.context + '/portal/activity/activityList.html?type=0'}>在线直播</a></li>
+                                        <li><a href={globalConfig.context + '/portal/activity/activityList.html?type=1'}>线下现场</a></li>
                                     </ul>
                                 </li >
                                 <li>
@@ -108,17 +109,18 @@ const LoginTop = React.createClass({
                                 <li>
                                     <a href={globalConfig.context + '/portal/service/serviceIndex.html'}>服务汇</a>
                                     <ul className="secondary_navigation_nav" style={{ 'width': (3 * 75) + 'px', left: '-' + (3 * 75 / 2 - 74.25 / 2) + 'px' }}>
-                                        <li ><a href={globalConfig.context + '/portal/highTech/authentication.html'}>高企培育</a></li>
+                                        <li ><a href={globalConfig.context + '/portal/highTech/authentication.html'}>高企认定</a></li>
                                         <li ><a href={globalConfig.context + '/portal/ipr/service.html'}>知识产权</a></li >
                                         <li ><a href={globalConfig.context + '/portal/evaluation/index.html'}>技术评估</a></li>
                                     </ul>
                                 </li>
                                 <li>
                                     <a href={globalConfig.context + '/portal/news/newsIndex.html'}>策源地</a>
-                                    <ul className="secondary_navigation_nav" style={{ 'width': (3 * 75) + 'px', left: '-' + (3 * 75 / 2 - 74.25 / 2) + 'px' }}>
-                                        <li><a href={globalConfig.context + '/portal/news/newsIndex.html'}>新闻快讯</a></li>
-                                        <li><a href={globalConfig.context + '/portal/news/newsIndex.html'}>科技政策</a></li>
-                                        <li><a href={globalConfig.context + '/portal/news/newsIndex.html'}>政策解读</a></li>
+                                    <ul className="secondary_navigation_nav" style={{ 'width': (4 * 75) + 'px', left: '-' + (4 * 75 / 2 - 74.25 / 2) + 'px' }}>
+                                        <li><a href={globalConfig.context + '/portal/news/newsDetails.html?type=1'}>新闻快讯</a></li>
+                                        <li><a href={globalConfig.context + '/portal/news/newsDetails.html?type=3'}>技淘新闻</a></li>
+                                        <li><a href={globalConfig.context + '/portal/news/newsDetails.html?type=4'}>科技政策</a></li>
+                                        <li><a href={globalConfig.context + '/portal/news/newsDetails.html?type=2'}>政府往来</a></li>
                                     </ul>
                                 </li>
                                 <li>

+ 5 - 7
js/component/subscriberDetail/detail.less

@@ -78,14 +78,12 @@
             height: 120px;
             width: 120px;
             margin: 0 auto;
-            padding-top: 120px;
-            position: relative;
+            line-height: 120px;
+            text-align: center;
             img {
-                position: absolute;
-                top: 0;
-                left: 0;
-                height: 120px;
-                width: auto;
+                max-width: 120px;
+                max-height: 120px;
+                vertical-align: middle;
             }
         }
         .interest {

+ 1 - 1
package.json

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

+ 24 - 24
webpack.config.js

@@ -191,30 +191,30 @@ module.exports = (function () {
         }),
 
         //portal 门户
-        new HtmlWebpackPlugin({
-            title: '主页-需求搜索',
-            filename: 'portal/search/demand.html',
-            template: './template/template.html',
-            chunks: ['portal/search/demand', 'vendors']
-        }),
-        new HtmlWebpackPlugin({
-            title: '主页-科技成果搜索',
-            filename: 'portal/search/achievement.html',
-            template: './template/template.html',
-            chunks: ['portal/search/achievement', 'vendors']
-        }),
-        new HtmlWebpackPlugin({
-            title: '主页-行家搜索',
-            filename: 'portal/search/subscriberUser.html',
-            template: './template/template.html',
-            chunks: ['portal/search/subscriberUser', 'vendors']
-        }),
-        new HtmlWebpackPlugin({
-            title: '主页-伙伴搜索',
-            filename: 'portal/search/subscriberOrg.html',
-            template: './template/template.html',
-            chunks: ['portal/search/subscriberOrg', 'vendors']
-        })
+        // new HtmlWebpackPlugin({
+        //     title: '主页-需求搜索',
+        //     filename: 'portal/search/demand.html',
+        //     template: './template/template.html',
+        //     chunks: ['portal/search/demand', 'vendors']
+        // }),
+        // new HtmlWebpackPlugin({
+        //     title: '主页-科技成果搜索',
+        //     filename: 'portal/search/achievement.html',
+        //     template: './template/template.html',
+        //     chunks: ['portal/search/achievement', 'vendors']
+        // }),
+        // new HtmlWebpackPlugin({
+        //     title: '主页-行家搜索',
+        //     filename: 'portal/search/subscriberUser.html',
+        //     template: './template/template.html',
+        //     chunks: ['portal/search/subscriberUser', 'vendors']
+        // }),
+        // new HtmlWebpackPlugin({
+        //     title: '主页-伙伴搜索',
+        //     filename: 'portal/search/subscriberOrg.html',
+        //     template: './template/template.html',
+        //     chunks: ['portal/search/subscriberOrg', 'vendors']
+        // })
     ];
     if (!isDev) {
         //这个使用uglifyJs压缩你的js代码

+ 16 - 16
webpack/entry.config.js

@@ -141,21 +141,21 @@ module.exports = {
       './js/admin/servicesManage/technology.js'
     ],
     //portal  门户
-    'portal/search/demand': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
-      'webpack/hot/only-dev-server',
-      './js/portal/search/demand.js'
-    ],
-    'portal/search/achievement': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
-      'webpack/hot/only-dev-server',
-      './js/portal/search/achievement.js'
-    ],
-    'portal/search/subscriberUser': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
-      'webpack/hot/only-dev-server',
-      './js/portal/search/subscriberUser.js'
-    ],
-    'portal/search/subscriberOrg': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
-      'webpack/hot/only-dev-server',
-      './js/portal/search/subscriberOrg.js'
-    ]
+    // 'portal/search/demand': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
+    //   'webpack/hot/only-dev-server',
+    //   './js/portal/search/demand.js'
+    // ],
+    // 'portal/search/achievement': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
+    //   'webpack/hot/only-dev-server',
+    //   './js/portal/search/achievement.js'
+    // ],
+    // 'portal/search/subscriberUser': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
+    //   'webpack/hot/only-dev-server',
+    //   './js/portal/search/subscriberUser.js'
+    // ],
+    // 'portal/search/subscriberOrg': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
+    //   'webpack/hot/only-dev-server',
+    //   './js/portal/search/subscriberOrg.js'
+    // ]
   }
 }