import React from 'react';
import { Icon, message, Row, Col, Radio, Checkbox, Input, InputNumber, Button, Table, Spin } from 'antd';
import '../portal.less';
import { IndustryObject, getIndustryCategory } from '../../DicIndustryList';
import { demandTypeList } from '../../dataDic';
import { getDemandType } from '../../tools';
import ajax from 'jquery/src/ajax/xhr.js'
import $ from 'jquery/src/ajax';
import DemandDesc from './demandDesc';

const Content = React.createClass({
    loadData(pageNo) {
        this.setState({
            loading: true
        });
        switch (this.state.budgetCost) {
            case 1:
                this.state.budgetCostLower = 1;
                this.state.budgetCostUpper = 10;
                break;
            case 2:
                this.state.budgetCostLower = 10;
                this.state.budgetCostUpper = 50;
                break;
            case 3:
                this.state.budgetCostLower = 50;
                this.state.budgetCostUpper = 100;
                break;
            case 4:
                this.state.budgetCostLower = 100;
                this.state.budgetCostUpper = 500;
                break;
            case 5:
                this.state.budgetCostLower = 500;
                this.state.budgetCostUpper = 1000;
                break;
            case 999:
                this.state.budgetCostLower = null;
                this.state.budgetCostUpper = null;
                break;
        }
        $.ajax({
            method: "get",
            dataType: "json",
            url: globalConfig.context + "/portal/search/demandList",
            data: {
                pageNo: pageNo || 1,
                pageSize: this.state.pagination.pageSize,
                keyword: this.state.keyword,
                demandType: this.state.demandType == 999 ? null : this.state.demandType,
                budgetCostLower: this.state.budgetCostLower, //交易金额下限
                budgetCostUpper: this.state.budgetCostUpper, //交易金额上限
                industryCategoryA: this.state.fieldA, //技术领域(行业类别A)
                industryCategoryB: this.state.fieldB == 999 ? null : this.state.fieldB, //技术领域(行业类别B)
            },
            success: function (data) {
                let theArr = [];
                if (!data.data || !data.data.list) {
                    if (data.error && data.error.length) {
                        message.warning(data.error[0].message);
                    };
                } else {
                    for (let i = 0; i < data.data.list.length; i++) {
                        let thisdata = data.data.list[i];
                        theArr.push({
                            key: i,
                            id: thisdata.id,
                            serialNumber: thisdata.serialNumber,
                            keyword: thisdata.keyword,
                            dataCategory: thisdata.dataCategory,
                            name: thisdata.name,
                            industryCategory: [thisdata.industryCategoryA, thisdata.industryCategoryB],
                            industryCategoryA: thisdata.industryCategoryA,
                            industryCategoryB: thisdata.industryCategoryB,
                            demandType: thisdata.demandType,
                            budgetCost: thisdata.budgetCost,
                            problemDes: thisdata.problemDes,
                            releaseDate: thisdata.releaseDate,
                            employerName: thisdata.username || thisdata.unitName,
                            releaseDateFormattedDate: thisdata.releaseDateFormattedDate
                        });
                    };
                };
                this.state.pagination.defaultCurrent = data.data.pageNo;
                this.state.pagination.total = data.data.totalCount;
                this.setState({
                    dataSource: theArr,
                    pagination: this.state.pagination
                });
            }.bind(this),
        }).done(function (data) {
            if (data.error && data.error.length) {
                message.warning(data.error[0].message);
            };
            this.setState({
                loading: false
            });
        }.bind(this));
    },
    getInitialState() {
        return {
            loading: false,
            showDesc:false,
            industryRadioB: [],
            budgetCost: 999,
            pagination: {
                defaultCurrent: 1,
                defaultPageSize: 10,
                showQuickJumper: true,
                pageSize: 10,
                onChange: function (page) {
                    this.loadData(page);
                }.bind(this),
                showTotal: function (total) {
                    return '共' + total + '条数据';
                }
            },
            columns: [
                {
                    title: '编号',
                    dataIndex: 'serialNumber',
                    key: 'serialNumber',
                }, {
                    title: '名称',
                    dataIndex: 'name',
                    key: 'name',
                }, {
                    title: '关键字',
                    dataIndex: 'keyword',
                    key: 'keyword',
                }, {
                    title: '数据类别',
                    dataIndex: 'dataCategory',
                    key: 'dataCategory',
                    render: text => {
                        switch (text) {
                            case "0":
                                return <span>个人需求</span>;
                            case "1":
                                return <span>单位需求</span>;
                        }
                    }
                }, {
                    title: '需求类型',
                    dataIndex: 'demandType',
                    key: 'demandType',
                    render: text => { return getDemandType(text); }
                }, {
                    title: '行业分类',
                    dataIndex: 'industryCategory',
                    key: 'industryCategory',
                    render: text => { return getIndustryCategory(text[0], text[1]); }
                }, {
                    title: '雇主名称',
                    dataIndex: 'employerName',
                    key: 'employerName',
                }, {
                    title: '预算价格',
                    dataIndex: 'budgetCost',
                    key: 'budgetCost',
                }, {
                    title: '问题说明',
                    dataIndex: 'problemDes',
                    key: 'problemDes',
                    width: 400
                }, {
                    title: '发布时间',
                    dataIndex: 'releaseDateFormattedDate',
                    key: 'releaseDateFormattedDate',
                }
            ],
            dataSource: []
        };
    },
    componentWillMount() {
        let theArr = [];
        let demandArr = [];
        //行业分类单选项
        theArr.push(
            <Radio.Button key={999} value={999}>不限</Radio.Button>
        );
        IndustryObject.map(function (item) {
            theArr.push(
                <Radio.Button key={item.value} value={item.value}>{item.label}</Radio.Button>
            );
        });
        //技术类型单选项目
        demandArr.push(
            <Radio.Button key={999} value={999}>不限</Radio.Button>
        );
        demandTypeList.map(function (item) {
            demandArr.push(
                <Radio.Button key={item.value} value={item.value}>{item.key}</Radio.Button>
            );
        });
        this.state.industryRadioA = theArr;
        this.state.demandTypeRadio = demandArr;
        this.loadData();
    },
    industryChange(e) {
        let theArr = [];
        if (e.target.value !== 999) {
            theArr.push(
                <Radio.Button key={999} value={999}>不限</Radio.Button>
            );
            IndustryObject.map(function (item1) {
                if (item1.value == e.target.value) {
                    item1.children.map(function (item2) {
                        theArr.push(
                            <Radio.Button key={item2.value} value={item2.value}>{item2.label}</Radio.Button>
                        );
                    });
                }
            });
            this.state.fieldA = e.target.value;
        } else {
            this.state.fieldA = null;
        };
        this.loadData();
        this.setState({ industryRadioB: theArr });
    },
    tableRowClick(record, index) {
        this.state.RowData = record;
        this.setState({
            showDesc: true
        });
    },
    closeDesc(e) {
        this.setState({
            showDesc: e
        });
    },
    render() {
        return (
            <div className="portal-content">
                <Row className="search-criteria">
                    <Col className="search-title" span={2}>
                        <span>行业分类</span>
                    </Col>
                    <Col className="search-select" span={22}>
                        <Radio.Group defaultValue={999} onChange={this.industryChange}>
                            {this.state.industryRadioA}
                        </Radio.Group>
                    </Col>
                </Row>
                {this.state.industryRadioB.length > 1 ? <Row className="search-criteria">
                    <Col className="search-title" span={2}>
                        <span>行业子分类</span>
                    </Col>
                    <Col className="search-select" span={22}>
                        <Radio.Group defaultValue={999} onChange={(e) => { this.state.fieldB = e.target.value; this.loadData() }}>
                            {this.state.industryRadioB}
                        </Radio.Group>
                    </Col>
                </Row> : <div></div>}
                <Row className="search-criteria">
                    <Col className="search-title" span={2}>
                        <span>预算价格</span>
                    </Col>
                    <Col className="search-select" span={12}>
                        <Radio.Group value={this.state.budgetCost}
                            onChange={(e) => {
                                this.setState({
                                    budgetCost: e.target.value
                                });
                                this.state.budgetCost = e.target.value;
                                this.loadData();
                            }}>
                            <Radio.Button value={999}>不限</Radio.Button>
                            <Radio.Button value={1}>1-10万元</Radio.Button>
                            <Radio.Button value={2}>10-50万元</Radio.Button>
                            <Radio.Button value={3}>50-100万元</Radio.Button>
                            <Radio.Button value={4}>100-500万元</Radio.Button>
                            <Radio.Button value={5}>500-1000万元</Radio.Button>
                        </Radio.Group>
                    </Col>
                    <Col span={10}>
                        <Checkbox checked={!this.state.budgetCost} onChange={(e) => { if (e.target.checked) { this.setState({ budgetCost: null }) } }}>自定义金额</Checkbox>
                        <InputNumber style={{ width: 80 }} disabled={Boolean(this.state.budgetCost)} onChange={(e) => { this.state.budgetCostLower = e.target.value; }} />
                        <span> 到 </span>
                        <InputNumber style={{ width: 80 }} disabled={Boolean(this.state.budgetCost)} onChange={(e) => { this.state.budgetCostUpper = e.target.value; }} />
                        <span> 万元</span>
                        <Button style={{ marginLeft: '20px' }} disabled={Boolean(this.state.budgetCost)} onClick={this.loadData}>确定</Button>
                    </Col>
                </Row>
                <Row className="search-criteria">
                    <Col className="search-title" span={2}>
                        <span>技术类型</span>
                    </Col>
                    <Col className="search-select" span={22}>
                        <Radio.Group defaultValue={999} onChange={(e) => {
                            this.setState({
                                demandType: e.target.value
                            });
                            this.state.demandType = e.target.value;
                            this.loadData();
                        }}>
                            {this.state.demandTypeRadio}
                        </Radio.Group>
                    </Col>
                </Row>
                <Row className="search-criteria" style={{ paddingBottom: '10px' }}>
                    <Col className="search-title" span={2}>
                        <span>关键字</span>
                    </Col>
                    <Col className="search-select" span={22}>
                        <Input style={{ width: 120 }} onChange={(e) => { this.state.keyword = e.target.value; }} />
                        <Button style={{ marginLeft: '20px' }} onClick={() => { this.loadData() }}>确定</Button>
                    </Col>
                </Row>
                <Spin spinning={this.state.loading}>
                    <Table columns={this.state.columns}
                        dataSource={this.state.dataSource}
                        pagination={this.state.pagination}
                        onRowClick={this.tableRowClick} />
                </Spin>
                <DemandDesc
                    data={this.state.RowData}
                    showDesc={this.state.showDesc}
                    closeDesc={this.closeDesc} />
            </div >
        )
    }
});

export default Content;