liting2017 6 years ago
parent
commit
e36a3634ee

+ 0 - 46
js/component/account/demand/content.jsx

@@ -1,46 +0,0 @@
-import React, { Component } from 'react';
-import '../content.less';
-import LeftTab from './leftTab';
-import TechDemand from './techDemand';
-
-
-class Content extends Component {
-    constructor() {
-        super();
-        this.state = {
-            loading: false,
-            component: 'div'
-        };
-    }
-    componentWillMount() {
-        if (window.location.hash) {
-            this.getKey(window.location.hash.substr(1));
-        } else {
-            this.getKey("techDemand");
-        };    }
-    getKey(key) {
-        switch (key) {
-            case 'techDemand':
-                require.ensure([], () => {
-                    const TechDemand = require('./techDemand').default;
-                    this.setState({
-                        component: TechDemand
-                    });
-                });
-                break;
-        };
-        window.location.hash = key;
-    }
-    render() {
-        return (
-            <div className="acc-content">
-                <LeftTab handlekey={this.getKey.bind(this)} />
-                <div className="content-right">
-                    <this.state.component />
-                </div>
-            </div>
-        )
-    }
-}
-
-export default Content;

+ 109 - 0
js/component/account/demand/demandDesc.jsx

@@ -0,0 +1,109 @@
+import React from 'react';
+import { Modal, Spin } from 'antd';
+import DemandForm from '@/account/demand/demandForm';
+
+class DemandDesc extends React.Component {
+	constructor(props) {
+		super(props);
+		this.state = {
+			loading: false,
+			pictureUrl: []
+		};
+	}
+	loadData(id) {
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: 'get',
+			dataType: 'json',
+			crossDomain: false,
+			url:
+				globalConfig.context +
+				(window.userData.type == '1'
+					? '/api/user/demand/orgDemandDetail'
+					: '/api/user/demand/userDemandDetail'),
+			data: {
+				id: id
+			},
+			success: function(data) {
+				let thisData = data.data;
+				if (!thisData) {
+					if (data.error && data.error.length) {
+						message.warning(data.error[0].message);
+					}
+					thisData = {};
+				}
+				this.setState({
+					data: thisData,
+					tags: thisData.keyword ? thisData.keyword.split(',') : [],
+					pictureUrl: thisData.pictureUrl
+						? splitUrl(thisData.pictureUrl, ',', globalConfig.avatarHost + '/upload')
+						: []
+				});
+			}.bind(this)
+		}).always(
+			function() {
+				this.setState({
+					loading: false
+				});
+			}.bind(this)
+		);
+	}
+	handleCancel() {
+		this.setState({
+			visible: false
+		});
+	}
+	handOk() {
+		this.setState({
+			visible: false
+		});
+		this.props.closeDesc(false, true);
+	}
+	componentWillReceiveProps(nextProps) {
+		if (nextProps.showDesc && nextProps.data && nextProps.data.id) {
+			this.loadData(nextProps.data.id);
+		}
+		this.state.visible = nextProps.showDesc;
+	}
+	render() {
+		let data = this.props.data || [];
+		return (
+			<div className="patent-desc">
+				<Modal
+					maskClosable={false}
+					visible={this.state.visible}
+					onOk={this.handOk.bind(this)}
+					onCancel={this.handleCancel.bind(this)}
+					width="1000px"
+					title={!data.id ? '新建需求' : '修改需求'}
+					footer=""
+					className="admin-desc-content"
+				>
+					<div>
+						{!data.id ? (
+							<div>
+                                <DemandForm 
+                                    closeDesc={this.handleCancel}
+                                    visible={this.state.visible}
+                                    data={[]}
+                                />
+							</div>
+						) : (
+							<div>
+                                <DemandForm 
+                                    closeDesc={this.handleCancel}
+                                    visible={this.state.visible}
+                                    data={this.props.data}
+                                />
+							</div>
+						)}
+					</div>
+				</Modal>
+			</div>
+		);
+	}
+}
+
+export default DemandDesc;

+ 448 - 0
js/component/account/demand/demandForm.jsx

