import React from 'react';
import ajax from 'jquery/src/ajax/xhr.js';
import $ from 'jquery/src/ajax';
import moment from 'moment';
import '@/manageCenter/financialManage/distribute/public.less';
import { Button, Input, Spin, Table, Select, Switch, message, DatePicker, Tabs,Tooltip } from 'antd';
import {
  getNewOrderStatus,
  getProjectName,
  getJsyPaymentType,
  getBonusState,
  ShowModal
} from "@/tools";
import BonuseDetail from '@/manageCenter/financialManage/bonus/bonusDetail';
import ShowModalDiv from "@/showModal.jsx";
import {ChooseList} from "../orderNew/chooseList";

const { TabPane } = Tabs
const YxBonus = React.createClass({
  departmentList() {
    this.setState({
      loading: true
    });
    $.ajax({
      method: "get",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/organization/selectSuperId",
      data: {},
      success: function (data) {
        let thedata = data.data;
        let theArr = [];
        if (!thedata) {
          if (data.error && data.error.length) {
            message.warning(data.error[0].message);
          };
        } else {
          thedata.map(function (item, index) {
            theArr.push({
              key: index,
              name: item.name,
              id: item.id,
            })
          })
        }
        this.setState({
          departmentArr: theArr,
        })
      }.bind(this),
    }).always(function () {
      this.setState({
        loading: false
      });
    }.bind(this));
  },
  loadData(pageNo) {
    this.state.data = [];
    this.setState({
      selectedRowKeys: [],
      selectedRowKey: [],
      page: pageNo,
      loading: true
    });
    $.ajax({
      method: "get",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/bonus/getAllSaleBonus",
      data: {
        pageNo: pageNo || 1,
        pageSize: this.state.pagination.pageSize,
        salesName: this.state.orderRefundSearch,//订单负责人
        departmentId: this.state.departmenttList,
        orderNo: this.state.orderNoSearch,
        startTime: this.state.releaseDate[0],
        endTime: this.state.releaseDate[1],
        grantStatus: this.state.grantStatus,
        startTime1: this.state.createDate[0],
        endTime1: this.state.createDate[1],
      },
      success: function (data) {
        ShowModal(this);
        let theArr = [];
        if (!data.data || !data.data.list) {
          if (data.error && data.error.length) {
            message.warning(data.error[0].message);
          };
        }
        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,
          pagination: this.state.pagination
        });
      }.bind(this),
    }).always(function () {

      this.setState({
        loading: false
      });
    }.bind(this));
  },
  getInitialState() {
    return {
      searchMore: true,
      releaseDate: [],
      createDate: [],
      RowData: {},
      execState: false,
      selectedRowKeys: [],
      selectedRows: [],
      proofData: {},
      loading: false,
      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: 'orderNo',
          key: 'orderNo',
        },
        {
          title: '客户名称',
          dataIndex: 'buyName',
          key: 'buyName',
          width:100,
          render: text => {
            return (
                <Tooltip title={text}>
                  <div style={{
                    maxWidth:'100px',
                    overflow:'hidden',
                    textOverflow: "ellipsis",
                    whiteSpace:'nowrap',
                  }}>{text}</div>
                </Tooltip>
            )
          }
        },
        {
          title: '订单负责人',
          dataIndex: 'salesName',
          key: 'salesName',
        },
        {
          title: '签单日期',
          dataIndex: 'signTime',
          key: 'signTime',
        },
        {
          title: '订单金额(万元)',
          dataIndex: 'totalAmount',
          key: 'totalAmount'
        },
        {
          title: '订单状态',
          dataIndex: 'orderStatus',
          key: 'orderStatus',
          render: (text) => {
            return getNewOrderStatus(text)
          }
        },
        {
          title: '项目状态',
          dataIndex: 'projectStatus',
          key: 'projectStatus',
          render: (text) => {
            return getProjectName(text)
          }
        },
        {
          title: '发放状态',
          dataIndex: 'grantStatus',
          key: 'grantStatus',
          render: (text) => {
            return getBonusState(text)
          }
        },
        {
          title: '发放类型',
          dataIndex: 'bonusSubject',
          key: 'bonusSubject',
          render: text => {
            return getJsyPaymentType(text)
          }
        },
        {
          title: '校对后单量',
          dataIndex: 'proofCount',
          key: 'proofCount'
        },
        {
          title: '已收(万元)',
          dataIndex: 'settlementAmount',
          key: 'settlementAmount'
        }, {
          title: '已退(万元)',
          dataIndex: 'refundAmount',
          key: 'refundAmount'
        }
      ],
      dataSource: [],
      searchTime: [,]
    }
  },
  tableRowClick(record, index) {
    this.state.RowData = record;
    this.setState({
      showDesc: true,
    });
  },
  closeDesc(e, s) {
    this.state.RowData = {};
    this.state.showDesc = e;
    if (s) {
      this.loadData(this.state.page);
    };
  },
  componentWillMount() {
    this.loadData();
    this.departmentList();
  },
  search() {
    this.loadData();
  },
  //导出
  exportExec() {
    let departmentName = '',
      depart = this.state.departmentArr || [];
    depart.map(item => {
      if (this.state.departmentId == item.id) {
        departmentName = item.name;
        return;
      }
    });
    let data = {
      departmentId: this.state.departmentId,
      departmentName: departmentName,
      salesName: this.state.orderRefundSearch,//订单负责人
      startTime: this.state.releaseDate[0],
      endTime: this.state.releaseDate[1],
      grantStatus: this.state.grantStatus,
      startTime1: this.state.createDate[0],
      endTime1: this.state.createDate[1],
    }
    window.location.href = (globalConfig.context + '/api/admin/bonus/exportAllSaleBonusData?' + $.param(data));
  },

  reset() {
    this.state.orderRefundSearch = '';
    this.state.releaseDate = [];
    this.state.createDate = [];
    this.state.orderNoSearch = '';
    this.state.departmenttList = undefined;
    this.state.grantStatus = undefined
    this.loadData();
  },
  searchSwitch() {
    this.setState({
      searchMore: !this.state.searchMore
    });
  },
  changeList(arr) {
    const newArr = [];
    this.state.columns.forEach(item => {
      arr.forEach(val => {
        if (val === item.title) {
          newArr.push(item);
        }
      });
    });
    this.setState({
      changeList: newArr
    });
  },
  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;
    const { RangePicker } = DatePicker;
    let departmentArr = this.state.departmentArr || [];
    return (
      <div className="user-content">
        <ShowModalDiv ShowModal={this.state.showModal} />
        <div className="content-title">
          <span>营销员奖金</span>
        </div>
        <Tabs
          defaultActiveKey="1"
          onChange={this.callback}
          className="test">
          <TabPane tab="搜索" key="1">
            <div className="user-search">
              <Select
                placeholder="订单部门"
                style={{ width: 150, marginRight: 10, marginLeft: 10 }}
                value={this.state.departmenttList}
                onChange={e => {
                  this.setState({ departmenttList: e });
                }}
              >
                {departmentArr.map(function (item) {
                  return (
                    <Select.Option key={item.id}>{item.name}</Select.Option>
                  );
                })}
              </Select>
              <Input
                placeholder="订单编号"
                value={this.state.orderNoSearch}
                onChange={e => {
                  this.setState({ orderNoSearch: e.target.value });
                }}
              />
              <Input
                placeholder="订单负责人"
                value={this.state.orderRefundSearch}
                onChange={e => {
                  this.setState({ orderRefundSearch: e.target.value });
                }}
              />
              <Select
                placeholder="发放状态"
                style={{ width: 150, marginRight: 10 }}
                value={this.state.grantStatus}
                onChange={e => {
                  this.setState({ grantStatus: e });
                }}
              >
                <Option value="0">未发放</Option>
                <Option value="1">已发放</Option>
              </Select>

              <Button type="primary" onClick={this.search}>
                搜索
              </Button>
              <Button onClick={this.reset}>重置</Button>
              <span>
                更多搜索
                <Switch
                  defaultChecked={false}
                  onChange={this.searchSwitch.bind(this)}
                />
              </span>
              <div
                className="search-more"
                style={this.state.searchMore ? { display: "none" } : {}}
              >
                <span>签单时间 :</span>
                <RangePicker
                  format="YYYY-MM"
                  value={[
                    this.state.releaseDate[0]
                      ? moment(this.state.releaseDate[0])
                      : null,
                    this.state.releaseDate[1]
                      ? moment(this.state.releaseDate[1])
                      : null
                  ]}
                  onChange={(data, dataString) => {
                    this.setState({ releaseDate: dataString });
                  }}
                />
                <span>创建时间 :</span>
                <RangePicker
                  format="YYYY-MM-DD"
                  value={[
                    this.state.createDate[0]
                      ? moment(this.state.createDate[0])
                      : null,
                    this.state.createDate[1]
                      ? moment(this.state.createDate[1])
                      : null
                  ]}
                  onChange={(data, dataString) => {
                    this.setState({ createDate: dataString });
                  }}
                />
              </div>
            </div>
          </TabPane>
          <TabPane tab="导出" key="2">
            <div style={{ float: "left" }}>
              <Button onClick={this.exportExec} style={{ margin: 10 }}>导出excel</Button>
            </div>
          </TabPane>
          <TabPane tab="更改表格显示数据" key="3">
            <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" id="table">
          <Spin spinning={this.state.loading}>
            <Table
              columns={
                this.state.changeList
                    ? this.state.changeList
                    : this.state.columns
              }
              dataSource={this.state.dataSource}
              rowSelection={false}
              pagination={this.state.pagination}
              onRowClick={this.tableRowClick}
              bordered
              size="small"
            />
          </Spin>
        </div>
        <BonuseDetail
          data={this.state.RowData}
          showDesc={this.state.showDesc}
          closeDesc={this.closeDesc.bind(this)}
        />
      </div>
    );
  }
})

export default YxBonus;
