$(function(){ var cid = $.trim($('#cid').val()); var table = $('#tablelist').removeAttr('width').DataTable({ columnDefs: [ { className: 'allwidth1', width: 150, targets: [0,2] }, { className: 'allwidth2', width: 200, targets: 1 }, { className: 'allwidth4', width: 70, targets: 8 }, { className: 'allwidth3',width: 100, targets: '_all' } ], fixedColumns: { leftColumns: 4 } }); //自动添加清单数据到localstorage里 if($('#changelist').val() != ''){ var clist = $('#changelist').val().split(','); $.each(clist,function(k,v){ var vmsg = v.split('->'); var vnum = vmsg[1].split(';'); localStorage.setItem('update_'+cid+'_clistid_'+vmsg[0],vnum[5]); }) } if($('#changewhitelist').val() != ''){ var cwlist = $('#changewhitelist').val().split(','); $.each(cwlist,function(k,v){ var vmsg = v.split('->'); localStorage.setItem('update_'+ cid +'_new_clistid_'+vmsg[0],vmsg[1]); }) } $('.addlistbtn').on('click',function(){ //生成table清单 if($(this).hasClass('btn-default')){ maketablelist('addwhite'); }else{ maketablelist(); } $('#addlist').modal('hide'); }); $('body').on("valuechange", '.clist input', function (e, previous) { //获取小数位的设置点数 var decimalsetarr = $('#changedecimalnum').val().split('_'); var decimal = decimalsetarr[0]; //if 输入变更数量 var site = $(this).parents('td').attr('sortnum'); if(site == 6) { var num = $(this).val(); var unitprice = $(this).parents('.clist').children('td').eq(3).text() || $(this).parents('.clist').children('td').eq(3).children('input').val(); var total = $.trim(num) != '' && $.trim(unitprice) != '' ? roundnum(parseFloat(unitprice).mul(parseFloat(num)),decimal) : ''; $(this).parents('.clist').children('td').eq(7).text(total); } //if 输入单价 else if(site == 3) { var unitprice = $(this).val(); var thistr = $(this).parents('tr').attr('newlist_tid'); var $thisstr = $('#list tr[newlist_tid="'+thistr+'"]'); $thisstr.children('td').eq(site).children('input').val(unitprice); var onum = $thisstr.children('td').eq(4).children('input').val(); var num = $thisstr.children('td').eq(6).children('input').val(); var ototal = $.trim(onum) != '' && $.trim(unitprice) != '' ? roundnum(parseFloat(unitprice).mul(parseFloat(onum)),2) : ''; var total = $.trim(num) != '' && $.trim(unitprice) != '' ? roundnum(parseFloat(unitprice).mul(parseFloat(num)),decimal) : ''; $thisstr.children('td').eq(5).text(ototal); $thisstr.children('td').eq(7).text(total); } //if 输入的是原设计数量 else if(site == 4) { var onum = $(this).val(); var unitprice = $(this).parents('.clist').children('td').eq(3).children('input').val(); var ototal = $.trim(onum) != '' && $.trim(unitprice) != '' ? roundnum(parseFloat(unitprice).mul(parseFloat(onum)),2) : ''; $(this).parents('.clist').children('td').eq(5).text(ototal); }else{ var thistr = $(this).parents('tr').attr('newlist_tid'); var $thisstr = $('#list tr[newlist_tid="'+thistr+'"]'); $thisstr.children('td').eq(site).children('input').val($(this).val()); } //统计合计金额 totalamount(decimal); //更改localstorage //if 签约清单 if($(this).parents('.clist').hasClass('clid')){ var id = $(this).parents('.clist').attr('list_id'); if($.trim($(this).val()) != ''){ localStorage.setItem('update_'+cid+'_clistid_'+id, $.trim($(this).val())); var cnum = $.trim($(this).val()); var $thisstr2 = $('#list tr[list_id="'+id+'"]'); updatelist(id,cnum,$thisstr2); }else{ localStorage.removeItem('update_'+cid+'_clistid_'+id); removelist(id); } } //else 新增空白清单 else{ var newid = $(this).parents('.clist').attr('newlist_tid'); var $thisstr = $('#list tr[newlist_tid="'+newid+'"]'); var listtrmsg = updateandgetwhitelist(newid,$thisstr); localStorage.setItem('update_'+ cid +'_new_clistid_'+newid,listtrmsg); } }); //单位选择要另外处理 $('body').on("change", '.clist select', function () { var newid = $(this).parents('.clist').attr('newlist_tid'); var $thisstr = $('#list tr[newlist_tid="'+newid+'"]'); $thisstr.children('td').eq(2).children('select').val($(this).val()); var listtrmsg = updateandgetwhitelist(newid,$thisstr); localStorage.setItem('update_'+ cid +'_new_clistid_'+newid,listtrmsg); }); //小数位数设置提交到本变更令中 $('#setdnum').click(function(){ if(/^[0-6]$/.test(parseInt($('#costdnum').val())) && /^[0-6]$/.test(parseInt($('#numberdnum').val()))){ var costdnum = parseInt($('#costdnum').val()), numbernum = parseInt($('#numberdnum').val()); decimalnumsetmodal(costdnum,numbernum,'update'); }else{ toastr.error('请输入范围内正确的位数要求'); } }); //删除清单功能 $('body').on('click', "#tablelist .btn-sm",function(){ if($(this).attr('list_id') !== undefined){ var id = $(this).attr('list_id'); //删除localstorage记录和reductionList记录 localStorage.removeItem('update_'+ cid +'_clistid_'+id); var reductionlist = $('#reductionList').val().split(','); if($.trim(reductionlist) != ''){ $.each(reductionlist,function(k,v){ if(v == id){ reductionlist.splice(k,1); return false; } }); } $('#reductionList').val(reductionlist.join(',')); //先删所有后还原 var $rowtr = $('#addlist').find('tbody').children('tr'); $rowtr.removeClass('success'); $rowtr.find('input').prop('checked',false); var z = 0; for(var i = 0; i < reductionlist.length; i++){ var j = z; for(; j < $rowtr.length; j++){ if(reductionlist[i] == $rowtr.eq(j).children('td').eq(0).attr('list_id')){ $rowtr.eq(j).addClass('success'); $rowtr.eq(j).find('input').prop('checked',true); z = ++j; break; } } } maketablelist(); }else{ var id = $(this).attr('newlist_tid'); //删除localstorage记录 localStorage.removeItem('update_'+ cid +'_new_clistid_'+id); maketablelist(); } //console.log($thisstr); //$thisstr.remove(); }); function maketablelist(status){ //获取小数位的设置点数 var decimalsetarr = $('#changedecimalnum').val().split('_'); var decimal = decimalsetarr[0]; //var step = makedecimals(decimalsetarr[1]); //设置数量0. n位数初始值 var zero = makedecimalzero(decimalsetarr[1]); //设置金额0. n位数初始值 var costzero = makedecimalzero(decimal); var html = ''; var deteletr2 = 'class="btn btn-default btn-sm" title="删除清单">'; //获取清单列表 var totalnum = 0; var clist = new Array(); var rlist = new Array(); $('.checklist').find('.listcheckbox').each(function(){ if($(this).prop("checked")){ var id = $(this).parents('.checklist').children('td').eq(0).attr('list_id'); var num = $(this).parents('.checklist').children('td').eq(1).text(); var name = $(this).parents('.checklist').children('td').eq(2).text(); var unit = $(this).parents('.checklist').children('td').eq(3).text(); var price = $(this).parents('.checklist').children('td').eq(4).text(); var oamount = $(this).parents('.checklist').children('td').eq(5).text(); var ototal = $(this).parents('.checklist').children('td').eq(6).text(); //获取localstorage里的数据 var scnum = 0; var sctotal = 0; var trlist = [num,name,unit,price,oamount]; if(localStorage.hasOwnProperty('update_'+cid+'_clistid_'+id)){ scnum = localStorage.getItem('update_'+cid+'_clistid_'+id); sctotal = roundnum(parseFloat(price).mul(parseFloat(scnum)),decimal); }else{ //新增一个localstorage scnum = zero; localStorage.setItem('update_'+ cid +'_clistid_'+id,scnum); } trlist.push(scnum); clist.push(id+'->'+trlist.join(';')); rlist.push(id); sctotal = parseFloat(sctotal) != 0 ? roundnum(sctotal,decimal) : costzero; var deteletr = ''+ num +''+ name +''+ unit +''+ price +''+ oamount +''+ ototal +''+ sctotal +''+ deteletr +''; } }); //添加到form中list $('#changelist').val(clist.join(',')); $('#reductionList').val(rlist.join(',')); //获取localstorage里的数据 var newid = 1; var addArr = new Array(); var storage = window.localStorage; var n = 20+cid.toString().length; for(var i = 0; i < storage.length; i++){ var key = storage.key(i); if(key.substring(0,n) == 'update_'+ cid +'_new_clistid_'){ //排序 newid++; var id2 = key.split('_'); addArr.push(id2[4]); } } addArr.sort(function(a,b){ return a - b; }); var wlist = new Array(); var optionselect = ['m','km','m2','m3','kg','t','m3·km','总额','月','项','处','个','根','棵','块','每一试桩','桥长米','公路公里','株','组','座','元','工日','套','台班','艘班','m/处','m/道','m/座','m2/m','m3/m','m3/处','根/米','亩','m3/m2']; //按添加顺序输出localstorage的内容 for(var z= 0; z< addArr.length; z++){ var trlist = storage.getItem('update_'+ cid +'_new_clistid_'+addArr[z]).split(';'); var num2 = trlist[0]; var name2 = trlist[1]; var unit2 = trlist[2]; var price2 = trlist[3]; var oamount2 = trlist[4]; var scnum = trlist[5]; //不为空的就显示出来,全部为空的就自动删除 if(num2 != '' || name2 != '' || price2 != '' || oamount2 != '' || scnum != ''){ wlist.push(addArr[z]+'->'+trlist.join(';')); var ototal2 = price2 != '' && oamount2 != '' ? roundnum(parseFloat(price2).mul(parseFloat(oamount2)),2) : ''; var sctotal2 = price2 != '' && scnum != '' ? roundnum(parseFloat(price2).mul(parseFloat(scnum)),decimal) : ''; var optionlist = ''; for(var j = 0; j < optionselect.length; j++){ if(unit2 == optionselect[j]){ optionlist += ''; }else{ optionlist += ''; } } var deteletr = ''+ ototal2 +''+ sctotal2 +''+ deteletr +''; } } //添加到form中list $('#changewhitelist').val(wlist.join(',')); //获取添加的空白清单 if(status == 'addwhite'){ var optionlist2 = ''; for(var j = 0; j < optionselect.length; j++){ optionlist2 += ''; } var deteletr = ''+ costzero +''+ costzero +''+ deteletr +''; html += addtr; } table.destroy(); $('#list').html(html); table = $('#tablelist').removeAttr('width').DataTable({ columnDefs: [ { className: 'allwidth1', width: 150, targets: [0,2] }, { className: 'allwidth2', width: 200, targets: 1 }, { className: 'allwidth4', width: 70, targets: 8 }, { className: 'allwidth3', width: 100, targets: '_all' } ], fixedColumns: { leftColumns: 4 } }); totalamount(decimal); } }); var updateflag = 0; var cid = $.trim($('#cid').val()); function checkform(){ if($.trim($('#pnum').val()) == ''){ var str = updateflag == 0 ? '至少' : ''; toastr.error('请'+str+'输入申请编号'); return false; } if($('#pname').val() == ''){ var str = updateflag == 0 ? '至少' : ''; toastr.error('请'+str+'输入工程名称'); return false; } if(updateflag == 1){ if($('#description').val() == ''){ toastr.error('请输入工程变更理由及内容'); return false; } if($('#changelist').val() == '' && $('#changewhitelist').val() == ''){ toastr.error('请至少添加一项变更清单或空白清单'); return false; } if($('#changelist').val() != '' || $('#list .clid').length/2 != 0){ var clistnum = $('#list .clid').length/2; if($('#changelist').val() == '' || $('#changelist').val().split(',').length != clistnum){ toastr.error('请输入所有所需变更的签约清单的申报变更数量'); return false; } } if($('#changewhitelist').val() != ''){ var wlist = $('#changewhitelist').val().split(','); var existempty = 0; var emptysite = 0; var pnum = ''; $.each(wlist,function(k,v){ var adtrlist = v.split('->')[1].split(';'); if(existempty == 1){ return false; } $.each(adtrlist,function(ak,av){ if(av == '' && ak != 2){ existempty = 1; emptysite = k+1; pnum = adtrlist[0]; return false; } }); }); if(existempty){ var currnum = emptysite + $('#list .clid').length/2; toastr.error('变更清单第'+ currnum +'行,清单编号为:'+ pnum +' 存在未填写的内容,请填写完整。若不需要此空白清单请把整行填写过的内容清除'); return false; } } if($('#changeaudit').val() == ''){ toastr.error('请添加审批人'); return false; } var addArr = new Array(); var storage = window.localStorage; var n = cid.toString().length; for(var i = 0; i < storage.length; i++){ var key = storage.key(i); if(key.substring(0,20+n) == 'update_'+ cid +'_new_clistid_' || key.substring(0,16+n) == 'update_'+ cid +'_clistid_'){ addArr.push(key); } } if(addArr){ $.each(addArr,function(k,v){ storage.removeItem(v); }) } } var ajaxflag = 0; $.ajax({ type: 'post', url: '/change/check/pnum', data: {pnum:$.trim($('#pnum').val()),status:'update',pmid:$('#pmid').val(),cid:cid}, async: false, dataType: 'json', success: function(result){ if(result.code == 400){ toastr.error(result.msg); ajaxflag = 1; } } }); if(ajaxflag != 0){ return false; } return true; }