yee 7 years ago
parent
commit
71d9350775

BIN
image/logo-2.png


BIN
image/logo.png


+ 15 - 10
js/component/manageCenter/idea/activity/activityUserList.jsx

@@ -7,7 +7,7 @@ import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 
 const ActivityTable = React.createClass({
-    loadData(pageNo) {
+    loadData(pageNo, apiUrl) {
         this.setState({
             loading: true
         });
@@ -15,7 +15,7 @@ const ActivityTable = React.createClass({
             method: "get",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + this.props.apiUrl,
+            url: globalConfig.context + (apiUrl || this.props.apiUrl),
             data: {
                 pageNo: pageNo || 1,
                 pageSize: this.state.pagination.pageSize,
@@ -125,6 +125,11 @@ const ActivityTable = React.createClass({
     componentWillMount() {
         this.loadData();
     },
+    componentWillReceiveProps(nextProps) {
+        if (this.props.tableType !== nextProps.tableType) {
+            this.loadData(nextProps.apiUrl)
+        }
+    },
     delectRow() {
         let deletedIds = [];
         for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
@@ -141,7 +146,7 @@ const ActivityTable = React.createClass({
             method: "POST",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + "/api/admin/activity/delete",
+            url: globalConfig.context + '/api/admin/activityUser/delete',
             data: {
                 ids: deletedIds
             }
@@ -170,8 +175,8 @@ const ActivityTable = React.createClass({
             selectedRowKeys: this.state.selectedRowKeys,
             onChange: (selectedRowKeys, selectedRows) => {
                 this.setState({
-                    selectedRows: selectedRows.slice(-1),
-                    selectedRowKeys: selectedRowKeys.slice(-1)
+                    selectedRows: selectedRows,
+                    selectedRowKeys: selectedRowKeys
                 });
             }
         };
@@ -207,7 +212,7 @@ const ActivityTable = React.createClass({
                     </Button>
                 </div>
                 <Spin spinning={this.state.loading}>
-                    <Table className="no-all-select"
+                    <Table
                         columns={this.state.columns}
                         dataSource={this.state.tableData}
                         pagination={this.state.pagination}
@@ -236,12 +241,12 @@ const ActivityUserList = React.createClass({
                     <span>活动圈报名管理</span>
                 </div>
                 <Tabs activeKey={this.state.tableType} onChange={this.tabChange}>
-                    <TabPane tab="个人报名管理" key="user">
+                    <Tabs.TabPane tab="个人报名管理" key="user">
                         <ActivityTable apiUrl={this.state.userApiUrl} tableType={'user'} />
-                    </TabPane>
-                    <TabPane tab="组织报名管理" key="org">
+                    </Tabs.TabPane>
+                    <Tabs.TabPane tab="组织报名管理" key="org">
                         <ActivityTable apiUrl={this.state.orgApiUrl} tableType={'org'} />
-                    </TabPane>
+                    </Tabs.TabPane>
                 </Tabs>
             </div >
         );

+ 143 - 137
js/component/manageCenter/idea/bigShot/lecture.jsx

@@ -46,58 +46,6 @@ const Avatar = React.createClass({
 });
 
 const Lecture = React.createClass({
-    loadUserData(pageNo) {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            method: "get",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + '/api/admin/lecture/starAndExpertList',
-            data: {
-                pageNo: pageNo || 1,
-                pageSize: this.state.userPagination.pageSize,
-                number: this.state.searchUserNumber, //编号
-                username: this.state.searchUserName, //名称
-                engagedField: this.state.searchField ? this.state.searchField.join(',') : undefined,
-                professionalTitle: this.state.searchPfs,
-                workUnit: this.state.searchUnit
-            },
-            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,
-                            uid: thisdata.uid,
-                            engagedField: thisdata.engagedField ? thisdata.engagedField.split(',') : [],
-                            username: thisdata.username,
-                            professionalTitle: thisdata.professionalTitle,
-                            workUnit: thisdata.workUnit,
-                            number: thisdata.number,
-                            achievementNums: thisdata.achievementNums,
-                        });
-                    };
-                    this.state.userPagination.current = data.data.pageNo;
-                    this.state.userPagination.total = data.data.totalCount;
-                };
-                this.setState({
-                    userTableData: theArr,
-                    userPagination: this.state.userPagination
-                });
-            }.bind(this),
-        }).always(function () {
-            this.setState({
-                loading: false
-            });
-        }.bind(this));
-    },
     loadLectureData(pageNo) {
         this.setState({
             loading: true
@@ -245,7 +193,7 @@ const Lecture = React.createClass({
         }.bind(this));
     },
     loadData() {
-        this.loadUserData();
+        //    this.loadUserData();
         this.loadLectureData();
         this.loadHotData();
         this.loadDynamicData();
@@ -257,18 +205,18 @@ const Lecture = React.createClass({
             addModal: {},
             selectedRowKeys: [],
             selectedRows: [],
-            userPagination: {
-                defaultCurrent: 1,
-                defaultPageSize: 10,
-                showQuickJumper: true,
-                pageSize: 10,
-                onChange: function (page) {
-                    this.loadUserData(page);
-                }.bind(this),
-                showTotal: function (total) {
-                    return '共' + total + '条数据';
-                }
-            },
+            // userPagination: {
+            //     defaultCurrent: 1,
+            //     defaultPageSize: 10,
+            //     showQuickJumper: true,
+            //     pageSize: 10,
+            //     onChange: function (page) {
+            //         this.loadUserData(page);
+            //     }.bind(this),
+            //     showTotal: function (total) {
+            //         return '共' + total + '条数据';
+            //     }
+            // },
             lecturePagination: {
                 defaultCurrent: 1,
                 defaultPageSize: 10,
@@ -281,34 +229,34 @@ const Lecture = React.createClass({
                     return '共' + total + '条数据';
                 }
             },
-            userColumns: [
-                {
-                    title: '编号',
-                    dataIndex: 'number',
-                    key: 'number',
-                }, {
-                    title: '姓名',
-                    dataIndex: 'username',
-                    key: 'username',
-                }, {
-                    title: '从事领域',
-                    dataIndex: 'engagedField',
-                    key: 'engagedField',
-                    render: text => { return getTechField(text[0], text[1], text[2]) }
-                }, {
-                    title: '职称名字',
-                    dataIndex: 'professionalTitle',
-                    key: 'professionalTitle',
-                }, {
-                    title: '工作单位',
-                    dataIndex: 'workUnit',
-                    key: 'workUnit',
-                }, {
-                    title: '成果数量',
-                    dataIndex: 'achievementNums',
-                    key: 'achievementNums',
-                }
-            ],
+            // userColumns: [
+            //     {
+            //         title: '编号',
+            //         dataIndex: 'number',
+            //         key: 'number',
+            //     }, {
+            //         title: '姓名',
+            //         dataIndex: 'username',
+            //         key: 'username',
+            //     }, {
+            //         title: '从事领域',
+            //         dataIndex: 'engagedField',
+            //         key: 'engagedField',
+            //         render: text => { return getTechField(text[0], text[1], text[2]) }
+            //     }, {
+            //         title: '职称名字',
+            //         dataIndex: 'professionalTitle',
+            //         key: 'professionalTitle',
+            //     }, {
+            //         title: '工作单位',
+            //         dataIndex: 'workUnit',
+            //         key: 'workUnit',
+            //     }, {
+            //         title: '成果数量',
+            //         dataIndex: 'achievementNums',
+            //         key: 'achievementNums',
+            //     }
+            // ],
             lectureColumns: [
                 {
                     title: '讲堂名称',
@@ -316,8 +264,8 @@ const Lecture = React.createClass({
                     key: 'name',
                 }, {
                     title: '开讲人姓名',
-                    dataIndex: 'username',
-                    key: 'username',
+                    dataIndex: 'lecturer',
+                    key: 'lecturer',
                 }, {
                     title: '描述',
                     dataIndex: 'summary',
@@ -397,6 +345,7 @@ const Lecture = React.createClass({
             data: {
                 'id': this.state.addModal.id,
                 "uid": this.state.addModal.uid,
+                "lecturer": this.state.addModal.lecturer,
                 "name": this.state.addModal.name,
                 "summary": this.state.addModal.summary,
                 "lectureUrl": this.state.addModal.lectureUrl,
@@ -445,14 +394,14 @@ const Lecture = React.createClass({
             });
         }.bind(this));
     },
-    resetUser() {
-        this.state.searchUserNumber = undefined;
-        this.state.searchUserName = undefined;
-        this.state.searchField = undefined;
-        this.state.searchPfs = undefined;
-        this.state.searchUnit = undefined;
-        this.loadUserData();
-    },
+    // resetUser() {
+    //     this.state.searchUserNumber = undefined;
+    //     this.state.searchUserName = undefined;
+    //     this.state.searchField = undefined;
+    //     this.state.searchPfs = undefined;
+    //     this.state.searchUnit = undefined;
+    //     this.loadUserData();
+    // },
     resetList() {
         this.state.searchLectureUser = undefined;
         this.state.searchLectureName = undefined;
@@ -460,9 +409,7 @@ const Lecture = React.createClass({
         this.state.endLectureTime = undefined;
         this.loadLectureData();
     },
-    userTableRowClick(record, index) {
-        this.state.addModal.uid = record.uid;
-        this.state.addModal.username = record.username;
+    addClick() {
         this.setState({
             addVisible: true
         });
@@ -490,41 +437,13 @@ const Lecture = React.createClass({
             <div className="admin-content" >
                 <div className="admin-content-title">科技讲堂管理</div>
                 <div className="admin-content-warp">
-                    <div className="admin-content-header">专家明星列表</div>
-                    <div className="admin-content-search">
-                        <Input placeholder="编号" style={{ width: 100 }}
-                            value={this.state.searchUserNumber}
-                            onChange={(e) => { this.setState({ searchUserNumber: e.target.value }); }} />
-                        <Input placeholder="专家明星名称" style={{ width: 160 }}
-                            value={this.state.searchUserName}
-                            onChange={(e) => { this.setState({ searchUserName: e.target.value }); }} />
-                        <Cascader placeholder="请选择一个行业" style={{ width: 300 }}
-                            options={techFieldList}
-                            value={this.state.searchField}
-                            onChange={(e) => { this.setState({ searchField: e }) }} />
-                        <Input placeholder="职称名字" style={{ width: 160 }}
-                            value={this.state.searchPfs}
-                            onChange={(e) => { this.setState({ searchPfs: e.target.value }); }} />
-                        <Input placeholder="工作单位" style={{ width: 160 }}
-                            value={this.state.searchUnit}
-                            onChange={(e) => { this.setState({ searchUnit: e.target.value }); }} />
-                        <Button type="primary" onClick={() => { this.loadUserData() }}>搜索</Button>
-                        <Button onClick={this.resetUser}>重置</Button>
-                    </div>
-                    <Spin spinning={this.state.loading}>
-                        <Table columns={this.state.userColumns}
-                            dataSource={this.state.userTableData}
-                            pagination={this.state.userPagination}
-                            onRowClick={this.userTableRowClick} />
-                    </Spin>
-                </div>
-                <div className="admin-content-warp">
                     <div className="admin-content-header">
                         <span>讲堂列表</span>
                         <Button type="primary" onClick={() => { this.cleanCache('lecture_list_cache_key'); }}>清除缓存</Button>
                         <Button type='danger' disabled={!hasSelected} onClick={this.delectRow}>
                             删除<Icon type="minus" />
                         </Button>
+                        <Button type="primary" onClick={() => { this.addClick(); }}>新增</Button>
                     </div>
                     <div className="admin-content-search">
                         <Input placeholder="开讲人名称" style={{ width: 160 }}
@@ -599,7 +518,11 @@ const Lecture = React.createClass({
                         <div className="modal-box">
                             <span className="modal-box-title">开讲人</span>
                             <div className="modal-box-detail">
-                                {this.state.addModal.username}
+                                <Input value={this.state.addModal.lecturer}
+                                    onChange={(e) => {
+                                        this.state.addModal.lecturer = e.target.value;
+                                        this.setState({ addModal: this.state.addModal });
+                                    }} />
                             </div>
                         </div>
                         <div className="modal-box">
@@ -680,4 +603,87 @@ const Lecture = React.createClass({
     }
 });
 
-export default Lecture;
+export default Lecture;
+
+    // loadUserData(pageNo) {
+    //     this.setState({
+    //         loading: true
+    //     });
+    //     $.ajax({
+    //         method: "get",
+    //         dataType: "json",
+    //         crossDomain: false,
+    //         url: globalConfig.context + '/api/admin/lecture/starAndExpertList',
+    //         data: {
+    //             pageNo: pageNo || 1,
+    //             pageSize: this.state.userPagination.pageSize,
+    //             number: this.state.searchUserNumber, //编号
+    //             username: this.state.searchUserName, //名称
+    //             engagedField: this.state.searchField ? this.state.searchField.join(',') : undefined,
+    //             professionalTitle: this.state.searchPfs,
+    //             workUnit: this.state.searchUnit
+    //         },
+    //         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,
+    //                         uid: thisdata.uid,
+    //                         engagedField: thisdata.engagedField ? thisdata.engagedField.split(',') : [],
+    //                         username: thisdata.username,
+    //                         professionalTitle: thisdata.professionalTitle,
+    //                         workUnit: thisdata.workUnit,
+    //                         number: thisdata.number,
+    //                         achievementNums: thisdata.achievementNums,
+    //                     });
+    //                 };
+    //                 this.state.userPagination.current = data.data.pageNo;
+    //                 this.state.userPagination.total = data.data.totalCount;
+    //             };
+    //             this.setState({
+    //                 userTableData: theArr,
+    //                 userPagination: this.state.userPagination
+    //             });
+    //         }.bind(this),
+    //     }).always(function () {
+    //         this.setState({
+    //             loading: false
+    //         });
+    //     }.bind(this));
+    // },
+
+                // <div className="admin-content-warp">
+                //     <div className="admin-content-header">专家明星列表</div>
+                //     <div className="admin-content-search">
+                //         <Input placeholder="编号" style={{ width: 100 }}
+                //             value={this.state.searchUserNumber}
+                //             onChange={(e) => { this.setState({ searchUserNumber: e.target.value }); }} />
+                //         <Input placeholder="专家明星名称" style={{ width: 160 }}
+                //             value={this.state.searchUserName}
+                //             onChange={(e) => { this.setState({ searchUserName: e.target.value }); }} />
+                //         <Cascader placeholder="请选择一个行业" style={{ width: 300 }}
+                //             options={techFieldList}
+                //             value={this.state.searchField}
+                //             onChange={(e) => { this.setState({ searchField: e }) }} />
+                //         <Input placeholder="职称名字" style={{ width: 160 }}
+                //             value={this.state.searchPfs}
+                //             onChange={(e) => { this.setState({ searchPfs: e.target.value }); }} />
+                //         <Input placeholder="工作单位" style={{ width: 160 }}
+                //             value={this.state.searchUnit}
+                //             onChange={(e) => { this.setState({ searchUnit: e.target.value }); }} />
+                //         <Button type="primary" onClick={() => { this.loadUserData() }}>搜索</Button>
+                //         <Button onClick={this.resetUser}>重置</Button>
+                //     </div>
+                //     <Spin spinning={this.state.loading}>
+                //         <Table columns={this.state.userColumns}
+                //             dataSource={this.state.userTableData}
+                //             pagination={this.state.userPagination}
+                //             onRowClick={this.userTableRowClick} />
+                //     </Spin>
+                // </div>

+ 29 - 1
js/component/manageCenter/idea/bigShot/star.jsx

@@ -346,6 +346,31 @@ const Star = React.createClass({
             });
         }.bind(this));
     },
+    cleanCache() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/star/cleanCache',
+            data: {
+                'cacheKey': 'big_shot_star_cache_key'
+            },
+            success: function (data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                } else {
+                    message.success('清除缓存成功!');
+                };
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     search() {
         this.loadData();
     },
@@ -382,7 +407,9 @@ const Star = React.createClass({
             <div className="admin-content" >
                 <div className="admin-content-title">科技明星管理</div>
                 <div className="admin-content-warp">
-                    <div className="admin-content-header">明星列表</div>
+                    <div className="admin-content-header">
+                        <span>明星列表</span>
+                    </div>
                     <div className="admin-content-search">
                         <Input placeholder="编号" style={{ width: 100 }}
                             value={this.state.searchNumber}
@@ -402,6 +429,7 @@ const Star = React.createClass({
                             onChange={(e) => { this.setState({ searchUnit: e.target.value }); }} />
                         <Button type="primary" onClick={this.search}>搜索</Button>
                         <Button onClick={this.reset}>重置</Button>
+                        <Button type="primary" onClick={() => { this.cleanCache(); }}>清除缓存</Button>
                     </div>
                     <Spin spinning={this.state.loading}>
                         <Table columns={this.state.columns}

+ 8 - 0
js/component/manageCenter/idea/content.jsx

@@ -93,6 +93,14 @@ class Content extends Component {
                     });
                 });
                 break;
+            case 'activityUserList':
+                require.ensure([], () => {
+                    const ActivityUserList = require('./activity/activityUserList').default;
+                    this.setState({
+                        component: <ActivityUserList />
+                    });
+                });
+                break;
         };
         window.location.hash = key;
     }

+ 5 - 2
js/component/manageCenter/idea/leftTab.jsx

@@ -12,8 +12,8 @@ const LeftTab = React.createClass({
             subKey: 'sub1',
             keyList: [
                 { key: 'sub1', value: ['star', 'lecture'] },
-                { key: 'sub2', value: ['flash', 'localPolicy', 'nationalPolicy', 'contact'] },
-                { key: 'sub3', value: ['activity'] },
+                { key: 'sub2', value: ['flash', 'localPolicy', 'nationalPolicy', 'contact','jitao'] },
+                { key: 'sub3', value: ['activity','activityUserList'] },
                 { key: 'sub10', value: ['banner'] }
             ]
         };
@@ -75,6 +75,9 @@ const LeftTab = React.createClass({
                     <Menu.Item key="activity">
                         活动圈
                     </Menu.Item>
+                    <Menu.Item key="activityUserList">
+                        报名用户列表
+                    </Menu.Item>
                 </SubMenu>
                 <SubMenu key="sub10" title={<span>广告图</span>}>
                     <Menu.Item key="banner">

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

@@ -33,7 +33,7 @@ const Avatar = React.createClass({
                 name={this.props.name}
                 showUploadList={false}
                 action={globalConfig.context + "/api/admin/news/upload"}
-                data={{ 'sign':'news_title_picture' }}
+                data={{ 'sign': 'news_title_picture' }}
                 beforeUpload={beforeUpload}
                 onChange={this.handleChange} >
                 {
@@ -291,6 +291,31 @@ const News = React.createClass({
         this.state.searchHot = undefined;
         this.loadData();
     },
+    cleanCache(sign) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/news/cleanCache',
+            data: {
+                'cacheKey': sign
+            },
+            success: function (data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                } else {
+                    message.success('清除缓存成功!');
+                };
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     render() {
         const rowSelection = {
             selectedRowKeys: this.state.selectedRowKeys,
@@ -357,6 +382,9 @@ const News = React.createClass({
                         <Button type='danger' disabled={!hasSelected} onClick={this.delectRow}>
                             删除<Icon type="minus" />
                         </Button>
+                        <Button type="primary" onClick={() => { this.cleanCache('news_list_cache_key'); }}>清除策源地缓存</Button>
+                        <Button type="primary" onClick={() => { this.cleanCache('news_portal_list_cache_key'); }}>清除列表页缓存</Button>
+                        {this.props.newsType == 2 || this.props.newsType == 3 ? <Button type="primary" onClick={() => { this.cleanCache('news_index_list_cache_key'); }}>清除首页缓存</Button> : <div></div>}
                     </div>
                     <Spin spinning={this.state.loading}>
                         <Table className="no-all-select" columns={this.state.columns}
@@ -447,7 +475,7 @@ const News = React.createClass({
                                         }} />
                                 </div>
                             </div>
-                            <div className="modal-box news-box">
+                            {this.props.newsType == 2 || this.props.newsType == 3 ? <div className="modal-box news-box">
                                 <span className="modal-box-title">发布在首页</span>
                                 <div className="modal-box-detail">
                                     <Radio.Group value={this.state.RowData.hot} onChange={(e) => {
@@ -458,7 +486,7 @@ const News = React.createClass({
                                         <Radio value={1}>是</Radio>
                                     </Radio.Group>
                                 </div>
-                            </div>
+                            </div> : <div></div>}
                         </div>
                         <div className="modal-box">
                             <span className="modal-box-title">新闻内容</span>