Browse Source

Merge branch 'master' of https://git.coding.net/aft/AFT-WEB

liting2017 7 years ago
parent
commit
f15849fcbb

+ 20 - 1
js/component/dataDic.js

@@ -1734,7 +1734,26 @@ module.exports = {
 	        key: "付款"
 	    }
     ],
-     //接口类型
+    //科技政策分类
+    policy:[
+	    {
+	        value: "1",
+	        key: "科技快讯"
+	    }, {
+	        value: "2",
+	        key: "交易问题"
+	    }, {
+	        value: "3",
+	        key: "技淘动态"
+	    }, {
+	        value: "4",
+	        key: "国家政策"
+	    }, {
+	        value: "5",
+	        key: "地方政策"
+	    }
+    ],
+    //接口类型
     urlType:[
 	    {
 	        value: "0",

+ 66 - 1
js/component/manageCenter/idea/content.jsx

@@ -112,13 +112,78 @@ class Content extends Component {
                 });
                 break;
             //新增科技政策
+            case 'techPolicyManage': //科技政策管理
+                require.ensure([], () => {
+                    const Manage = require('./policy/manage').default;
+                    this.setState({
+                        component: <Manage />,
+                    });
+                });
+                break;
+            case 'techPolicyAudit': //科技政策审核
+                require.ensure([], () => {
+                    const Module = require('../module').default;
+                    this.setState({
+                        component: <Module />,
+                    });
+                });
+                break;
+            case 'techPolicyPublish': //科技政策发布
+                require.ensure([], () => {
+                    const Module = require('../module').default;
+                    this.setState({
+                        component: <Module />,
+                    });
+                });
+                break; 
+            case 'techPolicyQuery': //科技政策查询
+                require.ensure([], () => {
+                    const Inquiry = require('./policy/inquiry').default;
+                    this.setState({
+                        component: <Inquiry />,
+                    });
+                });
+                break;
+            //科技活动   
+            case 'techActivityManage': //科技政策管理
+                require.ensure([], () => {
+                    const Module = require('../module').default;
+                    this.setState({
+                        component: <Module />,
+                    });
+                });
+                break;
+            case 'techActivityAudit': //科技政策审核
+                require.ensure([], () => {
+                    const Module = require('../module').default;
+                    this.setState({
+                        component: <Module />,
+                    });
+                });
+                break;
+            case 'techActivityPublish': //科技政策发布
+                require.ensure([], () => {
+                    const Module = require('../module').default;
+                    this.setState({
+                        component: <Module />,
+                    });
+                });
+                break; 
+            case 'techActivityQuery': //科技政策查询
+                require.ensure([], () => {
+                    const Module = require('../module').default;
+                    this.setState({
+                        component: <Module />,
+                    });
+                });
+                break;
             default:
             require.ensure([], () => {
                 const Module = require('../module').default;
                 this.setState({
                     component:<Module />	    
                 	});
-                });  
+               });  
         };
         window.location.hash = key;
     }

+ 2 - 0
js/component/manageCenter/idea/content.less

