Browse Source

update 管理端合同页面完成,四大功能页面增加合同搜索下拉框并屏蔽删除和新增

yee 7 years ago
parent
commit
3be47e4675

+ 1 - 1
js/component/DicTechFieldList.js

@@ -638,7 +638,7 @@ module.exports = {
         }]
     }, {
         value: 6,
-        label: "生物与新医药",
+        label: "新能源与节能",
         children: [{
             value: 206,
             label: "可再生清洁能源",

+ 43 - 14
js/component/account/services/activityCostList.jsx

@@ -12,6 +12,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
         return {
             loading: false,
             activityNumberOption: [],
+            activityNumberObj: []
         };
     },
     allCostCount() {
@@ -37,7 +38,8 @@ const ActivityDescFrom = Form.create()(React.createClass({
             nextProps.activityNumberList.map(function (item) {
                 _me.state.activityNumberOption.push(
                     <Select.Option value={item.aid} key={item.uid}>{item.activityNumber}</Select.Option>
-                )
+                );
+                _me.state.activityNumberObj[item.aid] = item.activityNumber;
             });
             this.state.fileList = [];
         };
@@ -54,9 +56,9 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     url: globalConfig.context + "/api/user/cognizance/activityCost",
                     data: {
                         id: this.props.data.id,
-                        aid: this.props.data.aid,
-                        activityNumber: this.state.activityNumber,
-                        year: this.state.year,
+                        aid: values.activityNumber,
+                        activityNumber: this.state.activityNumberObj[values.activityNumber],
+                        year: values.year,
 
                         internalLaborCost: values.internalLaborCost,
                         internalDirectCost: values.internalDirectCost,
@@ -99,15 +101,28 @@ const ActivityDescFrom = Form.create()(React.createClass({
         return (
             <Form onSubmit={this.handleSubmit} className="activityCost-form">
                 <p className="activityCost-title">项目编号</p>
-                {
-                    theData.activityNumber ? <span>{theData.activityNumber}</span> :
-                        <Select placeholder="请选择项目编号" style={{ width: 200 }}
-                            onSelect={(e, n) => { this.state.aid = e; this.state.activityNumber = n.props.children }}>
-                            {this.state.activityNumberOption}
-                        </Select>
-                }
+                {getFieldDecorator('activityNumber', {
+                    rules: [{ required: true, message: '此项为必填项!' }],
+                    initialValue: theData.activityNumber
+                })(
+                    <Select
+                        notFoundContent="无项目可选"
+                        placeholder="请选择项目编号"
+                        style={{ width: 200 }} >
+                        {this.state.activityNumberOption}
+                    </Select>
+                    )}
                 <p className="activityCost-title">费用年份</p>
-                <div><YearSelect defValue={this.state.year} handleyear={(e) => { this.state.year = e; }} /></div>
+                {getFieldDecorator('year', {
+                    rules: [{ required: true, message: '此项为必填项!' }],
+                    initialValue: theData.year
+                })(
+                    <Select
+                        placeholder="请选择年份"
+                        style={{ width: 200 }} >
+                        {this.props.yearOption}
+                    </Select>
+                    )}
                 <p className="activityCost-title">内部研究开发费用(万元)</p>
                 <div className="clearfix activityCost-box">
                     <FormItem className="half-item"
@@ -327,6 +342,7 @@ const ActivityDesc = React.createClass({
                         footer=''
                     >
                         <ActivityDescFrom data={this.props.data}
+                            yearOption={this.state.yearOption}
                             visible={this.state.visible}
                             activityNumberList={this.props.activityNumberList}
                             spinState={this.spinChange}
@@ -386,7 +402,7 @@ const Activity = React.createClass({
                     uid: thisdata.uid,
                     aid: thisdata.aid,
                     activityNumber: thisdata.activityNumber,
-                    year: thisdata.year,
+                    year: thisdata.year ? String(thisdata.year) : undefined,
                     startDate: thisdata.startDate,
                     endDate: thisdata.endDate,
 
@@ -515,8 +531,16 @@ const Activity = React.createClass({
             dataSource: []
         };
     },
+    getYearOption() {
+        let Option = Select.Option, d = new Date(), thisYear = d.getFullYear(), theArr = [];
+        for (let i = thisYear; i >= 1950; i--) {
+            theArr.push(<Option value={i.toString()} key={i.toString()}>{i}</Option>)
+        };
+        this.state.yearOption = theArr;
+    },
     componentWillMount() {
         this.loadData();
+        this.getYearOption();
     },
     tableRowClick(record, index) {
         this.state.RowData = record;
@@ -590,7 +614,11 @@ const Activity = React.createClass({
                     <Input placeholder="研发活动编号" value={this.state.activityNumber}
                         onChange={(e) => { this.setState({ activityNumber: e.target.value }); }} />
                     <span>年份:</span>
-                    <YearSelect value={this.state.year} handleyear={(e) => { this.state.year = e; }} />
+                    <Select value={this.state.year}
+                        style={{ width: 100 }}
+                        onChange={(e) => { this.setState({ year: e }); }} >
+                        {this.state.yearOption}
+                    </Select>
                     <Button type="primary" onClick={this.search}>搜索</Button>
                     <Button onClick={this.reset}>重置</Button>
                     <p>
@@ -613,6 +641,7 @@ const Activity = React.createClass({
                 </div>
                 <ActivityDesc data={this.state.RowData}
                     activityNumberList={this.state.activityNumberList}
+                    yearOption={this.state.yearOption}
                     showDesc={this.state.showDesc} closeDesc={this.closeDesc} />
             </div >
         );

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

@@ -197,7 +197,7 @@ const CompanyDetail = Form.create()(React.createClass({
                     render: (text, record, index) => {
                         return <Select value={record.type} onChange={(e) => { record.type = e; this.setState({ legalTableData: this.state.legalTableData }); }}>
                             <Select.Option value="0">中国企业法人</Select.Option>
-                            <Select.Option value="1">外企业法人</Select.Option>
+                            <Select.Option value="1">外企业法人</Select.Option>
                         </Select>
                     }
                 }, {

+ 24 - 11
js/component/account/services/contract/contract.jsx

@@ -40,17 +40,20 @@ const Contract = React.createClass({
                     let thisdata = data.data.list[i];
                     this.state.data.push({
                         key: i,
+                        completeDate: thisdata.completeDate,
+                        completeDateFormattedDate: thisdata.completeDateFormattedDate,
+                        contacts: thisdata.contacts,
+                        depict: thisdata.depict,
+                        founder: thisdata.founder,
                         id: thisdata.id,
-                        uid: thisdata.uid,
                         province: thisdata.province,
-                        unitName: thisdata.unitName,
                         serialNumber: thisdata.serialNumber,
-                        type: thisdata.type,
                         signDate: thisdata.signDate,
-                        founder: thisdata.founder,
-                        describe: thisdata.describe,
+                        signDateFormattedDate: thisdata.signDateFormattedDate,
                         status: thisdata.status,
-                        signDateFormattedDate: thisdata.signDateFormattedDate
+                        type: thisdata.type,
+                        uid: thisdata.uid,
+                        unitName: thisdata.unitName,
                     });
                 };
                 this.state.pagination.defaultCurrent = data.data.pageNo;
@@ -195,7 +198,7 @@ const Contract = React.createClass({
                     dataIndex: 'unitName',
                     key: 'unitName',
                 }, {
-                    title: '创建时间',
+                    title: '签订时间',
                     dataIndex: 'signDateFormattedDate',
                     key: 'signDateFormattedDate',
                 }, {
@@ -267,9 +270,15 @@ const Contract = React.createClass({
     },
     tableRowClick(record, index) {
         this.state.RowData = record;
-        this.setState({
-            showDesc: true
-        });
+        if (record.status === '0') {
+            this.setState({
+                showAdd: true
+            });
+        } else {
+            this.setState({
+                showDesc: true
+            });
+        };
     },
     closeDesc(e, s) {
         this.state.showDesc = e;
@@ -283,7 +292,9 @@ const Contract = React.createClass({
         });
     },
     closeAdd(e, s) {
-        this.state.showAdd = e;
+        this.setState({
+            showAdd: e
+        });
         if (s) {
             this.loadData();
         };
@@ -316,7 +327,9 @@ const Contract = React.createClass({
                             companyOption={this.state.companyOption}
                             authorOption={this.state.authorOption}
                             typeOption={this.state.typeOption}
+                            data={this.state.RowData}
                             onClick={this.addClick}
+                            showAdd={this.state.showAdd}
                             closeAdd={this.closeAdd} />
                     </div>
                     <div className="foster-query">

+ 3 - 0
js/component/account/services/contract/contract.less

@@ -152,4 +152,7 @@
         font-size: 16px;
         color: #333;
     }
+    .contract-Table {
+        margin-bottom: 20px;
+    }
 }

+ 114 - 92
js/component/account/services/contract/contractAdd.jsx

@@ -1,27 +1,21 @@
 import React from 'react';
-import { Icon, Modal, Button, Form, message, Input, Spin, Select, Checkbox, InputNumber } from 'antd';
+import { Icon, Modal, Button, Form, message, Input, Spin, Select, Checkbox, InputNumber, DatePicker } from 'antd';
 import './contract.less';
 import { companySearch } from '../../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
 
 const ContractAddFrom = Form.create()(React.createClass({
-    getContactsList(theUid) {
+    getContactsList() {
         $.ajax({
             method: "get",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + "/api/admin/getContacts",
-            data: {
-                uid: theUid || this.state.uid
-            },
+            url: globalConfig.context + "/api/user/cognizance/getContacts",
             success: function (data) {
                 let theOption = [];
-                if (!data.data) {
-                    if (data.error && data.error.length) {
-                        message.warning(data.error[0].message);
-                        return;
-                    };
+                if (data.error.length || !data.data) {
+                    return;
                 };
                 for (let item in data.data) {
                     let theData = data.data[item];
@@ -44,6 +38,39 @@ const ContractAddFrom = Form.create()(React.createClass({
             visible: "visible"
         };
     },
+    loadData(id) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            cache: false,
+            url: globalConfig.context + "/api/admin/contract/detail",
+            data: {
+                id: id || this.props.data.id
+            }
+        }).done((data) => {
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+            } else {
+                this.setState({
+                    data: data.data,
+                    patentCheck: data.data.patentNum ? true : false,
+                    copyrightCheck: data.data.copyrightNum ? true : false,
+                    highTechCheck: data.data.cognizanceYear ? true : false,
+                    techProjectCheck: data.data.techProjectNum ? true : false,
+                });
+            };
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     componentWillMount() {
         let d = new Date(), _me = this, theArr = [];
         d = d.getFullYear() - 1;
@@ -53,23 +80,35 @@ const ContractAddFrom = Form.create()(React.createClass({
             )
         };
         this.state.yearOption = theArr;
-    },
-    componentWillReceiveProps(nextProps) {
-        if (!this.props.visible && nextProps.visible) {
+        if (this.props.data.id) {
+            this.getContactsList();
+            this.loadData(this.props.data.id);
+        } else {
+            this.state.data = {};
             this.state.patentCheck = false;
             this.state.copyrightCheck = false;
             this.state.highTechCheck = false;
             this.state.techProjectCheck = false;
+        };
+    },
+    componentWillReceiveProps(nextProps) {
+        if (!this.props.visible && nextProps.visible) {
+            if (nextProps.data.id) {
+                this.getContactsList();
+                this.loadData(nextProps.data.id);
+            } else {
+                this.state.data = {};
+                this.state.patentCheck = false;
+                this.state.copyrightCheck = false;
+                this.state.highTechCheck = false;
+                this.state.techProjectCheck = false;
+            };
             this.props.form.resetFields();
         };
     },
     handleSave(e) {
         e.preventDefault();
         this.props.form.validateFields((err, values) => {
-            if (!values.uid || values.uid === "") {
-                message.warning('请先选择公司!');
-                return;
-            };
             if (!err) {
                 this.props.spinState(true);
                 $.ajax({
@@ -78,14 +117,15 @@ const ContractAddFrom = Form.create()(React.createClass({
                     crossDomain: false,
                     url: globalConfig.context + "/api/admin/contract/apply",
                     data: {
-                        "uid": values.uid,
+                        "uid": this.state.data.uid || values.uid,
+                        "id": this.state.data.id,
                         "contacts": values.contacts, //联系人
                         "type": values.type, //合同类型
                         "depict": values.depict, // "合同描述",
-                        "patentNum": this.state.patentCheck ? values.patentNum : undefined,
-                        "copyrightNum": this.state.copyrightCheck ? values.copyrightNum : undefined,
+                        "patentNum": this.state.patentCheck ? values.patentNum : 0,
+                        "copyrightNum": this.state.copyrightCheck ? values.copyrightNum : 0,
                         "cognizanceYear": this.state.highTechCheck ? values.cognizanceYear : undefined,
-                        "techProjectNum": this.state.techProjectCheck ? values.techProjectNum : undefined,
+                        "techProjectNum": this.state.techProjectCheck ? values.techProjectNum : 0,
                         "comment": values.comment //"备注"
                     }
                 }).done(function (data) {
@@ -103,49 +143,10 @@ const ContractAddFrom = Form.create()(React.createClass({
             }
         });
     },
-    handleSubmit() {
-        this.props.form.validateFields((err, values) => {
-            if (!values.uid || values.uid === "") {
-                message.warning('请先选择公司!');
-                return;
-            };
-            if (!err) {
-                this.props.spinState(true);
-                $.ajax({
-                    method: "POST",
-                    dataType: "json",
-                    crossDomain: false,
-                    url: globalConfig.context + "/api/admin/contract/submit",
-                    data: {
-                        "uid": values.uid,
-                        "contacts": values.contacts, //联系人
-                        "type": values.type, //合同类型
-                        "depict": values.depict, // "合同描述",
-                        "patentNum": this.state.patentCheck ? values.patentNum : undefined,
-                        "copyrightNum": this.state.copyrightCheck ? values.copyrightNum : undefined,
-                        "cognizanceYear": this.state.highTechCheck ? values.cognizanceYear : undefined,
-                        "techProjectNum": this.state.techProjectCheck ? values.techProjectNum : undefined,
-                        "principals": values.principals,
-                        "comment": values.comment //"备注"
-                    }
-                }).done(function (data) {
-                    if (!data.error.length) {
-                        message.success('提交成功!');
-                        this.props.okClick();
-                        this.props.closeModal();
-                        this.props.form.resetFields();
-                    } else {
-                        message.warning(data.error[0].message);
-                    }
-                }.bind(this)).always(function () {
-                    this.props.spinState(false);
-                }.bind(this));
-            }
-        });
-    },
     render() {
         const FormItem = Form.Item;
         const { getFieldDecorator } = this.props.form;
+        const theData = this.state.data || {};
         const formItemLayout = {
             labelCol: { span: 6 },
             wrapperCol: { span: 14 },
@@ -157,49 +158,45 @@ const ContractAddFrom = Form.create()(React.createClass({
                     <FormItem className="half-item"
                         {...formItemLayout}
                         label="公司名称" >
-                        {getFieldDecorator('uid')(
-                            <Select
-                                placeholder="请选择公司"
-                                notFoundContent="未找到公司"
-                                style={{ width: 260 }}
-                                showSearch
-                                filterOption={companySearch}
-                                onSelect={(e, n) => { this.getContactsList(e); }}>
-                                {this.props.companyOption}
-                            </Select>
-                        )}
+                        <span>{theData.unitName}</span>
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
                         label="联系人" >
-                        {getFieldDecorator('contacts')(
+                        {getFieldDecorator('contacts', {
+                            initialValue: theData.contacts
+                        })(
                             <Select placeholder="请选择联系人"
                                 style={{ width: 260 }}
                                 notFoundContent="未获取到联系人列表">
                                 {this.state.contactsOption}
                             </Select>
-                        )}
+                            )}
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
                         label="合同类型" >
-                        {getFieldDecorator('type')(
+                        {getFieldDecorator('type', {
+                            initialValue: theData.type
+                        })(
                             <Select placeholder="请选择合同类型"
                                 style={{ width: 260 }}>
                                 {this.props.typeOption}
                             </Select>
-                        )}
+                            )}
                     </FormItem>
                 </div>
                 <FormItem
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 19 }}
                     label="合同描述" >
-                    {getFieldDecorator('depict')(
+                    {getFieldDecorator('depict', {
+                        initialValue: theData.depict
+                    })(
                         <Input type="textarea"
                             placeholder="多行输入"
                             rows={4} />
-                    )}
+                        )}
                 </FormItem>
                 <div className="clearfix">
                     <span style={{ float: "left", lineHeight: '32px', marginLeft: '50px' }}>
@@ -210,13 +207,15 @@ const ContractAddFrom = Form.create()(React.createClass({
                     <FormItem className="half-item"
                         {...formItemLayout}
                         label={"高企申请"} >
-                        {getFieldDecorator('cognizanceYear')(
+                        {getFieldDecorator('cognizanceYear', {
+                            initialValue: theData.cognizanceYear || undefined
+                        })(
                             <Select placeholder="请选择年份"
                                 style={{ width: 120 }}
                                 onSelect={(e, n) => { this.setState({ year: e }); }}>
                                 {this.state.yearOption}
                             </Select>
-                        )}
+                            )}
                     </FormItem>
                 </div>
                 <div className="clearfix">
@@ -228,9 +227,11 @@ const ContractAddFrom = Form.create()(React.createClass({
                     <FormItem className="half-item"
                         {...formItemLayout}
                         label={"专利申请"} >
-                        {getFieldDecorator('patentNum')(
+                        {getFieldDecorator('patentNum', {
+                            initialValue: theData.patentNum
+                        })(
                             <InputNumber />
-                        )}
+                            )}
                     </FormItem>
                 </div>
                 <div className="clearfix">
@@ -242,9 +243,11 @@ const ContractAddFrom = Form.create()(React.createClass({
                     <FormItem className="half-item"
                         {...formItemLayout}
                         label={"软著申请"} >
-                        {getFieldDecorator('copyrightNum')(
+                        {getFieldDecorator('copyrightNum', {
+                            initialValue: theData.copyrightNum
+                        })(
                             <InputNumber />
-                        )}
+                            )}
                     </FormItem>
                 </div>
                 <div className="clearfix">
@@ -256,9 +259,11 @@ const ContractAddFrom = Form.create()(React.createClass({
                     <FormItem className="half-item"
                         {...formItemLayout}
                         label={"科技项目申请"} >
-                        {getFieldDecorator('techProjectNum')(
+                        {getFieldDecorator('techProjectNum', {
+                            initialValue: theData.techProjectNum
+                        })(
                             <InputNumber />
-                        )}
+                            )}
                     </FormItem>
                 </div>
                 <div className="clearfix">
@@ -277,20 +282,29 @@ const ContractAddFrom = Form.create()(React.createClass({
                             </Select>
                         )}
                     </FormItem>
+                    <FormItem className="half-item"
+                        {...formItemLayout}
+                        label="处理时间"
+                    >
+                        {getFieldDecorator('recordTime')(
+                            <DatePicker />
+                        )}
+                    </FormItem>
                 </div>
                 <FormItem
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 19 }}
                     label="备注" >
-                    {getFieldDecorator('comment')(
+                    {getFieldDecorator('comment', {
+                        initialValue: theData.comment
+                    })(
                         <Input type="textarea"
                             placeholder="多行输入"
                             rows={2} />
-                    )}
+                        )}
                 </FormItem>
                 <FormItem style={{ paddingLeft: '40px' }}>
-                    <Button className="set-submit" type="primary" htmlType="submit">保存草稿</Button>
-                    <Button onClick={this.handleSubmit} type="ghost" style={{ marginLeft: '20px' }}>提交</Button>
+                    <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
                     <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
                 </FormItem>
             </Form >
@@ -310,6 +324,7 @@ const ContractAdd = React.createClass({
     showModal() {
         this.setState({
             visible: true,
+            data: {}
         });
     },
     handleCancel(e) {
@@ -318,6 +333,12 @@ const ContractAdd = React.createClass({
         });
         this.props.closeAdd(false);
     },
+    componentWillReceiveProps(nextProps) {
+        if (nextProps.showAdd && nextProps.data) {
+            this.state.data = nextProps.data;
+        };
+        this.state.visible = nextProps.showAdd;
+    },
     spinChange(e) {
         this.setState({
             loading: e
@@ -328,7 +349,7 @@ const ContractAdd = React.createClass({
             <div className="patent-addNew">
                 <Button className="patent-addNew" type="primary" onClick={this.showModal}>申请合同<Icon type="plus" /></Button>
                 <Spin spinning={this.state.loading} className='spin-box'>
-                    <Modal title="申请新合同"
+                    <Modal title="合同详情"
                         visible={this.state.visible}
                         onCancel={this.handleCancel}
                         width='800px'
@@ -338,6 +359,7 @@ const ContractAdd = React.createClass({
                             spinState={this.spinChange}
                             closeModal={this.handleCancel}
                             visible={this.state.visible}
+                            data={this.state.data}
                             okClick={() => { this.props.closeAdd(false, true) }}
                             companyOption={this.props.companyOption}
                             authorOption={this.props.authorOption}

+ 85 - 190
js/component/account/services/contract/contractDetail.jsx

@@ -176,31 +176,8 @@ const ContractDetailForm = Form.create()(React.createClass({
     },
     componentWillMount() {
         this.loadData();
-        this.getContactsList();
         this.loadColumnsData();
     },
-    getContactsList(uid) {
-        $.ajax({
-            method: "get",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + "/api/admin/getContacts",
-            data: {
-                uid: uid || this.props.data.uid
-            },
-            success: function (data) {
-                if (!data.data) {
-                    if (data.error && data.error.length) {
-                        message.warning(data.error[0].message);
-                        return;
-                    };
-                };
-                this.setState({
-                    contactsList: data.data
-                });
-            }.bind(this),
-        });
-    },
     loadData(id) {
         this.setState({
             loading: true
@@ -393,74 +370,25 @@ const ContractDetailForm = Form.create()(React.createClass({
             });
         }.bind(this));
     },
-    foundHighTech() {
-        
-    },
-    foundPatent() {
-
-    },
-    foundCopyright() {
-
-    },
-    foundTechProject() {
-
-    },
     componentWillReceiveProps(nextProps) {
         if (!this.props.visible && nextProps.visible) {
             this.loadData(nextProps.data.id);
             this.loadColumnsData(nextProps.data.id);
-            this.getContactsList(nextProps.data.uid);
         };
     },
-    handleSubmit(e) {
-        e.preventDefault();
-        this.props.form.validateFields((err, values) => {
-            if (values.status || values.principal || values.recordTime || values.comment) {
-                if (!values.status || !values.principal || !values.recordTime) {
-                    message.warning("请填写完整的状态流转信息!");
-                    return;
-                };
-            };
-            if (!err) {
-                this.props.spinState(true);
-                $.ajax({
-                    method: "POST",
-                    dataType: "json",
-                    crossDomain: false,
-                    url: globalConfig.context + "/api/admin/contract/circulation",
-                    data: {
-                        "cid": this.props.data.id,
-                        "comment": values.comment,
-                        "status": values.status,
-                        "principals": values.principals //流转分发人
-                    }
-                }).done(function (data) {
-                    if (!data.error.length) {
-                        message.success('保存成功!');
-                        this.props.clickOk();
-                        this.props.form.resetFields();
-                        this.props.spinState(false);
-                    } else {
-                        message.warning(data.error[0].message);
-                        this.props.spinState(false);
-                    }
-                }.bind(this));
-            }
-        });
-    },
     tableRowClick(record, index) {
         switch (record.tableType) {
             case 'patent':
-                window.open(globalConfig.context + "/admin/servicesManage/patent.html?contractId=" + record.contractId + "#comprehensive");
+                window.open(globalConfig.context + "/user/account/services.html?contractId=" + record.contractId + "#patent");
                 break;
             case 'copyright':
-                window.open(globalConfig.context + "/admin/servicesManage/copyright.html?contractId=" + record.contractId + "#copyright");
+                window.open(globalConfig.context + "/user/account/services.html?contractId=" + record.contractId + "#copyright");
                 break;
             case 'cognizance':
-                window.open(globalConfig.context + "/admin/servicesManage/highTech.html?contractId=" + record.contractId + "#highTechApply");
+                window.open(globalConfig.context + "/user/account/services.html?contractId=" + record.contractId + "#cognizance");
                 break;
             case 'techProject':
-                window.open(globalConfig.context + "/admin/servicesManage/technology.html?contractId=" + record.contractId + "#applyManage");
+                window.open(globalConfig.context + "/user/account/services.html?contractId=" + record.contractId + "#technology");
                 break;
         };
     },
@@ -474,10 +402,17 @@ const ContractDetailForm = Form.create()(React.createClass({
         };
         const _me = this;
         return (
-            <Form onSubmit={this.handleSubmit} id="CopyrightDesc-form">
+            <Form id="CopyrightDesc-form">
                 <div className="clearfix">
                     <FormItem className="half-item"
                         {...formItemLayout}
+                        label="合同编号" >
+                        {getFieldDecorator('serialNumber')(
+                            <span>{theData.serialNumber}</span>
+                        )}
+                    </FormItem>
+                    <FormItem className="half-item"
+                        {...formItemLayout}
                         label="公司名称" >
                         {getFieldDecorator('unitName')(
                             <span>{theData.unitName}</span>
@@ -508,119 +443,79 @@ const ContractDetailForm = Form.create()(React.createClass({
                     pagination={false}
                     dataSource={this.state.stateTable}
                     columns={this.state.stateColumns} />
-                <div className="clearfix" style={{ padding: '0 4px', paddingTop: '20px', marginBottom: '10px', background: '#eee' }}>
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="状态流转"
-                    >
-                        {getFieldDecorator('status')(
-                            <Select
-                                style={{ width: 200 }}
-                                placeholder="选择一个状态">
-                                {this.props.statusOption}
-                            </Select>
-                        )}
-                    </FormItem>
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="处理时间"
-                    >
-                        {getFieldDecorator('recordTime')(
-                            <DatePicker />
-                        )}
-                    </FormItem>
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="负责人"
-                    >
-                        {getFieldDecorator('principals')(
-                            <Select
-                                showSearch
-                                style={{ width: 200 }}
-                                filterOption={companySearch}
-                                placeholder="选择负责人">
-                                {this.props.authorOption}
-                            </Select>
-                        )}
-                    </FormItem>
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="备注">
-                        {getFieldDecorator('comment')(
-                            <Input />
-                        )}
-                    </FormItem>
-                </div>
-                <div className="clearfix">
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="高企申请">
-                        {getFieldDecorator('cognizanceYear', {
-                            initialValue: theData.cognizanceYear
-                        })(
-                            <span>{theData.cognizanceYear} 年</span>
-                            )}
-                        {theData.cognizanceStatus == 1 ? <Button onClick={this.foundHighTech}>创建申请</Button> : <span></span>}
-                    </FormItem>
-                </div>
-                <Table size="small" scroll={{ y: 500 }}
-                    columns={this.state.highTechColumns}
-                    dataSource={this.state.highTechTableData}
-                    pagination={false}
-                    onRowClick={this.tableRowClick} />
-                <div className="clearfix">
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="专利申请">
-                        {getFieldDecorator('patentNum', {
-                            initialValue: theData.patentNum
-                        })(
-                            <span>{theData.patentNum} 条</span>
-                            )}
-                        {theData.patentStatus == 1 ? <Button onClick={this.foundPatent}>创建申请</Button> : <span></span>}
-                    </FormItem>
-                </div>
-                <Table size="small" scroll={{ y: 500 }}
-                    columns={this.state.patentColumns}
-                    dataSource={this.state.patentTableData}
-                    pagination={false}
-                    onRowClick={this.tableRowClick} />
-                <div className="clearfix">
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="软著申请">
-                        {getFieldDecorator('copyrightNum', {
-                            initialValue: theData.copyrightNum
-                        })(
-                            <span>{theData.copyrightNum} 条</span>
-                            )}
-                        {theData.copyrightStatus == 1 ? <Button onClick={this.foundCopyright}>创建申请</Button> : <span></span>}
-                    </FormItem>
-                </div>
-                <Table size="small" scroll={{ y: 500 }}
-                    columns={this.state.copyrightColumns}
-                    dataSource={this.state.copyrightTableData}
-                    pagination={false}
-                    onRowClick={this.tableRowClick} />
-                <div className="clearfix">
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label=" 科技项目申请">
-                        {getFieldDecorator('techProjectNum', {
-                            initialValue: theData.techProjectNum
-                        })(
-                            <span>{theData.techProjectNum} 条</span>
-                            )}
-                        {theData.techProjectStatus == 1 ? <Button onClick={this.foundTechProject}>创建申请</Button> : <span></span>}
-                    </FormItem>
-                </div>
-                <Table size="small" scroll={{ y: 500 }}
-                    columns={this.state.techProjectColumns}
-                    dataSource={this.state.techProjectTableData}
-                    pagination={false}
-                    onRowClick={this.tableRowClick} />
+                {theData.cognizanceYear ? <div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="高企申请">
+                            {getFieldDecorator('cognizanceYear', {
+                                initialValue: theData.cognizanceYear
+                            })(
+                                <span>{theData.cognizanceYear} 年</span>
+                                )}
+                        </FormItem>
+                    </div>
+                    <Table className="contract-Table" size="small" scroll={{ y: 240 }}
+                        columns={this.state.highTechColumns}
+                        dataSource={this.state.highTechTableData}
+                        pagination={false}
+                        onRowClick={this.tableRowClick} />
+                </div> : <div></div>}
+                {theData.patentNum ? <div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="专利申请">
+                            {getFieldDecorator('patentNum', {
+                                initialValue: theData.patentNum
+                            })(
+                                <span>{theData.patentNum} 条</span>
+                                )}
+                        </FormItem>
+                    </div>
+                    <Table className="contract-Table" size="small" scroll={{ y: 240 }}
+                        columns={this.state.patentColumns}
+                        dataSource={this.state.patentTableData}
+                        pagination={false}
+                        onRowClick={this.tableRowClick} />
+                </div> : <div></div>}
+                {theData.copyrightNum ? <div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="软著申请">
+                            {getFieldDecorator('copyrightNum', {
+                                initialValue: theData.copyrightNum
+                            })(
+                                <span>{theData.copyrightNum} 条</span>
+                                )}
+                        </FormItem>
+                    </div>
+                    <Table className="contract-Table" size="small" scroll={{ y: 240 }}
+                        columns={this.state.copyrightColumns}
+                        dataSource={this.state.copyrightTableData}
+                        pagination={false}
+                        onRowClick={this.tableRowClick} />
+                </div> : <div></div>}
+                {theData.techProjectNum ? <div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label=" 科技项目申请">
+                            {getFieldDecorator('techProjectNum', {
+                                initialValue: theData.techProjectNum
+                            })(
+                                <span>{theData.techProjectNum} 条</span>
+                                )}
+                        </FormItem>
+                    </div>
+                    <Table className="contract-Table" size="small" scroll={{ y: 240 }}
+                        columns={this.state.techProjectColumns}
+                        dataSource={this.state.techProjectTableData}
+                        pagination={false}
+                        onRowClick={this.tableRowClick} />
+                </div> : <div></div>}
                 <FormItem style={{ marginTop: '20px' }}>
-                    <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
                     <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
                 </FormItem>
             </Form>
@@ -664,7 +559,7 @@ const ContractDetail = React.createClass({
         return (
             <div className="patent-addNew">
                 <Spin spinning={this.state.loading} className='spin-box'>
-                    <Modal title="软著详情" visible={this.state.visible}
+                    <Modal title="合同详情" visible={this.state.visible}
                         onOk={this.handleOk} onCancel={this.handleCancel}
                         width='1000px'
                         footer=''

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

@@ -198,7 +198,7 @@ const Contract = React.createClass({
                     dataIndex: 'unitName',
                     key: 'unitName',
                 }, {
-                    title: '创建时间',
+                    title: '签订时间',
                     dataIndex: 'signDateFormattedDate',
                     key: 'signDateFormattedDate',
                 }, {
@@ -228,6 +228,38 @@ const Contract = React.createClass({
             dataSource: []
         };
     },
+    getContractList() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/contract/serialNumber",
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                    return;
+                };
+                let theArr = [];
+                for (var item in data.data) {
+                    theArr.push(
+                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                    );
+                };
+                this.setState({
+                    contractListOption: theArr
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     componentWillMount() {
         let _me = this, pArr = [], tArr = [], sArr = [];
         provinceArr.map(function (item) {
@@ -254,6 +286,7 @@ const Contract = React.createClass({
         this.getAuthorList();
         this.getCompanyList();
         this.getStateList();
+        this.getContractList();
         // if (window.location.search) {
         //     let theArr = getSearchUrl(window.location.search);
         //     if (theArr.length > 1) {
@@ -349,6 +382,14 @@ const Contract = React.createClass({
                             onChange={(e) => { this.setState({ unitId: e }) }}>
                             {this.state.companyOption}
                         </Select>
+                        <Select placeholder="选择合同编号"
+                            style={{ width: 120 }}
+                            value={this.state.contractId}
+                            showSearch
+                            filterOption={companySearch}
+                            onChange={(e) => { this.setState({ contractId: e }) }}>
+                            {this.state.contractListOption}
+                        </Select>
                         <Select placeholder="选择一个合同类型"
                             style={{ width: 200 }}
                             value={this.state.contractType}

+ 80 - 40
js/component/manageCenter/servicesManage/contract/contractAdd.jsx

@@ -44,6 +44,39 @@ const ContractAddFrom = Form.create()(React.createClass({
             visible: "visible"
         };
     },
+    loadData(id) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            cache: false,
+            url: globalConfig.context + "/api/admin/contract/detail",
+            data: {
+                id: id || this.props.data.id
+            }
+        }).done((data) => {
+            if (!data.data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                };
+            } else {
+                this.setState({
+                    data: data.data,
+                    patentCheck: data.data.patentNum ? true : false,
+                    copyrightCheck: data.data.copyrightNum ? true : false,
+                    highTechCheck: data.data.cognizanceYear ? true : false,
+                    techProjectCheck: data.data.techProjectNum ? true : false,
+                });
+            };
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     componentWillMount() {
         let d = new Date(), _me = this, theArr = [];
         d = d.getFullYear() - 1;
@@ -53,31 +86,35 @@ const ContractAddFrom = Form.create()(React.createClass({
             )
         };
         this.state.yearOption = theArr;
-        if (this.props.data) {
+        if (this.props.data.uid && this.props.data.id) {
             this.getContactsList(this.props.data.uid);
-            this.state.data = this.props.data || {};
-        };
-    },
-    componentWillReceiveProps(nextProps) {
-        if (!this.props.visible && nextProps.visible) {
+            this.loadData(this.props.data.id);
+        } else {
+            this.state.data = {};
             this.state.patentCheck = false;
             this.state.copyrightCheck = false;
             this.state.highTechCheck = false;
             this.state.techProjectCheck = false;
-            if (nextProps.data.uid) {
+        };
+    },
+    componentWillReceiveProps(nextProps) {
+        if (!this.props.visible && nextProps.visible) {
+            if (nextProps.data.uid && nextProps.data.id) {
                 this.getContactsList(nextProps.data.uid);
+                this.loadData(nextProps.data.id);
+            } else {
+                this.state.data = {};
+                this.state.patentCheck = false;
+                this.state.copyrightCheck = false;
+                this.state.highTechCheck = false;
+                this.state.techProjectCheck = false;
             };
-            this.state.data = nextProps.data || {};
             this.props.form.resetFields();
         };
     },
     handleSave(e) {
         e.preventDefault();
         this.props.form.validateFields((err, values) => {
-            if (!values.uid || values.uid === "") {
-                message.warning('请先选择公司!');
-                return;
-            };
             if (!err) {
                 this.props.spinState(true);
                 $.ajax({
@@ -86,14 +123,15 @@ const ContractAddFrom = Form.create()(React.createClass({
                     crossDomain: false,
                     url: globalConfig.context + "/api/admin/contract/apply",
                     data: {
-                        "uid": values.uid,
+                        "uid": this.state.data.uid || values.uid,
+                        "id": this.state.data.id,
                         "contacts": values.contacts, //联系人
                         "type": values.type, //合同类型
                         "depict": values.depict, // "合同描述",
-                        "patentNum": this.state.patentCheck ? values.patentNum : undefined,
-                        "copyrightNum": this.state.copyrightCheck ? values.copyrightNum : undefined,
+                        "patentNum": this.state.patentCheck ? values.patentNum : 0,
+                        "copyrightNum": this.state.copyrightCheck ? values.copyrightNum : 0,
                         "cognizanceYear": this.state.highTechCheck ? values.cognizanceYear : undefined,
-                        "techProjectNum": this.state.techProjectCheck ? values.techProjectNum : undefined,
+                        "techProjectNum": this.state.techProjectCheck ? values.techProjectNum : 0,
                         "comment": values.comment //"备注"
                     }
                 }).done(function (data) {
@@ -113,10 +151,6 @@ const ContractAddFrom = Form.create()(React.createClass({
     },
     handleSubmit() {
         this.props.form.validateFields((err, values) => {
-            if (!values.uid || values.uid === "") {
-                message.warning('请先选择公司!');
-                return;
-            };
             if (!err) {
                 this.props.spinState(true);
                 $.ajax({
@@ -125,15 +159,17 @@ const ContractAddFrom = Form.create()(React.createClass({
                     crossDomain: false,
                     url: globalConfig.context + "/api/admin/contract/submit",
                     data: {
-                        "uid": values.uid,
+                        "uid": this.state.data.uid || values.uid,
+                        "id": this.state.data.id,
                         "contacts": values.contacts, //联系人
                         "type": values.type, //合同类型
                         "depict": values.depict, // "合同描述",
-                        "patentNum": this.state.patentCheck ? values.patentNum : undefined,
-                        "copyrightNum": this.state.copyrightCheck ? values.copyrightNum : undefined,
+                        "patentNum": this.state.patentCheck ? values.patentNum : 0,
+                        "copyrightNum": this.state.copyrightCheck ? values.copyrightNum : 0,
                         "cognizanceYear": this.state.highTechCheck ? values.cognizanceYear : undefined,
-                        "techProjectNum": this.state.techProjectCheck ? values.techProjectNum : undefined,
+                        "techProjectNum": this.state.techProjectCheck ? values.techProjectNum : 0,
                         "principals": values.principals,
+                        "signDateFormattedDate": values.recordTime ? values.recordTime.format("YYYY-MM-DD HH:mm:ss") : undefined,
                         "comment": values.comment //"备注"
                     }
                 }).done(function (data) {
@@ -163,23 +199,26 @@ const ContractAddFrom = Form.create()(React.createClass({
         return (
             <Form horizontal onSubmit={this.handleSave} id="CopyrightDesc-form">
                 <div className="clearfix">
-                    <FormItem className="half-item"
+                    {theData.uid ? <FormItem className="half-item"
                         {...formItemLayout}
                         label="公司名称" >
-                        {getFieldDecorator('uid', {
-                            initialValue: theData.uid
-                        })(
-                            theData.uid ? <span>{theData.unitName}</span> : <Select
-                                placeholder="请选择公司"
-                                notFoundContent="未找到公司"
-                                style={{ width: 260 }}
-                                showSearch
-                                filterOption={companySearch}
-                                onSelect={(e, n) => { this.getContactsList(e); }}>
-                                {this.props.companyOption}
-                            </Select>
+                        <span>{theData.unitName}</span>
+                    </FormItem> : <FormItem className="half-item"
+                        {...formItemLayout}
+                        label="公司名称" >
+                            {getFieldDecorator('uid')(
+                                theData.uid ? <span>{theData.unitName}</span> : <Select
+                                    placeholder="请选择公司"
+                                    notFoundContent="未找到公司"
+                                    style={{ width: 260 }}
+                                    showSearch
+                                    filterOption={companySearch}
+                                    onSelect={(e, n) => { this.getContactsList(e); }}>
+                                    {this.props.companyOption}
+                                </Select>
                             )}
-                    </FormItem>
+                        </FormItem>
+                    }
                     <FormItem className="half-item"
                         {...formItemLayout}
                         label="联系人" >
@@ -228,7 +267,7 @@ const ContractAddFrom = Form.create()(React.createClass({
                         {...formItemLayout}
                         label={"高企申请"} >
                         {getFieldDecorator('cognizanceYear', {
-                            initialValue: theData.cognizanceYear
+                            initialValue: theData.cognizanceYear || undefined
                         })(
                             <Select placeholder="请选择年份"
                                 style={{ width: 120 }}
@@ -323,6 +362,7 @@ const ContractAddFrom = Form.create()(React.createClass({
                             rows={2} />
                         )}
                 </FormItem>
+                <p style={{ color: '#ea0862', paddingLeft: '40px', marginBottom: '20px' }}>合同提交以后无法修改,请确认提交内容的正确性!</p>
                 <FormItem style={{ paddingLeft: '40px' }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存草稿</Button>
                     <Button onClick={this.handleSubmit} type="ghost" style={{ marginLeft: '20px' }}>提交</Button>
@@ -370,7 +410,7 @@ const ContractAdd = React.createClass({
             <div className="patent-addNew">
                 <Button className="patent-addNew" type="primary" onClick={this.showModal}>申请合同<Icon type="plus" /></Button>
                 <Spin spinning={this.state.loading} className='spin-box'>
-                    <Modal title="申请新合同"
+                    <Modal title="合同详情"
                         visible={this.state.visible}
                         onCancel={this.handleCancel}
                         width='800px'

+ 141 - 72
js/component/manageCenter/servicesManage/contract/contractDetail.jsx

@@ -394,7 +394,25 @@ const ContractDetailForm = Form.create()(React.createClass({
         }.bind(this));
     },
     foundHighTech() {
-
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/contract/createCognizance",
+            data: {
+                id: this.props.data.id
+            },
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                        return;
+                    };
+                };
+                this.loadData();
+                this.loadColumnsData();
+            }.bind(this),
+        });
     },
     foundPatent() {
         $.ajax({
@@ -418,10 +436,46 @@ const ContractDetailForm = Form.create()(React.createClass({
         });
     },
     foundCopyright() {
-
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/contract/createCopyright",
+            data: {
+                id: this.props.data.id
+            },
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                        return;
+                    };
+                };
+                this.loadData();
+                this.loadColumnsData();
+            }.bind(this),
+        });
     },
     foundTechProject() {
-
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/contract/createTechProject",
+            data: {
+                id: this.props.data.id
+            },
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                        return;
+                    };
+                };
+                this.loadData();
+                this.loadColumnsData();
+            }.bind(this),
+        });
     },
     componentWillReceiveProps(nextProps) {
         if (!this.props.visible && nextProps.visible) {
@@ -496,6 +550,13 @@ const ContractDetailForm = Form.create()(React.createClass({
                 <div className="clearfix">
                     <FormItem className="half-item"
                         {...formItemLayout}
+                        label="合同编号" >
+                        {getFieldDecorator('serialNumber')(
+                            <span>{theData.serialNumber}</span>
+                        )}
+                    </FormItem>
+                    <FormItem className="half-item"
+                        {...formItemLayout}
                         label="公司名称" >
                         {getFieldDecorator('unitName')(
                             <span>{theData.unitName}</span>
@@ -569,74 +630,82 @@ const ContractDetailForm = Form.create()(React.createClass({
                         )}
                     </FormItem>
                 </div>
-                <div className="clearfix">
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="高企申请">
-                        {getFieldDecorator('cognizanceYear', {
-                            initialValue: theData.cognizanceYear
-                        })(
-                            <span>{theData.cognizanceYear} 年</span>
-                            )}
-                    </FormItem>
-                    {theData.cognizanceStatus == 0 ? <Button onClick={this.foundHighTech}>创建申请</Button> : <span></span>}
-                </div>
-                <Table className="contract-Table" size="small" scroll={{ y: 500 }}
-                    columns={this.state.highTechColumns}
-                    dataSource={this.state.highTechTableData}
-                    pagination={false}
-                    onRowClick={this.tableRowClick} />
-                <div className="clearfix">
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="专利申请">
-                        {getFieldDecorator('patentNum', {
-                            initialValue: theData.patentNum
-                        })(
-                            <span>{theData.patentNum} 条</span>
-                            )}
-                    </FormItem>
-                    {theData.patentStatus == 0 ? <Button onClick={this.foundPatent}>创建申请</Button> : <span></span>}
-                </div>
-                <Table className="contract-Table" size="small" scroll={{ y: 500 }}
-                    columns={this.state.patentColumns}
-                    dataSource={this.state.patentTableData}
-                    pagination={false}
-                    onRowClick={this.tableRowClick} />
-                <div className="clearfix">
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="软著申请">
-                        {getFieldDecorator('copyrightNum', {
-                            initialValue: theData.copyrightNum
-                        })(
-                            <span>{theData.copyrightNum} 条</span>
-                            )}
-                    </FormItem>
-                    {theData.copyrightStatus == 0 ? <Button onClick={this.foundCopyright}>创建申请</Button> : <span></span>}
-                </div>
-                <Table className="contract-Table" size="small" scroll={{ y: 500 }}
-                    columns={this.state.copyrightColumns}
-                    dataSource={this.state.copyrightTableData}
-                    pagination={false}
-                    onRowClick={this.tableRowClick} />
-                <div className="clearfix">
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label=" 科技项目申请">
-                        {getFieldDecorator('techProjectNum', {
-                            initialValue: theData.techProjectNum
-                        })(
-                            <span>{theData.techProjectNum} 条</span>
-                            )}
-                    </FormItem>
-                    {theData.techProjectStatus == 0 ? <Button onClick={this.foundTechProject}>创建申请</Button> : <span></span>}
-                </div>
-                <Table className="contract-Table" size="small" scroll={{ y: 500 }}
-                    columns={this.state.techProjectColumns}
-                    dataSource={this.state.techProjectTableData}
-                    pagination={false}
-                    onRowClick={this.tableRowClick} />
+                {theData.cognizanceYear ? <div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="高企申请">
+                            {getFieldDecorator('cognizanceYear', {
+                                initialValue: theData.cognizanceYear
+                            })(
+                                <span>{theData.cognizanceYear} 年</span>
+                                )}
+                        </FormItem>
+                        {theData.cognizanceStatus == 0 ? <Button onClick={this.foundHighTech}>创建申请</Button> : <span></span>}
+                    </div>
+                    <Table className="contract-Table" size="small" scroll={{ y: 240 }}
+                        columns={this.state.highTechColumns}
+                        dataSource={this.state.highTechTableData}
+                        pagination={false}
+                        onRowClick={this.tableRowClick} />
+                </div> : <div></div>}
+                {theData.patentNum ? <div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="专利申请">
+                            {getFieldDecorator('patentNum', {
+                                initialValue: theData.patentNum
+                            })(
+                                <span>{theData.patentNum} 条</span>
+                                )}
+                        </FormItem>
+                        {theData.patentStatus == 0 ? <Button onClick={this.foundPatent}>创建申请</Button> : <span></span>}
+                    </div>
+                    <Table className="contract-Table" size="small" scroll={{ y: 240 }}
+                        columns={this.state.patentColumns}
+                        dataSource={this.state.patentTableData}
+                        pagination={false}
+                        onRowClick={this.tableRowClick} />
+                </div> : <div></div>}
+                {theData.copyrightNum ? <div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label="软著申请">
+                            {getFieldDecorator('copyrightNum', {
+                                initialValue: theData.copyrightNum
+                            })(
+                                <span>{theData.copyrightNum} 条</span>
+                                )}
+                        </FormItem>
+                        {theData.copyrightStatus == 0 ? <Button onClick={this.foundCopyright}>创建申请</Button> : <span></span>}
+                    </div>
+                    <Table className="contract-Table" size="small" scroll={{ y: 240 }}
+                        columns={this.state.copyrightColumns}
+                        dataSource={this.state.copyrightTableData}
+                        pagination={false}
+                        onRowClick={this.tableRowClick} />
+                </div> : <div></div>}
+                {theData.techProjectNum ? <div>
+                    <div className="clearfix">
+                        <FormItem className="half-item"
+                            {...formItemLayout}
+                            label=" 科技项目申请">
+                            {getFieldDecorator('techProjectNum', {
+                                initialValue: theData.techProjectNum
+                            })(
+                                <span>{theData.techProjectNum} 条</span>
+                                )}
+                        </FormItem>
+                        {theData.techProjectStatus == 0 ? <Button onClick={this.foundTechProject}>创建申请</Button> : <span></span>}
+                    </div>
+                    <Table className="contract-Table" size="small" scroll={{ y: 240 }}
+                        columns={this.state.techProjectColumns}
+                        dataSource={this.state.techProjectTableData}
+                        pagination={false}
+                        onRowClick={this.tableRowClick} />
+                </div> : <div></div>}
                 <FormItem style={{ marginTop: '20px' }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
                     <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
@@ -682,7 +751,7 @@ const ContractDetail = React.createClass({
         return (
             <div className="patent-addNew">
                 <Spin spinning={this.state.loading} className='spin-box'>
-                    <Modal title="软著详情" visible={this.state.visible}
+                    <Modal title="合同详情" visible={this.state.visible}
                         onOk={this.handleOk} onCancel={this.handleCancel}
                         width='1000px'
                         footer=''

+ 44 - 4
js/component/manageCenter/servicesManage/copyright/copyright.jsx

@@ -154,7 +154,10 @@ const copyright = React.createClass({
             crossDomain: false,
             url: globalConfig.context + "/api/admin/getUnitNames",
             success: function (data) {
-                if (data.error.length || !data.data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
                     return;
                 };
                 let _me = this;
@@ -321,6 +324,38 @@ const copyright = React.createClass({
             dataSource: []
         };
     },
+    getContractList() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/contract/serialNumber",
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                    return;
+                };
+                let theArr = [];
+                for (var item in data.data) {
+                    theArr.push(
+                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                    );
+                };
+                this.setState({
+                    contractListOption: theArr
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     componentWillMount() {
         let _me = this;
         provinceArr.map(function (item) {
@@ -337,6 +372,7 @@ const copyright = React.createClass({
         this.getSalesmanList();
         this.getCompanyList();
         this.getStateList();
+        this.getContractList();
         if (window.location.search) {
             let theObj = getSearchUrl(window.location.search);
             if (theObj.rid) {
@@ -516,10 +552,14 @@ const copyright = React.createClass({
                             placeholder="请输入软著名称"
                             value={this.state.copyrightName}
                             onChange={(e) => { this.setState({ copyrightName: e.target.value }); }} />
-                        <Input style={{ width: 160 }}
-                            placeholder="请输入合同编号"
+                        <Select placeholder="选择合同编号"
+                            style={{ width: 120 }}
                             value={this.state.contractId}
-                            onChange={(e) => { this.setState({ contractId: e.target.value }); }} />
+                            showSearch
+                            filterOption={companySearch}
+                            onChange={(e) => { this.setState({ contractId: e }) }}>
+                            {this.state.contractListOption}
+                        </Select>
                         <Select style={{ width: 120 }}
                             value={this.state.searchStatus}
                             onChange={(e) => { this.setState({ searchStatus: e }) }}

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

@@ -2,7 +2,6 @@ import React from 'react';
 import { Switch, Icon, Form, Upload, Button, Input, Spin, Table, message, Select, Modal, DatePicker, InputNumber } from 'antd';
 import './activityCostList.less';
 import { beforeUploadFile, newDownloadFile, getProportion, saveProportion, getPreview } from '../../../../tools.js';
-import YearSelect from '../../../../yearSelect.jsx';
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -12,6 +11,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
         return {
             loading: false,
             activityNumberOption: [],
+            activityNumberObj: {}
         };
     },
     componentWillMount() {
@@ -21,7 +21,8 @@ const ActivityDescFrom = Form.create()(React.createClass({
         this.props.activityNumberList.map(function (item) {
             _me.state.activityNumberOption.push(
                 <Select.Option value={item.aid} key={item.uid}>{item.activityNumber}</Select.Option>
-            )
+            );
+            _me.state.activityNumberObj[item.aid] = item.activityNumber;
         });
     },
     allCostCount() {
@@ -56,10 +57,10 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     url: globalConfig.context + "/api/admin/activityCost",
                     data: {
                         id: this.props.data.id,
-                        aid: this.props.data.aid || this.state.aid,
+                        aid: values.activityNumber,
                         uid: this.props.uid,
-                        activityNumber: this.state.activityNumber,
-                        year: this.props.data.year || this.state.year,
+                        activityNumber: this.state.activityNumberObj[values.activityNumber],
+                        year: values.year,
 
                         internalLaborCost: values.internalLaborCost,
                         internalDirectCost: values.internalDirectCost,
@@ -102,21 +103,28 @@ const ActivityDescFrom = Form.create()(React.createClass({
         return (
             <Form onSubmit={this.handleSubmit} className="activityCost-form">
                 <p className="activityCost-title">项目编号</p>
-                {
-                    theData.activityNumber ? <span>{theData.activityNumber}</span> :
-                        <Select
-                            notFoundContent="无项目可选"
-                            placeholder="请选择项目编号"
-                            style={{ width: 200 }}
-                            onSelect={(e, n) => { this.state.aid = e; this.state.activityNumber = n.props.children }}>
-                            {this.state.activityNumberOption}
-                        </Select>
-                }
+                {getFieldDecorator('activityNumber', {
+                    rules: [{ required: true, message: '此项为必填项!' }],
+                    initialValue: theData.activityNumber
+                })(
+                    <Select
+                        notFoundContent="无项目可选"
+                        placeholder="请选择项目编号"
+                        style={{ width: 200 }} >
+                        {this.state.activityNumberOption}
+                    </Select>
+                    )}
                 <p className="activityCost-title">费用年份</p>
-                {
-                    theData.year ? <span>{theData.year}</span> :
-                        <YearSelect handleyear={(e) => { this.state.year = e; }} />
-                }
+                {getFieldDecorator('year', {
+                    rules: [{ required: true, message: '此项为必填项!' }],
+                    initialValue: theData.year
+                })(
+                    <Select
+                        placeholder="请选择年份"
+                        style={{ width: 200 }} >
+                        {this.props.yearOption}
+                    </Select>
+                    )}
                 <p className="activityCost-title">内部研究开发费用(万元)</p>
                 <div className="clearfix activityCost-box">
                     <FormItem className="half-item"
@@ -343,6 +351,7 @@ const ActivityDesc = React.createClass({
                         <ActivityDescFrom
                             uid={this.props.uid}
                             visible={this.state.visible}
+                            yearOption={this.props.yearOption}
                             data={this.props.data}
                             activityNumberList={this.props.activityNumberList}
                             spinState={this.spinChange} closeModal={this.handleCancel} clickOk={this.handleOk} />
@@ -395,7 +404,7 @@ const Activity = React.createClass({
                         uid: thisdata.uid,
                         aid: thisdata.aid,
                         activityNumber: thisdata.activityNumber,
-                        year: thisdata.year,
+                        year: thisdata.year ? String(thisdata.year) : undefined,
                         startDate: thisdata.startDate,
                         endDate: thisdata.endDate,
 
@@ -533,8 +542,16 @@ const Activity = React.createClass({
             dataSource: []
         };
     },
+    getYearOption() {
+        let Option = Select.Option, d = new Date(), thisYear = d.getFullYear(), theArr = [];
+        for (let i = thisYear; i >= 1950; i--) {
+            theArr.push(<Option value={i.toString()} key={i.toString()}>{i}</Option>)
+        };
+        this.state.yearOption = theArr;
+    },
     componentWillMount() {
         this.loadData();
+        this.getYearOption();
     },
     tableRowClick(record, index) {
         this.state.RowData = record;
@@ -618,7 +635,11 @@ const Activity = React.createClass({
                     <Input placeholder="研发活动编号" value={this.state.activityNumber}
                         onChange={(e) => { this.setState({ activityNumber: e.target.value }); }} />
                     <span>年份:</span>
-                    <YearSelect value={this.state.year} handleyear={(e) => { this.state.year = e; }} />
+                    <Select value={this.state.year}
+                        style={{ width: 100 }}
+                        onChange={(e) => { this.setState({ year: e }); }} >
+                        {this.state.yearOption}
+                    </Select>
                     <Button type="primary" onClick={this.search}>搜索</Button>
                     <Button onClick={this.reset}>重置</Button>
                     <p>
@@ -641,6 +662,7 @@ const Activity = React.createClass({
                 <ActivityDesc
                     uid={this.props.data.uid}
                     data={this.state.RowData}
+                    yearOption={this.state.yearOption}
                     activityNumberList={this.state.activityNumberList}
                     showDesc={this.state.showDesc} closeDesc={this.closeDesc} />
             </div >

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

@@ -208,7 +208,7 @@ const CompanyDetail = Form.create()(React.createClass({
                     render: (text, record, index) => {
                         return <Select value={record.type} onChange={(e) => { record.type = e; this.setState({ legalTableData: this.state.legalTableData }); }}>
                             <Select.Option value="0">中国企业法人</Select.Option>
-                            <Select.Option value="1">外企业法人</Select.Option>
+                            <Select.Option value="1">外企业法人</Select.Option>
                         </Select>
                     }
                 }, {

+ 40 - 3
js/component/manageCenter/servicesManage/highTech/highTechApply.jsx

@@ -1068,6 +1068,38 @@ const Cognizance = React.createClass({
             dataSource: []
         };
     },
+        getContractList() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/contract/serialNumber",
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                    return;
+                };
+                let theArr = [];
+                for (var item in data.data) {
+                    theArr.push(
+                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                    );
+                };
+                this.setState({
+                    contractListOption: theArr
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     componentWillMount() {
         let _me = this;
         provinceArr.map(function (item) {
@@ -1079,6 +1111,7 @@ const Cognizance = React.createClass({
         this.getAuthorList();
         this.getSalesmanList();
         this.getCompanyList();
+        this.getContractList();
         if (window.location.search) {
             let theObj = getSearchUrl(window.location.search);
             if (theObj.rid) {
@@ -1194,10 +1227,14 @@ const Cognizance = React.createClass({
                         onChange={(e) => { this.setState({ unitName: e }) }}>
                         {this.state.companyOption}
                     </Select>
-                    <Input style={{ width: 160 }}
-                        placeholder="请输入合同编号"
+                    <Select placeholder="选择合同编号"
+                        style={{ width: 120 }}
                         value={this.state.contractId}
-                        onChange={(e) => { this.setState({ contractId: e.target.value }); }} />
+                        showSearch
+                        filterOption={companySearch}
+                        onChange={(e) => { this.setState({ contractId: e }) }}>
+                        {this.state.contractListOption}
+                    </Select>
                     <Button type="primary" onClick={this.search}>搜索</Button>
                     <Button onClick={this.reset}>重置</Button>
                     <Button style={{ background: "#3fcf9e", border: "none", color: "#fff" }}

+ 35 - 36
js/component/manageCenter/servicesManage/highTech/highTechFoster.jsx

@@ -53,7 +53,6 @@ const Patent = React.createClass({
                         uid: thisdata.uid,
                         unitName: thisdata.unitName,
                         state: thisdata.issuingDateFormattedDate ? getTime(thisdata.issuingDateFormattedDate, 36) : null,
-                        techPrincipal:thisdata.techPrincipal
                     });
                 };
                 this.state.pagination.current = data.data.pageNo;
@@ -213,45 +212,45 @@ const Patent = React.createClass({
     },
     render() {
         return (
-            <div className="foster-box">
-                <div className="foster-content" style={{ display: this.state.fosterDisplay }}>
-                    <div className="content-title">
-                        <span>高企认定培育</span>
-                    </div>
-                    <div className="foster-query">
-                        <Select placeholder="选择省份"
-                            style={{ width: 200 }}
-                            value={this.state.province}
-                            showSearch
-                            filterOption={companySearch}
-                            onChange={(e) => { this.setState({ province: e }) }}>
-                            {this.state.provinceOption}
-                        </Select>
-                        <Select placeholder="选择公司"
-                            style={{ width: 200 }}
-                            value={this.state.unitName}
-                            showSearch
-                            filterOption={companySearch}
-                            onChange={(e) => { this.setState({ unitName: e }) }}>
-                            {this.state.companyOption}
-                        </Select>
-                        <Button type="primary" onClick={this.search}>搜索</Button>
-                        <Button onClick={this.reset}>重置</Button>
-                    </div>
-                    <div className="foster-table">
-                        <Spin spinning={this.state.loading}>
+            <Spin spinning={this.state.loading}>
+                <div className="foster-box">
+                    <div className="foster-content" style={{ display: this.state.fosterDisplay }}>
+                        <div className="content-title">
+                            <span>高企认定培育</span>
+                        </div>
+                        <div className="foster-query">
+                            <Select placeholder="选择省份"
+                                style={{ width: 200 }}
+                                value={this.state.province}
+                                showSearch
+                                filterOption={companySearch}
+                                onChange={(e) => { this.setState({ province: e }) }}>
+                                {this.state.provinceOption}
+                            </Select>
+                            <Select placeholder="选择公司"
+                                style={{ width: 200 }}
+                                value={this.state.unitName}
+                                showSearch
+                                filterOption={companySearch}
+                                onChange={(e) => { this.setState({ unitName: e }) }}>
+                                {this.state.companyOption}
+                            </Select>
+                            <Button type="primary" onClick={this.search}>搜索</Button>
+                            <Button onClick={this.reset}>重置</Button>
+                        </div>
+                        <div className="foster-table">
                             <Table columns={this.state.columns}
                                 dataSource={this.state.dataSource}
                                 pagination={this.state.pagination}
                                 onRowClick={this.tableRowClick} />
-                        </Spin>
-                    </div>
-                </div >
-                <FosterDesc
-                    style={this.state.fosterDescDisplay}
-                    data={this.state.RowData}
-                    returnBtn={this.returnBtn} />
-            </div>
+                        </div>
+                    </div >
+                    <FosterDesc
+                        style={this.state.fosterDescDisplay}
+                        data={this.state.RowData}
+                        returnBtn={this.returnBtn} />
+                </div>
+            </Spin>
         );
     }
 });

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

@@ -1034,7 +1034,7 @@ const highTechInfo = React.createClass({
                         <div className="clearfix">
                             <div className="half-item">
                                 <span className="item-title">年份</span>
-                                <span>{theData.year}</span>
+                                <span>{theData.year + 1}</span>
                             </div>
                             <div className="half-item">
                                 <span className="item-title">公司名字</span>

+ 40 - 3
js/component/manageCenter/servicesManage/patent/comprehensive.jsx

@@ -168,6 +168,38 @@ const Patent = React.createClass({
             });
         }.bind(this));
     },
+    getContractList() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/contract/serialNumber",
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                    return;
+                };
+                let theArr = [];
+                for (var item in data.data) {
+                    theArr.push(
+                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                    );
+                };
+                this.setState({
+                    contractListOption: theArr
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getInitialState() {
         return {
             createTime: [],
@@ -291,6 +323,7 @@ const Patent = React.createClass({
         };
         this.loadData();
         this.getOptionList();
+        this.getContractList();
     },
     tableRowClick(record, index) {
         this.state.RowData = record;
@@ -498,10 +531,14 @@ const Patent = React.createClass({
                         <Select.Option value="patentName">专利名称</Select.Option>
                     </Select>
                     <Input value={this.state.searchValue} style={{ width: 160 }} onChange={this.searchSelect} />
-                    <Input style={{ width: 160 }}
-                        placeholder="请输入合同编号"
+                    <Select placeholder="选择合同编号"
+                        style={{ width: 120 }}
                         value={this.state.contractId}
-                        onChange={(e) => { this.setState({ contractId: e.target.value }); }} />
+                        showSearch
+                        filterOption={companySearch}
+                        onChange={(e) => { this.setState({ contractId: e }) }}>
+                        {this.state.contractListOption}
+                    </Select>
                     <Select placeholder="专利状态" value={this.state.patentState} style={{ width: 160 }} onChange={(e) => { this.setState({ patentState: e }); }}>{this.state.patentStateOption}</Select>
                     <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
                     <Button style={{ marginLeft: '20px' }}

+ 7 - 1
js/component/manageCenter/servicesManage/technology/applyChange.jsx

@@ -373,7 +373,13 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                             {getFieldDecorator('department', {
                                 initialValue: theData.department
                             })(
-                                <Select placeholder='请输入科技部门' >{this.state.departmentOption}</Select>
+                                <Select style={{ width: 400 }}
+                                    notFoundContent='无科技部门可选'
+                                    showSearch
+                                    filterOption={companySearch}
+                                    placeholder='请输入科技部门' >
+                                    {this.state.departmentOption}
+                                </Select>
                                 )}
                         </FormItem>
                     </div>

+ 41 - 3
js/component/manageCenter/servicesManage/technology/applyManage.jsx

@@ -201,6 +201,38 @@ const ApplyManage = React.createClass({
             });
         }.bind(this));
     },
+    getContractList() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/contract/serialNumber",
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                    return;
+                };
+                let theArr = [];
+                for (var item in data.data) {
+                    theArr.push(
+                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                    );
+                };
+                this.setState({
+                    contractListOption: theArr
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getInitialState() {
         return {
             provinceOption: [],
@@ -299,6 +331,8 @@ const ApplyManage = React.createClass({
         this.getSalesmanList();
         this.getCompanyList();
         this.getConsultant();
+        this.getCompanyList();
+        this.getContractList();
         if (window.location.search) {
             let theObj = getSearchUrl(window.location.search);
             if (theObj.rid) {
@@ -409,10 +443,14 @@ const ApplyManage = React.createClass({
                         onChange={(e) => { this.setState({ unitName: e }) }}>
                         {this.state.companyOption}
                     </Select>
-                    <Input style={{ width: 160 }}
-                        placeholder="请输入合同编号"
+                    <Select placeholder="选择合同编号"
+                        style={{ width: 120 }}
                         value={this.state.contractId}
-                        onChange={(e) => { this.setState({ contractId: e.target.value }); }} />
+                        showSearch
+                        filterOption={companySearch}
+                        onChange={(e) => { this.setState({ contractId: e }) }}>
+                        {this.state.contractListOption}
+                    </Select>
                     <Button type="primary" onClick={this.search}>搜索</Button>
                     <Button onClick={this.reset}>重置</Button>
                     <Button style={{ background: "#3fcf9e", border: "none", color: "#fff" }}