yee 7 år sedan
förälder
incheckning
41bac72f13

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

@@ -244,7 +244,8 @@ const AchievementList = React.createClass({
                 <div className="content-title">
                     <span>科技成果管理</span>
                     <div className="patent-addNew">
-                        <Button type="primary" onClick={this.addClick}>发布成果<Icon type="plus" /></Button>
+                        <Button onClick={() => { window.open(globalConfig.context + '/api/user/achievement/downloadTemplate?sign=achievement_template') }}>下载批量导入模板</Button>
+                        <Button className="addButton" type="primary" onClick={this.addClick}>发布成果<Icon type="plus" /></Button>
                     </div>
                 </div>
                 <div className="user-search">

+ 3 - 3
js/component/account/achievement/techAchievement.less

@@ -31,15 +31,15 @@
 .patent-addNew {
     float: right;
     margin-left: 20px;
-    button {
+    .addButton {
         background: #ea0862;
         color: #fff;
         border: none;
         border-radius: 4px;
-        padding: 6px 10px;
+        padding: 4px 10px;
         margin-left: 20px;
     }
-    button:hover {
+    .addButton:hover {
         background: #ea0862;
     }
 }

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

@@ -151,7 +151,7 @@ const AchievementDetailShow = Form.create()(React.createClass({
             method: "get",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + "/api/user/achievement/detail",
+            url: globalConfig.context + (window.userData.type == "1" ? "/api/user/achievement/orgDetail" : "/api/user/achievement/userDetail"),            
             data: {
                 id: id
             },
@@ -636,7 +636,7 @@ const AchievementDetailForm = Form.create()(React.createClass({
             method: "get",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + "/api/user/achievement/detail",
+            url: globalConfig.context + (window.userData.type == "1" ? "/api/user/achievement/orgDetail" : "/api/user/achievement/userDetail"),
             data: {
                 id: id
             },

+ 27 - 4
js/component/manageCenter/achievement/techAchievement.jsx

@@ -1,12 +1,12 @@
 import React from 'react';
-import { Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker, Modal } from 'antd';
+import { Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker, Modal, Upload } from 'antd';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import moment from 'moment';
 import './techAchievement.less';
 import TechAchievementDesc from './techAchievementDesc.jsx';
 import { provinceArr, achievementCategoryList, techAuditStatusList } from '../../dataDic.js';
-import { companySearch, getAchievementCategory, getSearchUrl, getTechAuditStatus } from '../../tools.js';
+import { beforeUploadFile, companySearch, getAchievementCategory, getSearchUrl, getTechAuditStatus } from '../../tools.js';
 
 const AchievementList = React.createClass({
     loadData(pageNo, apiUrl) {
@@ -259,8 +259,31 @@ const AchievementList = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     {this.props['data-listApiUrl'].indexOf('org') == -1 ? <span>个人科技成果管理</span> : <span>组织科技成果管理</span>}
-                    <div className="patent-addNew">
-                        <Button type="primary" onClick={this.addClick}>发布成果<Icon type="plus" /></Button>
+                    <div className="patent-addNew clearfix">
+                        <Upload
+                            action={globalConfig.context + "/api/admin/achievement/uploadTemplate"}
+                            data={{ 'sign': 'achievement_template' }}
+                            beforeUpload={beforeUploadFile}
+                            showUploadList={false}
+                            onChange={(info) => {
+                                if (info.file.status !== 'uploading') {
+                                    console.log(info.file, info.fileList);
+                                }
+                                if (info.file.status === 'done') {
+                                    if (!info.file.response.error.length) {
+                                        message.success(`${info.file.name} 文件上传成功!`);
+                                    } else {
+                                        message.warning(info.file.response.error[0].message);
+                                        return;
+                                    };
+                                } else if (info.file.status === 'error') {
+                                    message.error(`${info.file.name} 文件上传失败。`);
+                                };
+                            }} >
+                            <Button>上传批量导入模板</Button>
+                        </Upload>
+                        <Button onClick={() => { window.open(globalConfig.context + '/api/admin/achievement/downloadTemplate?sign=achievement_template') }}>下载批量导入模板</Button>
+                        <Button type="primary" className="addButton" onClick={this.addClick}>发布成果<Icon type="plus" /></Button>
                     </div>
                 </div>
                 <div className="user-search">

+ 8 - 4
js/component/manageCenter/achievement/techAchievement.less

@@ -4,6 +4,7 @@
     .content-title {
         color: #333;
         font-size: 16px;
+        overflow: hidden;
     }
     .user-search {
         margin-bottom: 10px;
@@ -31,15 +32,18 @@
 .patent-addNew {
     float: right;
     margin-left: 20px;
-    button {
+    > * {
+        float: left;
+        margin-right: 20px;
+    }
+    .addButton {
         background: #ea0862;
         color: #fff;
         border: none;
         border-radius: 4px;
-        padding: 6px 10px;
-        margin-left: 20px;
+        padding: 4px 10px;
     }
-    button:hover {
+    .addButton:hover {
         background: #ea0862;
     }
 }

+ 63 - 91
js/component/manageCenter/achievement/techAchievementDesc.jsx

@@ -727,6 +727,7 @@ const AchievementDetailForm = Form.create()(React.createClass({
             businessPlanFileList: [],
             maturityPictureUrl: [],
             technicalPictureUrl: [],
+            dataSource: [],
             tags: []
         };
     },
@@ -764,70 +765,6 @@ const AchievementDetailForm = Form.create()(React.createClass({
             });
         }.bind(this));
     },
-    getCompanyList() {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            method: "get",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + "/api/admin/demand/unitNames",
-            success: function (data) {
-                let theArr = [];
-                if (!data.data) {
-                    if (data.error && data.error.length) {
-                        message.warning(data.error[0].message);
-                    };
-                } else {
-                    data.data.map(function (item) {
-                        theArr.push(
-                            <Select.Option value={item.uid} key={item.uid}>{item.unitName}</Select.Option>
-                        )
-                    });
-                };
-                this.setState({
-                    companyOption: theArr
-                });
-            }.bind(this),
-        }).always(function () {
-            this.setState({
-                loading: false
-            });
-        }.bind(this));
-    },
-    getUserList() {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            method: "get",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + "/api/admin/demand/userNames",
-            success: function (data) {
-                let theArr = [];
-                if (!data.data) {
-                    if (data.error && data.error.length) {
-                        message.warning(data.error[0].message);
-                    };
-                } else {
-                    data.data.map(function (item) {
-                        theArr.push(
-                            <Select.Option value={item.uid} key={item.uid}>{item.username}</Select.Option>
-                        )
-                    });
-                };
-                this.setState({
-                    userOption: theArr
-                });
-            }.bind(this),
-        }).always(function () {
-            this.setState({
-                loading: false
-            });
-        }.bind(this));
-    },
     getTagsArr(e) {
         this.setState({ tags: e });
     },
@@ -838,10 +775,59 @@ const AchievementDetailForm = Form.create()(React.createClass({
         this.setState({ technicalPictureUrl: e });
     },
     handleSearch(e) {
-        console.log(e);
-    },
-    therottleSearch(e) {
-        throttle(this.handleSearch, 500).bind(this);
+        if (this.props.detailApiUrl.indexOf('org') != -1) {
+            $.ajax({
+                method: "get",
+                dataType: "json",
+                crossDomain: false,
+                url: globalConfig.context + "/api/admin/achievement/orgOwner",
+                data: { name: e },
+                success: function (data) {
+                    let theArr = [];
+                    let theObj = {};
+                    if (!data.data) {
+                        if (data.error && data.error.length) {
+                            message.warning(data.error[0].message);
+                        };
+                    } else if (!$.isEmptyObject(data.data)) {
+                        data.data.map(function (item) {
+                            theArr.push(item.unitName);
+                            theObj[item.unitName] = item.uid;
+                        });
+                    };
+                    this.setState({
+                        dataSource: theArr,
+                        dataSourceObj: theObj
+                    });
+                }.bind(this),
+            });
+        } else {
+            $.ajax({
+                method: "get",
+                dataType: "json",
+                crossDomain: false,
+                url: globalConfig.context + "/api/admin/achievement/userOwner",
+                data: { name: e },
+                success: function (data) {
+                    let theArr = [];
+                    let theObj = {};
+                    if (!data.data) {
+                        if (data.error && data.error.length) {
+                            message.warning(data.error[0].message);
+                        };
+                    } else if (!$.isEmptyObject(data.data)) {
+                        for (let item in data.data) {
+                            theArr.push(data.data[item]);
+                            theObj[data.data[item]] = item;
+                        };
+                    };
+                    this.setState({
+                        dataSource: theArr,
+                        dataSourceObj: theObj
+                    });
+                }.bind(this),
+            });
+        };
     },
     handleSubmit(e) {
         e.preventDefault();
@@ -851,6 +837,10 @@ const AchievementDetailForm = Form.create()(React.createClass({
                 message.warning('关键词数量不能小于3个!');
                 return;
             };
+            if (!this.state.dataSourceObj[values.ownerId]) {
+                message.warning('请选择一个有效的公司!');
+                return;
+            }
             //url转化
             let theTechnicalPictureUrl = [];
             if (this.state.technicalPictureUrl.length) {
@@ -895,8 +885,8 @@ const AchievementDetailForm = Form.create()(React.createClass({
                         maturityTextFileUrl: this.state.maturityTextFileUrl,
                         maturityVideoUrl: values.maturityVideoUrl,
                         innovation: values.innovation,
-                        ownerId: values.ownerId,
-                        ownerType: values.ownerType,
+                        ownerId: this.state.dataSourceObj[values.ownerId],
+                        ownerType: this.props.detailApiUrl.indexOf('org') != -1 ? 1 : 0,
                         cooperationMode: values.cooperationMode,
                         transferMode: values.transferMode,
                         bargainingMode: values.bargainingMode,
@@ -928,8 +918,7 @@ const AchievementDetailForm = Form.create()(React.createClass({
         });
     },
     componentWillMount() {
-        this.getCompanyList();
-        this.getUserList();
+        this.state.therottleSearch = throttle(this.handleSearch, 1000, { leading: false }).bind(this);
         if (this.props.data.id) {
             this.loadData(this.props.data.id);
         } else {
@@ -1180,21 +1169,6 @@ const AchievementDetailForm = Form.create()(React.createClass({
                         <Input />
                         )}
                 </FormItem>
-                <div className="clearfix">
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="所有人类型" >
-                        {getFieldDecorator('ownerType', {
-                            rules: [{ required: true, message: '此项为必填项!' }],
-                            initialValue: theData.ownerType
-                        })(
-                            <Radio.Group>
-                                <Radio value="0">个人</Radio>
-                                <Radio value="1">组织</Radio>
-                            </Radio.Group>
-                            )}
-                    </FormItem>
-                </div>
                 <div className="clearfix" >
                     <FormItem className="half-item"
                         {...formItemLayout}
@@ -1206,7 +1180,7 @@ const AchievementDetailForm = Form.create()(React.createClass({
                             <AutoComplete
                                 dataSource={this.state.dataSource}
                                 style={{ width: 200 }}
-                                onSearch={this.therottleSearch}
+                                onSearch={this.state.therottleSearch}
                                 placeholder="输入成果所有人" />
                             )}
                     </FormItem>
@@ -1488,14 +1462,12 @@ const AchievementDetail = React.createClass({
                                 return <AchievementDetailForm
                                     data={this.props.data}
                                     detailApiUrl={this.props.detailApiUrl}
-                                    companyOption={this.props.companyOption}
-                                    userOption={this.props.userOption}
                                     achievementCategoryOption={this.props.achievementCategoryOption}
                                     techBrodersObj={this.state.techBrodersObj}
                                     closeDesc={this.handleCancel}
                                     visible={this.state.visible}
                                     handleOk={this.handleOk} />
-                            }
+                            };
                         })()}
                     </Modal>
                 </div>

+ 1 - 1
js/component/throttle.js

@@ -1,4 +1,4 @@
-module.exports = function (func, wait, value, options) {
+module.exports = function (func, wait, options) {
     /* options的默认值
      *  表示首次调用返回值方法时,会马上调用func;否则仅会记录当前时刻,当第二次调用的时间间隔超过wait时,才调用func。
      *  options.leading = true;

+ 3 - 2
template/template.html

@@ -15,13 +15,14 @@
         //     email: "test@aft.com",
         //     createTime: "123456789000",
         //     lvl: "0"
-        // }
+        // };
+        // window.adminData = {};
         // window.globalConfig = {
         //     context: "//aft.hnzhiming.com:8080/aft",
         //     staticHost: "//aft.hnzhiming.com",
         //     uploadPath: "/data/wwwroot/aft/upload",
         //     uploadPrivatePath: "/data/upload"
-        // }
+        // };
     </script>
 </head>