jlzf-change-pnumset.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690
  1. $.event.special.valuechange = {
  2. teardown: function (namespaces) {
  3. $(this).unbind('.valuechange');
  4. },
  5. handler: function (e) {
  6. $.event.special.valuechange.triggerChanged($(this));
  7. },
  8. add: function (obj) {
  9. $(this).on('keyup.valuechange cut.valuechange paste.valuechange input.valuechange', obj.selector, $.event.special.valuechange.handler)
  10. },
  11. triggerChanged: function (element) {
  12. var current = element[0].contentEditable === 'true' ? element.html() : element.val()
  13. , previous = typeof element.data('previous') === 'undefined' ? element[0].defaultValue : element.data('previous');
  14. if (current !== previous) {
  15. element.trigger('valuechange', [element.data('previous')]);
  16. element.data('previous', current);
  17. }
  18. }
  19. };
  20. function escapeTags( str ) {
  21. return String( str )
  22. .replace( /&/g, '&' )
  23. .replace( /"/g, '"' )
  24. .replace( /'/g, ''' )
  25. .replace( /</g, '&lt;' )
  26. .replace( />/g, '&gt;' );
  27. }
  28. $(function(){
  29. toastr.options = {
  30. "closeButton": false,
  31. "debug": false,
  32. "newestOnTop": false,
  33. "progressBar": false,
  34. "positionClass": "toast-top-right",
  35. "preventDuplicates": false,
  36. "onclick": null,
  37. "showDuration": "300",
  38. "hideDuration": "1000",
  39. "timeOut": "5000",
  40. "extendedTimeOut": "1000",
  41. "showEasing": "swing",
  42. "hideEasing": "linear",
  43. "showMethod": "fadeIn",
  44. "hideMethod": "fadeOut"
  45. };
  46. //重置申请编号
  47. $('#resetnumber').click(function(){
  48. $('#pnum').val($(this).attr('data-num'));
  49. toastr.success('已重置申请编号');
  50. });
  51. //设置自动编号
  52. $('.autonumber').click(function(){
  53. var str1 = $('#pnum').val();
  54. $('#numhtmlshow').html('');
  55. if(str1.trim() !== ''){
  56. var match1 = /(?!\d{3,6})(\D|\d)|19\d{2}|20\d{2}|\d{3,6}/g;
  57. var result = str1.match(match1);
  58. var arr = new Array();
  59. var j = 0;
  60. var numhtml = '';
  61. for(var i=0; i<result.length;i++){
  62. if(result[i].length == 1){
  63. if(i == 0 || result[i-1].length >1){
  64. arr.push(result[i]);
  65. j++;
  66. }else if(i>=1 && result[i-1].length ==1){
  67. arr[j-1] = arr[j-1]+result[i];
  68. }
  69. }else {
  70. arr.push(result[i]);
  71. j++;
  72. }
  73. }
  74. $.each(arr,function(k,v){
  75. numhtml += '<span class="label label-default" style="margin: 5px 0;display: inline-block">'+v+' <a href="#" class="delrule btn btn-default btn-xs"><i class="glyphicon glyphicon-remove"></i></a></span> ';
  76. });
  77. $('#numhtmlshow').html(numhtml);
  78. }
  79. $('#autonumber').modal('show');
  80. });
  81. $('body').on('click','.delrule',function(){
  82. $(this).parents('.label').remove();
  83. });
  84. //tools change
  85. $('#tools').change(function(){
  86. if($(this).val() == 1){
  87. $('.toolshow').hide();
  88. $('#noteshow').show();
  89. }else if($(this).val() == 2){
  90. $('.toolshow').hide();
  91. $('#yearshow').show();
  92. }else if($(this).val() == 3){
  93. $('.toolshow').hide();
  94. $('.numbershow').show();
  95. }else{
  96. $('.toolshow').hide();
  97. }
  98. });
  99. //add tools
  100. $('#addtools').click(function(){
  101. var numhtml = '';
  102. if($('#tools').val() == 0){
  103. toastr.error('请选择组件再添加');
  104. return false;
  105. }else if($('#tools').val() == 1){
  106. if($('#noteshow input').val().trim() != ''){
  107. numhtml += '<span class="label label-default" style="margin: 5px 0;display: inline-block">'+$('#noteshow input').val().trim()+' <a href="#" class="delrule btn btn-default btn-xs"><i class="glyphicon glyphicon-remove"></i></a></span> ';
  108. }else{
  109. toastr.error('请输入你想添加的文本内容');
  110. return false;
  111. }
  112. }else if($('#tools').val() == 2){
  113. numhtml += '<span class="label label-default" style="margin: 5px 0;display: inline-block">'+$('#yearshow input').val()+' <a href="#" class="delrule btn btn-default btn-xs"><i class="glyphicon glyphicon-remove"></i></a></span> ';
  114. }else if($('#tools').val() == 3){
  115. numhtml += '<span class="label label-default" style="margin: 5px 0;display: inline-block">'+$('#setnumber').val()+' <a href="#" class="delrule btn btn-default btn-xs"><i class="glyphicon glyphicon-remove"></i></a></span> ';
  116. }
  117. $('#numhtmlshow').append(numhtml);
  118. });
  119. //位数number编号大小设置
  120. $('#numsite').on("valuechange", function (e, previous) {
  121. if($(this).val() == '' || parseInt($(this).val()) > 6 || parseInt($(this).val()) <3){
  122. toastr.error('请输入编号位数区间在3到6位');
  123. $(this).val(3);
  124. $('#setnumber').val('001');
  125. return false;
  126. }else{
  127. var num = parseInt($(this).val());
  128. var str = makenum(num);
  129. $('#setnumber').val(str);
  130. }
  131. });
  132. //生成编号
  133. $('#setcnum').click(function(){
  134. var cnum = '';
  135. $('#numhtmlshow span').each(function(){
  136. cnum += $.trim($(this).text());
  137. });
  138. $('#pnum').val(cnum);
  139. $('#autonumber').modal('hide');
  140. });
  141. //new and update same method
  142. //提出单位编辑
  143. $('#addcompany').click(function(){
  144. var newinput = '<div class="form-group"><input type="text" class="form-control" placeholder="请输入公司名称"></div>';
  145. $('#companyadddiv').append(newinput);
  146. });
  147. $('#updatecompany').click(function(){
  148. $(this).attr('disabled','disabled');
  149. var addcompanyArr = new Array();
  150. $('#companyadddiv').find('.form-control').each(function(){
  151. addcompanyArr.push($(this).val());
  152. });
  153. var updatecompanyArr = new Array();
  154. var updatecompanyidArr = new Array();
  155. $('#companyshow').find('.form-control').each(function(){
  156. updatecompanyArr.push($(this).val());
  157. updatecompanyidArr.push($(this).attr('id'));
  158. });
  159. //判断是否有重名情况再提交
  160. var flag = isRepeat(addcompanyArr.concat(updatecompanyArr));
  161. if(!flag){
  162. $.ajax({
  163. type: 'post',
  164. url: '/change/api/update/company',
  165. data:{ pmid: $('#pmid').val(),uci:updatecompanyidArr.length !== 0 ? updatecompanyidArr : '',uc:updatecompanyArr.length ? updatecompanyArr : '',ac:addcompanyArr.length !== 0 ? addcompanyArr : ''},
  166. dataType: 'json',
  167. success: function(result){
  168. if(result.code == 200){
  169. $('#companyadddiv').html('');
  170. $('#companyshow').append(result.addhtml);
  171. $('#company').html(result.selecthtml);
  172. $('#editcompany').modal('hide');
  173. toastr.success('变更单位已更新');
  174. }else{
  175. toastr.error('添加或编辑单位出错');
  176. }
  177. $('#updatecompany').attr('disabled',false);
  178. }
  179. })
  180. }else{
  181. toastr.error('变更单位不能同名');
  182. $('#updatecompany').attr('disabled',false);
  183. }
  184. });
  185. function isRepeat(arr){
  186. var hash = {};
  187. for(var i in arr) {
  188. if(hash[arr[i]])
  189. return true;
  190. hash[arr[i]] = true;
  191. }
  192. return false;
  193. }
  194. //变更清单添加
  195. $('.checklist').on('click',function(){
  196. if($(this).find('.listcheckbox').prop("checked")){
  197. $(this).find('.listcheckbox').prop("checked",false);
  198. $(this).removeClass('success');
  199. }else{
  200. $(this).find('.listcheckbox').prop("checked",true);
  201. $(this).addClass('success');
  202. }
  203. });
  204. $('.listcheckbox').on('click',function(){
  205. if($(this).prop("checked")){
  206. $(this).prop("checked",false);
  207. $(this).parents('.checklist').removeClass('success');
  208. }else{
  209. $(this).prop("checked",true);
  210. $(this).parents('.checklist').addClass('success');
  211. }
  212. });
  213. //审批人选择
  214. $('body').on('click','.alert-pnone .radio',function(e){
  215. if($(e.target).is('label')){
  216. return;
  217. }
  218. var uid = $(this).attr('data-uid');
  219. if($(this).parents('.alert-pnone').hasClass('alert-success')){
  220. $(this).parents('.alert-pnone').removeClass('alert-success');
  221. $(this).children('label').children('input[type="radio"]').prop('checked',false);
  222. //移除form中
  223. var auditlist = $('#selectauditlist').val().split('->');
  224. $.each(auditlist,function(k,v){
  225. var vid = v.split('_')[0];
  226. if(uid == vid){
  227. auditlist.splice(k,1);
  228. return false;
  229. }
  230. });
  231. $('#selectauditlist').val(auditlist.join('->'));
  232. }else{
  233. $(this).parents('.alert-pnone').addClass('alert-success');
  234. $(this).children('label').children('input[type="radio"]').prop('checked','checked');
  235. //添加
  236. var name = $(this).attr('data-uname');
  237. var company = $(this).attr('data-ucompany');
  238. var jobs = $(this).attr('data-ujobs');
  239. var adduser = uid+'_'+name+'_'+company+'_'+jobs;
  240. //添加到form中
  241. if($('#selectauditlist').val() != ''){
  242. var auditlist = $('#selectauditlist').val().split('->');
  243. auditlist.push(adduser);
  244. $('#selectauditlist').val(auditlist.join('->'));
  245. }else{
  246. $('#selectauditlist').val(adduser);
  247. }
  248. }
  249. });
  250. //添加到审批流程中
  251. $('#addaudit').click(function(){
  252. $('#usertableshow').html('');
  253. //添加到form中
  254. if($('#selectauditlist').val() != ''){
  255. var sort = 1;
  256. var auditlist = $('#selectauditlist').val().split('->');
  257. var auditarray = new Array();
  258. $.each(auditlist,function(k,v){
  259. var vmsg = v.split('_');
  260. var uid = vmsg[0];
  261. var name = vmsg[1];
  262. var company = vmsg[2];
  263. var jobs = vmsg[3];
  264. var addusertr = '<tr id="user_'+ uid +'" userid="'+ uid +'"><td width="100">'+sort+' 审</td><td width="250"><h4 class="media-heading">'+ jobs +' '+ name +'</h4>'+ company +'</td> <td width="100"></td> <td></td> </tr>';
  265. $('#usertableshow').append(addusertr);
  266. auditarray.push(uid);
  267. sort++;
  268. });
  269. $('#changeaudit').val(auditarray.join(','));
  270. }else{
  271. $('#changeaudit').val('');
  272. }
  273. $('#addshenpi').modal('hide');
  274. });
  275. //审批人搜索和添加
  276. $('#searchbtn').click(function(){
  277. var username = $.trim($('#searchname').val());
  278. if(username == ''){
  279. toastr.error('请输入审批人名称');
  280. return false;
  281. }else{
  282. var namelist = $('#usernamelist').val().split(',');
  283. for(var i = 0; i < namelist.length; i++){
  284. if(username == namelist[i]){
  285. toastr.error('列表或常用中已存在当前审批人');
  286. return false;
  287. }
  288. }
  289. $.ajax({
  290. type: 'post',
  291. url: '/change/user/search?name='+username,
  292. data: {namelist:namelist},
  293. dataType: 'json',
  294. success: function(result){
  295. if(result.code == 400){
  296. toastr.error(result.msg);
  297. }else{
  298. namelist.push(result.user.name);
  299. $('#usernamelist').val(namelist.join(','));
  300. var adduserhtml = '<div class="col-md-3 alert alert-pnone"><div class="radio" data-uid="'+ result.user.userid +'" data-uname="'+ result.user.name +'" data-ucompany="'+ result.user.company +'" data-ujobs="'+ result.user.jobs +'"><label><input type="radio" value="'+ result.user.userid +'">'+ result.user.name +'</label><div>'+ result.user.jobs +'</div></div></div>';
  301. $('#searchshow').append(adduserhtml);
  302. }
  303. }
  304. })
  305. }
  306. });
  307. //文件上传
  308. var btn = document.getElementById('uploadBtn'),
  309. msgBox = document.getElementById('msgBox'),
  310. filenum = $('#filesshow tr').length != 0 ? $('#filesshow tr').length : 1;
  311. var uploader = new ss.SimpleUpload({
  312. button: btn,
  313. url: '/change/file/upload/' + $('#pmid').val(),
  314. // sessionProgressUrl: '/code/ajaxuploader/sessionProgress.php',
  315. name: 'uploadfile',
  316. multipart: true,
  317. hoverClass: 'hover',
  318. focusClass: 'focus',
  319. responseType: 'json',
  320. multipleSelect: true,
  321. multiple: true,
  322. maxSize: 10240,
  323. data:{uid:$('#uid').val(),verification:$('#verification').val()},
  324. onSubmit: function(filename, extension) {
  325. var progress = document.createElement('div'),
  326. bar = document.createElement('div'),
  327. fileSize = document.createElement('div'),
  328. wrapper = document.createElement('div'),
  329. progressBox = document.getElementById('progressBox');
  330. progress.className = 'progress progress-striped';
  331. bar.className = 'progress-bar progress-bar-success';
  332. fileSize.className = 'size';
  333. wrapper.className = 'wrapper';
  334. progress.appendChild(bar);
  335. wrapper.innerHTML = '<div class="name">'+filename+'</div>';
  336. wrapper.appendChild(fileSize);
  337. wrapper.appendChild(progress);
  338. progressBox.appendChild(wrapper);
  339. this.setProgressBar(bar);
  340. this.setFileSizeBox(fileSize);
  341. this.setProgressContainer(wrapper);
  342. },
  343. onComplete: function( filename, response ) {
  344. if ( !response ) {
  345. toastr.error('无法上传文件');
  346. msgBox.innerHTML = '无法上传文件';
  347. return;
  348. }
  349. var msgBoxfiles = document.createElement('div');
  350. msgBoxfiles.className = 'msg';
  351. if ( response.success === true ) {
  352. toastr.success(filename + ' 上传成功。');
  353. msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong>' + ' 上传成功。';
  354. msgBox.appendChild(msgBoxfiles);
  355. var filestr = '<tr><td>'+ filenum +'</td><td><a href="'+ response.files.downurl +'">'+ response.files.filename +'</a></td><td>'+ response.files.size +'</td><td>'+ response.files.time +'</td><td><a id="delatt_'+ response.files.id +'" file_id="'+ response.files.id +'" class="btn btn-default btn-sm" title="删除附件"><span class="glyphicon glyphicon-trash text-danger"></span></a></td></tr>';
  356. $('#filesshow').append(filestr);
  357. //添加到form中
  358. if($('#changeatt').val() != ''){
  359. var attlist = $('#changeatt').val().split(',');
  360. attlist.push(response.files.id);
  361. $('#changeatt').val(attlist.join(','));
  362. }else{
  363. $('#changeatt').val(response.files.id);
  364. }
  365. filenum++;
  366. setTimeout(function(){
  367. msgBox.removeChild(msgBoxfiles);
  368. },3000);
  369. } else {
  370. if ( response.msg ) {
  371. toastr.error(filename + ' ' + response.msg);
  372. msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong> ' + response.msg;
  373. msgBox.appendChild(msgBoxfiles);
  374. setTimeout(function(){
  375. msgBox.removeChild(msgBoxfiles);
  376. },3000);
  377. } else {
  378. toastr.error(filename + ' 发生错误,上传失败。');
  379. msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong>'+ ' 发生错误,上传失败。';
  380. msgBox.appendChild(msgBoxfiles);
  381. setTimeout(function(){
  382. msgBox.removeChild(msgBoxfiles);
  383. },3000);
  384. }
  385. }
  386. },
  387. onError: function() {
  388. var msgBoxfiles = document.createElement('div');
  389. msgBoxfiles.className = 'msg';
  390. toastr.error('无法上传文件');
  391. msgBoxfiles.innerHTML = '无法上传文件';
  392. msgBox.appendChild(msgBoxfiles);
  393. setTimeout(function(){
  394. msgBox.removeChild(msgBoxfiles);
  395. },3000);
  396. }
  397. });
  398. //删除附件
  399. $('body').on('click',"a[id^='delatt_']",function (){
  400. var fid = $(this).attr('file_id');
  401. $(this).parents('tr').remove();
  402. var newsort = 1;
  403. $('#filesshow tr').each(function(){
  404. $(this).children('td').eq(0).text(newsort);
  405. newsort++;
  406. });
  407. filenum = newsort;
  408. var attlist = $('#changeatt').val().split(',');
  409. $.each(attlist,function(k,v){
  410. if(v == fid){
  411. attlist.splice(k,1);
  412. return false;
  413. }
  414. });
  415. $('#changeatt').val(attlist.join(','));
  416. $.ajax({
  417. type: 'post',
  418. url: '/change/file/delete',
  419. data:{fid: fid},
  420. dataType: 'json',
  421. success: function(result){
  422. }
  423. })
  424. });
  425. //让回车提交表单方法失效并改成光标往下
  426. $("body").on('keypress','input',function (e) {
  427. var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
  428. if (keyCode == 13) {
  429. for (var i = 0; i < this.form.elements.length; i++) {
  430. if (this == this.form.elements[i]) break;
  431. }
  432. i = (i + 1) % this.form.elements.length;
  433. this.form.elements[i].focus();
  434. return false;
  435. } else {
  436. return true;
  437. }
  438. });
  439. });
  440. //根据位数生成编号,3位-》001 ,5位-》00001
  441. function makenum(num){
  442. var arr = new Array(num);
  443. for(var i=0;i< num;i++){
  444. if(i != num-1){
  445. arr[i] = 0;
  446. }else{
  447. arr[i] = 1;
  448. }
  449. }
  450. return arr.join('');
  451. }
  452. //生成num位的0
  453. function makezero(num){
  454. var arr = new Array(num);
  455. for(var i=0;i< num;i++){
  456. arr[i] = 0;
  457. }
  458. return arr.join('');
  459. }
  460. //生成num小数位数的0.
  461. function makedecimalzero(num){
  462. if(num < 1){
  463. return '0';
  464. }else{
  465. return '0.'+makezero(num);
  466. }
  467. }
  468. //生成num位的10倍数
  469. function makemultiple(num){
  470. return Math.pow(10,parseInt(num));
  471. }
  472. //根据位数生成几位小数,0位-》1,1位-》0.1 ,5位-》0.00001
  473. function makedecimals(num){
  474. if(num >= 1 && num <= 6){
  475. var arr = new Array(num);
  476. for(var i=0;i< num;i++){
  477. if(i != num-1){
  478. arr[i] = 0;
  479. }else{
  480. arr[i] = 1;
  481. }
  482. }
  483. return '0.'+arr.join('');
  484. }else{
  485. return 1;
  486. }
  487. }
  488. //四舍五入或末尾加零,实现类似php的 sprintf("%.".decimal."f", val);
  489. function roundnum(val,decimals){
  490. if(val !== ''){
  491. val = parseFloat(val);
  492. if(decimals < 1){
  493. val = (Math.round(val)).toString();
  494. }else{
  495. var num = val.toString();
  496. if(num.lastIndexOf('.') == -1){
  497. num += '.';
  498. num += makezero(decimals);
  499. val = num;
  500. }else{
  501. var valdecimals = num.split('.')[1].length;
  502. if(parseInt(valdecimals) < parseInt(decimals)){
  503. num += makezero(parseInt(decimals)-parseInt(valdecimals));
  504. val = num;
  505. }else if(parseInt(valdecimals) > parseInt(decimals)){
  506. val = parseFloat(val) != 0 ? Math.round(val.mul(makemultiple(decimals))).div(makemultiple(decimals)) : makedecimalzero(decimals);
  507. var num = val.toString();
  508. if(num.lastIndexOf('.') == -1){
  509. num += '.';
  510. num += makezero(decimals);
  511. val = num;
  512. }else {
  513. var valdecimals = num.split('.')[1].length;
  514. if (parseInt(valdecimals) < parseInt(decimals)) {
  515. num += makezero(parseInt(decimals) - parseInt(valdecimals));
  516. val = num;
  517. }
  518. }
  519. }
  520. }
  521. }
  522. }
  523. return val;
  524. }
  525. //把已添加的数量改成响应位数,并把input的值设置成响应的要求,并更新localstorage和表单上传里的数据
  526. function decimalnumsetmodal(costdnum,numbernum,status){
  527. $('#changedecimalnum').val(costdnum+'_'+numbernum);
  528. //var step = makedecimals(numbernum);
  529. var trcount = $('#list tr').length/2;
  530. for(var i = 0; i < trcount; i++){
  531. var cnumval = roundnum($('#list tr').eq(i).children('td').eq(6).children('input').val(),numbernum);
  532. $('#list tr').eq(i).children('td').eq(6).children('input').attr('onkeyup','RegNum(this,event,'+numbernum+')');
  533. $('#list tr').eq(i).children('td').eq(6).children('input').val(cnumval);
  534. var unitprice = $('#list tr').eq(i).children('td').eq(3).text() || $('#list tr').eq(i).children('td').eq(3).children('input').val();
  535. var ctotalnum = roundnum(parseFloat(unitprice).mul(parseFloat(cnumval)),costdnum);
  536. $('#list tr').eq(i).children('td').eq(7).text(ctotalnum);
  537. if($('#list tr').eq(i).hasClass('clid')){
  538. var listid = $('#list tr').eq(i).attr('list_id');
  539. updatelist(listid,cnumval);
  540. if(status == 'update'){
  541. localStorage.setItem('update_'+$('#cid').val()+'_clistid_'+listid,cnumval);
  542. }else if(status == 'newadd'){
  543. localStorage.setItem('new_clistid_'+listid,cnumval);
  544. }
  545. }else{
  546. var numval = roundnum($('#list tr').eq(i).children('td').eq(4).children('input').val(),numbernum);
  547. $('#list tr').eq(i).children('td').eq(4).children('input').attr('onkeyup','RegNum(this,event,'+numbernum+')');
  548. $('#list tr').eq(i).children('td').eq(4).children('input').val(numval);
  549. var totalnum = roundnum(parseFloat(unitprice).mul(parseFloat(numval)),costdnum);
  550. $('#list tr').eq(i).children('td').eq(5).text(totalnum);
  551. var listid = $('#list tr').eq(i).attr('newlist_tid');
  552. var listtrmsg = updateandgetwhitelist(listid,$('#list tr').eq(i));
  553. if(status == 'update'){
  554. localStorage.setItem('update_'+$('#cid').val()+'_new_clistid_'+listid,listtrmsg);
  555. }else if(status == 'newadd'){
  556. localStorage.setItem('add_new_clistid_'+listid,listtrmsg);
  557. }
  558. }
  559. }
  560. totalamount(costdnum);
  561. $('#setting').modal('hide');
  562. toastr.success('设置并更新表格数据成功');
  563. }
  564. //更新并获取 changewhitelist
  565. function updateandgetwhitelist(newid,$thisstr){
  566. var adtrlist = new Array(6);
  567. adtrlist[0] = $thisstr.children('td').eq(0).children('input').val();
  568. adtrlist[1] = $thisstr.children('td').eq(1).children('input').val();
  569. adtrlist[2] = $thisstr.children('td').eq(2).children('select').val();
  570. adtrlist[3] = $thisstr.children('td').eq(3).children('input').val();
  571. adtrlist[4] = $thisstr.children('td').eq(4).children('input').val();
  572. adtrlist[5] = $thisstr.children('td').eq(6).children('input').val();
  573. var adtrliststr = adtrlist.join(';');
  574. //添加到form中
  575. if($('#changewhitelist').val() != ''){
  576. var wlist = $('#changewhitelist').val().split(',');
  577. var exist = 0;
  578. $.each(wlist,function(k,v){
  579. var wlistid = v.split('->')[0];
  580. if(wlistid == newid){
  581. exist = 1;
  582. var empty = 0;
  583. $.each(adtrlist,function(ak,av){
  584. if(av != '' && ak != 2){
  585. empty = 1;
  586. return false;
  587. }
  588. });
  589. if(empty){
  590. wlist.splice(k,1,newid+'->'+adtrliststr);
  591. }else{
  592. wlist.splice(k,1);
  593. }
  594. return false;
  595. }
  596. });
  597. if(exist == 0){
  598. wlist.push(newid+'->'+adtrliststr);
  599. }
  600. $('#changewhitelist').val(wlist.join(','));
  601. }else{
  602. $('#changewhitelist').val(newid+'->'+adtrliststr);
  603. }
  604. return adtrliststr;
  605. }
  606. //更新 changelist 元素
  607. function updatelist(id,cnum){
  608. //添加到form中list
  609. if($('#changelist').val() != ''){
  610. var clist = $('#changelist').val().split(',');
  611. var exist = 0;
  612. $.each(clist,function(k,v){
  613. var clistid = v.split('_')[0];
  614. if(clistid == id){
  615. exist = 1;
  616. clist.splice(k,1,id+'_'+cnum);
  617. return false;
  618. }
  619. });
  620. if(exist == 0){
  621. clist.push(id+'_'+cnum);
  622. }
  623. $('#changelist').val(clist.join(','));
  624. }else{
  625. $('#changelist').val(id+'_'+cnum);
  626. }
  627. }
  628. //移除 changelist 元素
  629. function removelist(id){
  630. //清除form中list
  631. var clist = $('#changelist').val().split(',');
  632. $.each(clist,function(k,v){
  633. var clistid = v.split('_')[0];
  634. if(clistid == id){
  635. clist.splice(k,1);
  636. return false;
  637. }
  638. });
  639. $('#changelist').val(clist.join(','));
  640. }
  641. //统计合计金额
  642. function totalamount(decimal){
  643. var zero = makedecimalzero(decimal);
  644. var ctotalnum = 0;
  645. var ototalnum = 0;
  646. $('.clist').each(function(){
  647. var ctotal = $(this).children('td').eq(7).text();
  648. ctotalnum = ctotal != '' ? parseFloat(ctotalnum).add(parseFloat(ctotal)) : parseFloat(ctotalnum);
  649. var ototal = $(this).children('td').eq(5).text();
  650. ototalnum = ototal != '' ? parseFloat(ototalnum).add(parseFloat(ototal)) : parseFloat(ototalnum);
  651. });
  652. $('.ctatalamount').eq(1).text(ctotalnum != 0 ? roundnum(ctotalnum,decimal) : zero);
  653. $('.otatalamount').eq(1).text(ototalnum != 0 ? ototalnum : zero);
  654. }