@@ -0,0 +1,448 @@
+import React from 'react';
+import $ from 'jquery/src/ajax';
+import {
+	Icon,
+	Tabs,
+	Table,
+	Tooltip,
+	Modal,
+	Popover,
+	message,
+	Spin,
+	Upload,
+	Input,
+	InputNumber,
+	Select,
+	DatePicker,
+	Button,
+	Radio,
+	Form,
+	Cascader,
+    Tag,
+    Checkbox,
+    Row,
+    Col
+} from 'antd';
+import { getTechField } from '@/DicTechFieldList.js';
+import {areaSelect } from '@/NewDicProvinceList';
+import { IndustryObject, getIndustryCategory } from '@/DicIndustryList.js';
+import { beforeUploadFile, splitUrl, companySearch, getDemandType, getAchievementCategory } from '@/tools.js';
+
+
+const PicturesWall = React.createClass({
+	getInitialState() {
+		return {
+			previewVisible: false,
+			previewImage: '',
+			fileList: []
+		};
+	},
+	handleCancel() {
+		this.setState({ previewVisible: false });
+	},
+	handlePreview(file) {
+		this.setState({
+			previewImage: file.url || file.thumbUrl,
+			previewVisible: true
+		});
+	},
+	handleChange(info) {
+		let fileList = info.fileList;
+		this.setState({ fileList });
+		this.props.fileList(fileList);
+	},
+	componentWillReceiveProps(nextProps) {
+		this.state.fileList = nextProps.pictureUrl;
+	},
+	render() {
+		const { previewVisible, previewImage, fileList } = this.state;
+		const uploadButton = (
+			<div>
+				<Icon type="plus" />
+				<div className="ant-upload-text">点击上传</div>
+			</div>
+		);
+		return (
+			<div className="clearfix">
+				<Upload
+					action={globalConfig.context + '/api/user/demand/uploadPicture'}
+					data={{ sign: 'demand_picture', uid: this.props.uid }}
+					listType="picture-card"
+					fileList={fileList}
+					onPreview={this.handlePreview}
+					onChange={this.handleChange}
+				>
+					{fileList.length >= 5 ? null : uploadButton}
+				</Upload>
+				<Modal maskClosable={false} visible={previewVisible} footer={null} onCancel={this.handleCancel}>
+					<img alt="example" style={{ width: '100%' }} src={previewImage} />
+				</Modal>
+			</div>
+		);
+	}
+});
+const DemandForm = Form.create()(
+	React.createClass({
+		getInitialState() {
+			return {
+				visible: false,
+				loading: false,
+				auditStatus: 0,
+				textFileList: [],
+				videoFileList: [],
+				pictureUrl: [],
+                tags: [],
+                ProvinceCity:[]
+			};
+		},
+		loadData(id) {
+			this.setState({
+				loading: true
+			});
+			$.ajax({
+				method: 'get',
+				dataType: 'json',
+				crossDomain: false,
+				url:
+					globalConfig.context +
+					(window.userData.type == '1'
+						? '/api/user/demand/orgDemandDetail'
+						: '/api/user/demand/userDemandDetail'),
+				data: {
+					id: id
+				},
+				success: function(data) {
+					let thisData = data.data;
+					if (!thisData) {
+						if (data.error && data.error.length) {
+							message.warning(data.error[0].message);
+						}
+						thisData = {};
+					}
+					this.setState({
+						data: thisData,
+						tags: thisData.keyword ? thisData.keyword.split(',') : [],
+						pictureUrl: thisData.pictureUrl
+							? splitUrl(thisData.pictureUrl, ',', globalConfig.avatarHost + '/upload')
+							: []
+					});
+				}.bind(this)
+			}).always(
+				function() {
+					this.setState({
+						loading: false
+					});
+				}.bind(this)
+			);
+		},
+		getTagsArr(e) {
+			this.setState({ tags: e });
+		},
+		getPictureUrl(e) {
+			this.setState({ pictureUrl: e });
+		},
+		handleSubmit(e) {
+			e.preventDefault();
+			this.props.form.validateFields((err, values) => {
+				//keyword长度判断
+				if (this.state.tags.length < 3) {
+					message.warning('关键词数量不能小于3个!');
+					return;
+				}
+				//url转化
+				let thePictureUrl = [];
+				if (this.state.pictureUrl.length) {
+					let picArr = [];
+					this.state.pictureUrl.map(function(item) {
+						if (item.response && item.response.data && item.response.data.length) {
+							picArr.push(item.response.data);
+						}
+					});
+					thePictureUrl = picArr.join(',');
+				}
+				if (!err) {
+					this.setState({
+						loading: true
+					});
+					$.ajax({
+						method: 'POST',
+						dataType: 'json',
+						crossDomain: false,
+						url: this.props.data.id
+							? globalConfig.context + '/api/user/demand/update'
+							: globalConfig.context + '/api/user/demand/apply',
+						data: {
+							id: this.props.data.id,
+							dataCategory: Number(window.userData.type),
+							serialNumber: this.props.data.serialNumber,
+							name: values.name,
+							keyword: this.state.tags ? this.state.tags.join(',') : [],
+							keywords: this.state.tags,
+							infoSources: 1,
+							industryCategoryA: values.industryCategory ? values.industryCategory[0] : undefined,
+							industryCategoryB: values.industryCategory ? values.industryCategory[1] : undefined,
+							demandType: values.demandType,
+							problemDes: values.problemDes,
+							technicalRequirements: values.technicalRequirements,
+							pictureUrl: thePictureUrl,
+							textFileUrl: this.state.textFileUrl,
+							videoUrl: values.videoUrl,
+							fixedBudget: values.fixedBudget,
+							fixedCycle: values.fixedCycle,
+							peopleNumber: values.peopleNumber,
+							fixedScheme: values.fixedScheme,
+							costEscrow: values.costEscrow,
+							budgetCost: values.budgetCost,
+							employerId: values.employerId || this.state.data.employerId,
+							releaseStatus: values.releaseStatus,
+							principalId: values.principalId,
+							validityPeriodFormattedDate: values.validityPeriod
+								? values.validityPeriod.format('YYYY-MM-DD')
+								: undefined,
+							//
+							contacts: values.contacts,
+							status: this.state.status,
+							auditStatus: this.state.auditStatus
+						}
+					}).done(
+						function(data) {
+							this.state.auditStatus = 0;
+							this.setState({
+								loading: false
+							});
+							if (!data.error.length) {
+								message.success('保存成功!');
+								this.setState({
+									visible: false
+								});
+								this.props.handleOk();
+							} else {
+								message.warning(data.error[0].message);
+							}
+						}.bind(this)
+					);
+				}
+			});
+		},
+		componentWillMount() {
+			if (this.props.data.id) {
+				this.loadData(this.props.data.id);
+			} else {
+				this.state.data = {};
+			}
+		},
+		componentWillReceiveProps(nextProps) {
+                this.state.textFileList = [];
+                this.state.videoFileList = [];
+				if (nextProps.data.id) {
+					this.loadData(nextProps.data.id);
+				} else {
+					this.state.data = {};
+					this.state.pictureUrl = [];
+                }
+				this.props.form.resetFields();
+		},
+		render() {
+			const theData = this.state.data || {};
+            const { getFieldDecorator, getFieldsError, getFieldError, isFieldTouched } = this.props.form;
+			const FormItem = Form.Item;
+			const formItemLayout = {
+				labelCol: { span: 6 },
+				wrapperCol: { span: 12 }
+			};
+			return (
+				<Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form">
+					<Spin spinning={this.state.loading}>
+						<div className="clearfix">
+							<FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="发个需求吧">
+								{getFieldDecorator('problemDes', {
+									rules: [ { required: true, message: '此项为必填项!' } ],
+									initialValue: theData.problemDes
+								})(<Input type="textarea" rows={4} placeholder="亲,发个需求吧!让技术专家主动找到您." />)}
+							</FormItem>
+							<FormItem className="half-item" {...formItemLayout} label="标题">
+								{getFieldDecorator('name', {
+									rules: [ { required: true, message: '此项为必填项!' } ],
+									initialValue: theData.name
+								})(<Input placeholder="给您的需求配个标题吧." />)}
+							</FormItem>
+						</div>
+						
+						<FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="行业领域">
+							{getFieldDecorator('industryCategory', {
+								rules: [ { type: 'array', required: true, message: '此项为必填项!' } ],
+								initialValue: [ theData.industryCategoryA, theData.industryCategoryB ]
+							})(<Cascader style={{ width: 300 }} options={IndustryObject} placeholder="请选择一个行业" />)}
+						</FormItem>
+						<div className="clearfix">
+							<FormItem className="half-item" {...formItemLayout} label="需求类型">
+									<Select style={{ width: 160 }} placeholder="请选择需求类型"
+                                        value={this.state.demandType} onChange={(e)=>{this.setState({demandType:e})}}
+                                        >
+										<Select.Option value="0" >人才需求</Select.Option>
+                                        <Select.Option value="1" >资金需求</Select.Option>
+									</Select>
+							</FormItem>
+                            {this.state.demandType=='0'&&
+                                <FormItem className="half-item" {...formItemLayout} label="人才需求酬劳">
+								{getFieldDecorator('name', {
+									rules: [ { required: false } ],
+									initialValue: theData.namea
+								})(<Input placeholder="请输入酬劳." />)}
+							</FormItem>}
+                            {this.state.demandType=='1'&&<div className="clearfix"><FormItem className="half-item" {...formItemLayout} label="资金需求额度">
+								{getFieldDecorator('name', {
+									rules: [ { required: false } ],
+									initialValue: theData.namea
+								})(<Input placeholder="请输入资金需求额度." />)}
+							</FormItem>
+                            <FormItem className="half-item" {...formItemLayout} label="资金用途">
+								{getFieldDecorator('namea', {
+									rules: [ { required: false } ],
+									initialValue: theData.namea
+								})(
+                                    <Select placeholder="选择转让方式" style={{ width: 160 }} >
+                                        <Select.Option value="0" >完全转让</Select.Option>
+                                        <Select.Option value="1" >许可转让</Select.Option>
+                                        <Select.Option value="2" >技术入股</Select.Option>
+                                    </Select>
+                                )}
+                                </FormItem>
+                            </div>
+                            }
+						</div>
+                        <p style={{marginLeft:40,fontSize:18,marginBottom:15}}>您还可以说明</p>
+                        <div className="clearfix">
+                            <FormItem className="half-item" {...formItemLayout} label="加急">
+                                <Radio.Group value={this.state.urgent} onChange={(e)=>{this.setState({urgent:e.target.value})}}>
+                                    <Radio value={1}>加急需求</Radio>
+                                    <Radio value={0}>非加急需求</Radio>
+                                </Radio.Group>
+                            </FormItem>
+                            {this.state.urgent&&<FormItem className="half-item" {...formItemLayout} label="日期">
+								{getFieldDecorator('validitytime', {
+									initialValue: theData.validitytime ? moment(theData.validitytime) : null
+								})(<DatePicker />)}
+							</FormItem>}
+						</div>
+						<div className="clearfix">
+							<FormItem className="half-item" {...formItemLayout} label="悬赏需求">
+                                <Radio.Group value={this.state.offer} onChange={(e)=>{this.setState({offer:e.target.value})}}>
+                                    <Radio value={0}>否</Radio>
+                                    <Radio value={1}>是</Radio>
+                                </Radio.Group>
+							</FormItem>
+                            {this.state.offer>=1&&<FormItem className="half-item" {...formItemLayout} label="悬赏金额">
+								{getFieldDecorator('budgetCost', {
+									initialValue: theData.budgetCost
+								})(<InputNumber min={0} max={999999} step={0.01} placeholder="输入金额."/>)}
+								<span style={{ marginLeft: '20px' }}>万元</span>
+							</FormItem>}
+						</div>
+                        <div className="clearfix">
+                            <FormItem className="half-item" {...formItemLayout} label="热点需求">
+                                <Radio.Group value={this.state.hotDemand} onChange={(e)=>{this.setState({hotDemand:e.target.value})}}>
+                                    <Radio value={0}>否</Radio>
+                                    <Radio value={1}>是</Radio>
+                                </Radio.Group>
+							</FormItem>
+                            <FormItem className="half-item" {...formItemLayout} label="解决">
+                                <Radio.Group value={this.state.solve} onChange={(e)=>{this.setState({solve:e.target.value})}}>
+                                    <Radio value={0}>否</Radio>
+                                    <Radio value={1}>是</Radio>
+                                </Radio.Group>
+							</FormItem>
+                        </div>
+                        <div className="clearfix">
+                            <FormItem
+                                className="half-item"
+                                {...formItemLayout}
+                                label="地区"
+                            >
+                                <Cascader
+                                    options={areaSelect()}
+                                    value={this.state.ProvinceCity}
+                                    placeholder="选择地区"
+                                    onChange={(e, pre) => {
+                                        this.setState({ ProvinceCity: e });
+                                    }}
+                                />
+                            </FormItem>  
+                        </div>
+                        <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="需求文件(图片)">
+							<PicturesWall
+								uid={theData.employerId}
+								fileList={this.getPictureUrl}
+								pictureUrl={this.state.pictureUrl}
+								visible={this.props.visible}
+							/>
+						</FormItem>
+                        <div>
+                            <FormItem className="half-item" {...formItemLayout} label="发布状态">
+								{getFieldDecorator('releaseState', {
+									rules: [ { required: false } ],
+									initialValue: theData.releaseState
+								})(
+                                    <Select placeholder="选择发布状态" style={{ width: 160 }} >
+                                        <Select.Option value="0" >草稿</Select.Option>
+                                        <Select.Option value="1" >发布审核</Select.Option>
+                                        <Select.Option value="2" >已发布</Select.Option>
+                                        <Select.Option value="3" >发布失败</Select.Option>
+                                        <Select.Option value="4" >已撤销</Select.Option>
+                                    </Select>
+                                )}
+                            </FormItem>
+                            <FormItem className="half-item" {...formItemLayout} label="发布时间">
+                                    {getFieldDecorator('releaseTime', {
+                                        initialValue: theData.releaseTime ? moment(theData.releaseTime) : null
+                                    })(<DatePicker />)}
+                            </FormItem>
+                        </div>
+                        <div className="clearfix">
+                            <FormItem className="full-item" 
+                                labelCol={{ span: 3 }}
+								wrapperCol={{ span: 18 }} label="发布状态">
+								{getFieldDecorator('releasePosition', {
+									rules: [ { required: false } ],
+									initialValue: theData.releasePosition
+								})(
+                                    <Checkbox.Group>
+                                        <Row>
+                                            <Col span={6}><Checkbox value="A">网站首页</Checkbox></Col>
+                                            <Col span={6}><Checkbox value="B">网站需求主页</Checkbox></Col>
+                                            <Col span={6}><Checkbox value="C">网站需求搜索页</Checkbox></Col>
+                                            <Col span={6}><Checkbox value="D">APP首页</Checkbox></Col>
+                                            <Col span={6}><Checkbox value="E">APP需求首页</Checkbox></Col>
+                                            <Col span={6}><Checkbox value="E">APP需求搜索页</Checkbox></Col>
+                                        </Row>
+                                    </Checkbox.Group>
+                                )}
+                            </FormItem>
+                        </div>
+                        <div className="clearfix">
+                            <FormItem wrapperCol={{ span: 12, offset: 3 }}>
+                                <Button className="set-submit" type="primary" htmlType="submit">
+                                    保存
+                                </Button>
+                                {this.props.data&&this.props.data.id&&<Button
+                                    className="set-submit"
+                                    type="ghost"
+                                    onClick={(e) => {
+                                        this.state.auditStatus = 1;
+                                    }}
+                                    htmlType="submit"
+                                >
+                                    提交审核
+                                </Button>}
+                                <Button className="set-submit" type="ghost" onClick={this.props.closeDesc}>
+                                    取消
+                                </Button>
+                            </FormItem>
+                        </div>
+					</Spin>
+				</Form>
+			);
+		}
+	})
+);
+export default DemandForm;