@@ -116,3 +116,5 @@
 .jmrhFlag{margin-right: 15px;}
 .provin{width: 100px;height: 28px;line-height: 28px;border-radius: 4px;border-color: #d9d9d9;padding:4px 3px;transition: all .5s;}
 .provin:focus{outline: none;box-shadow: 0px 0px 6px #80b9ff;border-color: #80b9ff;}
+
+.manage-content .content-right{background-color:#fff;}

+ 530 - 0
js/component/manageCenter/idea/policy/inquiry.jsx

@@ -0,0 +1,530 @@
+import React from 'react';
+import '../../leftTab.less';
+import ReactDom from 'react-dom';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import Editors from '../../../richTextEditors'
+import '../content.less';
+import moment from 'moment';
+import { citySelect,provinceList,areaSelect,provinceSelect,addressList} from '../../../NewDicProvinceList';
+import { Form,Radio, Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker, Modal, Upload,Popconfirm,AutoComplete,Tabs,Checkbox,Tree,Cascader} from 'antd';
+import {patternOrganization,conditionOrganization,intentionalService,messageType,designatedObjects,socialAttributeS,industry,socialAttribute,industryS,designatedObjectse,auditStatusL} from '../../../dataDic.js';
+import {beforeUpload, getBase64,getprovince} from '../../../tools.js';
+const TabPane = Tabs.TabPane;
+const TreeNodet = Tree.TreeNode;
+const CheckboxGroup = Checkbox.Group;
+const Avatar = React.createClass({
+    getInitialState() {
+        return {
+            imageUrl: ''
+        }
+    },
+    handleChange(info) {
+        if (info.file.status === 'done') {
+            // Get this url from response in real world.
+            getBase64(info.file.originFileObj, imageUrl => this.setState({ imageUrl }));
+            this.props.urlData(info.file.response.data);
+        }
+    },
+    componentWillReceiveProps(nextProps) {
+        if (this.props.visible && !nextProps.visible) {
+            this.state.imageUrl = null;
+        };
+    },
+    render() {
+        const imageUrl = this.state.imageUrl;
+        return (
+            <Upload
+                className="avatar-uploader"
+                name={this.props.name}
+                showUploadList={false}
+                action={globalConfig.context + "/api/admin/news/upload"}
+                data={{ 'sign': 'news_title_picture' }}
+                beforeUpload={beforeUpload}
+                onChange={this.handleChange} >
+                {
+                    (imageUrl || this.props.imageUrl) ?
+                        <img src={imageUrl || this.props.imageUrl} role="presentation" id={this.props.name} /> :
+                        <Icon type="plus" className="avatar-uploader-trigger" />
+                }
+            </Upload>
+        );
+    }
+});
+const Inquiry=React.createClass({
+	loadData(pageNo, theType) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/news/list',
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.pagination.pageSize,
+                type: theType || 1, //新闻类型
+                title: this.state.searchTitle,
+                author: this.state.searchAuthor,
+                startCreateTime: this.state.startDate, //新闻开始时间 yyyy-MM-dd
+                endCreateTime: this.state.endDate, //新闻结束时间 yyyy-MM-dd
+                source: this.state.searchSource,
+                hot: this.state.searchHot, //是否放在首页                    
+            },
+            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 ? thisdata.id.toString() : null,
+                            createTime: thisdata.createTime,
+                            editTime: thisdata.editTime,
+                            title: thisdata.title,
+                            titleImg: thisdata.titleImg,
+                            author: thisdata.author,
+                            type: thisdata.type,
+                            hot: thisdata.hot,                                                       
+                            source: thisdata.source,
+                            sourceUrl: thisdata.sourceUrl,
+                            summary: thisdata.summary,
+                            content: thisdata.content,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate,
+                            
+                        });
+                    };
+                    this.state.pagination.current = data.data.pageNo;
+                    this.state.pagination.total = data.data.totalCount;
+                };
+                this.setState({
+                    tableData: theArr,
+                    pagination: this.state.pagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    loadDetailData() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/news/detail',
+            data: {
+                id: this.state.RowData.id //新闻主键ID(数字类型,非字符串)
+            },
+            success: function (data) {            	
+                let theObj = {};
+                if (!data.data) {               	      			
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }                   
+                } else {
+                    theObj = data.data;  
+                  if(theObj.provinceId==null||theObj.provinceId==''){
+                 	theObj.provinceId=11
+                 }
+                };
+                this.setState({
+                    RowData: theObj,
+                    
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            loading: false,
+            visible: false,
+            callnub:'1',
+            selectedRowKeys: [],
+            selectedRows: [],
+            keysObj: {},
+            RowData: {},
+            pagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.loadData(page,this.state.callnub);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            columns: [
+                {
+                    title: '标题',
+                    dataIndex: 'title',
+                    key: 'title',
+                    width: '20%'
+                }, {
+                    title: '发布时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate',
+                }, {
+                    title: '作者',
+                    dataIndex: 'author',
+                    key: 'author',
+                }, {
+                    title: '来源',
+                    dataIndex: 'source',
+                    key: 'source',
+                }, {
+                    title: '简介',
+                    dataIndex: 'summary',
+                    key: 'summary',
+                    width: '50%'
+                }
+            ],
+            list:provinceList,
+            tableData: []
+        };
+    },
+    tableRowClick(record, index) {
+        this.state.RowData = record;
+        this.loadDetailData();
+        this.setState({
+            visible: true
+        });
+    },
+    componentWillMount() {
+        this.loadData(1,1);
+    },
+    componentWillReceiveProps(nextProps) {
+        if (this.props.newsType != nextProps.newsType) {
+            this.state.searchTitle = undefined;
+            this.state.searchAuthor = undefined;
+            this.state.startDate = undefined;
+            this.state.endDate = undefined;
+            this.state.searchSource = undefined;
+            this.state.searchHot = undefined;         
+            this.loadData(1, nextProps.newsType);
+        };
+    },
+    callback(e) {
+		this.setState({
+			callnub: e,
+		})
+		if(e == 1) {
+			this.setState({
+				
+			})
+			this.reset();
+		}
+		if(e == 2) {
+			this.setState({
+				
+			})
+			this.reset();
+		}
+		if(e == 3) {
+			this.setState({
+				
+			})
+			this.reset();
+		}
+		if(e == 4) {
+			this.setState({
+				
+			})
+			this.reset();
+		}
+		if(e == 5) {
+			this.setState({
+				
+			})
+			this.reset();
+		}
+	},
+	submit() {
+        if (!this.state.RowData.title) {
+            message.warning('必须填写一个标题!');
+            return;
+        };
+        if (!this.state.RowData.createTimeFormattedDate) {
+            message.warning('必须选择一个发布时间!');
+            return;
+        };
+        if (!this.state.RowData.author) {
+            message.warning('必须填写一个作者!');
+            return;
+        };
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + (this.state.RowData.id ? '/api/admin/news/update' : '/api/admin/news/add'),
+            data: {
+                id: this.state.RowData.id || null, //主键,如果不填主键则为新增记录,填主键则为更新
+                title: this.state.RowData.title,
+                titleImg: this.state.RowData.titleImg,
+                author: this.state.RowData.author,
+                type: this.state.callnub,
+                hot: this.state.RowData.hot || 0,          
+                source: this.state.RowData.source,
+                sourceUrl: this.state.RowData.sourceUrl,
+                summary: this.state.RowData.summary,
+                content: this.state.RowData.content,
+                createTimeFormattedDate: this.state.RowData.createTimeFormattedDate,                   
+                provinceId: this.state.RowData.provinceId, 
+            },                      
+            success: function (data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                } else {
+                    message.success('保存成功!');
+                    this.setState({ visible: false });
+                    this.loadData(1,this.state.callnub);
+                };
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+	delectRow() {
+        let deletedIds = [];
+        for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
+            let rowItem = this.state.selectedRows[idx];
+            if (rowItem.id) {
+                deletedIds.push(rowItem.id)
+            };
+        };
+        this.setState({
+            selectedRowKeys: [],
+            loading: deletedIds.length > 0
+        });
+        $.ajax({
+            method: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/news/delete",
+            data: {
+                ids: deletedIds
+            }
+        }).done(function (data) {
+            if (data.error && data.error.length) {
+                message.warning(data.error[0].message);
+            } else {
+                message.success('删除成功!');
+            };
+            this.setState({
+                loading: false,
+            });
+            this.loadData(1,this.state.callnub);
+        }.bind(this));
+    },
+    reset() {
+        this.state.searchTitle = undefined;
+        this.state.searchAuthor = undefined;
+        this.state.startDate = undefined;
+        this.state.endDate = undefined;
+        this.state.searchSource = undefined;
+        this.state.searchHot = undefined;
+        this.loadData(1,this.state.callnub);
+    },
+     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,
+            onChange: (selectedRowKeys, selectedRows) => {
+                this.setState({
+                    selectedRows: selectedRows.slice(-1),
+                    selectedRowKeys: selectedRowKeys.slice(-1)
+                });
+            }
+        };
+        const hasSelected = this.state.selectedRowKeys.length > 0;
+        return(
+			 <div className="admin-content" >
+				 <div className="admin-content-search">
+				 	
+	                <Input placeholder="标题" style={{ width: 200 ,marginBottom:'10px',marginRight:'10px'}}
+	                    value={this.state.searchTitle}
+	                    onChange={(e) => { this.setState({ searchTitle: e.target.value }); }} />
+	                <Input placeholder="作者" style={{ width: 100 ,marginRight:'10px'}}
+	                    value={this.state.searchAuthor}
+	                    onChange={(e) => { this.setState({ searchAuthor: e.target.value }); }} />
+	                <Input placeholder="来源" style={{ width: 100 ,marginRight:'10px'}}
+	                    value={this.state.searchSource}
+	                    onChange={(e) => { this.setState({ searchSource: e.target.value }); }} />                                                   
+	                {this.props.newsType == 2 || this.props.newsType == 3 ? <Select placeholder="显示在首页"
+	                    style={{ width: 100,marginRight:'10px' }}
+	                    value={this.state.searchHot}
+	                    onChange={(e) => { this.setState({ searchHot: e }) }}>
+	                    <Select.Option value="0" >不显示</Select.Option>
+	                    <Select.Option value="1" >显示</Select.Option>
+	                </Select> : <span></span>}
+	                <span style={{marginRight:'10px'}}>发布时间</span>
+	                <DatePicker style={{ width: 110,marginRight:'10px' }}
+	                    format="YYYY-MM-DD"
+	                    placeholder="选择开始时间"
+	                    value={this.state.startDate ? moment(this.state.startDate, "YYYY-MM-DD") : undefined}
+	                    onChange={(t, str) => {
+	                        this.setState({ startDate: str });
+	                    }} />
+	                <span style={{marginRight:'10px'}}>到</span>
+	                <DatePicker style={{ width: 110 ,marginRight:'10px'}}
+	                    format="YYYY-MM-DD"
+	                    placeholder="选择结束时间"
+	                    value={this.state.endDate ? moment(this.state.endDate, "YYYY-MM-DD") : undefined}
+	                    onChange={(t, str) => {
+	                        this.setState({ endDate: str });
+	                    }} />
+	                <Button type="primary" onClick={() => { this.loadData(1,this.state.callnub) }} style={{marginRight:'10px'}}>搜索</Button>
+	                <Button onClick={this.reset} style={{marginRight:'10px'}}>重置</Button>
+	                
+	            </div>
+				<div className="clearfix" style={{marginLeft:'20px'}}>
+				    <Tabs onChange={this.callback} type="card" activeKey={this.state.callnub} style={{paddingLeft:'15px',paddingRight:'15px',marginRight:'20px'}}>
+				         <TabPane tab="科技快讯" key="1" ></TabPane>
+						 <TabPane tab="交易问题" key="2"></TabPane>
+						 <TabPane tab="技淘动态" key="3"></TabPane>
+						 <TabPane tab="国家政策" key="4"></TabPane>
+						 <TabPane tab="地方政策" key="5"></TabPane>
+				    </Tabs>
+				</div>
+				<Spin spinning={this.state.loading}>
+                    <Table className="no-all-select" columns={this.state.columns}
+                        dataSource={this.state.tableData}
+                        pagination={this.state.pagination}
+                        rowSelection={rowSelection}
+                        onRowClick={this.tableRowClick} />
+                </Spin>
+                <Modal title="新闻详情" width={1000} className="news-modal"
+                    visible={this.state.visible}
+                    maskClosable={false}
+                    footer={null}
+                    afterClose={() => { this.state.RowData = {}; }}
+                    onCancel={() => { this.setState({ visible: false }) }} >
+                    <Spin spinning={this.state.loading}>
+                        <div className="clearfix">
+                            <div className="modal-box">
+                                <span className="modal-box-title">新闻标题 : </span>
+                                <div className="modal-box-detail">
+                                	<span>{this.state.RowData.title}</span>
+                                </div>
+                            </div>
+                            <div className="modal-box">
+                                <span className="modal-box-title">简介 : </span>
+                                <div className="modal-box-detail">
+                                    <span>{this.state.RowData.summary}</span>
+                                    
+                                </div>
+                            </div>
+                            <div className="modal-box">
+                                <span className="modal-box-title">来源:</span>
+                                <div className="modal-box-detail">
+                                	<span>{this.state.RowData.source}</span>
+                                    
+                                </div>
+                            </div>
+                            <div className="modal-box">
+                                <span className="modal-box-title">来源链接 : </span>
+                                <div className="modal-box-detail">
+                                	<span>{this.state.RowData.sourceUrl}</span>
+                                    
+                                </div>
+                            </div>
+                            <div className="modal-box" style={{ position: 'absolute', right: '0', width: '480px' }}>
+                                <span className="modal-box-title">标题图片</span>
+                                <div className="modal-box-detail clearfix" style={{ width: '360px' }}>
+                                    <Avatar sign={'news_title_picture'} visible={this.state.visible}
+                                        imageUrl={this.state.RowData.titleImg ? (globalConfig.avatarHost + "/upload" + this.state.RowData.titleImg) : null}
+                                        urlData={(url) => { this.state.RowData.titleImg = url }} />
+                                </div>
+                            </div>
+                        </div>
+                        <div className="clearfix">
+                            <div className="modal-box news-box">
+                                <span className="modal-box-title">作者 : </span>
+                                <div className="modal-box-detail">
+                                	<span>{this.state.RowData.author}</span>
+                                    
+                                </div>
+                            </div>
+                            <div className="modal-box news-box">
+                                <span className="modal-box-title">发布时间 : </span>
+                                <div className="modal-box-detail">
+                                	<span>{this.state.RowData.createTimeFormattedDate}</span>
+                                    
+                                </div>
+                            </div>   	                           
+                            {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) => {
+                                        this.state.RowData.hot = e.target.value;
+                                        this.setState({ RowData: this.state.RowData });
+                                    }} >
+                                        <Radio value={0}>否</Radio>
+                                        <Radio value={1}>是</Radio>
+                                    </Radio.Group>
+                                </div>
+                            </div> : <div></div>}
+                        </div>
+                        <div className="modal-box">
+                            <span className="modal-box-title">选择省份 : </span> 
+                            <span>{getprovince(this.state.RowData.provinceId)}</span>
+                            
+                        </div>
+                        <Editors textContent={this.state.RowData.content}
+                            uploadUrl={'/api/admin/news/upload'}
+                            uploadSign={'news_content_picture'}
+                            handleRichText={(value) => { this.state.RowData.content = value; }}
+                            visible={this.state.visible} readonly/>
+                        
+                    </Spin>
+                </Modal>
+			</div>
+		)
+	}
+})
+
+export default Inquiry;

