pay

来源:互联网 发布:linux网络编程培训 编辑:程序博客网 时间:2024/04/30 16:19
<div id="payment" class="whitebg pl10 pr10 pb10 borderline mtop10">
  <div class="title_c2 mar-t-10">
    <div class="title3 pointer" onclick="$('#t5').toggle();"> <h2><b class="titicon icon4"></b>付款信息</h2></div>
    <span class="cost_text2"><b class="costicon icon2">付</b><span id="payment_pay_amount">¥${editPaymentPayAmountSpan}</span></span>
    <span class="cost_text1"><b class="costicon icon1">报</b><span id="payment_apply_amount">¥${editPaymentApplyAmountSpan}</span></span>
  </div>
  <div id="t5" class="pannel1 mtop10" style="display:none">
    <div>
    <ul class="ex_tab" id="payment_account_type">
      <li class="current" id="payment_default">默认账号</li>
      <li id="payment_hand">手工输入</li>
    </ul>
  </div>
  
  <a  class="tool_btn" id="del_payment"><b class="toolicon delete_icon"></b> 删除行</a>
  <a  class="tool_btn" id="add_payment"><b class="toolicon copy_icon"></b> 新增行</a>
  <a  class="tool_btn" id="copy_payment"><b class="toolicon add_icon"></b> 复制行</a>
   <div class="clear"></div>
   <div class="content mtop10">
   <form id="pay_line_form">
      <div class="tab1">
        <table width="100%" cellpadding="0" cellspacing="0" class="table2" id="payment_table1">
          <tbody>
            <tr>
              <th width="3%"><input type="checkbox" id="select_all_1" /></th>
              <th width="12%">供应商名称</th>
              <th width="10%">收款户名</th>
              <th width="10%">银行名称</th>
              <th width="10%">支行</th>
              <th width="15%">收款账号</th>
              <th width="8%">支付方式</th>
              <th width="8%">币种</th>
              <th width="8%">报账金额</th>
              <th width="8%">本次支付金额</th>
              <th width="8%">用途</th>
            </tr>
            <tr class="bulebg ">
              <td colspan="9">合计</td>
              <td><span name="table_apply_amount"></span></td>
              <td><span name="table_pay_amount"></span></td>
            </tr>
          </tbody>
        </table>
      </div>
      <div class="tab2" style="display:none;">
        <table width="100%" cellpadding="0" cellspacing="0" class="table2" id="payment_table2">
          <tbody>
            <tr>
              <th width="3%"><input type="checkbox" name=""  id="select_all_2"/></th>
              <th width="12%">是否员工供应商</th>
              <th width="10%">收款户名</th>
              <th width="10%">银行名称</th>
              <th width="10%">支行</th>
              <th width="15%">收款账号</th>
              <th width="8%">支付方式</th>
              <th width="8%">币种</th>
              <th width="8%">报账金额</th>
              <th width="8%">本次支付金额</th>
              <th width="8%">用途</th>
            </tr>
            <tr class="bulebg">
              <td colspan="9">合计</td>
              <td><span name="table_apply_amount"></span></td>
              <td><span name="table_pay_amount"></span></td>
            </tr>
          </tbody>
        </table>
      </div>
      </form>
  </div>
