apply_information_notice_modal.ejs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. <!--审批流程/结果-->
  2. <div class="modal fade" id="sp-list" data-backdrop="static">
  3. <div class="modal-dialog modal-lg" role="document">
  4. <div class="modal-content">
  5. <div class="modal-header">
  6. <h5 class="modal-title">审批流程</h5>
  7. </div>
  8. <div class="modal-body">
  9. <div class="row">
  10. <div class="col-4">
  11. <% if(ctx.change.status === auditConst.status.checkNo) { %>
  12. <a class="sp-list-item" href="#sub-sp" data-toggle="modal" data-target="#sub-sp" id="hideSp">修改审批流程</a>
  13. <% } %>
  14. <div class="card mt-3">
  15. <ul class="list-group list-group-flush" id="auditors-list">
  16. <% ctx.change.auditors2.forEach((item, idx) => { %>
  17. <% if (idx === 0) { %>
  18. <li class="list-group-item" data-auditorId="<%- item.aid %>">
  19. <i class="fa fa fa-play-circle fa-rotate-90"></i> <%- item.name %>
  20. <small class="text-muted"><%- item.role %></small>
  21. <span class="pull-right">原报</span>
  22. </li>
  23. <% } else if(idx === ctx.change.auditors2.length -1 && idx !== 0) { %>
  24. <li class="list-group-item" data-auditorId="<%- item.aid %>">
  25. <i class="fa fa fa-stop-circle"></i> <%- item.name %>
  26. <small class="text-muted"><%- item.role %></small>
  27. <span class="pull-right">终审</span>
  28. </li>
  29. <% } else {%>
  30. <li class="list-group-item" data-auditorId="<%- item.aid %>">
  31. <i class="fa fa-chevron-circle-down"></i> <%- item.name %>
  32. <small class="text-muted"><%- item.role %></small>
  33. <span class="pull-right"><%= ctx.helper.transFormToChinese(idx) %>审</span>
  34. </li>
  35. <% } %>
  36. <% }) %>
  37. </ul>
  38. </div>
  39. </div>
  40. <div class="col-8 modal-height-500" style="overflow: auto">
  41. <% ctx.change.auditHistory.forEach((auditors, idx) => { %>
  42. <!-- 展开/收起历史流程 -->
  43. <% if(idx === ctx.change.auditHistory.length - 1 && ctx.change.auditHistory.length !== 1) { %>
  44. <div class="text-right">
  45. <a href="javascript: void(0);" id="fold-btn" data-target="show">展开历史审批流程</a>
  46. </div>
  47. <% } %>
  48. <div class="<%- idx < ctx.change.auditHistory.length - 1 ? 'fold-card' : '' %>">
  49. <div class="text-center text-muted"><%- idx+1 %>#</div>
  50. <ul class="timeline-list list-unstyled mt-2">
  51. <% auditors.forEach((auditor, index) => { %>
  52. <% if (index === 0) { %>
  53. <li class="timeline-list-item pb-2">
  54. <div class="timeline-item-date">
  55. <%- ctx.helper.formatDate(auditor.begin_time) %>
  56. </div>
  57. <div class="timeline-item-tail"></div>
  58. <div class="timeline-item-icon bg-success text-light">
  59. <i class="fa fa-caret-down"></i>
  60. </div>
  61. <div class="timeline-item-content">
  62. <div class="card">
  63. <div class="card-body p-3">
  64. <div class="card-text">
  65. <p class="mb-1"><span
  66. class="h5"><%- ctx.change.user.name %></span><span
  67. class="pull-right text-success"><%- idx !== 0 ? '重新' : '' %>上报审批</span>
  68. </p>
  69. <p class="text-muted mb-0"><%- ctx.change.user.role %></p>
  70. </div>
  71. </div>
  72. </div>
  73. </div>
  74. </li>
  75. <li class="timeline-list-item pb-2">
  76. <div class="timeline-item-date">
  77. <%- ctx.helper.formatDate(auditor.end_time) %>
  78. </div>
  79. <% if(index < auditors.length - 1) { %>
  80. <div class="timeline-item-tail"></div>
  81. <% } %>
  82. <% if(auditor.status === auditConst.status.checked) { %>
  83. <div class="timeline-item-icon bg-success text-light">
  84. <i class="fa fa-check"></i>
  85. </div>
  86. <% } else if(auditor.status === auditConst.status.checkNo) {%>
  87. <div class="timeline-item-icon bg-warning text-light">
  88. <i class="fa fa-level-up"></i>
  89. </div>
  90. <% } else if(auditor.status === auditConst.status.checking) { %>
  91. <div class="timeline-item-icon bg-warning text-light">
  92. <i class="fa fa-ellipsis-h"></i>
  93. </div>
  94. <% } else {%>
  95. <div class="timeline-item-icon bg-secondary text-light">
  96. </div>
  97. <% } %>
  98. <div class="timeline-item-content">
  99. <div class="card">
  100. <div class="card-body p-3">
  101. <div class="card-text">
  102. <p class="mb-1"><span class="h5"><%- auditor.name %></span><span
  103. class="pull-right <%- auditConst.statusClass[auditor.status] %>"><%- auditConst.statusString[auditor.status] %></span>
  104. </p>
  105. <p class="text-muted mb-0"><%- auditor.role %></p>
  106. </div>
  107. </div>
  108. <!--审批意见-->
  109. <% if (auditor.opinion) { %>
  110. <div class="card-body p-3 border-top">
  111. <p style="margin: 0;"><%- auditor.opinion %></p>
  112. </div>
  113. <% } %>
  114. </div>
  115. </div>
  116. </li>
  117. <% } else {%>
  118. <li class="timeline-list-item pb-2">
  119. <div class="timeline-item-date">
  120. <%- ctx.helper.formatDate(auditor.end_time) %>
  121. </div>
  122. <% if(index < auditors.length - 1) { %>
  123. <div class="timeline-item-tail"></div>
  124. <% } %>
  125. <% if(auditor.status === auditConst.status.checked) { %>
  126. <div class="timeline-item-icon bg-success text-light">
  127. <i class="fa fa-check"></i>
  128. </div>
  129. <% } else if(auditor.status === auditConst.status.checkNo) {%>
  130. <div class="timeline-item-icon bg-warning text-light">
  131. <i class="fa fa-level-up"></i>
  132. </div>
  133. <% } else if(auditor.status === auditConst.status.checking) { %>
  134. <div class="timeline-item-icon bg-warning text-light">
  135. <i class="fa fa-ellipsis-h"></i>
  136. </div>
  137. <% } else { %>
  138. <div class="timeline-item-icon bg-secondary text-light">
  139. </div>
  140. <% } %>
  141. <div class="timeline-item-content">
  142. <div class="card">
  143. <div class="card-body p-3">
  144. <div class="card-text">
  145. <p class="mb-1"><span class="h5"><%- auditor.name %></span>
  146. <span
  147. class="pull-right
  148. <%- auditConst.statusClass[auditor.status] %>"><%- auditor.status !== auditConst.status.uncheck ? auditConst.statusString[auditor.status] : ''%>
  149. <%- auditor.status === auditConst.status.checkNo ? ctx.change.user.name : '' %>
  150. </span>
  151. </p>
  152. <p class="text-muted mb-0"><%- auditor.role %></p>
  153. </div>
  154. </div>
  155. <!--审批意见-->
  156. <% if (auditor.opinion) { %>
  157. <div class="card-body p-3 border-top">
  158. <p style="margin: 0;"><%- auditor.opinion %></p>
  159. </div>
  160. <% } %>
  161. </div>
  162. </div>
  163. </li>
  164. <% } %>
  165. <% }) %>
  166. </ul>
  167. </div>
  168. <% }) %>
  169. </div>
  170. </div>
  171. </div>
  172. <div class="modal-footer">
  173. <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">关闭</button>
  174. </div>
  175. </div>
  176. </div>
  177. </div>
  178. <script>const cur_uid = parseInt('<%- ctx.session.sessionUser.accountId %>');</script>
  179. <script>
  180. $('.sp-location-list').on('shown.bs.modal', function () {
  181. const scrollBox = $(this).find('div[class="col-8 modal-height-500"]');
  182. const bdiv = (scrollBox.offset() && scrollBox.offset().top) || 0;
  183. scrollBox.scrollTop(0);
  184. const hdiv = divSearch($(this).find('textarea')) ? $(this).find('textarea') : null;
  185. const hdheight = hdiv ? hdiv.parents('.timeline-item-content').offset().top : null;
  186. if (hdiv && scrollBox.length && scrollBox[0].scrollHeight > 200 && hdheight - bdiv > 200) {
  187. scrollBox.scrollTop(hdheight - bdiv);
  188. }
  189. });
  190. function divSearch(div) {
  191. if (div.length > 0) {
  192. return true;
  193. }
  194. return false;
  195. }
  196. // 展开历史审核记录
  197. $('.modal-body #fold-btn').click(function () {
  198. const type = $(this).data('target')
  199. const auditCard = $(this).parent().parent()
  200. if (type === 'show') {
  201. $(this).data('target', 'hide')
  202. auditCard.find('.fold-card').slideDown('swing', () => {
  203. auditCard.find('#fold-btn').text('收起历史审核记录')
  204. })
  205. } else {
  206. $(this).data('target', 'show')
  207. auditCard.find('.fold-card').slideUp('swing', () => {
  208. auditCard.find('#fold-btn').text('展开历史审核记录')
  209. })
  210. }
  211. });
  212. </script>