import React from "react";
import {
  Icon,
  Button,
  Input,
  Spin,
  Table,
  message,
  DatePicker,
  Upload,
  Form,
  Modal,
  Tabs,
  Col
} from "antd";
import $ from "jquery/src/ajax";
import moment from "moment";
import {
  getLiquidationStatus,
  getApprovedState,
  getProcessStatus,
  splitUrl,
  getjiedian,
  getboutique,
  getCuikuan,
  getProjectStatus,
  moneyVerify
} from "@/tools.js";
import "./customer.less";
//图片组件
const PicturesWall = React.createClass({
  getInitialState() {
    return {
      previewVisible: false,
      previewImage: "",
      fileList: this.props.pictureUrl
    };
  },
  handleCancel() {
    this.setState({
      previewVisible: false
    });
  },
  handlePreview(file) {
    this.setState({
      previewImage: file.url || file.thumbUrl,
      previewVisible: true
    });
  },
  handleChange(info) {
    let fileList = info.fileList;
    this.setState({
      fileList
    });
    this.props.fileList(fileList);
  },
  componentWillReceiveProps(nextProps) {
    this.state.fileList = nextProps.pictureUrl;
    this.state.pojectApplicationUrl = undefined;
  },
  render() {
    const { previewVisible, previewImage, fileList } = this.state;
    const uploadButton = (
      
    );
    return (
      
        
          {fileList.length >= 18 ? null : uploadButton}
        
        
           
        
       
    );
  }
});
const IntentionCustomer = 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/orderNewList",
        data: {
          pageNo: pageNo || 1,
          pageSize: this.state.pagination.pageSize,
          specially: 1, //审核列表
          name: this.state.customerName, //名称
          orderNo: this.state.orderNoSearch, //订单编号
          starTime: this.state.releaseDate[0], //开始时间
          endTime: this.state.releaseDate[1] //结束时间
        },
        success: function(data) {
          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];
              theArr.push({
                key: i,
                id: thisdata.id, //用户ID
                orderNo: thisdata.orderNo, //订单编号
                totalAmount: thisdata.totalAmount, //签单金额
                processStatus: thisdata.processStatus, //流程状态
                liquidationStatus: thisdata.liquidationStatus, //结算状态
                approval: thisdata.approval, //特批状态
                signDate: thisdata.signDate, //签单时间
                userName: thisdata.userName, //客户名称
                salesmanName: thisdata.salesmanName, //营销员名称
                financeName: thisdata.financeName, //财务名称
                createDate: thisdata.createDate, //下单时间
                depName: thisdata.depName,
                orderStatus: thisdata.orderStatus
              });
            }
            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 {
        page: 1,
        releaseDate: [],
        selectedRowKeys: [],
        pictureUrl: [],
        attachmentUrl: [],
        paginations: false,
        activeKey: "1",
        confirmLoading: false,
        aloading: 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: "createDate",
            key: "createTime"
          },
          {
            title: "合同签订时间",
            dataIndex: "signDate",
            key: "signDate"
          },
          {
            title: "客户名称",
            dataIndex: "userName",
            key: "userName",
            render: text => {
              return text && text.length > 9 ? text.substr(0, 9) + "..." : text;
            }
          },
          {
            title: "流程状态",
            dataIndex: "processStatus",
            key: "processStatus",
            render: text => {
              return getProcessStatus(text);
            }
          },
          {
            title: "订单部门",
            dataIndex: "depName",
            key: "depName"
          },
          {
            title: "签单金额(万元)",
            dataIndex: "totalAmount",
            key: "totalAmount"
          },
          {
            title: "结算状态",
            dataIndex: "liquidationStatus",
            key: "liquidationStatus",
            render: text => {
              return getLiquidationStatus(text);
            }
          },
          {
            title: "是否特批",
            dataIndex: "approval",
            key: "approval",
            render: text => {
              return getApprovedState(text);
            }
          },
          {
            title: "订单负责人",
            dataIndex: "salesmanName",
            key: "salesmanName"
          },
          {
            title: "财务负责人",
            dataIndex: "financeName",
            key: "financeName"
          }
        ],
        data: [],
        dataSource: [],
        columnsX: [
          {
            title: "业务项目名称",
            dataIndex: "commodityName",
            key: "commodityName"
          },
          {
            title: "项目类别",
            dataIndex: "cname",
            key: "cname"
          },
          {
            title: "项目数量",
            dataIndex: "commodityQuantity",
            key: "commodityQuantity"
          },
          {
            title: "金额(万元)",
            dataIndex: "commodityPrice",
            key: "commodityPrice"
          },
          {
            title: "负责人",
            dataIndex: "contacts",
            key: "contacts"
          },
          {
            title: "负责人电话",
            dataIndex: "contactsMobile",
            key: "contactsMobile"
          },
          {
            title: "项目状态",
            dataIndex: "projectStatus",
            key: "projectStatus",
            render: text => {
              return getProjectStatus(text);
            }
          },
          {
            title: "主要项目",
            dataIndex: "main",
            key: "main",
            render: text => {
              return text ? "是" : "否";
            }
          },
          {
            title: "项目说明",
            dataIndex: "taskComment",
            key: "taskComment",
            render: text => {
              return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
            }
          }
        ],
        columnsrizhi: [
          {
            title: "流程",
            dataIndex: "processName",
            key: "processName"
          },
          {
            title: "操作人",
            dataIndex: "adminName",
            key: "adminName"
          },
          {
            title: "时间",
            dataIndex: "createDate",
            key: "createDate"
          }
        ],
        dataSourceX: [],
        ContactsLists: [
          {
            title: "催款科目",
            dataIndex: "dunSubject",
            key: "dunSubject",
            render: text => {
              return getjiedian(text);
            }
          },
          {
            title: "金额(万)",
            dataIndex: "money",
            key: "money"
          },
          {
            title: "催款状态",
            dataIndex: "dunStatus",
            key: "dunStatus",
            render: text => {
              return getCuikuan(text);
            }
          }
        ]
      };
    },
    //页面加载函数
    componentWillMount() {
      this.loadData();
    },
    //整行点击
    tableRowClick(record) {
      this.setState({
        visible: true,
        orderStatus: record.orderStatus,
        id: record.id
      });
      this.xiangqing(record.orderNo);
      this.xiangmu(record.orderNo);
      this.jiedian(record.orderNo);
    },
    //点击打卡项目详情
    tableRowClickX(record) {
      this.setState({
        jid: record.id, //项目ID
        kid: record.commodityId, //商品ID
        commodityName: record.commodityName, //金额
        commodityPrice: record.commodityPrice, //金额
        commodityQuantity: record.commodityQuantity, //数量
        taskComment: record.taskComment, //备注
        main: record.main.toString(), //是否为主要
        addnextVisible: true,
        addState: 0
      });
    },
    //项目详情关闭
    nextCancel() {
      this.setState({
        addnextVisible: false
      });
    },
    //订单详情
    xiangqing(orderNos) {
      $.ajax({
        method: "get",
        dataType: "json",
        crossDomain: false,
        url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
        data: {
          orderNo: orderNos
        },
        success: function(data) {
          if (data.error.length || data.data.list == "") {
            if (data.error && data.error.length) {
              message.warning(data.error[0].message);
            }
          } else {
            let thisdata = data.data;
            this.setState({
              orderNo: thisdata.orderNo, //订单编号
              contractNo: thisdata.contractNo, //合同编号
              userName: thisdata.userName, //客户名称
              signDate: thisdata.signDate, //签单时间
              processStatus: thisdata.processStatus, //流程状态
              liquidationStatus: thisdata.liquidationStatus, //结算状态
              contacts: thisdata.contacts, //企业联系人
              contactMobile: thisdata.contactMobile, //联系人电话
              legalPerson: thisdata.legalPerson, //法人
              legalPersonTel: thisdata.legalPersonTel, //法人电话
              firstAmount: thisdata.firstAmount, //签单金额
              totalAmount: thisdata.totalAmount, //首付金额
              approval: thisdata.approval, //特批状态
              settlementAmount: thisdata.settlementAmount, //已收款项
              orderRemarks: thisdata.orderRemarks, //订单留言
              orgCodeUrl: thisdata.contractPictureUrl
                ? splitUrl(
                    thisdata.contractPictureUrl,
                    ",",
                    globalConfig.avatarHost + "/upload"
                  )
                : [], //图片地址
              salesmanName: thisdata.salesmanName, //营销员名称
              salesmanMobile: thisdata.salesmanMobile, //营销员电话
              oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
              oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
              financeName: thisdata.financeName, //财务名称
              financeMobile: thisdata.financeMobile, //财务电话
              nowFinance: thisdata.nowFinance, //财务名称
              nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
              depName: thisdata.depName
            });
          }
        }.bind(this)
      }).always(
        function() {
          this.setState({
            loading: false
          });
        }.bind(this)
      );
    },
    //项目列表
    xiangmu(orderNos) {
      $.ajax({
        method: "get",
        dataType: "json",
        crossDomain: false,
        url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
        data: {
          orderNo: orderNos
        },
        success: function(data) {
          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.length; i++) {
              let thisdata = data.data[i];
              theArr.push({
                key: i,
                id: thisdata.id,
                orderNo: thisdata.orderNo, //订单编号
                commodityId: thisdata.commodityId, //项目ID
                commodityName: thisdata.commodityName, //项目名称
                cname: thisdata.cname, //项目类别
                commodityPrice: thisdata.commodityPrice, //项目价格
                commodityQuantity: thisdata.commodityQuantity, //项目数量
                main: thisdata.main, //是否为主要任务
                taskComment: thisdata.taskComment, //任务说明
                contacts: thisdata.contacts, //联系人
                contactsMobile: thisdata.contactsMobile, //联系人电话
                projectStatus: thisdata.projectStatus //项目状态
              });
            }
          }
          this.setState({
            dataSourceX: theArr
          });
        }.bind(this)
      }).always(
        function() {
          this.setState({
            loading: false
          });
        }.bind(this)
      );
    },
    rizhi() {
      console.log(this.state.orderNo);
      this.setState({
        loading: true
      });
      $.ajax({
        method: "get",
        dataType: "json",
        crossDomain: false,
        url: "/api/admin/newOrder/selectOrderLog",
        data: {
          orderNo: this.state.orderNo
        },
        success: function(data) {
          let theArr = [];
          let thisData = data.data;
          if (!thisData.length) {
            if (data.error && data.error.length) {
              message.warning(data.error[0].message);
            }
            thisData = {};
          } else {
            for (let i = 0; i < data.data.length; i++) {
              let thisdata = data.data[i];
              theArr.push({
                processName: thisdata.processName,
                adminName: thisdata.adminName,
                createDate: thisdata.createDate
              });
            }
          }
          this.setState({
            dataSourcerizhi: theArr
          });
        }.bind(this)
      }).always(
        function() {
          this.setState({
            loading: false
          });
        }.bind(this)
      );
    },
    getOrderLog() {
      this.setState({
        rizhivisible: true
      });
      this.rizhi();
    },
    closeOrderLog() {
      this.setState({
        rizhivisible: false
      });
    },
    //节点列表
    jiedian(orderNos) {
      $.ajax({
        method: "get",
        dataType: "json",
        crossDomain: false,
        url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
        data: {
          orderNo: orderNos
        },
        success: function(data) {
          let theArr = [];
          let thisData = [];
          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.length; i++) {
              thisData = data.data[i];
              theArr.push({
                key: i,
                dunSubject: thisData.dunSubject
                  ? thisData.dunSubject.toString()
                  : "", //催款科目
                id: thisData.id, //节点Id
                money: thisData.money, //催款金额
                dunStatus: thisData.dunStatus //催款状态
              });
            }
            this.setState({
              contactList: theArr
            });
          }
        }.bind(this)
      }).always(
        function() {
          this.setState({
            loading: false
          });
        }.bind(this)
      );
    },
    //审核通过
    examOk() {
      $.ajax({
        method: "post",
        dataType: "json",
        crossDomain: false,
        url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
        data: {
          orderNo: this.state.orderNo,
          orderStatus: 2
        },
        success: function(data) {
          if (data.error.length || data.data.list == "") {
            if (data.error && data.error.length) {
              message.warning(data.error[0].message);
            }
          } else {
            message.success("该订单已通过审核~");
            this.setState({
              visible: false
            });
            this.reset();
          }
        }.bind(this)
      }).always(
        function() {
          this.setState({
            loading: false
          });
        }.bind(this)
      );
    },
    //通过发给外包
    outsourcing() {
      $.ajax({
        method: "post",
        dataType: "json",
        crossDomain: false,
        url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
        data: {
          orderNo: this.state.orderNo,
          orderStatus: 2,
          outsource: 1
        },
        success: function(data) {
          if (data.error.length || data.data.list == "") {
            if (data.error && data.error.length) {
              message.warning(data.error[0].message);
            }
          } else {
            message.success("该订单已通过审核~");
            this.setState({
              visible: false
            });
            this.reset();
          }
        }.bind(this)
      }).always(
        function() {
          this.setState({
            loading: false
          });
        }.bind(this)
      );
    },
    //审核不通过
    examOks() {
      this.setState({
        aloading: true
      });
      $.ajax({
        method: "post",
        dataType: "json",
        crossDomain: false,
        url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
        data: {
          orderNo: this.state.orderNo,
          orderStatus: 3,
          reason: this.state.reason
        },
        success: function(data) {
          if (data.error.length || data.data.list == "") {
            if (data.error && data.error.length) {
              message.warning(data.error[0].message);
              this.setState({
                aloading: true
              });
            }
          } else {
            message.success("该订单已被拒绝~");
            this.setState({
              visible: false,
              aloading: false,
              noVisible: false,
              reason: ""
            });
            this.reset();
          }
        }.bind(this)
      }).always(
        function() {
          this.setState({
            loading: false
          });
        }.bind(this)
      );
    },
    //点击拒绝
    examNo() {
      this.setState({
        noVisible: true
      });
    },
    callback(key) {
      let url = window.location.href.substring(7);
      this.setState({
        activeKey: key
      });
      if (this.state.pictureUrl.length) {
        let picArr = [];
        this.state.pictureUrl.map(function(item) {
          if (
            item.response &&
            item.response.data &&
            item.response.data.length
          ) {
            picArr.push(item.response.data);
          }
        });
      }
      if (key === "2") {
        this.setState({
          loading: true
        });
        $.ajax({
          method: "get",
          dataType: "json",
          crossDomain: false,
          url:
            globalConfig.context +
            "/api/admin/outsourceOrg/orderOutsourceDtails",
          data: {
            orderNo: this.state.orderNo
          },
          success: function(data) {
            if (data.data) {
              let thisdata = data.data;
              this.setState({
                id: thisdata.id,
                createTimes: thisdata.createTimes,
                auditTimes: thisdata.auditTimes,
                remarks: thisdata.remarks,
                attachmentUrl: thisdata.attachmentUrl
                  ? splitUrl(
                      thisdata.attachmentUrl,
                      ",",
                      globalConfig.avatarHost + "/upload",
                      url
                    )
                  : [],
                fileUrl: thisdata.attachmentUrl
                  ? splitUrl(
                      thisdata.attachmentUrl,
                      ",",
                      globalConfig.avatarHost + "/upload",
                      url
                    )
                  : [],
                pictureUrl: thisdata.pictureUrl
                  ? splitUrl(
                      thisdata.pictureUrl,
                      ",",
                      globalConfig.avatarHost + "/upload",
                      url
                    )
                  : [], //图片地址
                amount: thisdata.amount,
                companyName: thisdata.companyName,
                outsourceRemarks: thisdata.outsourceRemarks,
                unitNumber: thisdata.unitNumber,
                unitPrice: thisdata.unitPrice
              });
            }
          }.bind(this)
        }).always(
          function() {
            this.setState({
              loading: false
            });
          }.bind(this)
        );
      }
    },
    getUrl(url) {
      let theorgCodeUrl = [];
      if (url.length) {
        let picArr = [];
        url.map(function(item) {
          if (
            item.response &&
            item.response.data &&
            item.response.data.length
          ) {
            picArr.push(item.response.data);
          }
        });
        theorgCodeUrl = picArr.join(",");
      }
      return theorgCodeUrl;
    },
    sureOut() {
      if (!this.state.companyName) {
        message.warning("公司名称不能为空");
        return;
      }
      if (!this.state.unitPrice) {
        message.warning("单价不能为空");
        return;
      }
      if(moneyVerify(this.state.unitPrice)) {
        return 
      }
      if (!this.state.unitNumber) {
        message.warning("数量不能为空");
        return;
      }
      if (!this.state.amount) {
        message.warning("总金额不能为空");
        return;
      }
      if (moneyVerify(this.state.amount)) {
        return;
      }
      if (!this.state.outsourceRemarks) {
        message.warning("备注不能为空");
        return;
      }
      if (this.state.pictureUrl.length === 0) {
        message.warning("合同扫描件不能为空");
        return;
      }
      $.ajax({
        method: "POST",
        dataType: "json",
        crossDomain: false,
        url: globalConfig.context + "/api/admin/outsourceOrg/auditOutsource",
        data: {
          id: this.state.id,
          orderNo: this.state.orderNo,
          companyName: this.state.companyName,
          amount: this.state.amount,
          outsourceRemarks: this.state.outsourceRemarks,
          unitNumber: this.state.unitNumber,
          unitPrice: this.state.unitPrice,
          attachmentUrl: this.getUrl(this.state.attachmentUrl).length
            ? this.getUrl(this.state.attachmentUrl)
            : "",
          orderStatus: 2,
          pictureUrl: this.getUrl(this.state.pictureUrl).length
            ? this.getUrl(this.state.pictureUrl)
            : ""
        }
      }).done(
        function(data) {
          this.setState({
            loading: false
          });
          if (!data.error.length) {
            message.success("发起成功!");
            this.outReset();
            this.visitCancel();
          } else {
            message.warning(data.error[0].message);
          }
        }.bind(this)
      );
    },
    //关闭输入理由框
    noCancel() {
      this.setState({
        noVisible: false,
        aloading: false,
        reason: ""
      });
    },
    //搜索
    search() {
      this.setState({
        //signBillVisible:false
      });
      this.loadData();
    },
    //重置
    reset() {
      this.setState({
        signBillVisible: false
      });
      this.state.orderNo = "";
      this.state.customerName = "";
      this.state.releaseDate[0] = undefined;
      this.state.releaseDate[1] = undefined;
      this.state.approval = undefined;
      this.loadData(1);
    },
    outReset() {
      this.setState({
        companyName: "",
        amount: "",
        unitPrice: "",
        unitNumber: "",
        outsourceRemarks: "",
        attachmentUrl: [],
        pictureUrl: []
      });
    },
    resets() {
      this.state.orderNo = "";
      this.state.customerName = "";
      this.state.releaseDate[0] = undefined;
      this.state.releaseDate[1] = undefined;
    },
    getOrgCodeUrl(e) {
      this.setState({ pictureUrl: e });
    },
    //关闭详情
    visitCancel() {
      this.setState(
        {
          visible: false
        },
        () => {
          this.setState({
            activeKey: "1"
          });
        }
      );
      this.resets();
      this.loadData();
    },
    visitOk() {
      this.setState({
        visible: false
      });
      this.resets();
    },
    render() {
      const formItemLayout = {
        labelCol: { span: 8 },
        wrapperCol: { span: 14 }
      };
      const FormItem = Form.Item;
      const { TabPane } = Tabs;
      const { TextArea } = Input;
      const { RangePicker } = DatePicker;
      return (
        
          
            订单审核
          
          
             {
                this.setState({ customerName: e.target.value });
              }}
            />
            
 {
                this.setState({ orderNoSearch: e.target.value });
              }}
            />
            
