import React from "react";
import $ from "jquery/src/ajax";
import moment from "moment";
import {
  Button,
  Form,
  Input,
  Spin,
  Table,
  Select,
  message,
  Tabs,
  AutoComplete,
  DatePicker,
  Modal,
} from "antd";
import { ChooseList } from "../../order/orderNew/chooseList";
import { ShowModal, getVehicleName, getTypeName, commonAdd, dealBigMoney } from "../../../tools"
import ShowModalDiv from "@/showModal.jsx";
import AccountDetails from "./accountDetails";
import { accountType, accountStatus } from "@/dataDic";
const FormItem = Form.Item;
const { RangePicker } = DatePicker;
const { TabPane } = Tabs;
const AccountList = React.createClass({
  getInitialState() {
    return {
      showDetails: false,
      data: {},
      logvisible: false,
      logdataSour: [],
      visible: "",
      reason: "",
      checkData: {},
      aname: "",
      searchValues: {}, // 列表筛选条件
      loading: false, //加载动画
      changeList: undefined, // 更改后的表格显示数据
      dataSource: [], // 列表数据
      departmentArr: [],
      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: "type",
          key: "type",
          width: 140,
          render: (text, record) => {
            return (
              
                {text == 0 ? record.typeOther : accountType.find(item => item.value === text).label}
              
            );
          },
        },
        {
          title: "报销金额(元)",
          dataIndex: "totalAmount",
          key: "totalAmount",
        },
        {
          title: "实报金额(元)",
          dataIndex: "realAmount",
          key: "realAmount",
        },
        {
          title: "报销编号",
          dataIndex: "checkNo",
          key: "checkNo",
        },
        {
          title: "报销至订单",
          dataIndex: "buyerName",
          key: "buyerName",
          render: (text, record) => {
            return (
              record.targetType == 0
                ? 
固定费用
                : 
                  {text || ""}
                  {record.contractNo || ""}
                 
            );
          },
        },
        {
          title: "报销至部门",
          dataIndex: "applyDepName",
          key: "applyDepName",
          render: (text, record) => {
            return (
              {record.targetType == 0 && text}
            );
          },
        },
        {
          title: "报销人",
          dataIndex: "aname",
          key: "aname",
        },
        {
          title: "财务负责人",
          dataIndex: "financeName",
          key: "financeName",
        },
        {
          title: "状态",
          dataIndex: "status",
          key: "status",
          render: (text, record) => {
            return (
              
                {accountStatus[text].label}
              
            );
          },
        },
        {
          title: "报销公司/支付公司",
          dataIndex: "payDepName",
          key: "payDepName",
          render: (text, record) => {
            return (
              
                {record.applyDepName || ""}
                {text || ""}
               
            );
          },
        },
        {
          title: "报销时间",
          dataIndex: "createTimeStr",
          key: "createTimeStr",
        },
        {
          title: "操作",
          dataIndex: "operate",
          key: "operate",
          render: (text, record) => {
            return (
              
                
                  {this.props.isOperate &&
                    }
                  {this.props.isOperate && record.examine == 1 &&
                    }
                  {this.props.isOperate && record.examine == 1 &&
                    }
                  {record.status != 0 && }
                
               
            )
          }
        },
      ],
      logcolumns: [
        {
          title: "审核人",
          dataIndex: "auditorName",
          key: "auditorName"
        },
        {
          title: "操作",
          dataIndex: "status",
          key: "status",
          width: 120,
          render: (text, record) => {
            return (
              
                {["【发起】", "【通过】", "【完成】", "【驳回】", "【撤销】", "【修改】"][text]}
                {this.state.processStatus == record.processStatus && !record.id &&
                   审核中...}
              
            );
          },
        },
        {
          title: "操作时间",
          dataIndex: "createTimeStr",
          key: "createTimeStr",
          width: 88,
        },
        {
          title: "备注",
          dataIndex: "remarks",
          key: "remarks",
          render: (text, record) => {
            return (
              {text}
            )
          }
        }
      ],
    };
  },
  componentWillMount() {
    this.departmentList();
    this.loadData();
  },
  // 列表接口
  loadData(pageNo) {
    const { searchValues, pagination } = this.state;
    this.setState({
      loading: true,
    });
    let datas = Object.assign(searchValues, {
      pageNo: pageNo || 1,
      pageSize: pagination.pageSize,
      expenseMain: 0,
      processStatus: this.props.isOperate ? 1 : 2,
    });
    $.ajax({
      method: "get",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/expenseAccount/pageList",
      data: datas,
      success: function (data) {
        ShowModal(this);
        this.setState({
          loading: false,
        });
        if (data.error && data.error.length === 0) {
          if (data.data.list) {
            pagination.current = data.data.pageNo;
            pagination.total = data.data.totalCount;
            if (data.data && data.data.list && !data.data.list.length) {
              pagination.current = 0;
              pagination.total = 0;
            }
            this.setState({
              dataSource: data.data.list,
              pagination: this.state.pagination,
              pageNo: data.data.pageNo,
              totalAmount: data.data.totalAmount,
            });
          } else {
            this.setState({
              dataSource: data.data,
              pagination: false,
            });
          }
        } else {
          message.warning(data.error[0].message);
        }
      }.bind(this),
    }).always(
      function () {
        this.setState({
          loading: false,
        });
      }.bind(this)
    );
  },
  // 日志
  getLogData(eaid) {
    $.ajax({
      method: "get",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/expenseAccount/log/list",
      data: { eaid },
      success: function (data) {
        if (data.error.length === 0) {
          this.setState({
            logdataSour: data.data || []
          });
          this.isHere(data.data || [])
        } else {
          message.warning(data.error[0].message);
        }
      }.bind(this)
    }).always(
      function () {
      }.bind(this)
    );
  },
  // 
  isHere(list = []) {
    for (var i = 0; i < list.length; i++) {
      if (!list[i].id) {
        this.setState({
          processStatus: list[i].processStatus
        })
        return
      }
    }
  },
  download(urls) {
    if (!urls) {
      message.error("暂无可下载的附件!");
    } else {
      let list = urls.split(',') || []
      list.forEach(e => {
        var aLink = document.createElement('a');
        aLink.download = e;
        aLink.href = globalConfig.context + `/open/download?fileName=${e}&delete=false`;
        document.body.appendChild(aLink);
        aLink.click();
        document.body.removeChild(aLink);
      });
    }
  },
  departmentList() {
    $.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 () {
      }.bind(this)
    );
  },
  // 审核
  toExamine(num) {
    const { checkData, reason } = this.state
    if (!reason) {
      message.warning("请填写审核说明~");
      return;
    }
    this.setState({
      loading: true,
    });
    $.ajax({
      method: "POST",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/expenseAccount/examine",
      data: {
        id: checkData.id,
        reason,
        status: num,//1同意 3驳回
      },
    }).done(
      function (data) {
        if (!data.error.length) {
          message.success("审核成功!");
          this.setState({
            visible: "",
            reason: "",
            showDetails: false,
            checkData: {},
          });
          this.loadData()
        } else {
          message.warning(data.error[0].message);
        }
      }.bind(this)
    );
  },
  tableRowClick(e) {
    this.setState({
      showDetails: true,
      id: e.id,
    })
    // this.getDetails(e.id)
  },
  // 查询负责人
  followUp(e) {
    this.setState({
      aname: e
    });
    $.ajax({
      method: "get",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/customer/listAdminByName",
      data: {
        adminName: e,
      },
      success: function (data) {
        let thedata = data.data || [];
        if (!thedata) {
          if (data.error && data.error.length) {
            message.warning(data.error[0].message);
          }
          thedata = {};
        }
        this.setState({
          fjlist: thedata,
        });
      }.bind(this),
    }).always(
      function () {
        this.setState({
          loading: false,
        });
      }.bind(this)
    );
  },
  // 选中负责人
  selectF(value) {
    const { searchValues, fjlist } = this.state;
    const newdataSources = JSON.stringify(fjlist) == "{}" ? [] : fjlist;
    this.setState({
      searchValues: Object.assign(searchValues, {
        aid: newdataSources.find((item) => item.name == value).id,
      }),
    });
  },
  // 搜索
  search() {
    this.loadData();
  },
  // 重置
  reset() {
    this.setState({
      aname: "",
      searchValues: JSON.parse(JSON.stringify({})),
    }, () => {
      this.loadData();
    })
  },
  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 { TextArea } = Input
    const { searchValues, visible, } = this.state
    const formItemLayout = {
      labelCol: { span: 5 },
      wrapperCol: { span: 18 },
    };
    const dataSources = this.state.fjlist || [];
    const options = dataSources.map((group) => (
      
        {group.name}
      
    ));
    return (
      
        
        
          费用单列表
        
        
          
            
               {
                  searchValues["contractNo"] = e.target.value;
                  this.setState({
                    searchValues: searchValues,
                  });
                }}
              />
              
 {
                  searchValues["username"] = e.target.value;
                  this.setState({
                    searchValues: searchValues,
                  });
                }}
              />
              
              
                
              
              
              
              
              
               {
                  searchValues["checkNo"] = e.target.value;
                  this.setState({
                    searchValues: searchValues,
                  });
                }}
              />
              
                报销时间:
                 {
                    this.setState({
                      searchValues: Object.assign(searchValues, {
                        startTime: dataString[0],
                        endTime: dataString[1],
                      }),
                    });
                  }}
                />
                
                
              
             
          
          
            
              
            
          
        
        
          
            
          
          
            {
              
                {`金额总计(元):${this.state.totalAmount}`}
              
            }
          
         
        {
          //审核弹窗
          this.state.visible != "" &&
          
 { this.toExamine(visible == "adopt" ? 1 : visible == "reject" && 3) }}
            okText={this.state.visible == "adopt" ? "通过" : this.state.visible == "reject" && "驳回"}
            onCancel={() => {
              this.setState({
                visible: '',
                reason: "",
                checkData: {},
              })
            }}
          >
            
              
          
        }
        {
          this.state.showDetails &&
          
 { this.setState({ showDetails: false }) }}
          />
        }
        {
          // 审核日志
          this.state.logvisible &&
           {
              this.setState({
                logvisible: false,
              })
            }}
          >
            
          
        }
       
    );
  },
});
export default AccountList;