import React from "react";
import {
  Button,
  Input,
  Select,
  Spin,
  Table,
  message,
  DatePicker,
  Form,
  Modal,
  Tabs,
} from "antd";
import $ from "jquery/src/ajax";
import moment from "moment";
import ShowModalDiv from "@/showModal.jsx";
import {
  getLiquidationStatus,
  getjiedian,
  getNewOrderStatus,
  getProjectStatus,
  ShowModal,
} from "@/tools.js";
import "./customer.less";
import {ChooseList} from "./chooseList";

const ArrearsList = Form.create()(
  React.createClass({
    loadData(pageNo) {
      this.setState({
        visitModul: false,
        loading: true,
        ispage: pageNo,
        modalVisible: false,
      });
      $.ajax({
        method: "get",
        dataType: "json",
        crossDomain: false,
        url: globalConfig.context + "/api/admin/newOrder/arrearsDunList",
        data: {
          pageNo: pageNo || 1,
          pageSize: this.state.pagination.pageSize,
          name: this.state.customerName, //名称
          orderNo: this.state.orderNo, //订单编号
          depId: this.state.departmenttSearch, //订单部门
          starTime: this.state.releaseDate[0], //开始时间
          endTime: this.state.releaseDate[1], //结束时间
          tStarTime: this.state.chufaDate[0], //开始时间
          tEndTime: this.state.chufaDate[1], //结束时间
          adminName: this.state.adminName,
        },
        success: function (data) {
          ShowModal(this);
          let theArr = [];
          if (data.error.length || 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];
              let obj = thisdata;
              obj.key = i + 1;
              theArr.push(obj);
            }
            this.state.pagination.total = data.data.totalCount;
            this.state.pagination.current = data.data.pageNo;

          }
          if (data.data && data.data.list && !data.data.list.length) {
            this.state.pagination.total = 0;
          }
          this.setState({
            dataSource: theArr,
            pageNo: pageNo,
            pagination: this.state.pagination,
            selectedRowKeys: [],
          });
        }.bind(this),
      }).always(
        function () {
          this.setState({
            loading: false,
          });
        }.bind(this)
      );
    },
    getInitialState() {
      return {
        releaseDate: [],
        chufaDate: [],
        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: "key",
            key: "key",
          },
          {
            title: "合同编号",
            dataIndex: "contractNo",
            key: "contractNo",
          },
          {
            title: "订单编号",
            dataIndex: "orderNo",
            key: "orderNo",
          },
          {
            title: "客户名称",
            dataIndex: "userName",
            key: "userName",
            render: (text) => {
              return text && text.length > 9 ? text.substr(0, 9) + "..." : text;
            },
          },
          {
            title: "订单负责人",
            dataIndex: "salesmanName",
            key: "salesmanName",
          },
          {
            title: "订单部门",
            dataIndex: "depName",
            key: "depName",
          },
          {
            title: "订单状态",
            dataIndex: "orderStatus",
            key: "orderStatus",
            render: (text) => {
              return getNewOrderStatus(text);
            },
          },
          {
            title: "项目状态",
            dataIndex: "projectStatus",
            key: "projectStatus",
            render: (text) => {
              return getProjectStatus(text);
            },
          },
          {
            title: "签单金额(万元)",
            dataIndex: "totalAmount",
            key: "totalAmount",
          },
          {
            title: "已收款(万元)",
            dataIndex: "settlementAmount",
            key: "settlementAmount",
          },
          {
            title: "应收款(万元)",
            dataIndex: "orderReceivables",
            key: "orderReceivables",
          },
          {
            title: "欠款(万元)",
            dataIndex: "orderArrears",
            key: "orderArrears",
          },
          {
            title: "结算状态",
            dataIndex: "liquidationStatus",
            key: "liquidationStatus",
            render: (text) => {
              return getLiquidationStatus(text);
            },
          },
            {
              title: "催收科目",
              dataIndex: "type",
              key: "type",
                render: text => {
                  if(text == 0) {
                    return "按时触发应收欠款"
                  }
                }
            },
          {
            title: "催款状态",
            dataIndex: "dunStatus",
            key: "dunStatus",
            render: (text) => {
              if (text == 0) {
                return "未启动";
              } else if (text == 1) {
                return "催款中";
              } else if (text == 2) {
                return "已完成";
              } else if (text == 3) {
                return "已停止";
              }
            },
          },
          {
            title: "催款启动日期",
            dataIndex: "startDate",
            key: "startDate",
          },
          {
            title: "下单时间",
            dataIndex: "signDate",
            key: "signDate",
          },
        ],
        dataSource: [],
      };
    },

    //页面加载函数
    componentWillMount() {
      this.departmentList();
      this.loadData();
    },
    //搜索
    search() {
      this.setState({
        //signBillVisible:false
      });
      this.loadData();
    },
    //导出
    exportExec() {
      var data = {
        name: this.state.customerName ? this.state.customerName : undefined, //客户名称
        adminName: this.state.adminName ? this.state.adminName : undefined, //订单负责人
        orderNo: this.state.orderNo ? this.state.orderNo : undefined, //订单编号
        starTime: this.state.releaseDate[0]
          ? this.state.releaseDate[0]
          : undefined,
        endTime: this.state.releaseDate[1]
          ? this.state.releaseDate[1]
          : undefined,
        tStarTime: this.state.chufaDate[0]
          ? this.state.chufaDate[0]
          : undefined,
        tEndTime: this.state.chufaDate[1] ? this.state.chufaDate[1] : undefined,
        depId: this.state.departmenttSearch,
        pageSize: 9999,
      };
      window.location.href =
        globalConfig.context +
        "/api/admin/newOrder/exportArrearsDunListData?" +
        $.param(data);
    },
    //重置
    reset() {
      this.state.orderNo = "";
      this.state.customerName = "";
      this.state.adminName = "";
      this.state.departmenttSearch = undefined;
      this.state.releaseDate[0] = undefined;
      this.state.releaseDate[1] = undefined;
      this.state.chufaDate[1] = undefined;
      this.state.chufaDate[0] = undefined;
      this.loadData();
    },
    //部门
    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)
      );
    },
    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 formItemLayout = {
        labelCol: { span: 8 },
        wrapperCol: { span: 14 },
      };
      const FormItem = Form.Item;
      const { RangePicker } = DatePicker;
      const rowSelection = {
        selectedRowKeys: this.state.selectedRowKeys,
        onChange: (selectedRowKeys, selectedRows) => {
          this.setState({
            modalVisible: false,
            selectedRows: selectedRows.slice(-1),
            selectedRowKeys: selectedRowKeys.slice(-1),
          });
        },
        onSelect: (recordt) => {
          this.setState({
            modalVisible: false,
            recordt: recordt.id,
          });
        },
      };
      let departmentArr = this.state.departmentArr || [];
      const { TabPane } = Tabs;
      return (
        <div className="user-content">
          <ShowModalDiv ShowModal={this.state.showModal} />
          <div className="content-title" style={{ marginBottom: 10 }}>
            <span style={{ fontWeight: 900, fontSize: 16 }}>欠款催收列表</span>
          </div>
          <div className="user-search">
            <Tabs
              defaultActiveKey="1"
              onChange={this.callback}
              className="test"
            >
              <TabPane tab="搜索" key="1">
                <Input
                  placeholder="客户名称"
                  style={{
                    width: "150px",
                    marginBottom: "10px",
                    marginLeft: 10,
                    marginRight: 10,
                  }}
                  value={this.state.customerName}
                  onChange={(e) => {
                    this.setState({ customerName: e.target.value });
                  }}
                />
                <Input
                  placeholder="订单编号"
                  style={{ width: "150px", marginRight: 10 }}
                  value={this.state.orderNo}
                  onChange={(e) => {
                    this.setState({ orderNo: e.target.value });
                  }}
                />
                <Input
                  placeholder="营销员名称"
                  style={{
                    width: "150px",
                    marginBottom: "10px",
                    marginRight: 10,
                  }}
                  value={this.state.adminName}
                  onChange={(e) => {
                    this.setState({ adminName: e.target.value });
                  }}
                />
                <Select
                  placeholder="选择部门"
                  style={{ width: 150, marginRight: "10px" }}
                  value={this.state.departmenttSearch}
                  onChange={(e) => {
                    this.setState({ departmenttSearch: e });
                  }}
                >
                  {departmentArr.map(function (item) {
                    return (
                      <Select.Option key={item.id}>{item.name}</Select.Option>
                    );
                  })}
                </Select>
                <span style={{ marginRight: "10px" }}>下单时间 :</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 });
                  }}
                />
                <span style={{ marginRight: "10px", marginLeft: 10 }}>触发时间 :</span>
                <RangePicker
                  value={[
                    this.state.chufaDate[0]
                      ? moment(this.state.chufaDate[0])
                      : null,
                    this.state.chufaDate[1]
                      ? moment(this.state.chufaDate[1])
                      : null,
                  ]}
                  onChange={(data, dataString) => {
                    this.setState({ chufaDate: dataString });
                  }}
                />
                <Button
                  type="primary"
                  onClick={this.search}
                  style={{ marginLeft: "10px", marginRight: 10 }}
                >
                  搜索
                </Button>
                <Button onClick={this.reset}>重置</Button>
              </TabPane>
              <TabPane tab="导出催款列表" key="2">
                <Button
                  type="primary"
                  onClick={this.exportExec}
                  style={{ marginBottom: 10, marginTop: 10, marginLeft: 10 }}
                >
                  导出催款列表
                </Button>
              </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">
              <Spin spinning={this.state.loading}>
                <Table
                    columns={
                      this.state.changeList
                          ? this.state.changeList
                          : this.state.columns
                    }
                  dataSource={this.state.dataSource}
                  pagination={this.state.pagination}
                  scroll={{ x: "max-content", y: 0 }}
                  bordered
                  size="small"
                />
              </Spin>
            </div>
          </div>
        </div>
      );
    },
  })
);
export default ArrearsList;
