$.event.special.valuechange = { teardown: function (namespaces) { $(this).unbind('.valuechange'); }, handler: function (e) { $.event.special.valuechange.triggerChanged($(this)); }, add: function (obj) { $(this).on('keyup.valuechange cut.valuechange paste.valuechange input.valuechange', obj.selector, $.event.special.valuechange.handler) }, triggerChanged: function (element) { var current = element[0].contentEditable === 'true' ? element.html() : element.val() , previous = typeof element.data('previous') === 'undefined' ? element[0].defaultValue : element.data('previous'); if (current !== previous) { element.trigger('valuechange', [element.data('previous')]); element.data('previous', current); } } }; function escapeTags( str ) { return String( str ) .replace( /&/g, '&' ) .replace( /"/g, '"' ) .replace( /'/g, ''' ) .replace( //g, '>' ); } $(function(){ toastr.options = { "closeButton": false, "debug": false, "newestOnTop": false, "progressBar": false, "positionClass": "toast-top-right", "preventDuplicates": false, "onclick": null, "showDuration": "300", "hideDuration": "1000", "timeOut": "5000", "extendedTimeOut": "1000", "showEasing": "swing", "hideEasing": "linear", "showMethod": "fadeIn", "hideMethod": "fadeOut" }; //重置申请编号 $('#resetnumber').click(function(){ $('#pnum').val($(this).attr('data-num')); toastr.success('已重置申请编号'); }); //设置自动编号 $('.autonumber').click(function(){ var str1 = $('#pnum').val(); $('#numhtmlshow').html(''); if(str1.trim() !== ''){ var match1 = /(?!\d{3,6})(\D|\d)|19\d{2}|20\d{2}|\d{3,6}/g; var result = str1.match(match1); var arr = new Array(); var j = 0; var numhtml = ''; for(var i=0; i1){ arr.push(result[i]); j++; }else if(i>=1 && result[i-1].length ==1){ arr[j-1] = arr[j-1]+result[i]; } }else { arr.push(result[i]); j++; } } $.each(arr,function(k,v){ numhtml += ''+v+' '; }); $('#numhtmlshow').html(numhtml); } $('#autonumber').modal('show'); }); $('body').on('click','.delrule',function(){ $(this).parents('.label').remove(); }); //tools change $('#tools').change(function(){ if($(this).val() == 1){ $('.toolshow').hide(); $('#noteshow').show(); }else if($(this).val() == 2){ $('.toolshow').hide(); $('#yearshow').show(); }else if($(this).val() == 3){ $('.toolshow').hide(); $('.numbershow').show(); }else{ $('.toolshow').hide(); } }); //add tools $('#addtools').click(function(){ var numhtml = ''; if($('#tools').val() == 0){ toastr.error('请选择组件再添加'); return false; }else if($('#tools').val() == 1){ if($('#noteshow input').val().trim() != ''){ numhtml += ''+$('#noteshow input').val().trim()+' '; }else{ toastr.error('请输入你想添加的文本内容'); return false; } }else if($('#tools').val() == 2){ numhtml += ''+$('#yearshow input').val()+' '; }else if($('#tools').val() == 3){ numhtml += ''+$('#setnumber').val()+' '; } $('#numhtmlshow').append(numhtml); }); //位数number编号大小设置 $('#numsite').on("valuechange", function (e, previous) { if($(this).val() == '' || parseInt($(this).val()) > 6 || parseInt($(this).val()) <3){ toastr.error('请输入编号位数区间在3到6位'); $(this).val(3); $('#setnumber').val('001'); return false; }else{ var num = parseInt($(this).val()); var str = makenum(num); $('#setnumber').val(str); } }); //生成编号 $('#setcnum').click(function(){ var cnum = ''; $('#numhtmlshow span').each(function(){ cnum += $.trim($(this).text()); }); $('#pnum').val(cnum); $('#autonumber').modal('hide'); }); //new and update same method //提出单位编辑 $('#addcompany').click(function(){ var newinput = '
'; $('#companyadddiv').append(newinput); }); $('#updatecompany').click(function(){ $(this).attr('disabled','disabled'); var addcompanyArr = new Array(); $('#companyadddiv').find('.form-control').each(function(){ addcompanyArr.push($(this).val()); }); var updatecompanyArr = new Array(); var updatecompanyidArr = new Array(); $('#companyshow').find('.form-control').each(function(){ updatecompanyArr.push($(this).val()); updatecompanyidArr.push($(this).attr('id')); }); //判断是否有重名情况再提交 var flag = isRepeat(addcompanyArr.concat(updatecompanyArr)); if(!flag){ $.ajax({ type: 'post', url: '/change/api/update/company', data:{ pmid: $('#pmid').val(),uci:updatecompanyidArr.length !== 0 ? updatecompanyidArr : '',uc:updatecompanyArr.length ? updatecompanyArr : '',ac:addcompanyArr.length !== 0 ? addcompanyArr : ''}, dataType: 'json', success: function(result){ if(result.code == 200){ $('#companyadddiv').html(''); $('#companyshow').append(result.addhtml); $('#company').html(result.selecthtml); $('#editcompany').modal('hide'); toastr.success('变更单位已更新'); }else{ toastr.error('添加或编辑单位出错'); } $('#updatecompany').attr('disabled',false); } }) }else{ toastr.error('变更单位不能同名'); $('#updatecompany').attr('disabled',false); } }); function isRepeat(arr){ var hash = {}; for(var i in arr) { if(hash[arr[i]]) return true; hash[arr[i]] = true; } return false; } //变更清单添加 $('.checklist').on('click',function(){ if($(this).find('.listcheckbox').prop("checked")){ $(this).find('.listcheckbox').prop("checked",false); $(this).removeClass('success'); }else{ $(this).find('.listcheckbox').prop("checked",true); $(this).addClass('success'); } }); $('.listcheckbox').on('click',function(){ if($(this).prop("checked")){ $(this).prop("checked",false); $(this).parents('.checklist').removeClass('success'); }else{ $(this).prop("checked",true); $(this).parents('.checklist').addClass('success'); } }); //审批人选择 $('body').on('click','.alert-pnone .radio',function(e){ if($(e.target).is('label')){ return; } var uid = $(this).attr('data-uid'); if($(this).parents('.alert-pnone').hasClass('alert-success')){ $(this).parents('.alert-pnone').removeClass('alert-success'); $(this).children('label').children('input[type="radio"]').prop('checked',false); //移除form中 var auditlist = $('#selectauditlist').val().split('->'); var reductionauditlist = $('#reductionAudit').val().split(','); $.each(auditlist,function(k,v){ var vid = v.split('_')[0]; if(uid == vid){ auditlist.splice(k,1); reductionauditlist.splice(k,1); return false; } }); $('#selectauditlist').val(auditlist.join('->')); $('#reductionAudit').val(reductionauditlist.join(',')); }else{ $(this).parents('.alert-pnone').addClass('alert-success'); $(this).children('label').children('input[type="radio"]').prop('checked','checked'); //添加 var name = $(this).attr('data-uname'); var company = $(this).attr('data-ucompany'); var jobs = $(this).attr('data-ujobs'); var adduser = uid+'_'+name+'_'+company+'_'+jobs; //添加到form中 if($('#selectauditlist').val() != ''){ var auditlist = $('#selectauditlist').val().split('->'); var reductionauditlist = $('#reductionAudit').val().split(','); auditlist.push(adduser); reductionauditlist.push(uid); $('#selectauditlist').val(auditlist.join('->')); $('#reductionAudit').val(reductionauditlist.join(',')); }else{ $('#selectauditlist').val(adduser); $('#reductionAudit').val(uid); } } }); //添加到审批流程中 $('#addaudit').click(function(){ $('#usertableshow').html(''); //添加到form中 if($('#selectauditlist').val() != ''){ var sort = 1; var auditlist = $('#selectauditlist').val().split('->'); var auditarray = new Array(); $.each(auditlist,function(k,v){ var vmsg = v.split('_'); var uid = vmsg[0]; var name = vmsg[1]; var company = vmsg[2]; var jobs = vmsg[3]; var addusertr = ''+sort+' 审

'+ jobs +' '+ name +'

'+ company +' '; $('#usertableshow').append(addusertr); auditarray.push(uid); sort++; }); $('#changeaudit').val(auditarray.join(',')); }else{ $('#changeaudit').val(''); } $('#addshenpi').modal('hide'); }); //审批人搜索和添加 $('#searchbtn').click(function(){ var username = $.trim($('#searchname').val()); if(username == ''){ toastr.error('请输入审批人名称'); return false; }else{ var namelist = $('#usernamelist').val().split(','); for(var i = 0; i < namelist.length; i++){ if(username == namelist[i]){ toastr.error('列表或常用中已存在当前审批人'); return false; } } $.ajax({ type: 'post', url: '/change/user/search?name='+username, data: {namelist:namelist}, dataType: 'json', success: function(result){ if(result.code == 400){ toastr.error(result.msg); }else{ namelist.push(result.user.name); $('#usernamelist').val(namelist.join(',')); var adduserhtml = '
'+ result.user.jobs +'
'; $('#searchshow').append(adduserhtml); } } }) } }); //文件上传 var btn = document.getElementById('uploadBtn'), msgBox = document.getElementById('msgBox'), filenum = $('#filesshow tr').length != 0 ? $('#filesshow tr').length : 1; var uploader = new ss.SimpleUpload({ button: btn, url: '/change/file/upload/' + $('#pmid').val(), // sessionProgressUrl: '/code/ajaxuploader/sessionProgress.php', name: 'uploadfile', multipart: true, hoverClass: 'hover', focusClass: 'focus', responseType: 'json', multipleSelect: true, multiple: true, maxSize: 10240, data:{uid:$('#uid').val(),verification:$('#verification').val()}, onSubmit: function(filename, extension) { var progress = document.createElement('div'), bar = document.createElement('div'), fileSize = document.createElement('div'), wrapper = document.createElement('div'), progressBox = document.getElementById('progressBox'); progress.className = 'progress progress-striped'; bar.className = 'progress-bar progress-bar-success'; fileSize.className = 'size'; wrapper.className = 'wrapper'; progress.appendChild(bar); wrapper.innerHTML = '
'+filename+'
'; wrapper.appendChild(fileSize); wrapper.appendChild(progress); progressBox.appendChild(wrapper); this.setProgressBar(bar); this.setFileSizeBox(fileSize); this.setProgressContainer(wrapper); }, onComplete: function( filename, response ) { if ( !response ) { toastr.error('无法上传文件'); msgBox.innerHTML = '无法上传文件'; return; } var msgBoxfiles = document.createElement('div'); msgBoxfiles.className = 'msg'; if ( response.success === true ) { toastr.success(filename + ' 上传成功。'); msgBoxfiles.innerHTML = '' + escapeTags( filename ) + '' + ' 上传成功。'; msgBox.appendChild(msgBoxfiles); var filestr = ''+ filenum +''+ response.files.filename +''+ response.files.size +''+ response.files.time +''; $('#filesshow').append(filestr); //添加到form中 if($('#changeatt').val() != ''){ var attlist = $('#changeatt').val().split(','); attlist.push(response.files.id); $('#changeatt').val(attlist.join(',')); }else{ $('#changeatt').val(response.files.id); } filenum++; setTimeout(function(){ msgBox.removeChild(msgBoxfiles); },3000); } else { if ( response.msg ) { toastr.error(filename + ' ' + response.msg); msgBoxfiles.innerHTML = '' + escapeTags( filename ) + ' ' + response.msg; msgBox.appendChild(msgBoxfiles); setTimeout(function(){ msgBox.removeChild(msgBoxfiles); },3000); } else { toastr.error(filename + ' 发生错误,上传失败。'); msgBoxfiles.innerHTML = '' + escapeTags( filename ) + ''+ ' 发生错误,上传失败。'; msgBox.appendChild(msgBoxfiles); setTimeout(function(){ msgBox.removeChild(msgBoxfiles); },3000); } } }, onError: function() { var msgBoxfiles = document.createElement('div'); msgBoxfiles.className = 'msg'; toastr.error('无法上传文件'); msgBoxfiles.innerHTML = '无法上传文件'; msgBox.appendChild(msgBoxfiles); setTimeout(function(){ msgBox.removeChild(msgBoxfiles); },3000); } }); //删除附件 $('body').on('click',"a[id^='delatt_']",function (){ var fid = $(this).attr('file_id'); $(this).parents('tr').remove(); var newsort = 1; $('#filesshow tr').each(function(){ $(this).children('td').eq(0).text(newsort); newsort++; }); filenum = newsort; var attlist = $('#changeatt').val().split(','); $.each(attlist,function(k,v){ if(v == fid){ attlist.splice(k,1); return false; } }); $('#changeatt').val(attlist.join(',')); $.ajax({ type: 'post', url: '/change/file/delete', data:{fid: fid}, dataType: 'json', success: function(result){ } }) }); //让回车提交表单方法失效并改成光标往下 $("body").on('keypress','input',function (e) { var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode; if (keyCode == 13) { for (var i = 0; i < this.form.elements.length; i++) { if (this == this.form.elements[i]) break; } i = (i + 1) % this.form.elements.length; this.form.elements[i].focus(); return false; } else { return true; } }); //modal取消事件,还原旧保存的数据 $('#cancellist').click(function () { var reductionlist = $('#reductionList').val().split(','); //先删所有后还原 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; } } } $('#addlist').modal('hide'); }); $('#cancelaudit').click(function () { var reductionaudit = $('#reductionAudit').val(); var changeaudit = $('#changeaudit').val(); if(changeaudit !== reductionaudit){ //不相同则要还原 $('#selectauditlist').val(''); var $rowdiv = $('#addshenpi').find('.row').children('div'); $rowdiv.removeClass('alert-success'); $rowdiv.find('input').prop('checked',false); var auditlist = changeaudit.split(','); if(auditlist.length){ for(var i = 0; i < auditlist.length; i++){ for(var j = 0; j < $rowdiv.length; j++){ var $rowdivdiv = $rowdiv.eq(j).children('div'); if(auditlist[i] == $rowdivdiv.attr('data-uid')){ $rowdiv.eq(j).addClass('alert-success'); $rowdivdiv.find('input').prop('checked',true); var uid = $rowdivdiv.attr('data-uid'); var name = $rowdivdiv.attr('data-uname'); var company = $rowdivdiv.attr('data-ucompany'); var jobs = $rowdivdiv.attr('data-ujobs'); var adduser = uid+'_'+name+'_'+company+'_'+jobs; if($('#selectauditlist').val() != ''){ var auditlist2 = $('#selectauditlist').val().split('->'); auditlist2.push(adduser); $('#selectauditlist').val(auditlist2.join('->')); }else{ $('#selectauditlist').val(adduser); } } } } } $('#reductionAudit').val(changeaudit); } $('#addshenpi').modal('hide'); }); $('body').on('focus', "#tablelist input", function() { $(this).select(); }); }); //根据位数生成编号,3位-》001 ,5位-》00001 function makenum(num){ var arr = new Array(num); for(var i=0;i< num;i++){ if(i != num-1){ arr[i] = 0; }else{ arr[i] = 1; } } return arr.join(''); } //生成num位的0 function makezero(num){ var arr = new Array(num); for(var i=0;i< num;i++){ arr[i] = 0; } return arr.join(''); } //生成num小数位数的0. function makedecimalzero(num){ if(num < 1){ return '0'; }else{ return '0.'+makezero(num); } } //生成num位的10倍数 function makemultiple(num){ return Math.pow(10,parseInt(num)); } //根据位数生成几位小数,0位-》1,1位-》0.1 ,5位-》0.00001 function makedecimals(num){ if(num >= 1 && num <= 6){ var arr = new Array(num); for(var i=0;i< num;i++){ if(i != num-1){ arr[i] = 0; }else{ arr[i] = 1; } } return '0.'+arr.join(''); }else{ return 1; } } //四舍五入或末尾加零,实现类似php的 sprintf("%.".decimal."f", val); function roundnum(val,decimals){ if(val !== ''){ val = parseFloat(val); if(decimals < 1){ val = (Math.round(val)).toString(); }else{ var num = val.toString(); if(num.lastIndexOf('.') == -1){ num += '.'; num += makezero(decimals); val = num; }else{ var valdecimals = num.split('.')[1].length; if(parseInt(valdecimals) < parseInt(decimals)){ num += makezero(parseInt(decimals)-parseInt(valdecimals)); val = num; }else if(parseInt(valdecimals) > parseInt(decimals)){ val = parseFloat(val) != 0 ? Math.round(val.mul(makemultiple(decimals))).div(makemultiple(decimals)) : makedecimalzero(decimals); var num = val.toString(); if(num.lastIndexOf('.') == -1){ num += '.'; num += makezero(decimals); val = num; }else { var valdecimals = num.split('.')[1].length; if (parseInt(valdecimals) < parseInt(decimals)) { num += makezero(parseInt(decimals) - parseInt(valdecimals)); val = num; } } } } } } return val; } //把已添加的数量改成响应位数,并把input的值设置成响应的要求,并更新localstorage和表单上传里的数据 function decimalnumsetmodal(costdnum,numbernum,status){ $('#changedecimalnum').val(costdnum+'_'+numbernum); //var step = makedecimals(numbernum); var trcount = $('#list tr').length/2; for(var i = 0; i < trcount; i++){ var cnumval = roundnum($('#list tr').eq(i).children('td').eq(6).children('input').val(),numbernum); $('#list tr').eq(i).children('td').eq(6).children('input').attr('onkeyup','RegNum(this,event,'+numbernum+')'); $('#list tr').eq(i).children('td').eq(6).children('input').val(cnumval); var unitprice = $('#list tr').eq(i).children('td').eq(3).text() || $('#list tr').eq(i).children('td').eq(3).children('input').val(); var ctotalnum = roundnum(parseFloat(unitprice).mul(parseFloat(cnumval)),costdnum); $('#list tr').eq(i).children('td').eq(7).text(ctotalnum); if($('#list tr').eq(i).hasClass('clid')){ var listid = $('#list tr').eq(i).attr('list_id'); updatelist(listid,cnumval,$('#list tr').eq(i)); if(status == 'update'){ localStorage.setItem('update_'+$('#cid').val()+'_clistid_'+listid,cnumval); }else if(status == 'newadd'){ localStorage.setItem('new_clistid_'+listid,cnumval); } }else{ var numval = roundnum($('#list tr').eq(i).children('td').eq(4).children('input').val(),numbernum); $('#list tr').eq(i).children('td').eq(4).children('input').attr('onkeyup','RegNum(this,event,'+numbernum+')'); $('#list tr').eq(i).children('td').eq(4).children('input').val(numval); var totalnum = roundnum(parseFloat(unitprice).mul(parseFloat(numval)),costdnum); $('#list tr').eq(i).children('td').eq(5).text(totalnum); var listid = $('#list tr').eq(i).attr('newlist_tid'); var listtrmsg = updateandgetwhitelist(listid,$('#list tr').eq(i)); if(status == 'update'){ localStorage.setItem('update_'+$('#cid').val()+'_new_clistid_'+listid,listtrmsg); }else if(status == 'newadd'){ localStorage.setItem('add_new_clistid_'+listid,listtrmsg); } } } totalamount(costdnum); $('#setting').modal('hide'); toastr.success('设置并更新表格数据成功'); } //更新并获取 changewhitelist function updateandgetwhitelist(newid,$thisstr){ var adtrlist = new Array(6); adtrlist[0] = $thisstr.children('td').eq(0).children('input').val(); adtrlist[1] = $thisstr.children('td').eq(1).children('input').val(); adtrlist[2] = $thisstr.children('td').eq(2).children('select').val(); adtrlist[3] = $thisstr.children('td').eq(3).children('input').val(); adtrlist[4] = $thisstr.children('td').eq(4).children('input').val(); adtrlist[5] = $thisstr.children('td').eq(6).children('input').val(); var adtrliststr = adtrlist.join(';'); //添加到form中 if($('#changewhitelist').val() != ''){ var wlist = $('#changewhitelist').val().split(','); var exist = 0; $.each(wlist,function(k,v){ var wlistid = v.split('->')[0]; if(wlistid == newid){ exist = 1; var empty = 0; $.each(adtrlist,function(ak,av){ if(av != '' && ak != 2){ empty = 1; return false; } }); if(empty){ wlist.splice(k,1,newid+'->'+adtrliststr); }else{ wlist.splice(k,1); } return false; } }); if(exist == 0){ wlist.push(newid+'->'+adtrliststr); } $('#changewhitelist').val(wlist.join(',')); }else{ $('#changewhitelist').val(newid+'->'+adtrliststr); } return adtrliststr; } //更新 changelist 元素 function updatelist(id,cnum,$thisstr){ var adtrlist = new Array(6); adtrlist[0] = $thisstr.children('td').eq(0).text(); adtrlist[1] = $thisstr.children('td').eq(1).text(); adtrlist[2] = $thisstr.children('td').eq(2).text(); adtrlist[3] = $thisstr.children('td').eq(3).text(); adtrlist[4] = $thisstr.children('td').eq(4).text(); adtrlist[5] = cnum; var adtrliststr = adtrlist.join(';'); //添加到form中list if($('#changelist').val() != ''){ var clist = $('#changelist').val().split(','); var exist = 0; $.each(clist,function(k,v){ var clistid = v.split('->')[0]; if(clistid == id){ exist = 1; clist.splice(k,1,id+'->'+adtrliststr); return false; } }); if(exist == 0){ clist.push(id+'->'+adtrliststr); } $('#changelist').val(clist.join(',')); }else{ $('#changelist').val(id+'->'+adtrliststr); } } //移除 changelist 元素 function removelist(id){ //清除form中list var clist = $('#changelist').val().split(','); $.each(clist,function(k,v){ var clistid = v.split('->')[0]; if(clistid == id){ clist.splice(k,1); return false; } }); $('#changelist').val(clist.join(',')); } //统计合计金额 function totalamount(decimal){ var zero = makedecimalzero(decimal); var ctotalnum = 0; var ototalnum = 0; $('.clist').each(function(){ var ctotal = $(this).children('td').eq(7).text(); ctotalnum = ctotal != '' ? parseFloat(ctotalnum).add(parseFloat(ctotal)) : parseFloat(ctotalnum); var ototal = $(this).children('td').eq(5).text(); ototalnum = ototal != '' ? parseFloat(ototalnum).add(parseFloat(ototal)) : parseFloat(ototalnum); }); $('.ctatalamount').eq(1).text(ctotalnum != 0 ? roundnum(ctotalnum,decimal) : zero); $('.otatalamount').eq(1).text(ototalnum != 0 ? ototalnum : zero); }