+ 600 - 0
js/component/manageCenter/idea/policy/manage.jsx

@@ -0,0 +1,600 @@
+import React from 'react';
+import '../../leftTab.less';
+import ReactDom from 'react-dom';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import Editors from '../../../richTextEditors'
+import '../content.less';
+import moment from 'moment';
+import { citySelect,provinceList,areaSelect,provinceSelect,addressList} from '../../../NewDicProvinceList';
+import { Form,Radio, Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker, Modal, Upload,Popconfirm,AutoComplete,Tabs,Checkbox,Tree,Cascader} from 'antd';
+import {policy} from '../../../dataDic.js';
+import {beforeUpload, getBase64} from '../../../tools.js';
+const TabPane = Tabs.TabPane;
+const TreeNodet = Tree.TreeNode;
+const CheckboxGroup = Checkbox.Group;
+const Avatar = React.createClass({
+    getInitialState() {
+        return {
+            imageUrl: ''
+        }
+    },
+    handleChange(info) {
+        if (info.file.status === 'done') {
+            // Get this url from response in real world.
+            getBase64(info.file.originFileObj, imageUrl => this.setState({ imageUrl }));
+            this.props.urlData(info.file.response.data);
+        }
+    },
+    componentWillReceiveProps(nextProps) {
+        if (this.props.visible && !nextProps.visible) {
+            this.state.imageUrl = null;
+        };
+    },
+    render() {
+        const imageUrl = this.state.imageUrl;
+        return (
+            <Upload
+                className="avatar-uploader"
+                name={this.props.name}
+                showUploadList={false}
+                action={globalConfig.context + "/api/admin/news/upload"}
+                data={{ 'sign': 'news_title_picture' }}
+                beforeUpload={beforeUpload}
+                onChange={this.handleChange} >
+                {
+                    (imageUrl || this.props.imageUrl) ?
+                        <img src={imageUrl || this.props.imageUrl} role="presentation" id={this.props.name} /> :
+                        <Icon type="plus" className="avatar-uploader-trigger" />
+                }
+            </Upload>
+        );
+    }
+});
+const Manage=React.createClass({
+	loadData(pageNo, theType) {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/news/list',
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.pagination.pageSize,
+                type: theType || 1, //新闻类型
+                title: this.state.searchTitle,
+                author: this.state.searchAuthor,
+                startCreateTime: this.state.startDate, //新闻开始时间 yyyy-MM-dd
+                endCreateTime: this.state.endDate, //新闻结束时间 yyyy-MM-dd
+                source: this.state.searchSource,
+                hot: this.state.searchHot, //是否放在首页                    
+            },
+            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 ? thisdata.id.toString() : null,
+                            createTime: thisdata.createTime,
+                            editTime: thisdata.editTime,
+                            title: thisdata.title,
+                            titleImg: thisdata.titleImg,
+                            author: thisdata.author,
+                            type: thisdata.type,
+                            callnubs:thisdata.type,
+                            hot: thisdata.hot,                                                       
+                            source: thisdata.source,
+                            sourceUrl: thisdata.sourceUrl,
+                            summary: thisdata.summary,
+                            content: thisdata.content,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate,
+                            
+                        });
+                    };
+                    this.state.pagination.current = data.data.pageNo;
+                    this.state.pagination.total = data.data.totalCount;
+                };
+                this.setState({
+                    tableData: theArr,
+                    pagination: this.state.pagination,
+                    
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    loadDetailData() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/news/detail',
+            data: {
+                id: this.state.RowData.id //新闻主键ID(数字类型,非字符串)
+            },
+            success: function (data) {            	
+                let theObj = {};
+                if (!data.data) {               	      			
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }                   
+                } else {
+                    theObj = data.data;  
+                  if(theObj.provinceId==null||theObj.provinceId==''){
+                 	theObj.provinceId=11
+                 }
+                };
+                this.setState({
+                    RowData: theObj,
+                    callnubs:theObj.type.toString(),
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            loading: false,
+            visible: false,
+            callnub:'1',
+            selectedRowKeys: [],
+            selectedRows: [],
+            keysObj: {},
+            RowData: {},
+            pagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.loadData(page,this.state.callnub);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            columns: [
+                {
+                    title: '标题',
+                    dataIndex: 'title',
+                    key: 'title',
+                    width: '20%'
+                }, {
+                    title: '发布时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate',
+                }, {
+                    title: '作者',
+                    dataIndex: 'author',
+                    key: 'author',
+                }, {
+                    title: '来源',
+                    dataIndex: 'source',
+                    key: 'source',
+                }, {
+                    title: '简介',
+                    dataIndex: 'summary',
+                    key: 'summary',
+                    width: '50%'
+                }
+            ],
+            list:provinceList,
+            tableData: []
+        };
+    },
+    tableRowClick(record, index) {
+        this.state.RowData = record;
+        this.loadDetailData();
+        this.setState({
+            visible: true
+        });
+    },
+    componentWillMount() {
+        this.loadData(1,1);
+    },
+    componentWillReceiveProps(nextProps) {
+        if (this.props.newsType != nextProps.newsType) {
+            this.state.searchTitle = undefined;
+            this.state.searchAuthor = undefined;
+            this.state.startDate = undefined;
+            this.state.endDate = undefined;
+            this.state.searchSource = undefined;
+            this.state.searchHot = undefined;         
+            this.loadData(1, nextProps.newsType);
+        };
+    },
+    callback(e) {
+		this.setState({
+			callnub: e,
+		})
+		if(e == 1) {
+			this.setState({
+				
+			})
+			this.resets();
+			this.loadData(1,1);
+		}
+		if(e == 2) {
+			this.setState({
+				
+			})
+			this.resets();
+			this.loadData(1,2);
+		}
+		if(e == 3) {
+			this.setState({
+				
+			})
+			this.resets();
+			this.loadData(1,3);
+		}
+		if(e == 4) {
+			this.setState({
+				
+			})
+			this.resets();
+			this.loadData(1,4);
+		}
+		if(e == 5) {
+			this.setState({
+				
+			})
+			this.resets();
+			this.loadData(1,5);
+		}
+	},
+	submit() {
+        if (!this.state.RowData.title) {
+            message.warning('必须填写一个标题!');
+            return;
+        };
+        if (!this.state.RowData.createTimeFormattedDate) {
+            message.warning('必须选择一个发布时间!');
+            return;
+        };
+        if (!this.state.RowData.author) {
+            message.warning('必须填写一个作者!');
+            return;
+        };
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + (this.state.RowData.id ? '/api/admin/news/update' : '/api/admin/news/add'),
+            data: {
+                id: this.state.RowData.id || null, //主键,如果不填主键则为新增记录,填主键则为更新
+                title: this.state.RowData.title,
+                titleImg: this.state.RowData.titleImg,
+                author: this.state.RowData.author,
+                type: this.state.callnubs,
+                hot: this.state.RowData.hot || 0,          
+                source: this.state.RowData.source,
+                sourceUrl: this.state.RowData.sourceUrl,
+                summary: this.state.RowData.summary,
+                content: this.state.RowData.content,
+                createTimeFormattedDate: this.state.RowData.createTimeFormattedDate,                   
+                provinceId: this.state.RowData.provinceId, 
+            },                      
+            success: function (data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                } else {
+                    message.success('保存成功!');
+                    this.setState({ visible: false });
+                    this.loadData(1,this.state.callnub);
+                };
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+	delectRow() {
+        let deletedIds = [];
+        for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
+            let rowItem = this.state.selectedRows[idx];
+            if (rowItem.id) {
+                deletedIds.push(rowItem.id)
+            };
+        };
+        this.setState({
+            selectedRowKeys: [],
+            loading: deletedIds.length > 0
+        });
+        $.ajax({
+            method: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/news/delete",
+            data: {
+                ids: deletedIds
+            }
+        }).done(function (data) {
+            if (data.error && data.error.length) {
+                message.warning(data.error[0].message);
+            } else {
+                message.success('删除成功!');
+            };
+            this.setState({
+                loading: false,
+            });
+            this.loadData(1,this.state.callnub);
+        }.bind(this));
+    },
+    reset() {
+        this.state.searchTitle = undefined;
+        this.state.searchAuthor = undefined;
+        this.state.startDate = undefined;
+        this.state.endDate = undefined;
+        this.state.searchSource = undefined;
+        this.state.searchHot = undefined;
+        this.loadData(1,this.state.callnub);
+    },
+    resets() {
+        this.state.searchTitle = undefined;
+        this.state.searchAuthor = undefined;
+        this.state.startDate = undefined;
+        this.state.endDate = undefined;
+        this.state.searchSource = undefined;
+        this.state.searchHot = undefined;
+     },
+
+     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,
+            onChange: (selectedRowKeys, selectedRows) => {
+                this.setState({
+                    selectedRows: selectedRows.slice(-1),
+                    selectedRowKeys: selectedRowKeys.slice(-1)
+                });
+            }
+        };
+        const hasSelected = this.state.selectedRowKeys.length > 0;
+        return(
+			 <div className="admin-content" >
+				 <div className="admin-content-search">
+				 	<Button type="primary" style={{ float: 'right' }}
+                        onClick={() => { this.setState({ RowData: {}, visible: true }) }}>
+                        添加<Icon type="plus" />
+                    </Button>
+	                <Input placeholder="标题" style={{ width: 200 ,marginBottom:'10px',marginRight:'10px'}}
+	                    value={this.state.searchTitle}
+	                    onChange={(e) => { this.setState({ searchTitle: e.target.value }); }} />
+	                <Input placeholder="作者" style={{ width: 100 ,marginRight:'10px'}}
+	                    value={this.state.searchAuthor}
+	                    onChange={(e) => { this.setState({ searchAuthor: e.target.value }); }} />
+	                <Input placeholder="来源" style={{ width: 100 ,marginRight:'10px'}}
+	                    value={this.state.searchSource}
+	                    onChange={(e) => { this.setState({ searchSource: e.target.value }); }} />                                                   
+	                {this.props.newsType == 2 || this.props.newsType == 3 ? <Select placeholder="显示在首页"
+	                    style={{ width: 100,marginRight:'10px' }}
+	                    value={this.state.searchHot}
+	                    onChange={(e) => { this.setState({ searchHot: e }) }}>
+	                    <Select.Option value="0" >不显示</Select.Option>
+	                    <Select.Option value="1" >显示</Select.Option>
+	                </Select> : <span></span>}
+	                <span style={{marginRight:'10px'}}>发布时间</span>
+	                <DatePicker style={{ width: 110,marginRight:'10px' }}
+	                    format="YYYY-MM-DD"
+	                    placeholder="选择开始时间"
+	                    value={this.state.startDate ? moment(this.state.startDate, "YYYY-MM-DD") : undefined}
+	                    onChange={(t, str) => {
+	                        this.setState({ startDate: str });
+	                    }} />
+	                <span style={{marginRight:'10px'}}>到</span>
+	                <DatePicker style={{ width: 110 ,marginRight:'10px'}}
+	                    format="YYYY-MM-DD"
+	                    placeholder="选择结束时间"
+	                    value={this.state.endDate ? moment(this.state.endDate, "YYYY-MM-DD") : undefined}
+	                    onChange={(t, str) => {
+	                        this.setState({ endDate: str });
+	                    }} />
+	                <Button type="primary" onClick={() => { this.loadData(1,this.state.callnub) }} style={{marginRight:'10px'}}>搜索</Button>
+	                <Button onClick={this.reset} style={{marginRight:'10px'}}>重置</Button>
+	                <Button type='danger' disabled={!hasSelected} onClick={this.delectRow} style={{marginRight:'10px'}}>
+	                    删除<Icon type="minus" />
+	                </Button>
+	            </div>
+				<div className="clearfix" style={{marginLeft:'20px'}}>
+				    <Tabs onChange={this.callback} type="card" activeKey={this.state.callnub} style={{paddingLeft:'15px',paddingRight:'15px',marginRight:'20px'}}>
+				         <TabPane tab="科技快讯" key="1" ></TabPane>
+						 <TabPane tab="交易问题" key="2"></TabPane>
+						 <TabPane tab="技淘动态" key="3"></TabPane>
+						 <TabPane tab="国家政策" key="4"></TabPane>
+						 <TabPane tab="地方政策" key="5"></TabPane>
+				    </Tabs>
+				</div>
+				<Spin spinning={this.state.loading}>
+                    <Table className="no-all-select" columns={this.state.columns}
+                        dataSource={this.state.tableData}
+                        pagination={this.state.pagination}
+                        rowSelection={rowSelection}
+                        onRowClick={this.tableRowClick} />
+                </Spin>
+                <Modal title="新闻详情" width={1000} className="news-modal"
+                    visible={this.state.visible}
+                    maskClosable={false}
+                    footer={null}
+                    afterClose={() => { this.state.RowData = {}; }}
+                    onCancel={() => { this.setState({ visible: false }) }} >
+                    <Spin spinning={this.state.loading}>
+                        <div className="clearfix">
+                            <div className="modal-box">
+                                <span className="modal-box-title">新闻标题</span>
+                                <div className="modal-box-detail">
+                                    <Input value={this.state.RowData.title}
+                                        onChange={(e) => {
+                                            this.state.RowData.title = e.target.value;
+                                            this.setState({ RowData: this.state.RowData });
+                                        }} />
+                                </div>
+                            </div>
+                            <div className="modal-box">
+                                <span className="modal-box-title">简介</span>
+                                <div className="modal-box-detail">
+                                    <Input type="textarea" rows={3} value={this.state.RowData.summary}
+                                        onChange={(e) => {
+                                            this.state.RowData.summary = e.target.value;
+                                            this.setState({ RowData: this.state.RowData });
+                                        }} />
+                                </div>
+                            </div>
+                            <div className="modal-box">
+                                <span className="modal-box-title">来源</span>
+                                <div className="modal-box-detail">
+                                    <Input value={this.state.RowData.source}
+                                        onChange={(e) => {
+                                            this.state.RowData.source = e.target.value;
+                                            this.setState({ RowData: this.state.RowData });
+                                        }} />
+                                </div>
+                            </div>
+                            <div className="modal-box">
+                                <span className="modal-box-title">来源链接</span>
+                                <div className="modal-box-detail">
+                                    <Input value={this.state.RowData.sourceUrl}
+                                        onChange={(e) => {
+                                            this.state.RowData.sourceUrl = e.target.value;
+                                            this.setState({ RowData: this.state.RowData });
+                                        }} />
+                                </div>
+                            </div>
+                            <div className="modal-box">
+                                <span className="modal-box-title">政策类别</span>
+                                <div className="modal-box-detail">
+                                   <Select placeholder="政策类别" value={this.state.callnubs} style={{width:'40%'}}
+		                                onChange={(e)=>{this.setState({callnubs:e})}}> 
+		                                {
+		                                    policy.map(function (item) {
+		                                        return <Select.Option key={item.value} >{item.key}</Select.Option>
+		                                    })
+		                                }
+		                              </Select>
+                                </div>
+                            </div>
+                            <div className="modal-box" style={{ position: 'absolute', right: '0', width: '480px' }}>
+                                <span className="modal-box-title">标题图片</span>
+                                <div className="modal-box-detail clearfix" style={{ width: '360px' }}>
+                                    <Avatar sign={'news_title_picture'} visible={this.state.visible}
+                                        imageUrl={this.state.RowData.titleImg ? (globalConfig.avatarHost + "/upload" + this.state.RowData.titleImg) : null}
+                                        urlData={(url) => { this.state.RowData.titleImg = url }} />
+                                </div>
+                            </div>
+                        </div>
+                        <div className="clearfix">
+                            <div className="modal-box news-box">
+                                <span className="modal-box-title">作者</span>
+                                <div className="modal-box-detail">
+                                    <Input value={this.state.RowData.author}
+                                        onChange={(e) => {
+                                            this.state.RowData.author = e.target.value;
+                                            this.setState({ RowData: this.state.RowData });
+                                        }} />
+                                </div>
+                            </div>
+                            <div className="modal-box news-box">
+                                <span className="modal-box-title">发布时间</span>
+                                <div className="modal-box-detail">
+                                    <DatePicker style={{ width: '120px' }}
+                                        format="YYYY-MM-DD"
+                                        placeholder="选择发布时间"
+                                        value={this.state.RowData.createTimeFormattedDate ? moment(this.state.RowData.createTimeFormattedDate, "YYYY-MM-DD") : undefined}
+                                        onChange={(t, str) => {
+                                            this.state.RowData.createTimeFormattedDate = str;
+                                            this.setState({ RowData: this.state.RowData});
+                                        }} />
+                                </div>
+                            </div>   	                           
+                            {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) => {
+                                        this.state.RowData.hot = e.target.value;
+                                        this.setState({ RowData: this.state.RowData });
+                                    }} >
+                                        <Radio value={0}>否</Radio>
+                                        <Radio value={1}>是</Radio>
+                                    </Radio.Group>
+                                </div>
+                            </div> : <div></div>}
+                        </div>
+                        <div className="modal-box">
+                            <span className="modal-box-title">选择省份</span> 
+                            <select  value={this.state.RowData.provinceId}  onChange={(e) => {
+	                                this.state.RowData.provinceId = e.target.value;
+	                                this.setState({RowData: this.state.RowData});
+	                            }} className="provin">
+						        {
+						          this.state.list.map(function(name){
+						            return (				            	
+						            	<option value={name.id} key={name.id} >{name.name}</option>				            	
+						            )
+						          })
+						        }
+						        
+				        </select>
+                        </div>
+                        <Editors textContent={this.state.RowData.content}
+                            uploadUrl={'/api/admin/news/upload'}
+                            uploadSign={'news_content_picture'}
+                            handleRichText={(value) => { this.state.RowData.content = value; }}
+                            visible={this.state.visible} />
+                        <div className="modal-box">
+                            <Button type="primary" onClick={this.submit}>提交</Button>
+                            <Button type="ghost" onClick={() => { this.setState({ visible: false }) }}>取消</Button>
+                        </div>
+                    </Spin>
+                </Modal>
+			</div>
+		)
+	}
+})
+
+export default Manage;

