change_approval.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. 'use strict';
  2. /**
  3. * 变更令-审批页js
  4. *
  5. * @author EllisRan.
  6. * @date 2018/11/22
  7. * @version
  8. */
  9. $(document).ready(() => {
  10. $('#sp-back input[name="status"]').click(function (e) {
  11. if($(e.target).is('label')){
  12. return;
  13. }
  14. if (parseInt($(this).val()) === 4) {
  15. $('.change-approval-stop').show();
  16. $('.change-approval-back').hide();
  17. } else {
  18. $('.change-approval-stop').hide();
  19. $('.change-approval-back').show();
  20. }
  21. });
  22. // 清单输入监控并更新
  23. $('body').on('valuechange', '.clist input', function (e, previous) {
  24. const amount = $(this).val();
  25. const lid = $(this).parents('tr').data('lid');
  26. const tr = $('#list tr[data-lid="' + lid + '"]').eq(0);
  27. const unitprice = tr.children('td[data-site="5"]').text();
  28. tr.children('.amount_cost').text(amount != '' && unitprice ?
  29. roundnum(parseFloat(unitprice).mul(parseFloat(amount)),totalPriceUnit) : '');
  30. // 统计总金额
  31. let totalcost = 0;
  32. $('.clist').each(function(){
  33. const utotal = $(this).find('.amount_cost').text();
  34. totalcost = utotal != '' ? parseFloat(totalcost)+parseFloat(utotal) : parseFloat(totalcost);
  35. });
  36. $('.amount_totalcost').eq(1).text(totalcost !== 0 ? roundnum(totalcost, totalPriceUnit) : '');
  37. });
  38. // 选中input所有值
  39. $('body').on('focus', ".clist input", function() {
  40. $(this).select();
  41. });
  42. // 审批提交与判断
  43. $('.approval-btn').on('click', function () {
  44. // 判断审批状态
  45. let returnflag = true;
  46. if ($(this).hasClass('btn-success')) {
  47. const sdesc = $('#success-approval').find('textarea').val();
  48. if (sdesc === '') {
  49. toastr.error('审批意见不能为空!');
  50. returnflag = false;
  51. }
  52. if ($('input[name="p_code"]').val() === '') {
  53. toastr.error('变更令号(批复编号)不能为空!');
  54. returnflag = false;
  55. } else if ($('input[name="p_code"]').val() !== undefined) {
  56. $('input[name="p_code"]').val($.trim($('input[name="p_code"]').val()));
  57. const postData = {
  58. p_code: $('input[name="p_code"]').val(),
  59. };
  60. postDataWithAsync('/tender/' + $('#tenderId').val() + '/change/' + $('#changeId').val() + '/check/codeRepeat',postData, function (result) {
  61. }, function (data) {
  62. returnflag = false;
  63. });
  64. }
  65. // 判断并提交变更清单表格数据到表单中
  66. const clist = [];
  67. $('.clist input').each(function(k, v){
  68. const value = $(this).val();
  69. const lid = $(this).parents('tr').data('lid');
  70. if (value === '') {
  71. toastr.error('清单第' + (k+1) + '行审批变更数量不能为空');
  72. returnflag = false;
  73. }
  74. clist.push(lid+'_'+value);
  75. });
  76. $('#change-list-approval').val(clist.join(','));
  77. if(returnflag) {
  78. $('input[name="w_code"]').val($.trim($('#w_code').val()));
  79. $('#success-approval').find('textarea').val(sdesc.replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, ' '));
  80. if ($('#warning-text').length) $('#warning-text').remove()
  81. $('#success-approval').submit();
  82. }
  83. } else {
  84. const sdesc = $('#fail-approval').find('textarea').val();
  85. if (sdesc === '') {
  86. toastr.error('审批意见不能为空!');
  87. returnflag = false;
  88. }
  89. const type = $('#fail-approval').find('input[name="status"]:checked').val();
  90. if (type === undefined) {
  91. // toastr.error('请选择退回类型!');
  92. if (!$('#warning-text').length) {
  93. $('#change-back-content').prepend('<p id="warning-text" style="color: red; margin: 0;">请选择退回流程</p>');
  94. }
  95. returnflag = false;
  96. }
  97. if(returnflag) {
  98. $('#fail-approval').find('textarea').val(sdesc.replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, ' '));
  99. $('input[name="w_code"]').val($.trim($('#w_code').val()));
  100. $('#fail-approval').submit();
  101. }
  102. }
  103. })
  104. });
  105. const postDataWithAsync = function (url, data, successCallback, errorCallBack, showWaiting = true) {
  106. if (showWaiting) showWaitingView();
  107. $.ajax({
  108. type:"POST",
  109. url: url,
  110. data: {'data': JSON.stringify(data)},
  111. dataType: 'json',
  112. cache: false,
  113. async: false,
  114. timeout: 60000,
  115. beforeSend: function(xhr) {
  116. let csrfToken = Cookies.get('csrfToken_j');
  117. xhr.setRequestHeader('x-csrf-token_j', csrfToken);
  118. },
  119. success: function(result){
  120. if (result.err === 0) {
  121. if (successCallback) {
  122. successCallback(result.data);
  123. }
  124. } else {
  125. toastr.error(result.msg);
  126. if (errorCallBack) {
  127. errorCallBack(result.msg);
  128. }
  129. }
  130. if (showWaiting) closeWaitingView();
  131. },
  132. error: function(jqXHR, textStatus, errorThrown){
  133. toastr.error('error: ' + textStatus + " " + errorThrown);
  134. if (errorCallBack) {
  135. errorCallBack();
  136. }
  137. if (showWaiting) closeWaitingView();
  138. }
  139. });
  140. };
  141. function auditCheck(i) {
  142. const inlineRadio1 = $('#change-back:checked').val()
  143. const inlineRadio2 = $('#chagne-backnew:checked').val()
  144. const opinion = $('textarea[name="sdesc"]').eq(i).val().replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, ' ');
  145. $('textarea[name="sdesc"]').eq(i).val(opinion);
  146. if (i === 1) {
  147. if (!inlineRadio1 && !inlineRadio2) {
  148. if (!$('#warning-text').length) {
  149. $('#reject-process').prepend('<p id="warning-text" style="color: red; margin: 0;">请选择退回流程</p>');
  150. }
  151. return false;
  152. }
  153. if ($('#warning-text').length) $('#warning-text').remove()
  154. }
  155. return true;
  156. }