+ 97 - 69
js/component/account/demand/techDemand.jsx

@@ -4,7 +4,7 @@ import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import moment from 'moment';
 import './techDemand.less';
-import TechDemandDesc from './techDemandDesc.jsx';
+import TechDemandDesc from './demandDesc.jsx';
 import { demandTypeList } from '../../dataDic.js';
 import { getDemandType } from '../../tools.js';
 
@@ -104,59 +104,111 @@ const DemandList = React.createClass({
                     title: '需求名称',
                     dataIndex: 'name',
                     key: 'name',
-                }, {
-                    title: '关键字',
-                    dataIndex: 'keyword',
-                    key: 'keyword',
-                }, {
+                },  {
                     title: '需求类型',
                     dataIndex: 'demandType',
                     key: 'demandType',
                     render: text => { return getDemandType(text); }
-                }, {
-                    title: '审核状态',
-                    dataIndex: 'auditStatus',
-                    key: 'auditStatus',
+                },
+                {
+                    title: '发布状态',
+                    dataIndex: 'releaseStatus',
+                    key: 'releaseStatus',
                     render: text => {
                         switch (text) {
                             case "0":
                                 return <span>未提交审核(草稿)</span>;
                             case "1":
-                                return <span>提交审核</span>;
+                                return <span>发布审核</span>;
                             case "2":
-                                return <span>审核中</span>;
+                                return <span>已发布</span>;
                             case "3":
-                                return <span>审核通过</span>;
+                                return <span>发布失败</span>;
                             case "4":
-                                return <span>审核未通过</span>;
+                                return <span>已撤销</span>;
                         }
                     }
                 }, {
-                    title: '需求状态',
-                    dataIndex: 'status',
-                    key: 'status',
-                    render: text => {
-                        switch (text) {
-                            case "0":
-                                return <span>未解决</span>;
-                            case "1":
-                                return <span>已解决</span>;
-                        }
-                    }
-                }, {
-                    title: '有效期限',
-                    dataIndex: 'validityPeriodFormattedDate',
-                    key: 'validityPeriodFormattedDate',
-                }, {
                     title: '发布时间',
-                    dataIndex: 'releaseDateFormattedDate',
-                    key: 'releaseDateFormattedDate',
+                    dataIndex: 'demandType1',
+                    key: 'demandType1'
+                },
+                {
+                    title: '解决状态',
+                    dataIndex: 'demandType11',
+                    key: 'demandType11'
+                },
+                {
+                    title: '审核',
+                    dataIndex: 'caozuo',
+                    key: 'caozuo',
+                    render:(text,recard) => {
+                        return  <div className="btnRight">
+                                    <Button type="primary" onClick={(e)=>{e.stopPropagation;this.tableRowClick(recard)}}>编辑</Button>
+                                    <Button type="primary" style={{ background: "#3fcf9e", border: "none", color: "#fff" }} onClick={(e)=>{e.stopPropagation;this.submission(recard)}}>提交</Button>
+                                    <Button type="danger"  onClick={(e)=>{e.stopPropagation;this.delectRow(recard)}}>删除</Button>
+                                    <Button type="success" onClick={(e)=>{e.stopPropagation;this.release(recard,1)}}>刷新发布</Button>
+                                    <Button type="primary" onClick={(e)=>{e.stopPropagation;this.release(recard,0)}}>撤销发布</Button>
+                                </div>
+                    }
                 }
             ],
             dataSource: [],
             searchTime: [,]
         };
     },
