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"
};
var table = $('#tablelist').DataTable({
columnDefs: [
{ className: 'allwidth1', width: 150, targets: [0,2] },
{ className: 'allwidth2', width: 200, targets: 1 },
{ className: 'allwidth3', width: 100, targets: '_all' }
],
fixedColumns: {
leftColumns: 4
}
});
//提出单位编辑
$('#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'));
});
$.ajax({
type: 'post',
url: '/change/api/update/company',
data:{ 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);
}
})
});
//变更清单添加
$('.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');
}
});
$('.addlistbtn').on('click',function(){
var html = '';
//获取清单列表
var totalnum = 0;
var sctotalnum = 0;
var clist = new Array();
$('.checklist').find('.listcheckbox').each(function(){
if($(this).prop("checked")){
var id = $(this).parents('.checklist').children('td').eq(0).text();
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();
totalnum += parseFloat(ototal);
//获取localstorage里的数据
var scnum = '';
var sctotal = 0;
if(localStorage.hasOwnProperty('new_clistid_'+id)){
scnum = localStorage.getItem('new_clistid_'+id);
sctotal = parseFloat(price)*parseFloat(scnum);
sctotalnum += parseFloat(sctotal);
clist.push(id+'_'+scnum);
}
sctotal = sctotal != 0 ? parseFloat(sctotal).toFixed(2) : '';
html += ''+ num +' | '+ name +' | '+ unit +' | '+ price +' | '+ oamount +' | '+ ototal +' | | '+ sctotal +' |
';
}
});
//添加到form中list
$('#changelist').val(clist.join(','));
//获取localstorage里的数据
var newid = 1;
var addArr = new Array();
var storage = window.localStorage;
for(var i = 0; i < storage.length; i++){
var key = storage.key(i);
if(key.substring(0,16) == 'add_new_clistid_'){
//排序
newid++;
var id2 = key.split('_');
addArr.push(id2[3]);
}
}
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('add_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 != '' ? parseFloat(parseFloat(price2)*parseFloat(oamount2)).toFixed(2) : '';
totalnum = ototal2 != '' ? totalnum + parseFloat(ototal2) : totalnum;
var sctotal2 = price2 != '' && scnum != '' ? parseFloat(parseFloat(price2)*parseFloat(scnum)).toFixed(2) : '';
sctotalnum = sctotal2 != '' ? sctotalnum + parseFloat(sctotal2) : sctotalnum;
var optionlist = '';
for(var j = 0; j < optionselect.length; j++){
if(unit2 == optionselect[j]){
optionlist += '';
}else{
optionlist += '';
}
}
html += ' | | | | | '+ ototal2 +' | | '+ sctotal2 +' |
';
}
}
//添加到form中list
$('#changewhitelist').val(wlist.join(','));
sctotalnum = sctotalnum != 0 ? sctotalnum.toFixed(2) : '';
//获取添加的空白清单
if($(this).hasClass('btn-default')){
var optionlist2 = '';
for(var j = 0; j < optionselect.length; j++){
optionlist2 += '';
}
var addtr = ' | | | | | | | |
';
html += addtr;
}
$('.ctatalamount').eq(1).text(sctotalnum);
$('.otatalamount').eq(1).text(totalnum != 0 ? totalnum.toFixed(2) : '');
//html += '合计 | | | | | '+ totalnum.toFixed(2) +' | | '+ sctotalnum +' |
';
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: 'allwidth3', width: 100, targets: '_all' }
],
fixedColumns: {
leftColumns: 4
}
});
$('#addlist').modal('hide');
$('.clist input').on("valuechange", function (e, previous) {
//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) != '' ? parseFloat(parseFloat(unitprice)*parseFloat(num)).toFixed(2) : '';
$(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) != '' ? parseFloat(parseFloat(unitprice)*parseFloat(onum)).toFixed(2) : '';
var total = $.trim(num) != '' && $.trim(unitprice) != '' ? parseFloat(parseFloat(unitprice)*parseFloat(num)).toFixed(2) : '';
$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) != '' ? parseFloat(parseFloat(unitprice)*parseFloat(onum)).toFixed(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());
}
//统计合计金额
var ctotalnum = 0;
var ototalnum = 0;
$('.clist').each(function(){
var ctotal = $(this).children('td').eq(7).text();
ctotalnum = ctotal != '' ? parseFloat(ctotalnum)+parseFloat(ctotal) : parseFloat(ctotalnum);
var ototal = $(this).children('td').eq(5).text();
ototalnum = ototal != '' ? parseFloat(ototalnum)+parseFloat(ototal) : parseFloat(ototalnum);
});
$('.ctatalamount').eq(1).text(ctotalnum != 0 ? parseFloat(ctotalnum).toFixed(2) : '');
$('.otatalamount').eq(1).text(ototalnum != 0 ? parseFloat(ototalnum).toFixed(2) : '');
//更改localstorage
//if 签约清单
if($(this).parents('.clist').hasClass('clid')){
var id = $(this).parents('.clist').attr('list_id');
if($.trim($(this).val()) != ''){
localStorage.setItem('new_clistid_'+id, $.trim($(this).val()));
var cnum = $.trim($(this).val());
//添加到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+'_'+cnum);
return false;
}
});
if(exist == 0){
clist.push(id+'_'+cnum);
}
$('#changelist').val(clist.join(','));
}else{
$('#changelist').val(id+'_'+cnum);
}
}else{
localStorage.removeItem('new_clistid_'+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(','));
}
}
//else 新增空白清单
else{
var newid = $(this).parents('.clist').attr('newlist_tid');
var $thisstr = $('#list tr[newlist_tid="'+newid+'"]');
if(localStorage.hasOwnProperty('add_new_clistid_'+newid)){
var adtrlist = localStorage.getItem('add_new_clistid_'+newid).split(';');
if(site == 6){
adtrlist[site-1] = $(this).val();
}else{
adtrlist[site] = $(this).val();
}
adtrlist[2] = $thisstr.children('td').eq(2).children('select').val();
localStorage.setItem('add_new_clistid_'+newid,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+'->'+adtrlist.join(';'));
}else{
wlist.splice(k,1);
}
return false;
}
});
if(exist == 0){
wlist.push(newid+'->'+adtrlist.join(';'));
}
$('#changewhitelist').val(wlist.join(','));
}else{
$('#changewhitelist').val(newid+'->'+adtrlist.join(';'));
}
}else{
var newadtrlist = new Array(6);
if(site == 6){
newadtrlist[site-1] = $(this).val();
}else{
newadtrlist[site] = $(this).val();
}
newadtrlist[2] = $thisstr.children('td').eq(2).children('select').val();
localStorage.setItem('add_new_clistid_'+newid,newadtrlist.join(';'));
//添加到form中
if($('#changewhitelist').val() != ''){
var wlist = $('#changewhitelist').val().split(',');
wlist.push(newid+'->'+newadtrlist.join(';'));
$('#changewhitelist').val(wlist.join(','));
}else{
$('#changewhitelist').val(newid+'->'+newadtrlist.join(';'));
}
}
}
});
//单位选择要另外处理
$('.clist select').on("change", 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());
if(localStorage.hasOwnProperty('add_new_clistid_'+newid)){
var adtrlist = localStorage.getItem('add_new_clistid_'+newid).split(';');
adtrlist[2] = $(this).val();
localStorage.setItem('add_new_clistid_'+newid,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;
wlist.splice(k,1,newid+'->'+adtrlist.join(';'));
return false;
}
});
if(exist == 0){
wlist.push(newid+'->'+adtrlist.join(';'));
}
$('#changewhitelist').val(wlist.join(','));
}else{
$('#changewhitelist').val(newid+'->'+adtrlist.join(';'));
}
}else{
var newadtrlist = new Array(6);
newadtrlist[2] = $(this).val();
localStorage.setItem('add_new_clistid_'+newid,newadtrlist.join(';'));
}
});
});
$.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);
}
}
};
//审批人选择
$('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('->');
$.each(auditlist,function(k,v){
var vid = v.split('_')[0];
if(uid == vid){
auditlist.splice(k,1);
return false;
}
});
$('#selectauditlist').val(auditlist.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('->');
auditlist.push(adduser);
$('#selectauditlist').val(auditlist.join('->'));
}else{
$('#selectauditlist').val(adduser);
}
}
});
//添加到审批流程中
$('#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+' 审 | '+ 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 = '';
$('#searchshow').append(adduserhtml);
}
}
})
}
});
//文件上传
var btn = document.getElementById('uploadBtn'),
wrap = document.getElementById('pic-progress-wrap'),
progressBar = document.getElementById('progressBar'),
progressOuter = document.getElementById('progressOuter'),
msgBox = document.getElementById('msgBox'),
filenum = 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',
startXHR: function() {
progressOuter.style.display = 'block'; // make progress bar visible
this.setProgressBar( progressBar );
},
onSubmit: function() {
msgBox.innerHTML = ''; // empty the message box
btn.innerHTML = '上传中...'; // change button text to "Uploading..."
},
onComplete: function( filename, response ) {
btn.innerHTML = '选择文件';
progressOuter.style.display = 'none'; // hide progress bar when upload is completed
if ( !response ) {
toastr.error('无法上传文件');
msgBox.innerHTML = '无法上传文件';
return;
}
if ( response.success === true ) {
toastr.success('附件上传成功。');
msgBox.innerHTML = '' + escapeTags( filename ) + '' + ' 上传成功。';
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.innerHTML = '';
},3000);
} else {
if ( response.msg ) {
toastr.error(response.msg);
msgBox.innerHTML = escapeTags( response.msg );
} else {
toastr.error('发生错误,上传失败。');
msgBox.innerHTML = '发生错误,上传失败。';
}
}
},
onError: function() {
progressOuter.style.display = 'none';
toastr.error('无法上传文件');
msgBox.innerHTML = '无法上传文件';
}
});
//删除附件
$('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){
}
})
});
});
var newflag = 0;
function checkform(){
//0为保存新建变更令,1为提交审批变更令
if($.trim($('#pnum').val()) == ''){
var str = newflag == 0 ? '至少' : '';
toastr.error('请'+str+'输入申请编号');
return false;
}
if($('#pname').val() == ''){
var str = newflag == 0 ? '至少' : '';
toastr.error('请'+str+'输入工程名称');
return false;
}
if(newflag == 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;
for(var i = 0; i < storage.length; i++){
var key = storage.key(i);
if(key.substring(0,16) == 'add_new_clistid_' || key.substring(0,12) == 'new_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:'new',pmid:$('#pmid').val()},
async: false,
dataType: 'json',
success: function(result){
if(result.code == 400){
toastr.error(result.msg);
ajaxflag = 1;
}
}
});
if(ajaxflag != 0){
return false;
}
return true;
}