index.ejs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <% include ../tender/tender_sub_menu.ejs %>
  2. <div class="panel-content">
  3. <div class="panel-title">
  4. <div class="title-main d-flex justify-content-between">
  5. <div>
  6. <div class="d-inline-block">
  7. <div class="btn-group group-tab">
  8. <a class="btn btn-sm btn-light <%- type === 0 ? 'active' : '' %>" href="/tender/<%- ctx.tender.id %>/advance/start">
  9. 开工预付款<%- type === 0 && latestOrder ? `(第${latestOrder.order}期)` : '' %>
  10. </a>
  11. <a class="btn btn-sm btn-light <%- type === 1 ? 'active' : '' %>" href="/tender/<%- ctx.tender.id %>/advance/material">
  12. 材料预付款<%- type === 1 && latestOrder ? `(第${latestOrder.order}期)` : '' %>
  13. </a>
  14. <a class="btn btn-sm btn-light <%- type === 2 ? 'active' : '' %>" href="/tender/<%- ctx.tender.id %>/advance/safe">
  15. 安全生产预付款<%- type === 2 && latestOrder ? `(第${latestOrder.order}期)` : '' %>
  16. </a>
  17. <a class="btn btn-sm btn-light <%- type === 3 ? 'active' : '' %>" href="/tender/<%- ctx.tender.id %>/advance/dust">
  18. 扬尘污染预付款<%- type === 3 && latestOrder ? `(第${latestOrder.order}期)` : '' %>
  19. </a>
  20. </div>
  21. </div>
  22. <div class="d-inline-block ml-2">
  23. 签约<%- typeColMap[type].text%>
  24. <b><%- ctx.helper.formatMoney(advancePayTotal, ',', parseFloat(advancePayTotal).toString().split('.')[1] && parseFloat(advancePayTotal).toString().split('.')[1].length || 0) %></b> 元
  25. </div>
  26. <div class="d-inline-block ml-4" style="width:300px">
  27. <div class="progress">
  28. <div class="progress-bar bg-success" style="width: <%- progress.p_ratio%>%;" data-placement="bottom"
  29. data-toggle="tooltip" data-original-title="截止上期金额:¥<%- ctx.helper.formatMoney(progress.p_amount, ',', parseFloat(progress.p_amount).toString().split('.')[1] && parseFloat(progress.p_amount).toString().split('.')[1].length || 0) %>"><%- progress.p_ratio.toFixed() %>%</div>
  30. <div class="progress-bar bg-info" style="width:<%- progress.c_ratio%>%;" data-placement="bottom"
  31. data-toggle="tooltip" data-original-title="本期金额:¥<%- ctx.helper.formatMoney(progress.c_amount, ',', progress.c_amount && parseFloat(progress.c_amount).toString().split('.')[1] && parseFloat(progress.c_amount).toString().split('.')[1].length || 0) %>"><%- progress.c_ratio.toFixed() %>%</div>
  32. <div class="progress-bar bg-gray" style="width:<%- progress.s_ratio%>%;" data-placement="bottom"
  33. data-toggle="tooltip" data-original-title="未完成:¥<%- ctx.helper.formatMoney(progress.s_amount, ',', parseFloat(progress.s_amount).toString().split('.')[1] && parseFloat(progress.s_amount).toString().split('.')[1].length || 0) %>"><%- progress.s_ratio.toFixed() %>%</div>
  34. </div>
  35. </div>
  36. </div>
  37. <div class="ml-auto">
  38. <% if(showAddBtn) { %>
  39. <form action="<%- preUrl %>" method="POST">
  40. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
  41. <button type="submit" class="btn btn-primary btn-sm">开始新一期</button>
  42. </form>
  43. <!-- <a id="advance_add" href="" class="btn btn-primary btn-sm pull-right"></a> -->
  44. <% } %>
  45. </div>
  46. </div>
  47. </div>
  48. <div class="content-wrap">
  49. <div class="c-body">
  50. <div class="sjs-height-0" >
  51. <table class="table table-bordered">
  52. <thead>
  53. <tr>
  54. <th>期数</th>
  55. <th class="text-center" width="10%">支付比例</th>
  56. <th class="text-center" width="15%">本期金额</th>
  57. <th class="text-center" width="15%">截止上期</th>
  58. <th class="text-center" width="15%">截止本期金额</th>
  59. <th class="text-center">附件</th>
  60. <th class="text-center">进度</th>
  61. <th class="text-center" width="150">操作</th>
  62. </tr>
  63. </thead>
  64. <tbody id="advanceList">
  65. <% advanceList.forEach(item => { %>
  66. <tr>
  67. <td><a href="/tender/<%- ctx.tender.id %>/advance/<%- item.id %>/detail" data-id="<%- item.id %>">第<%- item.order %>期</a></td>
  68. <td><%- item.pay_ratio %>%</td>
  69. <td class="text-right"><%- item.cur_amount %></td>
  70. <td class="text-right"><%- item.prev_amount %></td>
  71. <td class="text-right"><%- item.prev_total_amount %></td>
  72. <td><a class="btn btn-sm" href="#file" data-toggle="modal" data-target="#file" data-id="<%- item.id %>"><i
  73. class="fa fa-paperclip"></i> <%- item.fileList.length %></a></td>
  74. <td>
  75. <% if (item.curAuditor) { %>
  76. <a href="#sp-list" data-toggle="modal" data-target="#sp-list" data-vid="<%- item.id %>"><%- item.curAuditor.name %><%if (item.curAuditor.role !== '' && item.curAuditor.role !== null) { %>-<%- item.curAuditor.role %><% } %></a>
  77. <% } %>
  78. <span class="<%- auditConst.statusClass[item.status] %>">
  79. <%- auditConst.statusString[item.status] %>
  80. </span>
  81. </td>
  82. <td>
  83. <% if((item.status === auditConst.status.uncheck || item.status === auditConst.status.checkNo) && item.uid === ctx.session.sessionUser.accountId) { %>
  84. <a href="/tender/<%- ctx.tender.id %>/advance/<%- item.id %>/detail" class="btn btn-primary btn-sm">编辑</a>
  85. <a href="del-qi" class="btn btn-outline-danger btn-sm ml-1" data-toggle="modal" data-target="#del-qi" data-id="<%- item.id %>" data-order="<%- item.order %>">删除</a>
  86. <% } else if(item.status === auditConst.status.checking && item.curAuditor.audit_id === ctx.session.sessionUser.accountId) {%>
  87. <a href="/tender/<%- ctx.tender.id %>/advance/<%- item.id %>/detail" class="btn btn-success btn-sm">审批</a>
  88. <% } else {%>
  89. <span class="<%- auditConst.statusClass[item.status] %>"><%- auditConst.statusString[item.status] %></span>
  90. <% } %>
  91. </td>
  92. </tr>
  93. <% }) %>
  94. </tbody>
  95. </table>
  96. </div>
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. <script>
  102. const type = parseInt('<%- type %>');
  103. const auditConst = JSON.parse('<%- JSON.stringify(auditConst) %>');
  104. const advanceList = JSON.parse('<%- JSON.stringify(advanceList) %>');
  105. const decimal = parseInt('<%- decimal %>');
  106. const advancePayTotal = parseFloat('<%- advancePayTotal %>');
  107. </script>