import React from 'react';
import ajax from 'jquery/src/ajax/xhr.js';
import $ from 'jquery/src/ajax';
import moment from 'moment';
import '../distribute/public.less';
import { Button, Input, Spin, Table, Switch, Select, message, DatePicker, Tabs } from 'antd';
import { getTransactionProject, ShowModal } from "@/tools";
import WaterDesc from './waterDetail';
import { ChooseList } from "../../order/orderNew/chooseList";
import ShowModalDiv from "@/showModal.jsx";
import Cascaders from "../../../common/cascaders";

const { TabPane } = Tabs
const MyWater = 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);
          }
          thedata = {};
        } 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/financial/myBillList",
      data: {
        pageNo: pageNo || 1,
        pageSize: this.state.pagination.pageSize,
        payeeName: this.state.payeeNameSearch,
        payerName: this.state.payerNameSearch,
        startTime: this.state.releaseDate[0],
        endTime: this.state.releaseDate[1],
        orderNo: this.state.orderNo,
        deps: this.state.deps
      },
      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);
          }
        } else {
          for (let i = 0; i < data.data.list.length; i++) {
            let thisdata = data.data.list[i];
            theArr.push({
              key: i,
              orderNo: thisdata.orderNo,
              billNo: thisdata.billNo,
              transactionAmount: thisdata.transactionAmount,
              payeeName: thisdata.payeeName,
              payerName: thisdata.payerName,
              transactionSubject: thisdata.transactionSubject,
              transactionChannel: thisdata.transactionChannel,
              financialPayTimes: thisdata.financialPayTimes
                ? new Date(thisdata.financialPayTimes).toLocaleDateString()
                : "",
              financialPayNo: thisdata.financialPayNo,
              createrName: thisdata.createrName,
              saleName: thisdata.saleName,
              createTimes: thisdata.createTimes,
              type: thisdata.type == 0 ? "手工" : "批量"
            });
          }
        }
        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: theArr,
          pagination: this.state.pagination
        });
      }.bind(this)
    }).always(
      function () {
        this.setState({
          loading: false
        });
      }.bind(this)
    );
  },
  getInitialState() {
    return {
      searchMore: true,
      releaseDate: [],
      RowData: {},
      selectedRowKeys: [],
      selectedRows: [],
      loading: false,
      // 子组件改变的表格title数组
      changeList: undefined,
      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: "billNo",
          key: "billNo"
          //   fixed: "left"
        },
        {
          title: "金额(万元)",
          dataIndex: "transactionAmount",
          key: "transactionAmount"
        },
        {
          title: "收款方",
          dataIndex: "payeeName",
          key: "payeeName"
        },
        {
          title: "付款方",
          dataIndex: "payerName",
          key: "payerName"
        },
        {
          title: "流水科目",
          dataIndex: "transactionSubject",
          key: "transactionSubject",
          render: text => {
            return getTransactionProject(text);
          }
        },
        {
          title: "收款类型",
          dataIndex: "type",
          key: "type"
        },
        {
          title: "财务流水时间",
          dataIndex: "financialPayTimes",
          key: "financialPayTimes"
        },
        {
          title: "财务流水号",
          dataIndex: "financialPayNo",
          key: "financialPayNo"
        },
        {
          title: "订单编号",
          dataIndex: "orderNo",
          key: "orderNo"
        },
        {
          title: "订单负责人",
          dataIndex: "saleName",
          key: "saleName"
        },
        {
          title: "创建时间",
          dataIndex: "createTimes",
          key: "createTimes"
        }
      ],
      dataSource: [],
      searchTime: [,]
    };
  },
  componentWillMount() {
    this.loadData();
    this.departmentList();
  },
  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);
    }
  },
  search() {
    this.loadData();
  },
  reset() {
    this.state.orderNo = "";
    this.state.payeeNameSearch = "";
    this.state.releaseDate = [];
    this.state.deps = undefined;
    this.state.payerNameSearch = "";
    this.Cascaders.empty();
    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;
    var departmentArr = this.state.departmentArr || [];
    return (
      <div className="user-content">
        <ShowModalDiv ShowModal={this.state.showModal} onClose={() => { this.setState({ showModal: false }) }} />
        <div className="content-title" style={{ marginBottom: 10 }}>
          <span style={{ fontWeight: 900, fontSize: 16 }}>我的流水订单</span>
        </div>
        <Tabs
          defaultActiveKey="1"
          onChange={this.callback}
          className="test">
          <TabPane tab="搜索" key="1">
            <div className="user-search">
              <Input
                placeholder="订单编号"
                value={this.state.orderNo}
                style={{ marginLeft: 10 }}
                onChange={e => {
                  this.setState({ orderNo: e.target.value });
                }}
              />
              <Input
                placeholder="收款方"
                value={this.state.payeeNameSearch}
                onChange={e => {
                  this.setState({ payeeNameSearch: e.target.value });
                }}
              />
              <Input
                placeholder="付款方"
                value={this.state.payerNameSearch}
                onChange={e => {
                  this.setState({ payerNameSearch: e.target.value });
                }}
              />
              <Cascaders
                ref={node => this.Cascaders = node}
                placeholder="订单部门"
                id="id"
                name="name"
                children="list"
                height={28}
                onSel={(e) => {
                  this.setState({
                    deps: JSON.stringify(e),
                  });
                }}
              />
              {/* <Select
                placeholder="订单部门"
                style={{ width: 150, marginRight: 10 }}
                value={this.state.departmentId}
                onChange={e => {
                  this.setState({ departmentId: e });
                }}
              >
                {departmentArr.map(function (item) {
                  return <Select.Option key={item.id}>{item.name}</Select.Option>;
                })}
              </Select> */}
              <span style={{ marginRight: 10 }}>流水时间 :</span>
              <RangePicker
                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 });
                }}
              />
              <Button
                type="primary"
                onClick={this.search}
                style={{ marginLeft: 10 }}
              >
                搜索
              </Button>
              <Button onClick={this.reset}>重置</Button>
            </div>
          </TabPane>
          <TabPane tab="更改表格数据" key="2">
            <div style={{ marginTop: 10, marginLeft: 10 }}>
              <ChooseList
                columns={this.state.columns}
                changeFn={this.changeList}
                changeList={this.state.changeList}
                top={55}
              />
            </div>
          </TabPane>
        </Tabs>
        <div className="patent-table">
          <Spin spinning={this.state.loading}>
            <Table
              bordered
              columns={
                this.state.changeList == undefined
                  ? this.state.columns
                  : this.state.changeList
              }
              dataSource={this.state.dataSource}
              scroll={{ x: 1500, y: 0 }}
              rowSelection={false}
              pagination={this.state.pagination}
              onRowClick={this.tableRowClick}
              size="small"
            />
          </Spin>
        </div>
        <WaterDesc
          data={this.state.RowData}
          showDesc={this.state.showDesc}
          closeDesc={this.closeDesc.bind(this)}
        />
      </div>
    );
  }
});

export default MyWater;