+ 97 - 3
js/component/manageCenter/set/business/businessCategory.jsx

@@ -94,6 +94,7 @@ const BusinessCategory=Form.create()(React.createClass({
                         theArr.push({
                             key: i,
                             id: thisdata.id,//品类ID
+                            sort:thisdata.sort,//品类序号
                             cid: thisdata.cid,//品类编号
                             cname: thisdata.cname,//品类名称
                             layer: thisdata.layer,//品类层级
@@ -137,6 +138,10 @@ const BusinessCategory=Form.create()(React.createClass({
             },
             columns: [
                 {
+                    title: '品类序号',
+                    dataIndex: 'sort',
+                    key: 'sort',
+                },{
                     title: '品类编号',
                     dataIndex: 'cid',
                     key: 'cid',
@@ -381,6 +386,7 @@ const BusinessCategory=Form.create()(React.createClass({
                          editSuperName:thisdata.superName,//上级品类
                          editlayer:thisdata.layer,//品类层级
                          editCid: thisdata.cid,//品类编号
+                         editSort: thisdata.sort,//品类序号
                          editCreateName:thisdata.createName,//创建人
                          editTime:thisdata.createTimeFormattedDate,//创建时间
                          orgCodeUrl: thisdata.varietiesLogo ? splitUrl(thisdata.varietiesLogo, ',', globalConfig.avatarHost + '/upload') : [],
@@ -394,6 +400,7 @@ const BusinessCategory=Form.create()(React.createClass({
                      editSuperId:thisdata.superId,//上级品类
                      editlayer:thisdata.layer,//品类层级
                      editCid: thisdata.cid,//品类编号
+                     editSort: thisdata.sort,//品类序号
                      editCreateName:thisdata.createName,//创建人
                      editTime:thisdata.createTimeFormattedDate,//创建时间
                      orgCodeUrl: thisdata.varietiesLogo ? splitUrl(thisdata.varietiesLogo, ',', globalConfig.avatarHost + '/upload') : [],
@@ -519,6 +526,82 @@ const BusinessCategory=Form.create()(React.createClass({
             this.selectSuperId();
         }.bind(this));
     },
+    //品类上移
+    upClick() {
+        let deletedIds = '';
+        let upSort = '';
+        for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
+            let rowItem = this.state.selectedRows[idx];
+            if (rowItem.id) {
+                deletedIds=rowItem.id;
+                upSort=rowItem.sort;
+            };
+        };
+        console.log(upSort);
+        console.log(deletedIds);
+        this.setState({
+            selectedRowKeys: [],
+            loading: deletedIds.length > 0
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/Varieties/locationChange",
+            data: {
+                id: deletedIds,
+                sort:upSort,
+                flag:'1',
+            }
+        }).done(function (data) {
+            if (!data.error.length) {
+                message.success('该品类已成功上移!');
+                this.setState({
+                    loading: false,
+                });
+            } else {
+                message.warning(data.error[0].message);
+            };
+            this.selectSuperId();
+        }.bind(this));
+    },
+    //品类下移
+    downClick() {
+        let deletedIds = '';
+        let upSort = '';
+        for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
+            let rowItem = this.state.selectedRows[idx];
+            if (rowItem.id) {
+                deletedIds=rowItem.id;
+                upSort=rowItem.sort;
+            };
+        };
+        this.setState({
+            selectedRowKeys: [],
+            loading: deletedIds.length > 0
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/Varieties/locationChange",
+            data: {
+                id: deletedIds,
+                sort:upSort,
+                flag:'0',
+            }
+        }).done(function (data) {
+            if (!data.error.length) {
+                message.success('该品类已成功下移!');
+                this.setState({
+                    loading: false,
+                });
+            } else {
+                message.warning(data.error[0].message);
+            };
+            this.selectSuperId();
+        }.bind(this));
+    },
     addClick() {
         this.state.RowData = {};
         this.addReset();
@@ -604,7 +687,7 @@ const BusinessCategory=Form.create()(React.createClass({
 	           			     </Button>
 						</Popconfirm>
 	                    <span style={{marginRight:'20px'}}>更多搜索    <Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
-	                    <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {display: 'inline-block'}}>
+	                    <div  style={this.state.searchMore ? { display: 'none' } : {display: 'inline-block'}}>
 	                    	<Select placeholder="品类层级"
 	                            style={{ width:'150px',marginRight:'10px' }}
 	                            value={this.state.layer}
@@ -622,7 +705,9 @@ const BusinessCategory=Form.create()(React.createClass({
 		                    </Select>
 	                    </div>
 	                    <Button type="primary" className="addButton" onClick={this.addClick} style={{float:'right',marginRight:'200px'}}>新增品类<Icon type="plus" /></Button>
-	                	
+	                	<Button type="primary" className="addButton" onClick={this.downClick} style={{float:'right'}} disabled={!hasSelected}>品类下移</Button>
+	                    <Button type="primary" className="addButton" onClick={this.upClick} style={{float:'right'}} disabled={!hasSelected}>品类上移</Button>
+	                    
 	                </div>
 	                <div className="patent-table">
 	                    <Spin spinning={this.state.loading}>
@@ -736,12 +821,21 @@ const BusinessCategory=Form.create()(React.createClass({
 				                    	<FormItem 
 						                    labelCol={{ span: 7 }}
 						                    wrapperCol={{ span: 12 }}
+						                    label="品类序号"
+					                        >
+					                        <span>{this.state.editSort}</span>
+					                    </FormItem>
+					                </div>
+		                   		    <div className="clearfix">
+				                    	<FormItem 
+						                    labelCol={{ span: 7 }}
+						                    wrapperCol={{ span: 12 }}
 						                    label="品类层级"
 					                        >
 					                        <span>{this.state.editlayer}</span>
 					                    </FormItem>
 					                </div>
-		                   		    <div className="clearfix">
+					                <div className="clearfix">
 				                    	<FormItem 
 						                    labelCol={{ span: 7 }}
 						                    wrapperCol={{ span: 12 }}

+ 45 - 3
js/component/manageCenter/set/business/businessProject.jsx

@@ -414,8 +414,7 @@ const BusinessProject=Form.create()(React.createClass({
 		    	let pro='';
 		        let city='';
 		        let dis='';
-		        console.log(this.state.ProvinceCity);
-		       	if(this.state.ProvinceCity==undefined||this.state.ProvinceCity.length==0){
+		        if(this.state.ProvinceCity==undefined||this.state.ProvinceCity.length==0){
 		       		message.warning('请选择项目有效范围');
 		    		return false;
 		       	}else{
@@ -451,8 +450,10 @@ const BusinessProject=Form.create()(React.createClass({
 		            	minLogo:theorgCodeUrl,
 		            	maxLogo:thecompanyLogoUrl,
 		            	introduce:this.state.editIntroduce,//项目介绍 
+		            	projectUrl:this.state.editProjectUrl,//项目地址
 		            	valueEffect:this.state.editValueEffect,//项目价值及作用
 		            	clientSize:this.state.editClientSize,//项目基本条件 
+		            	boutique:this.state.editBoutique,
 		            }
 		        }).done(function (data) { 
 		            this.setState({
@@ -538,8 +539,10 @@ const BusinessProject=Form.create()(React.createClass({
                          editCreateId:thisdata.createName,//创建人
                          editTime:thisdata.createTimeFormattedDate,//创建时间
                          editIntroduce:thisdata.introduce,//服务内容
+                         editProjectUrl:thisdata.projectUrl,//项目地址
                          editValueEffect:thisdata.valueEffect,//价值及作用
                          editClientSize:thisdata.clientSize,//基本条件
+                         editBoutique:thisdata.boutique,//是否精品
                          orgCodeUrl: thisdata.minLogo ? splitUrl(thisdata.minLogo, ',', globalConfig.avatarHost + '/upload') : [],
 						 cditCompanyLogoUrl: thisdata.maxLogo ? splitUrl(thisdata.maxLogo, ',', globalConfig.avatarHost + '/upload') : [],
 					
@@ -563,8 +566,10 @@ const BusinessProject=Form.create()(React.createClass({
                      editCreateId:thisdata.createName,//创建人
                      editTime:thisdata.createTimeFormattedDate,//创建时间
                      editIntroduce:thisdata.introduce,//服务内容
+                     editProjectUrl:thisdata.projectUrl,//项目地址
                      editValueEffect:thisdata.valueEffect,//价值及作用
                      editClientSize:thisdata.clientSize,//基本条件
+                     editBoutique:thisdata.boutique,//是否精品
                      orgCodeUrl: thisdata.minLogo ? splitUrl(thisdata.minLogo, ',', globalConfig.avatarHost + '/upload') : [],
 					 companyLogoUrl: thisdata.maxLogo ? splitUrl(thisdata.maxLogo, ',', globalConfig.avatarHost + '/upload') : [],
 					 editDataSource: theArr,
@@ -724,6 +729,7 @@ const BusinessProject=Form.create()(React.createClass({
                     data:{
                     	bname:this.state.categoryName,//项目名称
                     	cid:superText,//品类类ID
+                    	boutique:this.state.boutique?this.state.boutique:'0',
                     	country:isCountry,//是否全国
                     	province:pro,//省
                     	city:city,//市
@@ -937,6 +943,7 @@ const BusinessProject=Form.create()(React.createClass({
     	this.state.categoryName='';//项目名称清零
     	this.state.ProvinceCity=undefined;
     	this.state.addCid=undefined;
+    	this.state.boutique='';
     },
     //规格新增清零
     formatReset() {
@@ -1087,6 +1094,20 @@ const BusinessProject=Form.create()(React.createClass({
 				                            <span className="mandatory" style={{color:'red',marginLeft:'5px'}}>*</span>
 			                   		    </FormItem>
 		                   		    </div>
+		                   		    <div className="clearfix">
+					                    <FormItem  
+					                    	labelCol={{ span: 7 }}
+					                        wrapperCol={{ span: 12 }}
+				                           label="是否精品"
+			                               > 
+			                               <Radio.Group value={this.state.boutique} onChange={(e) => {
+						                    this.setState({ boutique: e.target.value })
+						                    }}>
+						                        <Radio value={1}>精品</Radio>
+						                        <Radio value={0}>非精品</Radio>
+						                	</Radio.Group>
+			                   		    </FormItem>
+		                   		    </div>
 	                    			<div className="clearfix">
 			                   		    <FormItem 
 					                           labelCol={{ span: 7 }}
@@ -1383,7 +1404,19 @@ const BusinessProject=Form.create()(React.createClass({
 												onChange={(e,pre) => { this.setState({ ProvinceCity: e }) }} />
 												<span style={{color:'red',marginLeft:'5px'}}>*</span>
 							            </FormItem>
-						             </div>
+							            <FormItem  className="half-item" 
+					                    	labelCol={{ span: 4 }}
+					                        wrapperCol={{ span: 12 }}
+				                           label="是否精品"
+			                               > 
+			                               <Radio.Group value={this.state.editBoutique} onChange={(e) => {
+						                    this.setState({ editBoutique: e.target.value })
+						                    }}>
+						                        <Radio value={1}>精品</Radio>
+						                        <Radio value={0}>非精品</Radio>
+						                	</Radio.Group>
+			                   		    </FormItem>
+		                   		     </div>
 						             <div className="clearfix" style={{paddingLeft:'60px'}}>
 							             <FormItem className="half-item"
 					                    	labelCol={{ span: 4 }}
@@ -1464,6 +1497,15 @@ const BusinessProject=Form.create()(React.createClass({
 			                   		    <FormItem
 					                        labelCol={{ span: 4 }}
 					                        wrapperCol={{ span: 12 }}
+					                        label="项目地址" >					                        
+					                        <Input type="textarea" rows={1} placeholder="业务项目服务内容" value={this.state.editProjectUrl}
+	                           				 	onChange={(e) => { this.setState({ editProjectUrl: e.target.value }) }}/>					                           
+					                    </FormItem>
+					                </div> 
+				                   	<div className="clearfix">
+			                   		    <FormItem
+					                        labelCol={{ span: 4 }}
+					                        wrapperCol={{ span: 12 }}
 					                        label="业务项目服务内容" >					                        
 					                        <Input type="textarea" rows={4} placeholder="业务项目服务内容" value={this.state.editIntroduce}
 	                           				 	onChange={(e) => { this.setState({ editIntroduce: e.target.value }) }}/>