index.ejs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <% include ../tender/tender_sub_menu.ejs %>
  2. <div class="panel-content">
  3. <div class="panel-title">
  4. <div class="title-main d-flex">
  5. <% include ../tender/tender_sub_mini_menu.ejs %>
  6. <div class="d-inline-block">
  7. 材料调差期列表
  8. </div>
  9. <% if (ctx.session.sessionUser.accountId === ctx.tender.data.user_id || ctx.session.sessionUser.is_admin) { %>
  10. <div class="d-inline-block mx-1">
  11. <button href="#cate-set" class="btn btn-sm btn-light text-primary" data-toggle="modal" data-target="#row-view"><i class="fa fa-table"></i> 列显示</button>
  12. </div>
  13. <% } %>
  14. <div class="d-inline-block">
  15. <button href="#zjhj" class="btn btn-sm btn-light text-primary" data-toggle="modal" data-target="#zjhj">期合计</button>
  16. </div>
  17. <div class="ml-auto">
  18. <% if (ctx.session.sessionUser.accountId === ctx.tender.data.user_id && stages.length > 0 &&
  19. (materials.length === 0 || materials[0].status === auditConst.status.checked)) { %>
  20. <a href="#add-qi" data-toggle="modal" data-target="#add-qi" class="btn btn-primary btn-sm pull-right">开始新一期</a>
  21. <% } %>
  22. </div>
  23. </div>
  24. </div>
  25. <div class="content-wrap">
  26. <div class="c-body">
  27. <div class="sjs-height-0">
  28. <table class="table table-bordered">
  29. <thead>
  30. <tr>
  31. <% const rowSpan = ctx.helper._.findIndex(materialColShow, { checked: true}) !== -1 ? 2 : 1%>
  32. <th rowspan="<%- rowSpan %>">期数</th>
  33. <th class="text-center" rowspan="<%- rowSpan %>">添加时间</th>
  34. <th class="text-center" rowspan="<%- rowSpan %>">计量期</th>
  35. <th class="text-center" rowspan="<%- rowSpan %>">调差周期</th>
  36. <% if (materialColShow[0].checked) { %>
  37. <th class="text-center" colspan="<% if (openMaterialTax && !allMaterialTax) { %>3<% } else { %>2<% } %>">信息价调差</th>
  38. <% } %>
  39. <% if (materialColShow[1].checked) { %>
  40. <th class="text-center" colspan="2">指数法调差</th>
  41. <% } %>
  42. <% if (materialColShow[2].checked) { %>
  43. <th class="text-center" colspan="<% if (openMaterialTax) { %>3<% } else { %>2<% } %>">合计</th>
  44. <% } %>
  45. <th class="text-center" rowspan="<%- rowSpan %>">审批进度</th>
  46. <th class="text-center" rowspan="<%- rowSpan %>" width="140">操作</th>
  47. </tr>
  48. <% if (rowSpan === 2) { %>
  49. <tr>
  50. <% if (materialColShow[0].checked) { %>
  51. <th class="text-center">价差费用</th>
  52. <% if (openMaterialTax) { %><th class="text-center">价差费用(含材料税)</th><% } %>
  53. <% if ((openMaterialTax && !allMaterialTax) || !openMaterialTax) { %><th class="text-center">价差费用(含建筑税)</th><% } %>
  54. <% } %>
  55. <% if (materialColShow[1].checked) { %>
  56. <th class="text-center">价差费用</th>
  57. <th class="text-center">价差费用(含建筑税)</th>
  58. <% } %>
  59. <% if (materialColShow[2].checked) { %>
  60. <th class="text-center">价差费用</th>
  61. <% if (openMaterialTax) { %><th class="text-center">价差费用(含材料税)</th><% } %>
  62. <th class="text-center">价差费用(含建筑税)</th>
  63. <% } %>
  64. </tr>
  65. <% } %>
  66. </thead>
  67. <tbody>
  68. <% for (const m of materials) { %>
  69. <tr>
  70. <td>
  71. <a href="<%- '/tender/' + ctx.tender.id + '/measure/material/' + m.order %>">第 <%- m.order %> 期</a>
  72. </td>
  73. <td class="text-center"><%= moment(m.in_time).format('YYYY-MM-DD') %></td>
  74. <td class="text-center">第 <%= m.s_order %> 期</td>
  75. <td class="text-center">
  76. <span data-toggle="tooltip" data-placement="bottom" data-original-title="<%- (m.period ? m.period : '') %>">
  77. <%- (m.period ? (m.period.split('~')[1] ? m.period.split('~')[1] : m.period) : '') %>
  78. </span>
  79. <a href="#edit" class="edit-material" data-mid="<%- m.id %>" data-order="<%- m.order %>" data-period="<%- m.period %>" data-toggle="modal" data-target="#edit"><i class="fa fa-pencil-square-o "></i></a>
  80. </td>
  81. <% if (materialColShow[0].checked) { %>
  82. <td class="text-right"><%= m.m_tp !== null ? ctx.helper.round(m.m_tp, m.decimal.tp) : null %></td>
  83. <% if (openMaterialTax) { %><td class="text-right"><% if (m.material_tax) { %><% if (m.m_tax_tp) { %><%- m.m_tax_tp %><% } else { %><%- m.m_tp %><% } %><% } %></td><% } %>
  84. <% if ((openMaterialTax && !allMaterialTax) || !openMaterialTax) { %><td class="text-right"><% if (!m.material_tax) { %><%- m.rate_tp %><% } %></td><% } %>
  85. <% } %>
  86. <% if (materialColShow[1].checked) { %>
  87. <td class="text-right"><%= m.ex_tp !== null ? ctx.helper.round(m.ex_tp, m.decimal.tp) : null %></td>
  88. <td class="text-right"><%= m.ex_tp !== null ? ctx.helper.round(ctx.helper.mul(m.ex_tp, 1+m.exponent_rate/100), m.decimal.tp) : null %></td>
  89. <% } %>
  90. <% if (materialColShow[2].checked) { %>
  91. <td class="text-right"><%= ctx.helper.add(ctx.helper.round(m.ex_tp, m.decimal.tp), ctx.helper.round(m.m_tp, m.decimal.tp)) %></td>
  92. <% if (openMaterialTax) { %><td class="text-right"><% if (m.material_tax) { %><% if (m.m_tax_tp) { %><%- m.m_tax_tp %><% } else { %><%- m.m_tp %><% } %><% } %></td><% } %>
  93. <td class="text-right"><% if (m.material_tax) { %><%= m.ex_tp !== null ? ctx.helper.round(ctx.helper.mul(m.ex_tp, 1+m.exponent_rate/100), m.decimal.tp) : null %><% } else { %><%= ctx.helper.add(ctx.helper.round(ctx.helper.mul(m.ex_tp, 1+m.exponent_rate/100), m.decimal.tp), m.rate_tp) %><% } %></td>
  94. <% } %>
  95. <td class="<%- auditConst.auditProgressClass[m.status] %>">
  96. <% if (m.status === auditConst.status.checked && m.final_auditor_str) { %>
  97. <a href="#sp-list" data-toggle="modal" data-target="#sp-list" m-order="<%- m.order %>"><%- m.final_auditor_str %></a>
  98. <% } else { %>
  99. <% if (m.curAuditors && m.curAuditors.length > 0) { %>
  100. <% if (m.curAuditors[0].audit_type === auditType.key.common) { %>
  101. <a href="#sp-list" data-toggle="modal" data-target="#sp-list" m-order="<%- m.order %>"><%- m.curAuditors[0].name %><%if (m.curAuditors[0].role !== '' && m.curAuditors[0].role !== null) { %>-<%- m.curAuditors[0].role %><% } %></a>
  102. <% } else { %>
  103. <a href="#sp-list" data-toggle="modal" data-target="#sp-list" m-order="<%- m.order %>"><%- ctx.helper.transFormToChinese(m.curAuditors[0].audit_order) + '审' %></a>
  104. <% } %>
  105. <% } %>
  106. <% } %>
  107. <%- auditConst.auditProgress[m.status] %>
  108. </td>
  109. <td class="text-center">
  110. <% if (m.status === auditConst.status.uncheck && m.user_id === ctx.session.sessionUser.accountId) { %>
  111. <a href="<%- '/tender/' + ctx.tender.id + '/measure/material/' + m.order %>" class="btn <%- auditConst.statusButtonClass[m.status] %> btn-sm"><%- auditConst.statusButton[m.status] %></a>
  112. <% } else if (m.status === auditConst.status.checkNo && m.curAuditor && m.user_id === ctx.session.sessionUser.accountId) { %>
  113. <a href="<%- '/tender/' + ctx.tender.id + '/measure/material/' + m.order %>" class="btn <%- auditConst.statusButtonClass[m.status] %> btn-sm"><%- auditConst.statusButton[m.status] %></a>
  114. <% } else if ((m.status === auditConst.status.checking || m.status === auditConst.status.checkNoPre) && m.curAuditors && m.curAuditors.findIndex(x => { return x.aid === ctx.session.sessionUser.accountId; }) >= 0) { %>
  115. <% const curAudit = m.curAuditors.find(x => { return x.aid === ctx.session.sessionUser.accountId; }); %>
  116. <% if (curAudit.status === auditConst.status.checking) { %>
  117. <a href="<%- '/tender/' + ctx.tender.id + '/measure/material/' + m.order %>" class="btn <%- auditConst.statusButtonClass[m.status] %> btn-sm"><%- auditConst.statusButton[m.status] %></a>
  118. <% } else { %>
  119. <span class="<%- auditConst.auditProgressClass[m.status] %>"><%- auditConst.auditProgress[m.status] %></span>
  120. <% } %>
  121. <% } else { %>
  122. <span class="<%- auditConst.auditProgressClass[m.status] %>"><%- auditConst.auditProgress[m.status] %></span>
  123. <% } %>
  124. <% if ((ctx.session.sessionUser.is_admin || ((m.status === auditConst.status.uncheck || m.status === auditConst.status.checkNo) && m.user_id === ctx.session.sessionUser.accountId)) && m.order === materials.length) { %>
  125. <a href="#del-qi" class="btn btn-outline-danger btn-sm ml-1" data-toggle="modal" data-target="#del-qi">删除</a>
  126. <% } %>
  127. </td>
  128. </tr>
  129. <% } %>
  130. </tbody>
  131. </table>
  132. </div>
  133. </div>
  134. </div>
  135. </div>
  136. <script>
  137. const tenderId = '<%- ctx.tender.id %>';
  138. const auditConst = JSON.parse('<%- auditConst2 %>');
  139. const preUrl = JSON.parse(unescape('<%- escape(JSON.stringify(preUrl)) %>'));
  140. const lastMaterialListNum = parseInt('<%- lastMaterialList ? lastMaterialList.length : 0 %>');
  141. const materialColShow = JSON.parse(unescape('<%- escape(JSON.stringify(materialColShow)) %>'));
  142. const auditType = JSON.parse('<%- JSON.stringify(auditType) %>');
  143. $.subMenu({
  144. menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
  145. toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
  146. key: 'menu.1.0.0',
  147. miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
  148. callback: function (info) {
  149. if (info.mini) {
  150. $('.panel-title').addClass('fluid');
  151. $('#sub-menu').removeClass('panel-sidebar');
  152. } else {
  153. $('.panel-title').removeClass('fluid');
  154. $('#sub-menu').addClass('panel-sidebar');
  155. }
  156. autoFlashHeight();
  157. }
  158. });
  159. </script>