// 变更--驳回
import React, { Component } from "react";
import {
  Form,
  Select,
  Input,
  Button,
  message,
  Spin,
  Tag,
  Table,
  Col,
  Popconfirm,
  Modal,
  AutoComplete,
  DatePicker,
  Radio,
  Tooltip,
  Switch,
} from "antd";
import $ from "jquery/src/ajax";
import moment from "moment";
import ResolutionDetail from "@/resolutionDetail";
import PicturesWall from "./picturesWall";
import Rizhi from "./rizhi";
import {
  cuiJieDian,
  orderTypes,
  customerType,
  jiedian,
  tepi,
  boutique,
  vipYear,
  getProjectName,
} from "@/dataDic.js";
import { moneyVerify } from "@/tools.js"
import EnterpriseNameChange from "../../../../common/enterpriseNameChange";
import ProjectOperation from "../../../../common/projectOperation";
import NewAddProject from "../../../../common/projectOperation/newAddProject"
import NewEditProject from "../../../../common/projectOperation/newEditProject"
import "./index.less";
const FormItem = Form.Item;
const confirm = Modal.confirm;
const Option = AutoComplete.Option;
const RadioGroup = Radio.Group;
const formItemLayout = {
  labelCol: { span: 8 },
  wrapperCol: { span: 14 }
};
class ChangeApply extends Component {
  constructor(props) {
    super(props);
    this.state = {
      data: {},
      voucherUrl: [],
      newContractUrl: [],
      dataSource: [],
      cuiDataSource: [],
      loading: false,
      changeCuiList: [
        {
          title: "变更状态",
          dataIndex: "type",
          key: "type",
          render: (text) => {
            let str = "";
            let color = "";
            if (text == 1) {
              str = "增";
              color = "#87d068";
            } else if (text == 2) {
              str = "改";
              color = "#108ee9";
            } else if (text == 3) {
              str = "删";
              color = "#f50";
            }
            return (
              
                {str}
              
            );
          },
        },
        {
          title: "项目名称",
          dataIndex: "commodityName",
          key: "commodityName",
          render: (text, record, index) => {
            let dataArr = this.state.proDataSource || [];
            if (text) {
              if (record.ctid) {
                return {text + "-" + record.ctid};
              } else {
                let tid = record.tid;
                let ctid = "";
                dataArr.forEach((item, index) => {
                  if (item.tid == tid) {
                    ctid = item.id;
                  }
                });
                return {text + "-" + ctid};
              }
            }
            return (
              
            );
          },
        },
        {
          title: "项目分类",
          dataIndex: "projectType",
          key: "projectType",
          render: (text, record) => {
            if (text) {
              let arr = this.state.proDataSource || [];
              let str = "";
              for (let i = 0; i < arr.length; i++) {
                if (this.state.proDataSource[i].cSort == text) {
                  str = this.state.proDataSource[i].cname;
                  return {str};
                }
              }
            }
            if (this.state.getLoad) {
              return (
                
              );
            } else {
              return (
                
              );
            }
          },
        },
        {
          title: "催款科目",
          dataIndex: "dunTypeName",
          key: "dunTypeName",
          render: (text, record) => {
            if (text) {
              return {text};
            }
            if (this.state.getLoad) {
              let arr = record.arr || [];
              return (
                
                  
                  {record.dunType == 0 ? (
                     {
                        record.customizeName = e.target.value;
                        this.setState({
                          contactList: this.state.contactList,
                        });
                      }}
                      style={{ width: "120px" }}
                    />
                  ) : (
                    ""
                  )}
                
              );
            } else {
              return (
                
              );
            }
          },
        },
        {
          title: "收款时间(特批需选择时间)",
          dataIndex: "waitDay",
          key: "waitDay",
          render: (text, record) => {
            if (record.dunTypeName) {
              if (record.customizeTimes) {
                return record.customizeTimes;
              }
              if (text == 0) {
                var str = "当天";
              } else if (!text) {
                var str = "";
              } else {
                var str = text + "天";
              }
              return {str};
            }
            return (
              
                {record.dunType == 0 ? (
                   {
                      let time = moment(e).valueOf();
                      let today = Date.parse(new Date());
                      if (time <= today) {
                        return true;
                      }
                    }}
                    onChange={(e, t) => {
                      record.customizeTimes = t;
                    }}
                  />
                ) : (
                  
                )}
              
            );
          },
        },
        {
          title: "金额(万元)",
          dataIndex: "money",
          key: "money",
          render: (text, record) => {
            if (record.dunTypeName) {
              if (record.appropriationRatio) {
                let percent = Number(record.appropriationRatio * 100).toFixed(2);
                percent += "%";
                return {percent}(拨款比例);
              } else {
                return {text};
              }
            }
            return (
              
            );
            // if (this.state.boFlag) {
            //   return (
            //     
            //       
            //         
            //       
            //       
            //          {
            //             record.money = e.target.value;
            //             this.setState({
            //               contactList: this.state.contactList,
            //             });
            //           }}
            //           style={{ width: "120px" }}
            //         />
            //       
            //     
            //        {
            //           record.money = e.target.value;
            //           this.setState({ contactList: this.state.contactList });
            //         }}
            //         style={{ width: "120px" }}
            //       />
            //     
            //   );
            // }
          },
        },
        {
          title: "服务年限",
          dataIndex: "startDate",
          key: "startDate",
          render: (text, record) => {
            if (record.dunTypeName) {
              return {text};
            }
            return (
              
                {
                  record.dunType != 0 ?
                    
 : 
                }
              
                 {
                    this.changeDeleteCui(record);
                  }}
                  okText="删除"
                  cancelText="不删除"
                >
                  
                
                {record.isSave ? (
                  
                ) : (
                  ""
                )}
              
 
            );
          },
        },
      ],
      resVisible: false,
      proColumns: [
        {
          title: "变更状态",
          dataIndex: "type",
          key: "type",
          render: (text, record) => {
            let str = "";
            let color = "";
            if (text == 1) {
              str = "增";
              color = "#87d068";
            } else if (text == 2) {
              str = "改";
              color = "#108ee9";
            } else if (text == 3) {
              str = "删";
              color = "#f50";
            }
            return (
              
                
                  {str}
                
                {/* {record.splitStatus == 1 ? (
                  
                    父项目
                  
                ) : (
                  ""
                )}
                {record.splitStatus == 2 ? (
                  
                    子项目
                  
                ) : (
                  ""
                )} */}
              
            );
          },
        },
        {
          title: "业务项目名称",
          dataIndex: "commodityName",
          key: "commodityName",
          render: (text, record) => {
            return {text}{record.patentTypeName}{"-" + record.id}
          }
        },
        {
          title: "项目类别",
          dataIndex: "cname",
          key: "cname",
        },
        {
          title: "项目数量",
          dataIndex: "commodityQuantity",
          key: "commodityQuantity",
          width: 50,
        },
        {
          title: "金额(万元)",
          dataIndex: "commodityPrice",
          key: "commodityPrice",
          width: 50,
          render: (text, record) => {
            if (record.splitStatus == 2) {
              return "/";
            } else {
              return text;
            }
          },
        },
        {
          title: "主要项目",
          dataIndex: "main",
          key: "main",
          width: 50,
          render: (text) => {
            return text ? "是" : "否";
          },
        },
        {
          title: "项目负责人",
          dataIndex: "receiverName",
          key: "receiverName",
        },
        {
          title: "总年限",
          dataIndex: "yearSum",
          key: "yearSum",
          render: (text, record) => {
            return (
              {["", "一年", "二年", "三年", "四年", "五年"][text]}
            );
          }
        },
        {
          title: "年限",
          dataIndex: "serviceLife",
          key: "serviceLife",
          render: (text, record) => {
            return (
              {!!text && JSON.parse(text).toString()}
            );
          }
        },
        {
          title: "本次派单",
          dataIndex: "serviceYear",
          key: "serviceYear",
          render: (text, record) => {
            return (
              {!text ? "" : text}
            );
          }
        },
        {
          title: "项目说明",
          dataIndex: "taskComment",
          key: "taskComment",
          render: (text) => {
            return (
              
                {text}
              
            )
          },
        },
        {
          title: "操作",
          dataIndex: "ABC",
          key: "ABC",
          render: (text, record) => {
            return (
              
                
                  
                
                
                  
                
               
            );
          },
        },
      ],
      patentTypeList: [],
      displayFees: "none",
      serviceLife: [],
      isVip: undefined,//是否会员
      isIso: undefined,//是否贯标
      histYear: [],
      contractTerm: [],//合同期
      isEdit: false,//是否可编辑
      addyear: undefined,//
      isGive: undefined,//是否赠送
      cPeriod: false, // 合同期是否可编辑
      isNew: false,
    };
    this.departmentList = this.departmentList.bind(this);
    this.changeApply = this.changeApply.bind(this);
    this.getVoucherUrl = this.getVoucherUrl.bind(this);
    this.getNewContractUrl = this.getNewContractUrl.bind(this);
    this.proList = this.proList.bind(this);
    this.cuiList = this.cuiList.bind(this);
    this.showConfirm = this.showConfirm.bind(this);
    this.showConfirmChange = this.showConfirmChange.bind(this);
    this.changeAddPro = this.changeAddPro.bind(this);
    this.changeProSubmit = this.changeProSubmit.bind(this);
    this.changeDeletePro = this.changeDeletePro.bind(this);
    this.changeAddCui = this.changeAddCui.bind(this);
    this.changeDeleteCui = this.changeDeleteCui.bind(this);
    this.changeSaveCui = this.changeSaveCui.bind(this);
    this.submitChange = this.submitChange.bind(this);
    this.editCui = this.editCui.bind(this);
    this.editPro = this.editPro.bind(this);
    this.submitEditCui = this.submitEditCui.bind(this);
    this.submitEditPro = this.submitEditPro.bind(this);
    this.nextCancel = this.nextCancel.bind(this);
    this.customerChange = this.customerChange.bind(this);
    this.selectAuto = this.selectAuto.bind(this);
    this.supervisor = this.supervisor.bind(this);
    this.httpChange = this.httpChange.bind(this);
    this.showRes = this.showRes.bind(this);
    this.resCancel = this.resCancel.bind(this);
    this.deleteChange = this.deleteChange.bind(this);
    this.not = this.not.bind(this);
  }
  componentDidMount() {
    this.getpatentTypeList()
  }
  nextCancel(type) {
    this.setState({
      editProVisible: false,
      addnextVisible: false,
      changeVisible: false,
      addProjectType: undefined,
      isVip: undefined,
      isIso: undefined,
      commodityQuantity: undefined,
      histYear: [],
      yearSum: undefined,
      serviceLife: [],
      serviceYear: undefined,
      isEdit: false, // 可编辑
    }, () => {
      this.proList()
    });
  }
  showConfirm(fn, record) {
    confirm({
      title: "确定删除此项目吗?",
      content: (
        
          删除后会将该项目下的所有催款节点自动清除!!!
        
      ),
      onOk() {
        fn(record);
      },
      onCancel() { }
    });
  }
  showConfirmChange(fn, record) {
    confirm({
      title: "确定取消本次变更吗?",
      content: (
        
          取消后本次变更将作废!!!
        
      ),
      onOk() {
        fn();
      },
      onCancel() { }
    });
  }
  getpatentTypeList() {
    $.ajax({
      method: "get",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + '/api/admin/orderProject/getPatentType',
      success: function (data) {
        if (data.error.length === 0) {
          this.setState({
            patentTypeList: data.data
          })
        } else {
          message.warning(data.error[0].message);
        };
      }.bind(this)
    });
  }
  //服务值改变时请求客户名称
  httpChange(e) {
    this.state.gid = "";
    if (e.length >= 1) {
      this.supervisor(e, false);
    }
    this.setState({
      commodityName: e
    });
  }
  //客户名称自动补全
  customerChange(e) {
    if (this.state.customType) {
      this.state.autoId = "";
      if (e.length >= 2) {
        this.supervisor(e, true);
      }
      this.setState({
        customerName: e
      });
    } else {
      this.setState({
        customerName: ""
      });
      message.warning("客户所属类型必须指定");
    }
  }
  //上级主管输入框失去焦点是判断客户是否存在
  selectAuto(value) {
    const newData = this.state.proDataSource
    let kid = [];
    let fwList = this.state.customerArr;
    fwList.map(function (item) {
      if (value == item.bname) {
        kid = item;
      }
    });
    if (kid.type == "1") {
      this.setState({
        displayFees: "block",
        patentTransfer: kid.patentTransfer,
      });
    } else {
      this.setState({
        displayFees: "none",
      });
    }
    this.setState({
      commodityName: value,
      gid: kid.id,
      addProjectType: kid.type,
      //commodityPrice:kid.price==0?kid.price.toString():kid.price,
      commodityFirstPayment: kid.firstPayment == 0 ? kid.firstPayment.toString() : kid.firstPayment,
      isIso: value.indexOf("贯标") !== -1,// 是否为贯标项目
      isVip: kid.cSort,//暂时判断等于6的时候会员
      commodityQuantity: kid.cSort == 6 ? 1 : undefined,//服务数量
      histYear: [],
    });
    if (newData && newData.length > 0 && kid.cSort == 6) {
      let llist = []
      for (var i = 0; i < newData.length; i++) {
        if (newData[i].commodityId == kid.id) {
          llist.push(newData[i].serviceYear)
        }
      }
      this.setState({
        histYear: llist
      })
      for (var i = newData.length - 1; i >= 0; i--) {
        if (newData[i].commodityId == kid.id) {
          this.setState({
            commodityPrice: newData[i].commodityPrice, // 实签价格
            main: "0", // 是否为主要项目
            yearSum: newData[i].yearSum.toString(), // 会员总服务年限
            serviceLife: !newData[i].serviceLife ? [] : JSON.parse(newData[i].serviceLife), // 会员服务年限
            contractTerm: !newData[i].contractTerm ? [] : JSON.parse(newData[i].contractTerm), // 合同期
            taskComment: newData[i].taskComment, // 项目说明
            // isEdit: true, // 不可编辑
            isEdit: true, // 同一会员项目有且只有一条时可编辑   其他情况不可编辑
            cPeriod: !newData[i].contractTerm ? false : true, //合同期
          })
          return
        } else {
          this.setState({
            commodityPrice: undefined,
            main: undefined,
            yearSum: undefined,
            serviceLife: [],
            contractTerm: [],
            taskComment: undefined,
            isEdit: false, // 可编辑
            cPeriod: false,
          })
        }
      }
    }
  }
  //加载(自动补全)
  supervisor(e, state) {
    //客户名称与服务名称自动补全
    let api = state
      ? "/api/admin/customer/getCustomerByName"
      : "/api/admin/order/getBusinessProjectByName";
    $.ajax({
      method: "get",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + api,
      data: state
        ? {
          name: e,
          type: this.state.customType
        }
        : {
          businessName: 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({
          states: state,
          customerArr: thedata
        });
      }.bind(this)
    }).always(
      function () {
        this.setState({
          loading: false
        });
      }.bind(this)
    );
  }
  //变更申请
  changeApply() {
    if (this.state.data.totalAmount === "") {
      message.warning("合同金额不能为空!");
      return false;
    }
    if (this.state.data.firstAmount === "") {
      message.warning("首付款金额不能为空!");
      return false;
    }
    if (Number(this.state.data.totalAmount) < Number(this.state.data.firstAmount)) {
      message.warning("首付款不能大于合同额!");
      return;
    }
    if (moneyVerify(this.state.data.totalAmount)) {
      return false;
    }
    if (moneyVerify(this.state.data.changeAmount)) {
      return false;
    }
    if (
      this.state.data.type == 0 ||
      this.state.data.type == 1 ||
      this.state.data.type == 3
    ) {
      if (Number(this.state.data.settlementAmount) < Number(this.state.data.changeAmount)) {
        message.warning("退款金额大于已收款金额");
        return;
      }
    }
    let newContractUrl = [];
    if (this.state.newContractUrl.length) {
      let cArr = [];
      this.state.newContractUrl.map(function (item) {
        if (
          item.response &&
          item.response.data &&
          item.response.data.length
        ) {
          cArr.push(item.response.data);
        }
      });
      newContractUrl = cArr.join(",");
    }
    if (this.state.isNew && newContractUrl.length == 0) {
      message.warning("请上传新合同扫描件!");
      return
    }
    let theorgCodeUrl = [];
    if (this.state.voucherUrl.length) {
      let picArr = [];
      this.state.voucherUrl.map(function (item) {
        if (item.response &&
          item.response.data &&
          item.response.data.length
        ) {
          picArr.push(item.response.data);
        }
      });
      theorgCodeUrl = picArr.join(",");
    }
    Object.assign(this.state.data, {
      id: this.props.orderData.id, //订单编号
      changeType: 0,
      voucherUrl: theorgCodeUrl.length ? theorgCodeUrl : "",
      consultantExamine: [],
      managerExamine: [],
      contractPictureUrl: this.state.isNew
        ? newContractUrl : undefined,//合同替换件
    });
    this.setState({
      loading: true
    })
    $.ajax({
      method: "post",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/orderChange/updateOrderChange",
      data: this.state.data
    }).done(
      function (data) {
        if (!data.error.length) {
          message.success("变更成功!");
          this.props.onCancel();
          this.setState({
            loading: false
          });
        } else {
          message.warning(data.error[0].message);
          this.setState({
            loading: false
          });
        }
      }.bind(this)
    );
  }
  // componentDidMount() {
  //   window.setTimeout(() => {
  //     this.loadDataChange();
  //   }, 10);
  // }
  // loadDataChange() {
  //   console.log(this.props);
  //   $.ajax({
  //     method: "get",
  //     dataType: "json",
  //     crossDomain: false,
  //     url: globalConfig.context + "/api/admin/orderChange/orderChangeLogList",
  //     data: {
  //       changeId: this.props.data.id
  //     },
  //     success: function(data) {
  //       if (data.error.length || data.data.list == "") {
  //         if (data.error && data.error.length) {
  //           message.warning(data.error[0].message);
  //         }
  //       } else {
  //         this.setState({
  //           dataSource: data.data
  //         });
  //       }
  //     }.bind(this)
  //   });
  // }
  // 拆分详细
  showRes(record) {
    this.setState({
      resVisible: true,
      resRecord: record
    })
  }
  resCancel() {
    this.setState({
      resVisible: false
    })
  }
  cuiList(id) {
    this.setState({
      loading: true,
    });
    $.ajax({
      method: "get",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/orderChange/selectChangeDun",
      data: {
        id: id || this.state.data.id
      },
      success: function (data) {
        this.setState({
          cuiDataSource: data.data,
          loading: false,
        });
        if (data.data && data.data.length) {
          if (id) {
            this.setState({
              listCuiFlag: true,
            });
          }
          this.setState({
            cuiDataSource: data.data,
          });
          this.setState({
            loading: false,
          });
        } else if (data.error && data.error.length) {
          message.warning(data.error[0].message);
          this.setState({
            loading: false,
          });
        }
      }.bind(this)
    });
  }
  proList(id) {
    this.setState({
      loading: true
    })
    $.ajax({
      method: "get",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/orderChange/selectChangeTask",
      data: {
        id: id || this.state.data.id
      },
      success: function (data) {
        this.setState({
          loading: false
        })
        if (data.data && data.data.length) {
          if (id) {
            this.setState({
              listFlag: true
            });
          }
          data.data.forEach(item => {
            item.key = item.id
          })
          this.setState({
            proDataSource: data.data
          });
          this.setState({
            loading: false,
          });
        } else if (data.error && data.error.length) {
          // message.warning(data.error[0].message)
          this.setState({
            loading: false,
          });
        }
      }.bind(this)
    });
  }
  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)
    });
  }
  getVoucherUrl(e) {
    this.setState({ voucherUrl: e });
  }
  getNewContractUrl(e) {
    this.setState({ newContractUrl: e });
  }
  changeAddPro() {
    this.setState({
      newData: this.state.proDataSource,
      changeVisible: true,
      gid: "",
      customerArr: [],
      commodityName: "",
      commodityQuantity: "",
      commodityId: "",
      taskComment: "",
      main: undefined,
      commodityPrice: ""
    });
  }
  changeProSubmit() {
    if (this.state.gid == undefined || !this.state.gid) {
      message.warning("服务名称不匹配!");
      return
    }
    let reg = /^([0]|[1-9][0-9]*)$/;
    if (
      !this.state.commodityQuantity ||
      !reg.test(this.state.commodityQuantity)
    ) {
      message.warning("请输入正确商品数量!");
      return
    }
    if (this.state.displayFees === 'block') {
      if (this.state.patentType === "" && !this.state.patentTransfer) {
        message.warning("请选择专利类型!");
        return
      }
      if (this.state.officialCost === '') {
        message.warning("请选择官费!");
        return
      }
      if (this.state.costReduction === "" && (this.state.patentType === 0 || this.state.patentType === 2) && this.state.officialCost === 1) {
        message.warning("请选择费减!");
        return
      }
    }
    if (isNaN(parseFloat(this.state.commodityPrice))) {
      message.warning("请输入正确的金额!");
      return;
    }
    if (this.state.addProjectType == "3") {// 3审计
      if (this.state.serviceLife.length === 0) {
        message.warning("请选择服务年限!");
        return
      }
      if (this.state.serviceLife.length != this.state.commodityQuantity) {
        message.warning("服务数量与服务年限不符!");
        return
      }
    }
    if (!this.state.main) {
      message.warning("请选择是否为主要项目!");
      return
    }
    if (this.state.addProjectType === 5) {// 5高新
      if (!this.state.declarationBatch) {
        message.warning("请选择企业要求申报批次!");
        return
      }
      if (!this.state.serviceYear) {
        message.warning("请选择申报年份!");
        return
      }
    }
    if (this.state.isVip == 6) {//会员
      if (this.state.yearSum === undefined) {
        message.warning("请选择会员总服务年限!");
        return
      }
      if (this.state.serviceLife.length === 0) {
        message.warning("请添加会员服务年限!");
        return
      }
      if (this.state.serviceLife.length != this.state.yearSum) {
        message.warning("会员服务年限与总年限不符合!");
        return
      }
      if (this.state.serviceYear === undefined) {
        message.warning("请选择本次派单年份!");
        return
      }
      if (this.state.contractTerm.length === 0) {
        message.warning("请填写合同期!");
        return
      }
    }
    this.setState({
      loading: true
    });
    let type = 0;
    if (this.state.typeChange == 4 || this.state.typeChange == 5) {
      type = 1;
    }
    let infor = {
      commodityId: this.state.gid, //商品ID
      orderNo: this.state.data.orderNo, //订单编号
      commodityName: this.state.commodityName, //商品名称
      commodityQuantity: this.state.commodityQuantity, //商品数量
      commodityPrice: this.state.commodityPrice, //签单总价
      taskComment: this.state.taskComment, //服务说明
      main: this.state.main, //是否为主要项目
      cid: this.state.data.id, //变更ID
      type,
    }
    if (this.state.displayFees === 'block') {
      infor.officialCost = this.state.officialCost //是否有官费
      infor.costReduction = (this.state.patentType === 0 || this.state.patentType === 2) ? (this.state.officialCost === 1 ? this.state.costReduction : 0) : 0//是否有费减
      infor.patentType = this.state.patentType //专利类型
    }
    if (this.state.isIso) {
      infor.ifCertificationFee = this.state.ifCertificationFee || undefined;//是否包含认证费用
    }
    if (this.state.addProjectType == "3") {//审计
      infor.serviceLife = JSON.stringify(this.state.serviceLife) //服务年限
    }
    if (this.state.addProjectType == "5") {//高新
      infor.declarationBatch = this.state.declarationBatch || 1//申报批次
      infor.serviceYear = this.state.serviceYear //申报年份
    }
    if (this.state.isVip == 6) {//会员
      infor.yearSum = this.state.yearSum //会员总服务年限
      infor.serviceLife = JSON.stringify(this.state.serviceLife) //会员服务年限
      infor.serviceYear = this.state.serviceYear //本次派单年份
      infor.contractTerm = JSON.stringify(this.state.contractTerm)//合同期
    }
    $.ajax({
      method: "post",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/orderChange/addChangeTask",
      data: infor,
      success: function (data) {
        let theArr = [];
        if (data.error && data.error.length) {
          message.warning(data.error[0].message);
        } else {
          message.success("保存成功");
          this.nextCancel();
          this.proList();
        }
      }.bind(this)
    }).always(
      function () {
        this.setState({
          loading: false
        });
      }.bind(this)
    );
  }
  changeDeletePro(record) {
    this.setState({
      loading: true
    });
    $.ajax({
      method: "post",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/orderChange/updateChangeTask",
      data: {
        id: record.id,
        type: 3,
        tid: record.tid,
        splitStatus: record.splitStatus
      },
      success: function (data) {
        let theArr = [];
        if (data.error && data.error.length) {
          message.warning(data.error[0].message);
        } else {
          message.success("删除成功");
          this.proList();
          this.cuiList();
        }
      }.bind(this)
    }).always(
      function () {
        this.setState({
          loading: false
        });
      }.bind(this)
    );
  }
  //点击新增变更催款节点
  changeAddCui() {
    this.state.cuiDataSource.push({
      key: this.state.cuiDataSource.length,
      money: "",
      dunSubject: undefined,
      orderNo: this.state.data.orderNo,
      dunTarget: this.state.kehuId
    });
    this.setState({
      cuiDataSource: this.state.cuiDataSource,
      cuiFlag: true
    });
  }
  //删除变更收款节点
  changeDeleteCui(index) {
    if (index.id) {
      this.state.cuiDataSource.splice(index.id, 1);
      this.setState({
        contactListNew: this.state.cuiDataSource,
        cuiFlag: false,
        addFlag: false,
        boFlag: false
      });
      $.ajax({
        url: globalConfig.context + "/api/admin/orderChange/updateChangeDun",
        method: "post",
        data: {
          id: index.id,
          type: 3,
          tid: index.tid,
          did: index.did
        }
      }).done(
        function (data) {
          this.setState({
            loading: false
          });
          if (!data.error.length) {
            message.success("删除成功!");
            this.setState({
              cuiFlag: false
            });
            this.cuiList();
          } else {
            message.warning(data.error[0].message);
          }
        }.bind(this)
      );
    } else {
      this.state.cuiDataSource.splice(index.key, 1);
      this.setState({
        cuiDataSource: this.state.cuiDataSource,
        cuiFlag: false,
        addFlag: false,
        boFlag: false
      });
    }
  }
  changeSaveCui(record) {
    if (record.boStatus == "false") {
      record.boStatus = false;
    } else if (record.boStatus == "true") {
      record.boStatus = true;
    }
    if (!this.state.yearFlag) {
      if (!record.effectiveCount && !record.dunTypeCustom) {
        message.warning("请选择服务年限");
        return;
      }
    } else {
      record.effectiveCount = "";
    }
    if (isNaN(parseInt(record.money)) && !record.boStatus) {
      message.warning("请填写金额");
      return;
    } else if ((isNaN(parseInt(record.money)) && record.boStatus)) {
      message.warning("请填写比例");
      return;
    }
    if (record.boStatus) {
      if (
        typeof +record.money == "number" &&
        +record.money >= 0 &&
        +record.money <= 1
      ) {
        record.appropriationRatio = record.money;
      } else {
        message.warning("金额比例填写错误,比例范围0~1");
        return;
      }
    }
    if (!record.dunType && record.dunType != 0) {
      message.warning("请选择对应科目");
      return;
    }
    if (record.dunType != 1) {
      record.waitDay = "";
    }
    this.setState({
      loading: true
    });
    if (record.boStatus) {
      $.ajax({
        url: globalConfig.context + "/api/admin/orderChange/addChangeDun",
        method: "post",
        data: {
          orderNo: record.orderNo,
          ctid: record.ctid,
          projectType: record.sort,
          dunType: record.dunType,
          appropriationRatio: record.appropriationRatio,
          waitDay: record.waitDay,
          effectiveCount: record.effectiveCount,
          cid: this.state.data.id, //变更ID
          ustomizeTimes:
            record.dunType == 0 ? record.customizeTimes : undefined,
          customizeName:
            record.dunType == 0 ? record.customizeName : undefined,
        }
      }).done(
        function (data) {
          this.setState({
            loading: false,
          });
          if (!data.error.length) {
            message.success("保存成功!");
            this.setState({
              cuiFlag: false,
              boFlag: false,
              addFlag: false,
            });
            this.cuiList();
          } else {
            message.warning(data.error[0].message);
          }
        }.bind(this)
      );
    } else {
      $.ajax({
        url: globalConfig.context + "/api/admin/orderChange/addChangeDun",
        method: "post",
        data: {
          orderNo: record.orderNo,
          ctid: record.ctid,
          projectType: record.sort,
          dunType: record.dunType,
          money: record.money,
          waitDay: record.waitDay,
          effectiveCount: record.effectiveCount,
          cid: this.state.data.id, //变更ID
          customizeTimes:
            record.dunType == 0 ? record.customizeTimes : undefined,
          customizeName:
            record.dunType == 0 ? record.customizeName : undefined,
        }
      }).done(
        function (data) {
          this.setState({
            loading: false,
          });
          if (!data.error.length) {
            message.success("保存成功!");
            this.setState({
              cuiFlag: false,
              boFlag: false,
              addFlag: false,
            });
            this.cuiList();
          } else {
            message.warning(data.error[0].message);
          }
        }.bind(this)
      );
    }
  }
  submitChange() {
    if (
      this.state.typeChange == undefined ||
      (this.state.typeChange == "" && this.state.typeChange != 0)
    ) {
      message.warning("请选择变更类型");
      return false;
    }
    if (
      this.state.typeChange == 0 ||
      this.state.typeChange == 1 ||
      this.state.typeChange == 3
    ) {
      if (this.state.settlementAmount < this.state.changeAmount) {
        message.warning("退款金额大于已收款金额");
        return;
      }
    }
    if (this.state.processStatus != 6 || this.state.processStatus != 7) {
      message.warning("当前订单流程不能发起变更!");
      return false;
    }
    if (this.state.changeAmount === "") {
      message.warning("申请退款金额不能为空!");
      return false;
    }
    if (this.state.remarksC.trim() == "") {
      message.warning("请正确填写变更原因");
      return false;
    }
    if (this.state.startRemarks.trim() == "") {
      message.warning("请正确填写备注信息");
      return false;
    }
    let theorgCodeUrl = [];
    if (this.state.voucherUrl.length) {
      let picArr = [];
      this.state.voucherUrl.map(function (item) {
        if (item.response && item.response.data && item.response.data.length) {
          picArr.push(item.response.data);
        }
      });
      theorgCodeUrl = picArr.join(",");
    }
    this.setState({
      loading: true
    });
    $.ajax({
      url: globalConfig.context + "/api/admin/orderChange/updateOrderChange",
      method: "post",
      data: {
        id: this.state.changeId,
        changeType: 0,
        orderNo: this.state.orderNo, //订单编号
        processState: 0,
        startRemarks: this.state.startRemarks,
        remarks: this.state.remarksC,
        voucherUrl: theorgCodeUrl.length ? theorgCodeUrl : "",
        totalAmount: this.state.totalAmount,
        settlementAmount: this.state.settlementAmount,
        changeAmount: this.state.changeAmount,
        applicant: this.state.salesmanName,
        depName: this.state.depName,
        type: this.state.typeChange
      }
    }).done(
      function (data) {
        if (!data.error.length) {
          this.setState({
            loading: false
          });
          message.success("发起变更成功");
          this.handleCancelclose();
        } else {
          message.warning(data.error[0].message);
          this.setState({
            loading: false
          });
        }
      }.bind(this)
    );
  }
  editCui(record) {
    this.setState({
      editCuiVisible: true,
      editCuiMoney: record.appropriationRatio ? record.appropriationRatio : record.money,
      appropriationRatio: record.appropriationRatio,
      editCuiTid: record.tid,
      editCuiId: record.id
    });
  }
  editPro(record) {
    this.setState({
      editProVisible: true,
      dataInfor: record,
      // newData: this.state.proDataSource,
    });
    // this.setState({
    //   editProVisible: true,
    //   editSplitStatus: record.splitStatus,
    //   editProMoney: record.commodityPrice,
    //   editProCommodityQuantity: record.commodityQuantity,
    //   editProTid: record.tid,
    //   editProId: record.id
    // });
  }
  submitEditCui(type) {
    if (isNaN(parseFloat(this.state.editCuiMoney))) {
      if (type === 1) {
        message.warn('请输入比例')
      } else {
        message.warn('请输入金额')
      }
      return;
    }
    this.setState({
      loading: true
    });
    let data = {
      id: this.state.editCuiId,
      type: this.state.editCuiTid ? 2 : 1,
      tid: this.state.editCuiTid,
    }
    if (type === 1) {
      data.appropriationRatio = this.state.editCuiMoney;
    } else {
      data.money = this.state.editCuiMoney;
    }
    $.ajax({
      url: globalConfig.context + "/api/admin/orderChange/updateChangeDun",
      method: "post",
      data
    }).done(
      function (data) {
        this.setState({
          loading: false
        });
        if (!data.error.length) {
          message.success("修改成功!");
          this.cuiList();
          this.proList()
          this.setState({
            editCuiVisible: false
          });
        } else {
          message.warning(data.error[0].message);
        }
      }.bind(this)
    );
  }
  submitEditPro() {
    this.setState({
      loading: true
    });
    $.ajax({
      url: globalConfig.context + "/api/admin/orderChange/updateChangeTask",
      method: "post",
      data: {
        id: this.state.editProId,
        type: this.state.editProTid ? 2 : 1,
        commodityPrice: this.state.editProMoney,
        commodityQuantity: this.state.editProCommodityQuantity,
        tid: this.state.editProTid
      }
    }).done(
      function (data) {
        this.setState({
          loading: false
        });
        if (!data.error.length) {
          message.success("修改成功!");
          this.proList();
          this.cuiList()
          this.setState({
            editProVisible: false
          });
        } else {
          message.warning(data.error[0].message);
        }
      }.bind(this)
    );
  }
  componentWillMount() {
    this.departmentList();
    this.state.data = this.props.orderData;
    this.state.data.oldPrice = this.props.orderData.totalAmount;
    this.setState({
      data: this.state.data,
      voucherUrl: this.props.voucherUrl
    });
    this.proList();
    this.cuiList();
    let e = this.props.orderData.type;
    if (e == 1) {
      this.setState({
        hetongFlag: false,
        listFlag: false,
        listCuiFlag: false,
        tuiKuanFlag: false,
        displayList: false
      });
    } else if (e == 2) {
      this.setState({
        hetongFlag: true,
        listFlag: false,
        listCuiFlag: false,
        tuiKuanFlag: true,
        displayList: false
      });
    } else if (e == 3) {
      this.setState({
        listFlag: false,
        hetongFlag: false,
        listCuiFlag: false,
        tuiKuanFlag: false,
        displayList: true
      });
    } else if (e == 4) {
      this.setState({
        listFlag: false,
        listCuiFlag: false,
        hetongFlag: false,
        tuiKuanFlag: true,
        displayList: false
      });
    } else if (e == 5) {
      this.setState({
        listFlag: false,
        listCuiFlag: false,
        hetongFlag: true,
        tuiKuanFlag: true,
        displayList: false
      });
    } else if (e == 6) {
      this.setState({
        listFlag: true,
        listCuiFlag: true,
        hetongFlag: true,
        tuiKuanFlag: true,
        displayList: false,
      });
    } else if (e == 7) {
      this.setState({
        listFlag: true,
        listCuiFlag: true,
        hetongFlag: true,
        tuiKuanFlag: true,
        displayList: false,
        isNew: true,
      });
    } else {
      this.setState({
        listFlag: false,
        listCuiFlag: false,
        hetongFlag: false,
        tuiKuanFlag: false,
        displayList: false,
      });
    }
  }
  // componentWillReceiveProps(nextProps) {
  //   this.state.data = nextProps.orderData;
  //   this.state.data.oldPrice = nextProps.orderData.totalAmount;
  //   this.setState({
  //     data: this.state.data,
  //     voucherUrl: nextProps.voucherUrl
  //   });
  //   // this.proList();
  //   // this.cuiList();
  //   let e = nextProps.orderData.type;
  //   if (e == 1) {
  //     this.setState({
  //       hetongFlag: false,
  //       listFlag: false,
  //       listCuiFlag: false,
  //       tuiKuanFlag: false,
  //       displayList: false
  //     });
  //   } else if (e == 2) {
  //     this.setState({
  //       hetongFlag: true,
  //       listFlag: false,
  //       listCuiFlag: false,
  //       tuiKuanFlag: true,
  //       displayList: false
  //     });
  //   } else if (e == 3) {
  //     this.setState({
  //       listFlag: false,
  //       hetongFlag: false,
  //       listCuiFlag: false,
  //       tuiKuanFlag: false,
  //       displayList: true
  //     });
  //   } else if (e == 4) {
  //     this.setState({
  //       listFlag: false,
  //       listCuiFlag: false,
  //       hetongFlag: false,
  //       tuiKuanFlag: true,
  //       displayList: false
  //     });
  //   } else if (e == 5) {
  //     this.setState({
  //       listFlag: false,
  //       listCuiFlag: false,
  //       hetongFlag: true,
  //       tuiKuanFlag: true,
  //       displayList: false
  //     });
  //   } else {
  //     this.setState({
  //       listFlag: true,
  //       hetongFlag: true,
  //       listCuiFlag: true,
  //       tuiKuanFlag: false,
  //       displayList: false
  //     });
  //   }
  // }
  not() {
  }
  deleteChange() {
    this.setState({
      loading: true,
    });
    $.ajax({
      url: globalConfig.context + "/api/admin/orderChange/cancelOrderChange",
      method: "post",
      data: {
        id: this.state.data.id,
        status: this.state.data.status,
        processState: this.state.data.processState,
        orderNo: this.state.data.orderNo
      },
    }).done(
      function (data) {
        this.setState({
          loading: false,
        });
        if (!data.error.length) {
          message.success("取消成功!");
          this.props.onCancel()
        } else {
          message.warning(data.error[0].message);
        }
      }.bind(this)
    );
  }
  handleClose(removedTag) {
    let serviceLife = this.state.serviceLife.filter(tag => { return tag !== removedTag });
    this.setState({ serviceLife, serviceYear: undefined });
  }
  // 可展开颜色不同
  addRowColor(record) {
    if (!!record.list && record.list.length > 0) {
      return 'light'
    } else {
      return 'dark'
    }
  }
  render() {
    const expandedRowRender = e => {
      const data = e.list;
      if (e.cSort != 6) {
        let columns = [];
        if (data instanceof Array && data.length) {
          columns = [
            {
              title: "变更状态",
              dataIndex: "type",
              key: "type",
              render: (text, record) => {
                let str = "";
                let color = "";
                if (text == 1) {
                  str = "增";
                  color = "#87d068";
                } else if (text == 2) {
                  str = "改";
                  color = "#108ee9";
                } else if (text == 3) {
                  str = "删";
                  color = "#f50";
                }
                return (
                  
                    
                      {str}
                    
                    {/* {record.splitStatus == 1 ? (
                       {
                      //   e.stopPropagation();
                      //   this.showRes(record);
                      // }}
                      >
                        父项目
                      
                    ) : (
                      ""
                    )}
                    {record.splitStatus == 2 ? (
                       {
                      //   e.stopPropagation();
                      //   this.showRes(record);
                      // }}
                      >
                        子项目
                      
                    ) : (
                      ""
                    )} */}
                  
                );
              },
            },
            {
              title: "业务项目名称",
              dataIndex: "commodityName",
              key: "commodityName",
              render: (text, record) => {
                return {text}{record.patentTypeName}{"-" + record.id}
              }
            },
            {
              title: "项目类别",
              dataIndex: "cname",
              key: "cname",
            },
            {
              title: "项目数量",
              dataIndex: "commodityQuantity",
              key: "commodityQuantity",
            },
            {
              title: "金额(万元)",
              dataIndex: "commodityPrice",
              key: "commodityPrice",
              render: (text, record) => {
                if (record.splitStatus == 2) {
                  return "/";
                } else {
                  return text;
                }
              },
            },
            {
              title: "主要项目",
              dataIndex: "main",
              key: "main",
              render: (text) => {
                return text ? "是" : "否";
              },
            },
            {
              title: "项目负责人",
              dataIndex: "receiverName",
              key: "receiverName",
            },
            {
              title: "总年限",
              dataIndex: "yearSum",
              key: "yearSum",
              render: (text, record) => {
                return (
                  {["", "一年", "二年", "三年", "四年", "五年"][text]}
                );
              }
            },
            {
              title: "年限",
              dataIndex: "serviceLife",
              key: "serviceLife",
              render: (text, record) => {
                return (
                  {!!text && JSON.parse(text).toString()}
                );
              }
            },
            {
              title: "本次派单",
              dataIndex: "serviceYear",
              key: "serviceYear",
              render: (text, record) => {
                return (
                  {!text ? "" : text}
                );
              }
            },
            {
              title: "项目说明",
              dataIndex: "taskComment",
              key: "taskComment",
              render: (text) => {
                return (
                  
                    {text}
                  
                )
              },
            },
            {
              title: "操作",
              dataIndex: "ABC",
              key: "ABC",
              render: (text, record) => {
                return (
                  
                    
                  
                );
              },
            },
          ];
          return (
            
          );
        } else {
          columns = [];
          return (
            
              此项目暂未拆分
            
          );
        }
      } else {
        let columns = [];
        if (data instanceof Array && data.length) {
          columns = [
            {
              title: "变更状态",
              dataIndex: "type",
              key: "type",
              render: (text, record) => {
                let str = "";
                let color = "";
                if (text == 1) {
                  str = "增";
                  color = "#87d068";
                } else if (text == 2) {
                  str = "改";
                  color = "#108ee9";
                } else if (text == 3) {
                  str = "删";
                  color = "#f50";
                }
                return (
                  
                    
                      {str}
                    
                  
                );
              },
            },
            {
              title: "负责人",
              dataIndex: "receiverName",
              key: "receiverName",
            },
            {
              title: "负责人电话",
              dataIndex: "receiverMobile",
              key: "receiverMobile",
            },
            {
              title: "项目状态",
              dataIndex: "projectStatus",
              key: "projectStatus",
              render: (text) => {
                return text
                // return getProjectName(text);
              },
            },
            {
              title: "本次派单",
              dataIndex: "serviceYear",
              key: "serviceYear",
            },
            {
              title: "项目说明",
              dataIndex: "taskComment",
              key: "taskComment",
              render: (text) => {
                return (
                  
                    {text}
                  
                )
              },
            },
          ];
          return (
            
          );
        } else {
          columns = [];
          return (
            
              暂无派单
            
          );
        }
      }
    };
    const { TextArea } = Input;
    const data = this.state.data;
    // let departmentArr = this.state.departmentArr || [];
    const dataSources = this.state.customerArr || [];
    const cuiDataList = this.state.contactList || [];
    let departmentArr = this.state.departmentArr || [];
    const options = this.state.states
      ? dataSources.map(group => (
        
          {group.name}
        
      ))
      : dataSources.map((group, index) => (
        
          {group.bname}
        
      ));
    let children = vipYear.map(its => (
      
    ));
    const { isVip, histYear, isEdit } = this.state
    return (
      
        
          {this.state.resVisible ? (
            
          ) : (
            ""
          )}
          
            
              {data.userName}
              
            
          
          
            
              {data.contractNo}
            
          
          
            
              {this.state.data.depName}
            
            
              {/*  {
                let data = this.state.data;
                data.applicant = e.target.value;
                this.setState({ data });
              }}
              style={{ width: "240px" }}
            /> */}
              {data.applicant}
            
          
          
            
              
              
              {(this.state.data.status == 3 || this.state.data.status == 0) ? (
                
              ) : (
                ""
              )}
            
          
          
            
               {
                  let data = this.state.data;
                  data.totalAmount = e.target.value;
                  this.setState({ data });
                }}
                style={{ width: "240px" }}
              />
            
            
               {
                  let data = this.state.data;
                  data.firstAmount = e.target.value;
                  this.setState({ data });
                }}
                style={{ width: "240px" }}
              />
            
            
              {/*  {
                let data = this.state.data;
                data.settlementAmount = e.target.value;
                this.setState({ data });
              }}
              style={{ width: "240px" }}
            /> */}
              
                {this.state.data.settlementAmount}    
                
                  (注:已收款与现实收款不符,请与财务专员联系)
                
              
            
            
               {
                  let data = this.state.data;
                  data.changeAmount = e.target.value;
                  this.setState({ data });
                }}
                style={{ width: "240px" }}
              />
            
          
          
            
              
                项目业务
              
              
                (注:项目删除后,此项目的全部节点、全部工时,全部被删除,请谨慎删除!)
              
              
            
            
            
              
                催款节点
              
              
                (注:节点删除后,无论节点是否触发,均会删除,请谨慎删除!双击可修改对应金额!)
              
              
            
            
           
          
            
              
          
          {/* 备注 */}
          
            
              
          
          
          
            
               { this.setState({ isNew: e }) }} />,
              注:原上传合同为空或作废时,需上传替换合同
            
           
          {
            this.state.isNew &&
            
          }
          {/* 
          {this.state.dataSource.map((item, index) => (
            - {`${item.aname}: ${item.remarks}`}))}
*/}
            
          
          {
            // 变更项目任务编辑
            this.state.editProVisible &&
             [this.nextCancel("change")]}
            />
            //  {
            //     this.setState({
            //       editProVisible: false,
            //     });
            //     this.proList()
            //   }}
            // />
          }
          {/*  {
              this.setState({
                editProVisible: false,
              });
            }}
          >
            
              
                 {
                    this.setState({ editProMoney: e.target.value });
                  }}
                />
              
              
                 {
                    this.setState({ editProCommodityQuantity: e.target.value });
                  }}
                />
              
            
           */}
           {
              this.submitEditCui(isNaN(parseFloat(this.state.appropriationRatio)) ? 0 : 1);
            }}
            okText={"保存"}
            width={300}
            onCancel={(e) => {
              this.setState({
                editCuiVisible: false,
                appropriationRatio: ''
              });
            }}
          >
            
              
                 {
                    this.setState({ editCuiMoney: e.target.value });
                  }}
                />
              
            
          
          {
            this.state.changeVisible &&
             [this.nextCancel("change")]}
            />
          }
        
        {
          this.state.addYears &&
          
 {
              if (!this.state.addyear) {
                message.warn("请选择年份!")
                return
              }
              if (this.state.isGive == undefined) {
                message.warn("请选择是否赠送!")
                return
              }
              let slist = this.state.serviceLife
              if (this.state.isGive == 0) {
                slist.push(this.state.addyear)
              } else if (this.state.isGive == 1) {
                let newYear = this.state.addyear + "(赠)"
                slist.push(newYear)
              }
              this.setState({
                serviceLife: slist,
                addYears: false
              })
            }}
            onCancel={() => {
              this.setState({
                addYears: false
              })
            }}
          >
            
             {
                this.setState({
                  isGive: e.target.value
                })
              }}
              value={this.state.isGive}
            >
              非赠送
              赠送
            
          
        }
      
 
    );
  }
}
export default ChangeApply;