phase_pay_list.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. 'use strict';
  2. $(document).ready(() => {
  3. $('#audit-list').on('click', 'a', function() {
  4. const type = $(this).data('target')
  5. const auditCard = $(this).parent().parent()
  6. if (type === 'show') {
  7. $(this).data('target', 'hide')
  8. auditCard.find('.fold-card').slideDown('swing', () => {
  9. auditCard.find('#end-target').text($(this).data('idx') + '#')
  10. auditCard.find('#fold-btn').text('收起历史审核记录')
  11. })
  12. } else {
  13. $(this).data('target', 'show')
  14. auditCard.find('.fold-card').slideUp('swing', () => {
  15. auditCard.find('#end-target').text('1#')
  16. auditCard.find('#fold-btn').text('展开历史审核记录')
  17. })
  18. }
  19. });
  20. const getGroupAuditHtml = function (group) {
  21. return group.map(u => { return `<small class="d-inline-block text-dark mx-1" title="${u.role}" data-auditorId="${u.aid}">${u.name}</small>`; }).join('');
  22. };
  23. const getAuditTypeHtml = function (type) {
  24. if (type === auditType.key.common) return '';
  25. return `<div class="li-subscript"><span class="badge badge-pill badge-${auditType.info[type].class} p-1 badge-bg-small"><small>${auditType.info[type].short}</small></span></div>`;
  26. };
  27. const getAuditTypeText = function (type) {
  28. if (type === auditType.key.common) return '';
  29. return `<span class="text-${auditType.info[type].class}">${auditType.info[type].long}</span>`;
  30. };
  31. const getAuditorsHtml = function (auditors) {
  32. const auditorsHTML = [];
  33. auditors.forEach((group, idx) => {
  34. if (idx === 0) {
  35. auditorsHTML.push(`<li class="list-group-item d-flex justify-content-between align-items-center">
  36. <span class="mr-1"><i class="fa fa fa-play-circle fa-rotate-90"></i></span>
  37. <span class="text-muted">${getGroupAuditHtml(group)}</span>
  38. <span class="badge badge-light badge-pill ml-auto"><small>原报</small></span>
  39. </li>`);
  40. } else if(idx === auditors.length -1 && idx !== 0) {
  41. auditorsHTML.push(`<li class="list-group-item d-flex justify-content-between align-items-center">
  42. <span class="mr-1"><i class="fa fa fa-stop-circle fa-rotate-90"></i></span>
  43. <span class="text-muted">${getGroupAuditHtml(group)}</span>
  44. <div class="d-flex ml-auto">
  45. ${getAuditTypeHtml(group[0].audit_type)}
  46. <span class="badge badge-light badge-pill ml-auto"><small>终审</small></span>
  47. </div>
  48. </li>`);
  49. } else {
  50. auditorsHTML.push(`<li class="list-group-item d-flex justify-content-between align-items-center">
  51. <span class="mr-1"><i class="fa fa fa-chevron-circle-down"></i></span>
  52. <span class="text-muted">${getGroupAuditHtml(group)}</span>
  53. <div class="d-flex ml-auto">
  54. ${getAuditTypeHtml(group[0].audit_type)}
  55. <span class="badge badge-light badge-pill"><small>${transFormToChinese(idx)}审</small></span>
  56. </div>
  57. </li>`);
  58. }
  59. });
  60. return auditorsHTML;
  61. }
  62. const getAuditHistroyHtml = function (auditHistory) {
  63. const historyHTML = [];
  64. auditHistory.forEach((his, idx) => {
  65. if (idx === auditHistory.length - 1 && auditHistory.length !== 1) {
  66. historyHTML.push(`<div class="text-right"><a href="javascript: void(0);" id="fold-btn" data-target="show">展开历史审批流程</a></div>`);
  67. }
  68. historyHTML.push(`<div class="${idx < auditHistory.length - 1 ? 'fold-card' : ''}">`);
  69. historyHTML.push(`<div class="text-center text-muted">${idx+1}#</div>`);
  70. historyHTML.push(`<ul class="timeline-list list-unstyled mt-2 ${ idx === auditHistory.length - 1 && auditHistory.length !== 1 ? 'last-auditor-list' : '' }">`);
  71. his.forEach((group) => {
  72. historyHTML.push(`<li class="timeline-list-item pb-2 ${ group.audit_status === auditConst.status.uncheck && idx === auditHistory.length - 1 && auditHistory.length !== 1 ? 'is_uncheck' : ''}">`);
  73. if (group.auditYear) {
  74. historyHTML.push(`<div class="timeline-item-date">${group.auditYear}<span>${group.auditDate}</span><span>${group.auditTime}</span></div>`);
  75. }
  76. if (group.audit_order < his.length - 1) {
  77. historyHTML.push('<div class="timeline-item-tail"></div>');
  78. }
  79. if (group.audit_status === auditConst.status.checked) {
  80. historyHTML.push('<div class="timeline-item-icon bg-success text-light"><i class="fa fa-check"></i></div>');
  81. } else if (group.audit_status === auditConst.status.checkNo || group.audit_status === auditConst.status.checkNoPre || group.status === auditConst.status.checkCancel) {
  82. historyHTML.push('<div class="timeline-item-icon bg-warning text-light"><i class="fa fa-level-up"></i></div>');
  83. } else if (group.audit_status === auditConst.status.checking) {
  84. historyHTML.push('<div class="timeline-item-icon bg-warning text-light"><i class="fa fa-ellipsis-h"></i></div>');
  85. } else {
  86. historyHTML.push('<div class="timeline-item-icon bg-secondary text-light"></div>');
  87. }
  88. historyHTML.push('<div class="timeline-item-content">');
  89. if (group.audit_order > 0) {
  90. const statuStr = group.audit_status !== auditConst.status.uncheck ?
  91. `<span class="pull-right ${auditConst.info[group.audit_status].class}">${auditConst.info[group.audit_status].title}</span>` : '';
  92. historyHTML.push(`<div class="py-1">
  93. <span class="text-black-50">
  94. ${ !group.is_final ? group.audit_order + '' : '终' }审 ${getAuditTypeText(group.audit_type)}
  95. </span>
  96. ${statuStr}
  97. </div>`);
  98. } else {
  99. historyHTML.push(` <div class="py-1">
  100. <span class="text-black-50">原报</span>
  101. <span class="pull-right text-success">${idx !== 0 ? '重新' : '' }上报审批</span>
  102. </div>`);
  103. }
  104. historyHTML.push('<div class="card"><div class="card-body px-3 py-0">');
  105. for (const [i, auditor] of group.auditors.entries()) {
  106. historyHTML.push(`<div class="card-text p-2 py-3 row ${ ( i > 0 ? 'border-top' : '') }">`);
  107. historyHTML.push(`<div class="col"><span class="h6">${auditor.name}</span><span class="text-muted ml-1">${auditor.role}</span></div>`);
  108. historyHTML.push('<div class="col">');
  109. if (auditor.audit_status === auditConst.status.checked) {
  110. historyHTML.push('<span class="pull-right text-success"><i class="fa fa-check-circle"></i></span>');
  111. } if (auditor.audit_status === auditConst.status.checkNo || auditor.audit_status === auditConst.status.checkNoPre || auditor.audit_status === auditConst.status.checkCancel) {
  112. historyHTML.push('<span class="pull-right text-warning"><i class="fa fa-share-square fa-rotate-270"></i></span>');
  113. }
  114. historyHTML.push('</div>');
  115. if (group.audit_order > 0 && auditor.opinion) {
  116. historyHTML.push(`<div class="col-12 py-1 bg-light"><i class="fa fa-commenting-o mr-1"></i>${auditor.opinion}</div>`);
  117. }
  118. historyHTML.push('</div>');
  119. }
  120. historyHTML.push('</div></div>');
  121. historyHTML.push('</div>');
  122. historyHTML.push('</li>');
  123. });
  124. historyHTML.push('</div>');
  125. historyHTML.push('</ul>');
  126. });
  127. return historyHTML.join('');
  128. }
  129. // 获取审批流程
  130. $('a[data-target="#sp-list" ]').on('click', function () {
  131. postData('pay/auditors', { order: $(this).attr('phase-order') }, function (result) {
  132. $('#auditor-list').html(getAuditorsHtml(result.hisUserGroup));
  133. $('#audit-list').html(getAuditHistroyHtml(result.auditHistory));
  134. });
  135. });
  136. $.subMenu({
  137. menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
  138. toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
  139. key: 'menu.1.0.0',
  140. miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
  141. callback: function (info) {
  142. if (info.mini) {
  143. $('.panel-title').addClass('fluid');
  144. $('#sub-menu').removeClass('panel-sidebar');
  145. } else {
  146. $('.panel-title').removeClass('fluid');
  147. $('#sub-menu').addClass('panel-sidebar');
  148. }
  149. autoFlashHeight();
  150. }
  151. });
  152. });