</div>
</div>
<script type="text/javascript">
  var payment;
  function initPayment(opts){
    payment = new Payment(opts);
    p_initCg();
    return payment;
  }
  function p_initCg(){
    var headerId = p_getQueryString('boeHeaderId');
    if(headerId !=null && headerId !=""){
      $.ajax({
        url: '/easServlet?method=com.zte.eas.boe.business.BusinessCenter4Boe.boe__getBoeBase',
        type: 'POST',
        dataType: 'json',
        data: {'boeHeaderId': headerId},
        success:function(data){
          if(data){
            payment.addRows(data.boePaymentList);
            $('[name=apply_amount]',"#pay_line_form").trigger('blur');
        $('[name=payment_amount]',"#pay_line_form").trigger('blur');
          }
        }
      });
    }
  }
  function p_getQueryString(name) { 
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = decodeURI(window.location.search).substr(1).match(reg);
    if (r != null) 
      return unescape(r[2]);
    else
      return null; 
  };
  //查询员工供应商及账户信息
  function initVendorAccountLov(index){
var cmMainDiv = $(".CM_main");
if(!userInfo){
var userInfo = $.fn.eas("getUserInfo");
}
var valueField = "vendor_id"+index+",vendor_number"+index+",vendor_name"+index+",bank_account_name"+index
+",bank_name"+index+",bank_branch_name"+index+",bank_account_num"+index;
$("#vendor_name"+index).doLov("paymentVendorLov"+index, 
"lov.payment.employeeVendorAndVendorBankAccount", 
valueField,
'查询员工供应商及账户信息', 
{'viewField':'vendor_number','conditionField':'vendor_number'},
userInfo.erpOrgId+','+userInfo.orgId,null,null,null,null,cmMainDiv
);
  }
  
  // 查询支行信息
  function initSubBankLov(index){
  var cmMainDiv = $(".CM_main");
var valueField = "bank_branch_code"+index+",bank_branch_name"+index;
$("#bank_branch_name"+index).doLov("paymentSubBankLov"+index, 
"lov.subBankInfo.query", 
valueField,
'查询支行信息', 
{'viewField':'bank_branch_name'+index,'conditionField':'bank_branch_name'+index},
null,function(selector){
$("bank_branch_name"+index).attr("readonly",true);
},null,null,null,cmMainDiv
);
  }
  // 查询银行信息
  function initBankLov(index){
  var cmMainDiv = $(".CM_main");
  var valueField = "bank_code"+index+",bank_name"+index;
$("#bank_name"+index).doLov("paymentBankLov"+index, 
"lov.bankInfo.query", 
valueField,
'查询银行信息', 
{'viewField':'bank_name'+index,'conditionField':'bank_name'+index},
null,function(selector){
$("bank_name"+index).attr("readonly",true);
},null,null,null,cmMainDiv
);
  }
  
  var Payment = function(opts){
    this.pay_line_index=0;
    this._default={
      setNotPay:null,
      setAleradyPay:null,
      getVendorInfo:null
    };
    this.setting=$.extend(this._default,opts);
  
    this.show=function(){
      $("#payment").show();
    };
    this.hide=function(){
      $("#payment").hide();


    };
    this.getDivId=function(){
      return "payment";
    };
    this._payemnt_validate=function(){
      var applyAm = Number($("#apply_amount").text());
      $("#pay_line_form .nullValue").removeClass('nullValue');
      var requiredList = $("#pay_line_form").find('.required').trigger('blur');
      if($("#pay_line_form .nullValue").length>0){return false;}
      var table1Tr = $("#payment_table1 tr:not(:first):not(:last)");
      var table2Tr = $("#payment_table2 tr:not(:first):not(:last)");
      var total = 0;
      for(var i = 0;i<table1Tr.length;i++){
        var applyAmount = $(table1Tr[i]).find("[name=apply_amount]");
        var paymentAmount =$(table1Tr[i]).find("[name=payment_amount]");
        if(Number(applyAmount.val()||0)<Number(paymentAmount.val()||0)){
          paymentAmount.addClass('nullValue');
          alert('本次支付金额不能大于报账金额');
          return false;
        }else{
          paymentAmount.removeClass('nullValue');
        }
        total += Number(applyAmount.val()||-1);
      }
      for(var i = 0;i<table2Tr.length;i++){
        var applyAmount = $(table2Tr[i]).find("[name=apply_amount]");
        var paymentAmount =$(table2Tr[i]).find("[name=payment_amount]");
        if(Number(applyAmount.val()||0)<Number(paymentAmount.val()||0)){
          paymentAmount.addClass('nullValue');
          alert('本次支付金额不能大于报账金额');
          return false;
        }else{
          paymentAmount.removeClass('nullValue');
        }
        total += Number(applyAmount.val());
      }
      if(applyAm != total){
        alert("付款行总金额和报账单头报账金额不一致");
        return false;
      }
      return true;
    };
    this.getTrCommCloumn=function(tr){
      var inputs = $(tr).find('input');
      var selects = $(tr).find('select');
      var result = {};
      for(var i = 1;i<inputs.length;i++){
        var ele = $(inputs[i]);
      //  try{
        var k = ele.attr('name').replace(/_(\w)/g,function(_,w){
          return w.toUpperCase();});
      //  }
     //   catch(e){}
        result[k] = ele.val();
        result.paymentModeName = $(tr).find('[name=payment_mode_code]').find("option:selected").text();
      }
      if(selects.length>0){
      var select = selects[0];
      var selectName = $(select).attr('name').replace(/_(\w)/g,function(_,w){return w.toUpperCase();});
      if(selectName == "isEmployeeVendor"){
      result["isEmployeeVendor"] = $(select).find('option:selected').val();
      }
      }
      delete(result["bankBranchCode"]);
      delete(result["bankCode"]);
      return result;
    };
    this.getPaymentData=function(){
      var _data = $("#pay_line_form").toJson();
      var result = [];
      var table1Tr = $("#payment_table1 tr:not(:first):not(:last)");
      for(var i=0;i<table1Tr.length;i++){
        var tr = table1Tr[i];
        result.push($.extend($(tr).data('line'),this.getTrCommCloumn(tr)));
      }
      var table2Tr = $("#payment_table2 tr:not(:first):not(:last)");
      for(var i=0;i<table2Tr.length;i++){
        var tr = table2Tr[i];
        var p = $(tr).data('line')||{};
        p.isEmployeeVendor = $(tr).find('[name=is_employee_vendor]').val();
        result.push($.extend(p,this.getTrCommCloumn(tr)));
      }
      return result;
    };
    this.initDefault=function(vendorId){
      $this = this;
      $.ajax({
        url: '/easServlet?method=com.zte.eas.boe.business.BusinessCenter4Boe.vendor__getBankAccount',
        type: 'POST',
        dataType: 'json',
        data: {'vendorId': vendorId},
        success:function(account){
          $this.addRow(account);
        }
      });
      
    };
    
    this.addRow=function(account){
      var pay_line_index = this.pay_line_index;
      var defalutFlag = !(account === undefined);
      
      var boePaymentId = "";
      var paymentType = "";
      if(account != undefined){
      boePaymentId = account.boePaymentId ||"";
      paymentType = account.paymentType;
      //草稿进入
      if(boePaymentId != ""){
      if(paymentType == "0"){
      defalutFlag = true;
      }
      if(paymentType == "1"){
      defalutFlag = false;
      }
      }
      }
      var tab = defalutFlag ? $("#payment_table1"):$("#payment_table2");
      var index = tab.find("tr:not(:first)").length;
      var _form = tab[0].insertRow((index));
      $("<td width='7%;'><input type='checkbox'  name='pay_checkbox'/><input type='hidden' name='bank_branch_code' id='bank_branch_code"+pay_line_index+"'/> <input type='hidden' name='bank_code' id='bank_code"+pay_line_index+"'/></td>").appendTo(_form);
      //var _form = $("<form></form>");
      //第二格
      var td2 = $("<td></td>");
      var _name = 'vendor_name';//+pay_line_index
      var vendorId = defalutFlag ? (account.vendorId||""):"";
      vendorNumber = defalutFlag ? (account.vendorNumber||""):"";
      var vendorName = defalutFlag ? (account.vendorName||""):"";
      var td2HTML = defalutFlag ? $("<input type='hidden' id='paymentType' name='paymentType' value='0'/><input name='is_employee_vendor' id='is_employee_vendor"+pay_line_index+"' type='hidden'  value='Y' /><input name='vendor_id' id='vendor_id"+pay_line_index+"' type='hidden'  value='"+vendorId+"' />"
      +"<input name='vendor_number' id='vendor_number"+pay_line_index+"' type='hidden'  value='"+vendorNumber+"' />"
      +"<input name='"+_name+"' id='"+_name+pay_line_index+"' type='text'  value='"+vendorName+"' />"):$("<input type='hidden' id='paymentType' name='paymentType' value='1'/><select name='is_employee_vendor'><option value='Y'>是</option><option value='N'>否</option></select>");
      td2HTML.appendTo(td2);
      td2.appendTo(_form);
      //
      var _requiredClassName = defalutFlag ? "text_center input-text12 nullborder":"input-text required";
      //var _className = defalutFlag ? "text_center input-text12 nullborder":"input-text"
      _name = "bank_account_name";//+pay_line_index
      this.getInputTd(_name,(account ? account.bankAccountName:""),_requiredClassName,defalutFlag).appendTo(_form);
      
      _name = "bank_name";//+pay_line_index
      this.getInputTd(_name,(account ? account.bankName:""),_requiredClassName,defalutFlag).appendTo(_form);
      
      _name = "bank_branch_name";//+pay_line_index
      this.getInputTd(_name,(account ? account.bankBranchName:""),_requiredClassName,defalutFlag).appendTo(_form);
      
      _name = "bank_account_num";//+pay_line_index
      this.getInputTd(_name,(account ? account.bankAccountNum:""),_requiredClassName,defalutFlag).appendTo(_form);


      var pmcId = "payment_mode_code"+this.pay_line_index;
      _name = "payment_mode_code";//+pay_line_index
      $("<td><select name="+_name+" id="+pmcId+"></select></td>").appendTo(_form);
      this.initSelect(pmcId,"SIE_BOE_PAYMENT_PAYMENT_MODE_CODE");
      
      $("<td><select><option value='CNY'>人民币</option></select></td>").appendTo(_form);
      _name = "apply_amount";//+pay_line_index
      this.getInputTd(_name,"","input-text required").appendTo(_form);
      
      _name = "payment_amount";//+pay_line_index
      this.getInputTd(_name,"","input-text").appendTo(_form);
      
      _name = "memo";//+pay_line_index
      this.getInputTd(_name,"","input-text").appendTo(_form);
      
      //查询供应商及账户信息
      initVendorAccountLov(this.pay_line_index);
      initBankLov(this.pay_line_index);  //银行信息
      initSubBankLov(this.pay_line_index); //支行新增
      this.pay_line_index++;
      return _form;
    };
    this.getInputTd=function(name,value,_class,readonly){
      var _input = $("<input class='input-text8p'/>");
      if("memo" == name){
      _input.attr("style","text-align:start;");
      }
      else{
      _input.attr("style","text-align:center;");
      }
      _input.attr("name",name);
      _input.attr("id",name+this.pay_line_index);
      _input.attr("value",value);
      _input.attr("class",_class);
      if(readonly){
        _input.attr("readonly","readonly");
      }
      else{
      _input.attr("style","text-align:start;");
      }
      if("apply_amount" == name || "payment_amount" == name ){
      _input.attr("onkeyup","if(isNaN(value))execCommand('undo')");
      _input.attr("onafterpaste","if(isNaN(value))execCommand('undo')");
      }
      var td = $("<td></td>");
      _input.appendTo(td);
      return td;
    };
    this.getDataTable=function(){
      if($("#payment_default").hasClass('current')){
        return $("#payment_table1");
      }else{
        return $("#payment_table2");
      }
    };
    this.initSelect=function(targetId,lookupType){
      $("#"+targetId).eas('select',{
        valueField: 'lookupValue',
        txtField: 'lookupValueName',
        queryParams: {
          lookupType:lookupType,
          sort:"asc"
        }
      });
    };
    this.changeAmount=function(applyFlag){
      var table1Tr = $("#payment_table1 tr:not(:first):not(:last)");
      var table2Tr = $("#payment_table2 tr:not(:first):not(:last)");
      var _array = [];
      for(var i = 0;i<table1Tr.length;i++){
        _array.push(table1Tr[i]);
      }
      for(var i = 0;i<table2Tr.length;i++){
        _array.push(table2Tr[i]);
      }
      //table2Tr.push(table1Tr);
      var total = 0;
      var name = applyFlag ? "apply_amount":"payment_amount";
      for(var i=0;i<_array.length;i++){
        total += Number($(_array[i]).find("[name="+name+"]").val());
      }
      name = applyFlag ? "payment_apply_amount":"payment_pay_amount";
      $("#"+name).text("¥"+total.toFixed(2));
      this.setPagePayInfo();
    };
    this.setPagePayInfo=function(){
      if(this.setting.setNotPay!=null && this.setting.setAleradyPay!=null
        && typeof this.setting.setNotPay =='function'
        && typeof this.setting.setAleradyPay == 'function'){
        var applyAmount = $("#payment_apply_amount").text();
        var payAmount = $("#payment_pay_amount").text();
        if(applyAmount.length>0)
          applyAmount = applyAmount.substring(1);
        if(payAmount.length>0)
          payAmount = payAmount.substring(1);
        this.setting.setNotPay(Number(applyAmount)-Number(payAmount));
        this.setting.setAleradyPay(Number(payAmount));
      }
    };
    this.changeTableAmount=function(obj,applyFlag){
      var table = $(obj).parents('table')[0];
      var trs = $(table).find("tr:not(:first):not(:last)");
      var name = applyFlag?"apply_amount":"payment_amount";
      var total = 0;
      for(var i=0;i<trs.length;i++){
        total += Number($(trs[i]).find("[name="+name+"]").val());
      }
      name = applyFlag ? "table_apply_amount" : "table_pay_amount";
      $(table).find("[name="+name+"]").text(total.toFixed(2));
    };
    this.checkRequired=function(obj){
      var value = $(obj).val();
      if(value==null||value==""){
        $(obj).addClass('nullValue');
        return false;
      }else{
        $(obj).removeClass('nullValue');
      }
      return true;
    };
    this.initRowEleVal = function(p,tr){
    var hiddenValue = {};
          for(var k in p){
            var _k = k.replace(/([A-Z])/g,'_$1').toLowerCase();
            var ele = $(tr).find("[name="+_k+"]");
            if(ele.length==1){
              if(ele.is('span')){
                ele.text(p[k]);
              }else{
                ele.val(p[k]);
              }
            }else{
              hiddenValue[k] = p[k];
            }
          }
          var boePaymentId = p.boePaymentId||"";
          if(""==boePaymentId){
          $(tr).find("[name=apply_amount]").val(Number($(tr).find("[name=apply_amount]").val()).toFixed(2));
          if(""==$(tr).find("[name=payment_amount]").val()){
          $(tr).find("[name=payment_amount]").val($(tr).find("[name=apply_amount]").val());
          }
          $(tr).find("[name=payment_amount]").val(Number($(tr).find("[name=payment_amount]").val()).toFixed(2));
          $('[name=apply_amount]',"#pay_line_form").trigger('blur');
          $('[name=payment_amount]',"#pay_line_form").trigger('blur');
          }
          $(tr).data('line',hiddenValue);
    };
    this.addRows= function(paymentList){
      if(paymentList && $.isArray(paymentList)){
        for(var i = 0;i < paymentList.length;i++){
          var p = paymentList[i];
          delete(p["employeeId"]);
          delete(p["employeeNumber"]);
          delete(p["employeeName"]);
          var tr;
          tr=this.addRow(p);
       /*   if(p.isEmployeeVendor=='Y'){
            tr=this.addRow({});
          }else{
            tr=this.addRow(p);
          } */
          this.initRowEleVal(p,tr);
        }
      }
    }
  }
  function triggerTrBlur(tr){
  $(tr).find("[name=apply_amount]").val(Number($(tr).find("[name=apply_amount]").val()).toFixed(2));
    $(tr).find("[name=payment_amount]").val($(tr).find("[name=apply_amount]").val());
    $('[name=apply_amount]',"#pay_line_form").trigger('blur');
    $('[name=payment_amount]',"#pay_line_form").trigger('blur');
  }
  $(document).ready(function() {
     // 付款信息
    $("ul.ex_tab").on("click",function(event){
      var target = event.target;
      var index = $(target).index();
        if(index == 0){   //默认账号
          $(target).addClass("current");
          $(target).siblings().removeClass("current");
          $("div.tab1").show();
          $("div.tab2").hide();
        }else if(index ==1){  //手工输入
          $(target).addClass("current");
          $(target).siblings().removeClass("current");
          $("div.tab1").hide();
          $("div.tab2").show();
        }
      });
    //var payment = ;
    $("#del_payment").bind('click', function(event) {
      var currentDataTable = payment.getDataTable();
      $("[name=pay_checkbox]:checked",currentDataTable).parent().parent().remove();
      var rowLength = currentDataTable.find('tr:not(:first):not(:last)').length;
      $('[name=apply_amount]',"#pay_line_form").trigger('blur');
      $('[name=payment_amount]',"#pay_line_form").trigger('blur');
      if(rowLength == 0){
      currentDataTable.find('span[name=table_apply_amount]').text("0.00");
      currentDataTable.find('span[name=table_pay_amount]').text("0.00");
      }
      if($('[name=apply_amount]',"#pay_line_form").length == 0){
      currentDataTable.find('span[name=table_apply_amount]').text("0.00");
      $("#payment_apply_amount").text("¥"+Number("0.00").toFixed(2));
      }
      if($('[name=payment_amount]',"#pay_line_form").length == 0){
         currentDataTable.find('span[name=table_pay_amount]').text("0.00");
      $("#payment_pay_amount").text("¥"+Number("0.00").toFixed(2));
      }
    });
    $("#select_all_1").bind('click',function(){
    this.checked?$("[name=pay_checkbox]",$("#payment_table1")).prop('checked',true):$("[name=pay_checkbox]",$("#payment_table1")).prop('checked',false);
    })
    $("#select_all_2").bind('click',function(){
    this.checked?$("[name=pay_checkbox]",$("#payment_table2")).prop('checked',true):$("[name=pay_checkbox]",$("#payment_table2")).prop('checked',false);
    })
    $("#copy_payment").bind('click',function(){
         var currentDataTable = payment.getDataTable();
      var checkboxs = $("[name=pay_checkbox]:checked",currentDataTable);
      var length = checkboxs.length;
      if(length!=1){
      alert('复制请勾选一行');
      return;
      }
var selectRow = $(checkboxs[0]).parents('tr')[0]; 
var rowData = payment.getTrCommCloumn(selectRow);
var newRow;  
if(rowData.paymentType == "0"){
newRow = payment.addRow(rowData);
}
else{
newRow = payment.addRow();
}
payment.initRowEleVal(rowData,newRow);
    });
    $("#add_payment").bind('click',function(){
      if(payment==null){return;}
      var _selectType = $("#payment_account_type .current")[0].id;
      var currentDataTable = payment.getDataTable();
      var paymentRows = currentDataTable.find('tr');
      var _employeeList = payment.setting.getVendorInfo();
      var addDefaultFlag = true;
      if(_employeeList == null || _employeeList.length == 0 || paymentRows.length >= _employeeList.length+2){
      addDefaultFlag = false;
      }
  if(_selectType == "payment_default"){
        if(!addDefaultFlag){
        var tr=payment.addRow({});
        triggerTrBlur(tr);
        }
        else{
        $.ajax({
   url: '/easServlet?method=com.zte.zas.common.business.BusinessCenter4System.fbpEmployee__getEmployeeVendorAndBankAccountInfoList',
   type: 'POST',
   async:false,
   dataType: 'json',
   data: {'employeeList':_employeeList},
   success:function(data){
     if(data){
      //如果查询到员工供应商和账户信息
      if(data!=null && data.length>0){
        payment.addRows(data);
          }
          else{
            for(var i=0;i<_employeeList.length;i++){
            var applyAmount = _employeeList[i].applyAmount;
         var tr = payment.addRow({});
             $(tr).find('input[name=apply_amount]').val(applyAmount);
             $(tr).find('input[name=payment_amount]').val(applyAmount);
             triggerTrBlur(tr);
            }
          }
     }
   }
  });
        }
      }else{
      if(!addDefaultFlag){
      var tr = payment.addRow();
      triggerTrBlur(tr);
      }
      else{
      for(var i=0;i<_employeeList.length;i++){
         var applyAmount = _employeeList[i].applyAmount;
      var tr = payment.addRow();
      $(tr).find('input[name=apply_amount]').val(applyAmount);
      $(tr).find('input[name=payment_amount]').val(applyAmount);
      triggerTrBlur(tr);
      }
      }
      }
    });
    $("#pay_line_form").delegate('.required', 'blur', function(){
      if(payment==null){return;}
      payment.checkRequired(this);
    });
    $("#pay_line_form").undelegate('[name=apply_amount]', 'blur').delegate('[name=apply_amount]', 'blur', function(event) {
      if(payment==null){return;}
      $(this).val(Number($(this).val()).toFixed(2));
      payment.checkRequired(this);//if(!){return};
      payment.changeAmount(true);
      payment.changeTableAmount(this,true);
    });
    $("#pay_line_form").delegate('[name=payment_amount]', 'blur', function(event) {
      if(payment==null){return;}
      $(this).val(Number($(this).val()).toFixed(2));
      payment.changeAmount(false);
      payment.changeTableAmount(this,false);
    });
  });
</script>
0 0