+    //提交审核
+    submission(record){
+        this.setState({
+            loading:true
+        });
+        $.ajax({
+            method: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/demand/deletet",
+            data: {
+                ids: deletedIds
+            }
+        }).done(function (data) {
+            if (!data.error.length) {
+                message.success('成功提交审核.');
+                this.setState({
+                    loading: false,
+                });
+            } else {
+                message.warning(data.error[0].message);
+            };
+            this.loadData();
+        }.bind(this));
+    },
+    //刷新发布
+    release(recard,index){
+        let api = index?'/api/shuaxin':'/api/chexiao';
+        this.setState({
+            loading:true
+        });
+        $.ajax({
+            method: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + api,
+            data: {
+                id: recard.id
+            }
+        }).done(function (data) {
+            if (!data.error.length) {
+                message.success('操作成功');
+                this.setState({
+                    loading: false,
+                });
+            } else {
+                message.warning(data.error[0].message);
+            };
+            this.loadData();
+        }.bind(this));
+    },
+    
     componentWillMount() {
         let theArr = [];
         demandTypeList.map(function (item) {
@@ -173,25 +225,17 @@ const DemandList = React.createClass({
             showDesc: true
         });
     },
-    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)
-            };
-        };
+    delectRow(recard) {
         this.setState({
-            selectedRowKeys: [],
-            loading: deletedIds.length > 0
-        });
+            loading:true
+        })
         $.ajax({
             method: "POST",
             dataType: "json",
             crossDomain: false,
             url: globalConfig.context + "/api/user/demand/delete",
             data: {
-                ids: deletedIds
+                ids: recard.id
             }
         }).done(function (data) {
             if (!data.error.length) {
@@ -250,6 +294,7 @@ const DemandList = React.createClass({
         };
         const hasSelected = this.state.selectedRowKeys.length > 0;
         const { RangePicker } = DatePicker;
+        this.state.dataSource=[{key:1,serialNumber:1,id:1},{key:2,serialNumber:2,id:2}]
         return (
             <div className="user-content" >
                 <div className="content-title">
@@ -259,28 +304,25 @@ const DemandList = React.createClass({
                     </div>
                 </div>
                 <div className="user-search">
-                    <Input placeholder="需求编号"
-                        value={this.state.serialNumber}
-                        onChange={(e) => { this.setState({ serialNumber: e.target.value }); }} />
                     <Input placeholder="需求名称"
                         value={this.state.name}
                         onChange={(e) => { this.setState({ name: e.target.value }); }} />
-                    <Input placeholder="关键字"
-                        value={this.state.keyword}
-                        onChange={(e) => { this.setState({ keyword: e.target.value }); }} />
                     <Select placeholder="选择需求类型"
                         style={{ width: 120 }}
                         value={this.state.demandType}
                         onChange={(e) => { this.setState({ demandType: e }) }}>
                         {this.state.demandTypeOption}
                     </Select>
-                    <Select placeholder="选择需求状态" style={{ width: 120 }}
+                    <Select placeholder="发布状态" style={{ width: 120 }}
                         value={this.state.status}
                         onChange={(e) => { this.setState({ status: e }) }}>
-                        <Select.Option value="0" >未解决</Select.Option>
-                        <Select.Option value="1" >已解决</Select.Option>
+                        <Select.Option value="0" >草稿</Select.Option>
+                        <Select.Option value="1" >发布审核</Select.Option>
+                        <Select.Option value="2" >已发布</Select.Option>
+                        <Select.Option value="3" >发布失败</Select.Option>
+                        <Select.Option value="4" >已撤销</Select.Option>
                     </Select>
-                    <Select placeholder="选择审核状态" style={{ width: 160 }}
+                    <Select placeholder="解决状态" style={{ width: 160 }}
                         value={this.state.auditStatus}
                         onChange={(e) => { this.setState({ auditStatus: e }) }}>
                         <Select.Option value="0" >未提交审核(草稿)</Select.Option>
@@ -291,22 +333,8 @@ const DemandList = React.createClass({
                     </Select>
                     <Button type="primary" onClick={this.search}>搜索</Button>
                     <Button onClick={this.reset}>重置</Button>
-                    <Button style={{ background: "#3fcf9e", border: "none", color: "#fff" }}
-                        disabled={!hasSelected}
-                        onClick={this.delectRow}>删除<Icon type="minus" /></Button>
                     <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
                     <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
-                        <Select placeholder="选择是否发布" style={{ width: 120 }}
-                            value={this.state.releaseStatus}
-                            onChange={(e) => { this.setState({ releaseStatus: e }) }}>
-                            <Select.Option value="0" >未发布</Select.Option>
-                            <Select.Option value="1" >已发布</Select.Option>
-                        </Select>
-                        <span>有效期限 :</span>
-                        <RangePicker
-                            value={[this.state.validityPeriodDate[0] ? moment(this.state.validityPeriodDate[0]) : null,
-                            this.state.validityPeriodDate[1] ? moment(this.state.validityPeriodDate[1]) : null]}
-                            onChange={(data, dataString) => { this.setState({ validityPeriodDate: dataString }); }} />
                         <span>发布时间 :</span>
                         <RangePicker
                             value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
@@ -320,7 +348,7 @@ const DemandList = React.createClass({
                             dataSource={this.state.dataSource}
                             rowSelection={rowSelection}
                             pagination={this.state.pagination}
-                            onRowClick={this.tableRowClick} />
+                             />
                     </Spin>
                 </div>
                 <TechDemandDesc

+ 4 - 1
js/component/account/demand/techDemand.less

@@ -19,6 +19,7 @@
         .ant-switch {
             margin-left: 10px;
         }
+        
         .search-more {
             margin: 10px 0;
             span {
@@ -27,7 +28,9 @@
         }
     }
 }
-
+.btnRight button{
+    margin-right: 10px;
+}
 .patent-addNew {
     float: right;
     margin-left: 20px;

+ 3 - 3
js/component/account/demand/techDemandDesc.jsx

@@ -226,12 +226,12 @@ const DemandDetailShow = Form.create()(React.createClass({
             wrapperCol: { span: 12 },
         };
         return (
-            <Form horizontal onSubmit={this.handleSubmit} id="demand-form">
+            <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form">
                 <Spin spinning={this.state.loading}>
                     <div className="clearfix">
                         <FormItem className="half-item"
                             {...formItemLayout}
-                            label="编号" >
+                            label="编号1" >
                             <span>{theData.serialNumber}</span>
                         </FormItem>
                         <FormItem className="half-item"
@@ -617,7 +617,7 @@ const DemandDetailForm = Form.create()(React.createClass({
             wrapperCol: { span: 12 },
         };
         return (
-            <Form horizontal onSubmit={this.handleSubmit} id="demand-form">
+            <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form">
                 <Spin spinning={this.state.loading}>
                     <div className="clearfix">
                         <FormItem className="half-item"

+ 2 - 2
package.json

@@ -5,7 +5,7 @@
   "main": "index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
-    "dlldev": "webpack --progress --colors --config ./webpack-dll.config.js --env.deploy dev --env.host 'http://127.0.0.1'",
+    "dlldev": "webpack --progress --colors --config ./webpack-dll.config.js --env.deploy dev --env.host 'http://127.0.0.1:8888'",
     "dlltest": "webpack --progress --colors --config ./webpack-dll.config.js --env.deploy test --env.host 'http://statics.jishutao.com'",
     "dllstage": "webpack --progress --colors --config ./webpack-dll.config.js --env.deploy stage --env.host 'http://aftts.hnzhiming.com'",
     "dllpro": "webpack --progress --colors --config ./webpack-dll.config.js --env.deploy prod --env.host 'http://ss.jishutao.com'",
@@ -13,7 +13,7 @@
     "buildtest": "node bin/clean.js && webpack --progress --colors --env.deploy test",
     "buildstage": "node bin/clean.js && webpack --progress --colors --env.deploy stage",
     "pro": "node bin/clean.js && webpack --progress --colors --env.deploy prod",
-    "dev": "webpack-dev-server --port 80 --devtool eval --progress --colors --hot --content-base build --env.deploy dev --env.watch watch"
+    "dev": "webpack-dev-server --port 8888 --devtool eval --progress --colors --hot --content-base build --env.deploy dev --env.watch watch"
   },
   "repository": {
     "type": "git",

+ 1 - 1
webpack-dll.config.js

@@ -10,7 +10,7 @@ let theme = {
   '@link-color': '#58a3ff'
 };
 module.exports = (function () {
-	let staticHost = 'http://127.0.0.1';    
+	let staticHost = 'http://127.0.0.1:8888';    
     switch (argv.env.deploy) {
         case 'test':
             staticHost = 'http://statics.jishutao.com';

+ 1 - 1
webpack.config.js

@@ -102,7 +102,7 @@ module.exports = (function () {
         }));
     }
 
-    let staticHost = 'http://127.0.0.1';    
+    let staticHost = 'http://127.0.0.1:8888';    
     switch (argv.env.deploy) {
         case 'test':
             staticHost = 'http://statics.jishutao.com';