jlzf-change-pnumset.js 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771
  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. var reductionauditlist = $('#reductionAudit').val().split(',');
  225. $.each(auditlist,function(k,v){
  226. var vid = v.split('_')[0];
  227. if(uid == vid){
  228. auditlist.splice(k,1);
  229. reductionauditlist.splice(k,1);
  230. return false;
  231. }
  232. });
  233. $('#selectauditlist').val(auditlist.join('->'));
  234. $('#reductionAudit').val(reductionauditlist.join(','));
  235. }else{
  236. $(this).parents('.alert-pnone').addClass('alert-success');
  237. $(this).children('label').children('input[type="radio"]').prop('checked','checked');
  238. //添加
  239. var name = $(this).attr('data-uname');
  240. var company = $(this).attr('data-ucompany');
  241. var jobs = $(this).attr('data-ujobs');
  242. var adduser = uid+'_'+name+'_'+company+'_'+jobs;
  243. //添加到form中
  244. if($('#selectauditlist').val() != ''){
  245. var auditlist = $('#selectauditlist').val().split('->');
  246. var reductionauditlist = $('#reductionAudit').val().split(',');
  247. auditlist.push(adduser);
  248. reductionauditlist.push(uid);
  249. $('#selectauditlist').val(auditlist.join('->'));
  250. $('#reductionAudit').val(reductionauditlist.join(','));
  251. }else{
  252. $('#selectauditlist').val(adduser);
  253. $('#reductionAudit').val(uid);
  254. }
  255. }
  256. });
  257. //添加到审批流程中
  258. $('#addaudit').click(function(){
  259. $('#usertableshow').html('');
  260. //添加到form中
  261. if($('#selectauditlist').val() != ''){
  262. var sort = 1;
  263. var auditlist = $('#selectauditlist').val().split('->');
  264. var auditarray = new Array();
  265. $.each(auditlist,function(k,v){
  266. var vmsg = v.split('_');
  267. var uid = vmsg[0];
  268. var name = vmsg[1];
  269. var company = vmsg[2];
  270. var jobs = vmsg[3];
  271. 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>';
  272. $('#usertableshow').append(addusertr);
  273. auditarray.push(uid);
  274. sort++;
  275. });
  276. $('#changeaudit').val(auditarray.join(','));
  277. }else{
  278. $('#changeaudit').val('');
  279. }
  280. $('#addshenpi').modal('hide');
  281. });
  282. //审批人搜索和添加
  283. $('#searchbtn').click(function(){
  284. var username = $.trim($('#searchname').val());
  285. if(username == ''){
  286. toastr.error('请输入审批人名称');
  287. return false;
  288. }else{
  289. var namelist = $('#usernamelist').val().split(',');
  290. for(var i = 0; i < namelist.length; i++){
  291. if(username == namelist[i]){
  292. toastr.error('列表或常用中已存在当前审批人');
  293. return false;
  294. }
  295. }
  296. $.ajax({
  297. type: 'post',
  298. url: '/change/user/search?name='+username,
  299. data: {namelist:namelist},
  300. dataType: 'json',
  301. success: function(result){
  302. if(result.code == 400){
  303. toastr.error(result.msg);
  304. }else{
  305. namelist.push(result.user.name);
  306. $('#usernamelist').val(namelist.join(','));
  307. 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>';
  308. $('#searchshow').append(adduserhtml);
  309. }
  310. }
  311. })
  312. }
  313. });
  314. //文件上传
  315. var btn = document.getElementById('uploadBtn'),
  316. msgBox = document.getElementById('msgBox'),
  317. filenum = $('#filesshow tr').length != 0 ? $('#filesshow tr').length : 1;
  318. var uploader = new ss.SimpleUpload({
  319. button: btn,
  320. url: '/change/file/upload/' + $('#pmid').val(),
  321. // sessionProgressUrl: '/code/ajaxuploader/sessionProgress.php',
  322. name: 'uploadfile',
  323. multipart: true,
  324. hoverClass: 'hover',
  325. focusClass: 'focus',
  326. responseType: 'json',
  327. multipleSelect: true,
  328. multiple: true,
  329. maxSize: 10240,
  330. data:{uid:$('#uid').val(),verification:$('#verification').val()},
  331. onSubmit: function(filename, extension) {
  332. var progress = document.createElement('div'),
  333. bar = document.createElement('div'),
  334. fileSize = document.createElement('div'),
  335. wrapper = document.createElement('div'),
  336. progressBox = document.getElementById('progressBox');
  337. progress.className = 'progress progress-striped';
  338. bar.className = 'progress-bar progress-bar-success';
  339. fileSize.className = 'size';
  340. wrapper.className = 'wrapper';
  341. progress.appendChild(bar);
  342. wrapper.innerHTML = '<div class="name">'+filename+'</div>';
  343. wrapper.appendChild(fileSize);
  344. wrapper.appendChild(progress);
  345. progressBox.appendChild(wrapper);
  346. this.setProgressBar(bar);
  347. this.setFileSizeBox(fileSize);
  348. this.setProgressContainer(wrapper);
  349. },
  350. onComplete: function( filename, response ) {
  351. if ( !response ) {
  352. toastr.error('无法上传文件');
  353. msgBox.innerHTML = '无法上传文件';
  354. return;
  355. }
  356. var msgBoxfiles = document.createElement('div');
  357. msgBoxfiles.className = 'msg';
  358. if ( response.success === true ) {
  359. toastr.success(filename + ' 上传成功。');
  360. msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong>' + ' 上传成功。';
  361. msgBox.appendChild(msgBoxfiles);
  362. 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>';
  363. $('#filesshow').append(filestr);
  364. //添加到form中
  365. if($('#changeatt').val() != ''){
  366. var attlist = $('#changeatt').val().split(',');
  367. attlist.push(response.files.id);
  368. $('#changeatt').val(attlist.join(','));
  369. }else{
  370. $('#changeatt').val(response.files.id);
  371. }
  372. filenum++;
  373. setTimeout(function(){
  374. msgBox.removeChild(msgBoxfiles);
  375. },3000);
  376. } else {
  377. if ( response.msg ) {
  378. toastr.error(filename + ' ' + response.msg);
  379. msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong> ' + response.msg;
  380. msgBox.appendChild(msgBoxfiles);
  381. setTimeout(function(){
  382. msgBox.removeChild(msgBoxfiles);
  383. },3000);
  384. } else {
  385. toastr.error(filename + ' 发生错误,上传失败。');
  386. msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong>'+ ' 发生错误,上传失败。';
  387. msgBox.appendChild(msgBoxfiles);
  388. setTimeout(function(){
  389. msgBox.removeChild(msgBoxfiles);
  390. },3000);
  391. }
  392. }
  393. },
  394. onError: function() {
  395. var msgBoxfiles = document.createElement('div');
  396. msgBoxfiles.className = 'msg';
  397. toastr.error('无法上传文件');
  398. msgBoxfiles.innerHTML = '无法上传文件';
  399. msgBox.appendChild(msgBoxfiles);
  400. setTimeout(function(){
  401. msgBox.removeChild(msgBoxfiles);
  402. },3000);
  403. }
  404. });
  405. //删除附件
  406. $('body').on('click',"a[id^='delatt_']",function (){
  407. var fid = $(this).attr('file_id');
  408. $(this).parents('tr').remove();
  409. var newsort = 1;
  410. $('#filesshow tr').each(function(){
  411. $(this).children('td').eq(0).text(newsort);
  412. newsort++;
  413. });
  414. filenum = newsort;
  415. var attlist = $('#changeatt').val().split(',');
  416. $.each(attlist,function(k,v){
  417. if(v == fid){
  418. attlist.splice(k,1);
  419. return false;
  420. }
  421. });
  422. $('#changeatt').val(attlist.join(','));
  423. $.ajax({
  424. type: 'post',
  425. url: '/change/file/delete',
  426. data:{fid: fid},
  427. dataType: 'json',
  428. success: function(result){
  429. }
  430. })
  431. });
  432. //让回车提交表单方法失效并改成光标往下
  433. $("body").on('keypress','input',function (e) {
  434. var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
  435. if (keyCode == 13) {
  436. for (var i = 0; i < this.form.elements.length; i++) {
  437. if (this == this.form.elements[i]) break;
  438. }
  439. i = (i + 1) % this.form.elements.length;
  440. this.form.elements[i].focus();
  441. return false;
  442. } else {
  443. return true;
  444. }
  445. });
  446. //modal取消事件,还原旧保存的数据
  447. $('#cancellist').click(function () {
  448. var reductionlist = $('#reductionList').val().split(',');
  449. //先删所有后还原
  450. var $rowtr = $('#addlist').find('tbody').children('tr');
  451. $rowtr.removeClass('success');
  452. $rowtr.find('input').prop('checked',false);
  453. var z = 0;
  454. for(var i = 0; i < reductionlist.length; i++){
  455. var j = z;
  456. for(; j < $rowtr.length; j++){
  457. if(reductionlist[i] == $rowtr.eq(j).children('td').eq(0).attr('list_id')){
  458. $rowtr.eq(j).addClass('success');
  459. $rowtr.eq(j).find('input').prop('checked',true);
  460. z = ++j;
  461. break;
  462. }
  463. }
  464. }
  465. $('#addlist').modal('hide');
  466. });
  467. $('#cancelaudit').click(function () {
  468. var reductionaudit = $('#reductionAudit').val();
  469. var changeaudit = $('#changeaudit').val();
  470. if(changeaudit !== reductionaudit){
  471. //不相同则要还原
  472. $('#selectauditlist').val('');
  473. var $rowdiv = $('#addshenpi').find('.row').children('div');
  474. $rowdiv.removeClass('alert-success');
  475. $rowdiv.find('input').prop('checked',false);
  476. var auditlist = changeaudit.split(',');
  477. if(auditlist.length){
  478. for(var i = 0; i < auditlist.length; i++){
  479. for(var j = 0; j < $rowdiv.length; j++){
  480. var $rowdivdiv = $rowdiv.eq(j).children('div');
  481. if(auditlist[i] == $rowdivdiv.attr('data-uid')){
  482. $rowdiv.eq(j).addClass('alert-success');
  483. $rowdivdiv.find('input').prop('checked',true);
  484. var uid = $rowdivdiv.attr('data-uid');
  485. var name = $rowdivdiv.attr('data-uname');
  486. var company = $rowdivdiv.attr('data-ucompany');
  487. var jobs = $rowdivdiv.attr('data-ujobs');
  488. var adduser = uid+'_'+name+'_'+company+'_'+jobs;
  489. if($('#selectauditlist').val() != ''){
  490. var auditlist2 = $('#selectauditlist').val().split('->');
  491. auditlist2.push(adduser);
  492. $('#selectauditlist').val(auditlist2.join('->'));
  493. }else{
  494. $('#selectauditlist').val(adduser);
  495. }
  496. }
  497. }
  498. }
  499. }
  500. $('#reductionAudit').val(changeaudit);
  501. }
  502. $('#addshenpi').modal('hide');
  503. });
  504. $('body').on('focus', "#tablelist input", function() {
  505. $(this).select();
  506. });
  507. });
  508. //根据位数生成编号,3位-》001 ,5位-》00001
  509. function makenum(num){
  510. var arr = new Array(num);
  511. for(var i=0;i< num;i++){
  512. if(i != num-1){
  513. arr[i] = 0;
  514. }else{
  515. arr[i] = 1;
  516. }
  517. }
  518. return arr.join('');
  519. }
  520. //生成num位的0
  521. function makezero(num){
  522. var arr = new Array(num);
  523. for(var i=0;i< num;i++){
  524. arr[i] = 0;
  525. }
  526. return arr.join('');
  527. }
  528. //生成num小数位数的0.
  529. function makedecimalzero(num){
  530. if(num < 1){
  531. return '0';
  532. }else{
  533. return '0.'+makezero(num);
  534. }
  535. }
  536. //生成num位的10倍数
  537. function makemultiple(num){
  538. return Math.pow(10,parseInt(num));
  539. }
  540. //根据位数生成几位小数,0位-》1,1位-》0.1 ,5位-》0.00001
  541. function makedecimals(num){
  542. if(num >= 1 && num <= 6){
  543. var arr = new Array(num);
  544. for(var i=0;i< num;i++){
  545. if(i != num-1){
  546. arr[i] = 0;
  547. }else{
  548. arr[i] = 1;
  549. }
  550. }
  551. return '0.'+arr.join('');
  552. }else{
  553. return 1;
  554. }
  555. }
  556. //四舍五入或末尾加零,实现类似php的 sprintf("%.".decimal."f", val);
  557. function roundnum(val,decimals){
  558. if(val !== ''){
  559. val = parseFloat(val);
  560. if(decimals < 1){
  561. val = (Math.round(val)).toString();
  562. }else{
  563. var num = val.toString();
  564. if(num.lastIndexOf('.') == -1){
  565. num += '.';
  566. num += makezero(decimals);
  567. val = num;
  568. }else{
  569. var valdecimals = num.split('.')[1].length;
  570. if(parseInt(valdecimals) < parseInt(decimals)){
  571. num += makezero(parseInt(decimals)-parseInt(valdecimals));
  572. val = num;
  573. }else if(parseInt(valdecimals) > parseInt(decimals)){
  574. val = parseFloat(val) != 0 ? Math.round(val.mul(makemultiple(decimals))).div(makemultiple(decimals)) : makedecimalzero(decimals);
  575. var num = val.toString();
  576. if(num.lastIndexOf('.') == -1){
  577. num += '.';
  578. num += makezero(decimals);
  579. val = num;
  580. }else {
  581. var valdecimals = num.split('.')[1].length;
  582. if (parseInt(valdecimals) < parseInt(decimals)) {
  583. num += makezero(parseInt(decimals) - parseInt(valdecimals));
  584. val = num;
  585. }
  586. }
  587. }
  588. }
  589. }
  590. }
  591. return val;
  592. }
  593. //把已添加的数量改成响应位数,并把input的值设置成响应的要求,并更新localstorage和表单上传里的数据
  594. function decimalnumsetmodal(costdnum,numbernum,status){
  595. $('#changedecimalnum').val(costdnum+'_'+numbernum);
  596. //var step = makedecimals(numbernum);
  597. var trcount = $('#list tr').length/2;
  598. for(var i = 0; i < trcount; i++){
  599. var cnumval = roundnum($('#list tr').eq(i).children('td').eq(6).children('input').val(),numbernum);
  600. $('#list tr').eq(i).children('td').eq(6).children('input').attr('onkeyup','RegNum(this,event,'+numbernum+')');
  601. $('#list tr').eq(i).children('td').eq(6).children('input').val(cnumval);
  602. var unitprice = $('#list tr').eq(i).children('td').eq(3).text() || $('#list tr').eq(i).children('td').eq(3).children('input').val();
  603. var ctotalnum = roundnum(parseFloat(unitprice).mul(parseFloat(cnumval)),costdnum);
  604. $('#list tr').eq(i).children('td').eq(7).text(ctotalnum);
  605. if($('#list tr').eq(i).hasClass('clid')){
  606. var listid = $('#list tr').eq(i).attr('list_id');
  607. updatelist(listid,cnumval,$('#list tr').eq(i));
  608. if(status == 'update'){
  609. localStorage.setItem('update_'+$('#cid').val()+'_clistid_'+listid,cnumval);
  610. }else if(status == 'newadd'){
  611. localStorage.setItem('new_clistid_'+listid,cnumval);
  612. }
  613. }else{
  614. var numval = roundnum($('#list tr').eq(i).children('td').eq(4).children('input').val(),numbernum);
  615. $('#list tr').eq(i).children('td').eq(4).children('input').attr('onkeyup','RegNum(this,event,'+numbernum+')');
  616. $('#list tr').eq(i).children('td').eq(4).children('input').val(numval);
  617. var totalnum = roundnum(parseFloat(unitprice).mul(parseFloat(numval)),costdnum);
  618. $('#list tr').eq(i).children('td').eq(5).text(totalnum);
  619. var listid = $('#list tr').eq(i).attr('newlist_tid');
  620. var listtrmsg = updateandgetwhitelist(listid,$('#list tr').eq(i));
  621. if(status == 'update'){
  622. localStorage.setItem('update_'+$('#cid').val()+'_new_clistid_'+listid,listtrmsg);
  623. }else if(status == 'newadd'){
  624. localStorage.setItem('add_new_clistid_'+listid,listtrmsg);
  625. }
  626. }
  627. }
  628. totalamount(costdnum);
  629. $('#setting').modal('hide');
  630. toastr.success('设置并更新表格数据成功');
  631. }
  632. //更新并获取 changewhitelist
  633. function updateandgetwhitelist(newid,$thisstr){
  634. var adtrlist = new Array(6);
  635. adtrlist[0] = $thisstr.children('td').eq(0).children('input').val();
  636. adtrlist[1] = $thisstr.children('td').eq(1).children('input').val();
  637. adtrlist[2] = $thisstr.children('td').eq(2).children('select').val();
  638. adtrlist[3] = $thisstr.children('td').eq(3).children('input').val();
  639. adtrlist[4] = $thisstr.children('td').eq(4).children('input').val();
  640. adtrlist[5] = $thisstr.children('td').eq(6).children('input').val();
  641. var adtrliststr = adtrlist.join(';');
  642. //添加到form中
  643. if($('#changewhitelist').val() != ''){
  644. var wlist = $('#changewhitelist').val().split(',');
  645. var exist = 0;
  646. $.each(wlist,function(k,v){
  647. var wlistid = v.split('->')[0];
  648. if(wlistid == newid){
  649. exist = 1;
  650. var empty = 0;
  651. $.each(adtrlist,function(ak,av){
  652. if(av != '' && ak != 2){
  653. empty = 1;
  654. return false;
  655. }
  656. });
  657. if(empty){
  658. wlist.splice(k,1,newid+'->'+adtrliststr);
  659. }else{
  660. wlist.splice(k,1);
  661. }
  662. return false;
  663. }
  664. });
  665. if(exist == 0){
  666. wlist.push(newid+'->'+adtrliststr);
  667. }
  668. $('#changewhitelist').val(wlist.join(','));
  669. }else{
  670. $('#changewhitelist').val(newid+'->'+adtrliststr);
  671. }
  672. return adtrliststr;
  673. }
  674. //更新 changelist 元素
  675. function updatelist(id,cnum,$thisstr){
  676. var adtrlist = new Array(6);
  677. adtrlist[0] = $thisstr.children('td').eq(0).text();
  678. adtrlist[1] = $thisstr.children('td').eq(1).text();
  679. adtrlist[2] = $thisstr.children('td').eq(2).text();
  680. adtrlist[3] = $thisstr.children('td').eq(3).text();
  681. adtrlist[4] = $thisstr.children('td').eq(4).text();
  682. adtrlist[5] = cnum;
  683. var adtrliststr = adtrlist.join(';');
  684. //添加到form中list
  685. if($('#changelist').val() != ''){
  686. var clist = $('#changelist').val().split(',');
  687. var exist = 0;
  688. $.each(clist,function(k,v){
  689. var clistid = v.split('->')[0];
  690. if(clistid == id){
  691. exist = 1;
  692. clist.splice(k,1,id+'->'+adtrliststr);
  693. return false;
  694. }
  695. });
  696. if(exist == 0){
  697. clist.push(id+'->'+adtrliststr);
  698. }
  699. $('#changelist').val(clist.join(','));
  700. }else{
  701. $('#changelist').val(id+'->'+adtrliststr);
  702. }
  703. }
  704. //移除 changelist 元素
  705. function removelist(id){
  706. //清除form中list
  707. var clist = $('#changelist').val().split(',');
  708. $.each(clist,function(k,v){
  709. var clistid = v.split('->')[0];
  710. if(clistid == id){
  711. clist.splice(k,1);
  712. return false;
  713. }
  714. });
  715. $('#changelist').val(clist.join(','));
  716. }
  717. //统计合计金额
  718. function totalamount(decimal){
  719. var zero = makedecimalzero(decimal);
  720. var ctotalnum = 0;
  721. var ototalnum = 0;
  722. $('.clist').each(function(){
  723. var ctotal = $(this).children('td').eq(7).text();
  724. ctotalnum = ctotal != '' ? parseFloat(ctotalnum).add(parseFloat(ctotal)) : parseFloat(ctotalnum);
  725. var ototal = $(this).children('td').eq(5).text();
  726. ototalnum = ototal != '' ? parseFloat(ototalnum).add(parseFloat(ototal)) : parseFloat(ototalnum);
  727. });
  728. $('.ctatalamount').eq(1).text(ctotalnum != 0 ? roundnum(ctotalnum,decimal) : zero);
  729. $('.otatalamount').eq(1).text(ototalnum != 0 ? ototalnum : zero);
  730. }