import React,{Component} from 'react';
import {Button, Input, message, Select, Spin, Table, Modal, Popconfirm, Tabs} from "antd";
import AddOfficialFeePrice from './addOfficialFeePrice'
import $ from "jquery/src/ajax";
import '../content.less';
import {ChooseList} from "../../order/orderNew/chooseList";

const TabPane = Tabs.TabPane;

class OfficialFees extends Component{
    constructor(props) {
        super(props);
        this.state={
            type:'',
            dataSource: [],
            columns: [
                {
                    title: '项目类型',
                    dataIndex: 'typeName',
                    key: 'typeName',
                },
                {
                    title: '专利类型',
                    dataIndex: 'typePatentName',
                    key: 'typePatentName',
                },
                {
                    title: '全额(万元)',
                    dataIndex: 'amount',
                    key: 'amount',
                },
                {
                    title: '减缴85%',
                    dataIndex: 'proportion85',
                    key: 'proportion85',
                },
                {
                    title: '备注',
                    dataIndex: 'remarks',
                    key: 'remarks',
                },
                {
                    title: '操作',
                    dataIndex: 'id',
                    key: 'id',
                    render: (text) => {
                        return <div>
                            <Popconfirm
                                title="是否删除?"
                                onConfirm={() => {
                                    this.deleteOfficialFeePrice(text);
                                }}
                                okText="删除"
                                cancelText="不删除"
                            >
                                <Button type="danger" onClick={(e) => {
                                    e.stopPropagation()
                                }}>
                                    删除
                                </Button>
                            </Popconfirm>
                        </div>
                    }
                },
            ],
            addSoftVisible: false,
            infor: {},
            pagination: {
                defaultCurrent: 1,
                defaultPageSize: 10,
                showQuickJumper: true,
                pageSize: 10,
                onChange: function (page) {
                    this.loadData(page);
                }.bind(this),
                showTotal: function (total) {
                    return "共" + total + "条数据";
                },
            }
        }
        this.loadData = this.loadData.bind(this);
        this.tableRowClick = this.tableRowClick.bind(this);
        this.reset = this.reset.bind(this);
        this.changeList = this.changeList.bind(this);
    }

    componentDidMount() {
        this.loadData();
    }

    //搜索功能和初始列表加载
    loadData(pageNo) {
        this.setState({
            loading: true,
        });
        $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + '/api/admin/company/listOfficialFeePrice',
            data: {
                pageNo: pageNo || 1,
                pageSize: this.state.pagination.pageSize,
            },
            success: function (data) {
                if (!data.data || !data.data) {
                    if (data.error && data.error.length) {
                        message.warning(data.error[0].message);
                    };
                } else {
                    data.data.list.map((v,i)=>{v.key = i})
                    this.state.pagination.current = data.data.pageNo;
                    this.state.pagination.total = data.data.totalCount;
                    if (data.data && data.data.list && !data.data.list.length) {
                        this.state.pagination.current = 0;
                        this.state.pagination.total = 0;
                    }
                    this.setState({
                        dataSource: data.data.list,
                        page: data.data.pageNo,
                        pagination: this.state.pagination,
                    });
                };

            }.bind(this),
        }).always(function () {
            this.setState({
                loading: false
            });
        }.bind(this));
    }

    tableRowClick(infor) {
        this.setState({
            addSoftVisible : true,
            infor: infor
        })
    }

    reset(){
        this.setState({
            type:'',       //名称
        },()=>{
            this.loadData();
        })
    }

    //删除
    deleteOfficialFeePrice(id) {
        let _this = this;
        this.setState({
            loading: true
        });
        $.ajax({
            method: "post",
            dataType: "json",
            crossDomain: false,
            url:globalConfig.context + '/api/admin/company/deleteOfficialFeePrice',
            data:{
                id: id
            },
        }).done(function (data) {
            _this.setState({
                loading: false
            });
            if (!data.error.length) {
                message.success('删除成功!');
                _this.loadData();
            } else {
                message.warning(data.error[0].message);
            }
        }.bind(this));
    }

    changeList(arr) {
        const newArr = [];
        this.state.columns.forEach(item => {
            arr.forEach(val => {
                if (val === item.title) {
                    newArr.push(item);
                }
            });
        });
        this.setState({
            changeList: newArr
        });
    }

    render() {
        return(
            <div className="user-content" >
                <div className="content-title">
                    <Tabs defaultActiveKey="1" className="test">
                        <TabPane tab="操作" key="1">
                            <div className="user-search" style={{display:'flex',flexFlow:'row',marginBottom:'10px'}}>
                                <span>
                                    <Button type="primary" size={'middle'} onClick={()=>{
                                        this.setState({
                                            addSoftVisible : true
                                        })
                                    }}>
                                        增加
                                    </Button>
                                </span>
                            </div>
                        </TabPane>
                        <TabPane tab="更改表格显示数据" key="2">
                            <div style={{ marginLeft: 10 }}>
                                <ChooseList
                                    columns={this.state.columns}
                                    changeFn={this.changeList}
                                    changeList={this.state.changeList}
                                    top={55}
                                    margin={11}
                                />
                            </div>
                        </TabPane>
                    </Tabs>
                    <div className="patent-table">
                        <Spin spinning={this.state.loading}>
                            <Table size="middle" columns={
                                    this.state.changeList
                                        ? this.state.changeList
                                        : this.state.columns
                                    }
                                   pagination={this.state.pagination}
                                   dataSource={this.state.dataSource}
                                   style={{
                                       cursor: 'pointer',
                                   }}
                                   onRowClick={this.tableRowClick}/>
                        </Spin>
                    </div>
                </div>
                {this.state.addSoftVisible ? <AddOfficialFeePrice
                    infor={this.state.infor}
                    visible={this.state.addSoftVisible}
                    onCancel={()=>{
                        this.setState({
                            addSoftVisible : false,
                            infor: {},
                        })
                    }}
                    successFn={()=>{
                        this.loadData(this.state.page);
                        this.setState({
                            addSoftVisible : false,
                            infor: {}
                        })
                    }}/> : <div/>}
            </div>
        )
    }
}

export default OfficialFees