yee 7 years ago
parent
commit
4bc70f4efc

+ 156 - 26
js/component/manageCenter/achievement/techAchievementDesc.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Icon, Tooltip, Modal, message, AutoComplete, Spin, Upload, Input, InputNumber, Select, DatePicker, Button, Radio, Form, Cascader, Tag } from 'antd';
+import { Tabs, Table, Icon, Tooltip, Modal, message, AutoComplete, Spin, Upload, Input, InputNumber, Select, DatePicker, Button, Radio, Form, Cascader, Tag } from 'antd';
 import moment from 'moment';
 import './techAchievement.less';
 import ajax from 'jquery/src/ajax/xhr.js';
@@ -1380,7 +1380,90 @@ const AchievementDetailForm = Form.create()(React.createClass({
 const AchievementDetail = React.createClass({
     getInitialState() {
         return {
-            visible: false
+            visible: false,
+            columns: [
+                {
+                    title: '编号',
+                    dataIndex: 'serialNumber',
+                    key: 'serialNumber',
+                }, {
+                    title: '需求名称',
+                    dataIndex: 'name',
+                    key: 'name',
+                }, {
+                    title: '关键字',
+                    dataIndex: 'keyword',
+                    key: 'keyword',
+                }, {
+                    title: '需求类型',
+                    dataIndex: 'demandType',
+                    key: 'demandType',
+                    render: text => { return getDemandType(text); }
+                }, {
+                    title: '信息来源',
+                    dataIndex: 'infoSources',
+                    key: 'infoSources',
+                    render: text => {
+                        switch (text) {
+                            case "0":
+                                return <span>平台采集</span>;
+                            case "1":
+                                return <span>客户发布</span>
+                        }
+                    }
+                }, {
+                    title: '雇主名称',
+                    dataIndex: 'username',
+                    key: 'username',
+                }, {
+                    title: '审核状态',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                    render: text => {
+                        switch (text) {
+                            case "0":
+                                return <span>未提交审核(草稿)</span>;
+                            case "1":
+                                return <span>提交审核</span>;
+                            case "2":
+                                return <span>审核中</span>;
+                            case "3":
+                                return <span>审核通过</span>;
+                            case "4":
+                                return <span>审核未通过</span>;
+                        }
+                    }
+                }, {
+                    title: '需求状态',
+                    dataIndex: 'status',
+                    key: 'status',
+                    render: text => {
+                        switch (text) {
+                            case "0":
+                                return <span>未解决</span>;
+                            case "1":
+                                return <span>已解决</span>;
+                        }
+                    }
+                }, {
+                    title: '有效期限',
+                    dataIndex: 'validityPeriodFormattedDate',
+                    key: 'validityPeriodFormattedDate',
+                }, {
+                    title: '发布时间',
+                    dataIndex: 'releaseDateFormattedDate',
+                    key: 'releaseDateFormattedDate',
+                }, {
+                    title: '管理员',
+                    dataIndex: 'principalId',
+                    key: 'principalId',
+                }, {
+                    title: '技术经纪人',
+                    dataIndex: 'techBrokerId',
+                    key: 'techBrokerId',
+                }
+            ],
+            dataSource: [],
         };
     },
     getTechBrodersList() {
@@ -1416,10 +1499,43 @@ const AchievementDetail = React.createClass({
             });
         }.bind(this));
     },
-    showModal() {
+    getTableList(id) {
         this.setState({
-            visible: true,
+            loading: true
         });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/audit/techBroders",
+            data: { id: id || this.props.data.id },
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }
+                    return;
+                };
+                let _me = this, theArr = [];
+                for (var item in data.data) {
+                    theArr.push(
+                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                    )
+                };
+                this.setState({
+                    techBrodersOption: theArr,
+                    techBrodersObj: data.data
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    tableRowClick(record, index) {
+        this.state.RowData = record;
+        debugger
     },
     handleCancel(e) {
         this.setState({
@@ -1435,40 +1551,54 @@ const AchievementDetail = React.createClass({
     },
     componentWillMount() {
         this.getTechBrodersList();
+        this.getTableList();
     },
     componentWillReceiveProps(nextProps) {
         this.state.visible = nextProps.showDesc;
+        if (!this.props.showDesc && nextProps.showDesc) {
+            this.getTableList(nextProps.data.id);
+        };
     },
     render() {
         if (this.props.data) {
             return (
                 <div className="patent-desc">
-                    <Modal maskClosable={false} title="成果详情" visible={this.state.visible}
+                    <Modal maskClosable={false} visible={this.state.visible}
                         onOk={this.checkPatentProcess} onCancel={this.handleCancel}
                         width='1000px'
                         footer=''
                         className="admin-desc-content">
-                        {(() => {
-                            if (this.props.data.auditStatus && this.props.data.auditStatus != "0" && this.props.data.auditStatus != "4") {
-                                return <AchievementDetailShow
-                                    data={this.props.data}
-                                    detailApiUrl={this.props.detailApiUrl}
-                                    techBrodersOption={this.state.techBrodersOption}
-                                    techBrodersObj={this.state.techBrodersObj}
-                                    closeDesc={this.handleCancel}
-                                    visible={this.state.visible}
-                                    handleOk={this.handleOk} />
-                            } else {
-                                return <AchievementDetailForm
-                                    data={this.props.data}
-                                    detailApiUrl={this.props.detailApiUrl}
-                                    achievementCategoryOption={this.props.achievementCategoryOption}
-                                    techBrodersObj={this.state.techBrodersObj}
-                                    closeDesc={this.handleCancel}
-                                    visible={this.state.visible}
-                                    handleOk={this.handleOk} />
-                            };
-                        })()}
+                        <Tabs defaultActiveKey="1">
+                            <Tabs.TabPane tab="成果详情" key="1">
+                                {(() => {
+                                    if (this.props.data.auditStatus && this.props.data.auditStatus != "0" && this.props.data.auditStatus != "4") {
+                                        return <AchievementDetailShow
+                                            data={this.props.data}
+                                            detailApiUrl={this.props.detailApiUrl}
+                                            techBrodersOption={this.state.techBrodersOption}
+                                            techBrodersObj={this.state.techBrodersObj}
+                                            closeDesc={this.handleCancel}
+                                            visible={this.state.visible}
+                                            handleOk={this.handleOk} />
+                                    } else {
+                                        return <AchievementDetailForm
+                                            data={this.props.data}
+                                            detailApiUrl={this.props.detailApiUrl}
+                                            achievementCategoryOption={this.props.achievementCategoryOption}
+                                            techBrodersObj={this.state.techBrodersObj}
+                                            closeDesc={this.handleCancel}
+                                            visible={this.state.visible}
+                                            handleOk={this.handleOk} />
+                                    };
+                                })()}
+                            </Tabs.TabPane>
+                            <Tabs.TabPane tab="匹配列表" key="2">
+                                <Table columns={this.state.columns}
+                                    dataSource={this.state.dataSource}
+                                    pagination={false}
+                                    onRowClick={this.tableRowClick} />
+                            </Tabs.TabPane>
+                        </Tabs>
                     </Modal>
                 </div>
             );

+ 27 - 4
js/component/manageCenter/demand/techDemand.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 './techDemand.less';
 import TechDemandDesc from './techDemandDesc.jsx';
 import { demandTypeList } from '../../dataDic.js';
-import { companySearch, getDemandType, getSearchUrl } from '../../tools.js';
+import { companySearch, getDemandType, getSearchUrl,beforeUploadFile } from '../../tools.js';
 
 const DemandList = React.createClass({
     loadData(pageNo, apiUrl) {
@@ -369,8 +369,31 @@ const DemandList = React.createClass({
             <div className="user-content" >
                 <div className="content-title">
                     <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/demand/uploadTemplate"}
+                            data={{ 'sign': 'demand_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/demand/downloadTemplate?sign=demand_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/demand/techDemand.less

@@ -4,6 +4,7 @@
     .content-title {
         color: #333;
         font-size: 16px;
+        overflow: hidden;
     }
     .user-search {
         margin-bottom: 10px;
@@ -33,15 +34,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;
     }
 }

+ 140 - 29
js/component/manageCenter/demand/techDemandDesc.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Icon, Tooltip, Modal, Popover, message, Spin, Upload, Input, InputNumber, Select, DatePicker, Button, Radio, Form, Cascader, Tag } from 'antd';
+import { Tabs, Table, Icon, Tooltip, Modal, Popover, message, Spin, Upload, Input, InputNumber, Select, DatePicker, Button, Radio, Form, Cascader, Tag } from 'antd';
 import moment from 'moment';
 import './techDemand.less';
 import ajax from 'jquery/src/ajax/xhr.js';
@@ -1109,7 +1109,53 @@ const DemandDetail = React.createClass({
     getInitialState() {
         return {
             visible: false,
-            techBrodersObj: {}
+            techBrodersObj: {},
+            columns: [
+                {
+                    title: '编号',
+                    dataIndex: 'serialNumber',
+                    key: 'serialNumber',
+                }, {
+                    title: '名称',
+                    dataIndex: 'name',
+                    key: 'name',
+                }, {
+                    title: '关键字',
+                    dataIndex: 'keyword',
+                    key: 'keyword',
+                }, {
+                    title: '类型',
+                    dataIndex: 'category',
+                    key: 'category',
+                    render: text => { return getAchievementCategory(text); }
+                }, {
+                    title: '所有人名称',
+                    dataIndex: 'ownerName',
+                    key: 'ownerName',
+                }, {
+                    title: '所有人类型',
+                    dataIndex: 'ownerType',
+                    key: 'ownerType',
+                    render: text => {
+                        switch (text) {
+                            case "0":
+                                return <span>个人</span>;
+                            case "1":
+                                return <span>组织</span>
+                        }
+                    }
+                }, {
+                    title: '审核状态',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                    render: text => { return getTechAuditStatus(text) }
+                }, {
+                    title: '发布时间',
+                    dataIndex: 'releaseDateFormattedDate',
+                    key: 'releaseDateFormattedDate',
+                }
+            ],
+            dataSource: [],
         };
     },
     getTechBrodersList() {
@@ -1145,10 +1191,62 @@ const DemandDetail = React.createClass({
             });
         }.bind(this));
     },
-    showModal() {
+    getTableList(id) {
         this.setState({
-            visible: true,
+            loading: true
         });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/audit/techBroders",
+            data: { id: id },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data && !data.data.list) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        theArr.push({
+                            key: i,
+                            id: thisdata.id,
+                            serialNumber: thisdata.serialNumber,
+                            dataCategory: thisdata.dataCategory,
+                            name: thisdata.name,
+                            keyword: thisdata.keyword,
+                            infoSources: thisdata.infoSources,
+                            username: thisdata.username,
+                            demandType: thisdata.demandType,
+                            validityPeriod: thisdata.validityPeriod,
+                            employerName: thisdata.employerName,
+                            employerId: thisdata.employerId,
+                            province: thisdata.province,
+                            status: thisdata.status,
+                            releaseStatus: thisdata.releaseStatus,
+                            releaseDate: thisdata.releaseDate,
+                            principalId: thisdata.principalId,
+                            validityPeriodFormattedDate: thisdata.validityPeriodFormattedDate,
+                            releaseDateFormattedDate: thisdata.releaseDateFormattedDate,
+                            auditStatus: thisdata.auditStatus
+                        });
+                    };
+                };
+                this.setState({
+                    dataSource: theArr,
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    tableRowClick(record, index) {
+        this.state.RowData = record;
+        debugger
     },
     handleCancel(e) {
         this.setState({
@@ -1167,40 +1265,53 @@ const DemandDetail = React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         this.state.visible = nextProps.showDesc;
+        if (!this.props.showDesc && nextProps.showDesc) {
+            this.getTableList(nextProps.data.id);
+        };
     },
     render() {
         if (this.props.data) {
             return (
                 <div className="patent-desc">
-                    <Modal maskClosable={false} title="用户需求详情" visible={this.state.visible}
+                    <Modal maskClosable={false} visible={this.state.visible}
                         onOk={this.checkPatentProcess} onCancel={this.handleCancel}
                         width='1000px'
                         footer=''
                         className="admin-desc-content">
-                        {(() => {
-                            if (this.props.data.auditStatus && this.props.data.auditStatus != "0" && this.props.data.auditStatus != "4") {
-                                return <DemandDetailShow
-                                    data={this.props.data}
-                                    detailApiUrl={this.props.detailApiUrl}
-                                    techBrodersOption={this.state.techBrodersOption}
-                                    techBrodersObj={this.state.techBrodersObj}
-                                    demandTypeOption={this.props.demandTypeOption}
-                                    closeDesc={this.handleCancel}
-                                    visible={this.state.visible}
-                                    handleOk={this.handleOk} />
-                            } else {
-                                return <DemandDetailForm
-                                    data={this.props.data}
-                                    detailApiUrl={this.props.detailApiUrl}
-                                    companyOption={this.props.companyOption}
-                                    userOption={this.props.userOption}
-                                    techBrodersObj={this.state.techBrodersObj}
-                                    demandTypeOption={this.props.demandTypeOption}
-                                    closeDesc={this.handleCancel}
-                                    visible={this.state.visible}
-                                    handleOk={this.handleOk} />
-                            }
-                        })()}
+                        <Tabs defaultActiveKey="1">
+                            <Tabs.TabPane tab="需求详情" key="1">
+                                {(() => {
+                                    if (this.props.data.auditStatus && this.props.data.auditStatus != "0" && this.props.data.auditStatus != "4") {
+                                        return <DemandDetailShow
+                                            data={this.props.data}
+                                            detailApiUrl={this.props.detailApiUrl}
+                                            techBrodersOption={this.state.techBrodersOption}
+                                            techBrodersObj={this.state.techBrodersObj}
+                                            demandTypeOption={this.props.demandTypeOption}
+                                            closeDesc={this.handleCancel}
+                                            visible={this.state.visible}
+                                            handleOk={this.handleOk} />
+                                    } else {
+                                        return <DemandDetailForm
+                                            data={this.props.data}
+                                            detailApiUrl={this.props.detailApiUrl}
+                                            companyOption={this.props.companyOption}
+                                            userOption={this.props.userOption}
+                                            techBrodersObj={this.state.techBrodersObj}
+                                            demandTypeOption={this.props.demandTypeOption}
+                                            closeDesc={this.handleCancel}
+                                            visible={this.state.visible}
+                                            handleOk={this.handleOk} />
+                                    }
+                                })()}
+                            </Tabs.TabPane>
+                            <Tabs.TabPane tab="匹配列表" key="2">
+                                <Table columns={this.state.columns}
+                                    dataSource={this.state.dataSource}
+                                    pagination={false}
+                                    onRowClick={this.tableRowClick} />
+                            </Tabs.TabPane>
+                        </Tabs>
                     </Modal>
                 </div>
             );