下单时间 :
             {
                this.setState({ releaseDate: dataString });
              }}
            />
            
            
            
            
              
                
                  
                
                
                  
                    
                          *外包公司
                        
                      }
                    >
                       {
                          this.setState({
                            companyName: e.target.value
                          });
                        }}
                        placeholder="请填写外包公司名称"
                      />
                    
                    如多个公司,请用间隔
                  
                  
                    
                          *单价(万元)
                        
                      }
                    >
                       {
                          this.setState({
                            unitPrice: e.target.value
                          });
                        }}
                        placeholder="请填写单价"
                      />
                    
                  
                  
                    
                          *数量(个)
                        
                      }
                    >
                       {
                          this.setState({
                            unitNumber: e.target.value
                          });
                        }}
                        placeholder="请填写数量"
                      />
                    
                  
                  
                    
                          *
                          总金额(万元)
                        
                      }
                    >
                       {
                          this.setState({
                            amount: e.target.value
                          });
                        }}
                        placeholder="请填写本次外包公司的价格"
                      />
                    
                  
                  {/*
									  
									   {
														return {
															'sign': e.name.substring(0,e.name.lastIndexOf("."))
														}
													}}
												fileList={this.state.attachmentUrl}
												onChange={(e)=>{
													this.setState({attachmentUrl:e.fileList})
												}}>
											{this.state.attachmentUrl.length>1?null:}
										
										支持文件格式: doc,excel,ppt
									
								
*/}
                  
                    
                          *备注
                        
                      }
                    >
                      
                  
                  
                    首次派单项目,需上传协议,第2次起,同项目,只需写外包公司
                  
                  
                    
                          *
                          合同/协议扫描件
                          (外包合同)
                        
                      }
                    >
                      
                      请上传与外包公司签订的合同协议
                      图片建议:要清晰。
                    
                   
                  
                    
                      
                      提示:高于总部价格,费用个人承担
                     
                   
                
              
            
            
              
            
            
              
            
            
              
            
           
         
      );
    }
  })
);
export default IntentionCustomer;