exponent.ejs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. <% include ./material_sub_menu.ejs %>
  2. <div class="panel-content">
  3. <div class="panel-title">
  4. <div class="title-main d-flex justify-content-between">
  5. <% include ./material_sub_mini_menu.ejs %>
  6. <div>
  7. <% if ((material.status === auditConst.status.uncheck || material.status === auditConst.status.checkNo) && ctx.session.sessionUser.accountId === material.user_id) { %>
  8. <div class="d-inline-block">
  9. <a href="javascript: void(0);" id="add" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="新增"><i class="fa fa-plus" aria-hidden="true"></i></a>
  10. <a href="javascript: void(0);" id="del" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
  11. </div>
  12. <% } %>
  13. <div class="d-inline-block ml-3">
  14. 本期调差计量期:第<span class="mx-2"><%= material.s_order.split(',').join(',') %></span>期
  15. </div>
  16. <div class="d-inline-block ml-2" >
  17. <a href="#cc-digits" class="btn btn-sm btn-light text-primary" data-toggle="modal" data-placement="bottom" title="小数位数" data-target="#cc-digits" ><i class="fa fa-cog" aria-hidden="true"></i></a>
  18. </div>
  19. <% if (!ctx.material.readOnly) { %>
  20. <div class="d-inline-block ml-2" >
  21. <a href="#choose2" class="btn btn-sm btn-primary" data-toggle="modal" data-placement="bottom" data-target="#choose2" >新增分项价格指数</a>
  22. </div>
  23. <% } %>
  24. <!--<div class="d-inline-block ml-3" style="display: none!important;">-->
  25. <!--本期价差:<b id="ex_expr"><%- material.ex_expr %></b>-->
  26. <!--</div>-->
  27. </div>
  28. <div class="ml-auto">
  29. <% if (ctx.subProject.page_show.openMaterialChecklist && material.order === material.highOrder) { %>
  30. <a href="/tender/<%- ctx.tender.id %>/measure/material/<%- material.highOrder %>/checklist" class="btn btn-sm btn-outline-primary">批量设置调差清单</a>
  31. <% } %>
  32. </div>
  33. </div>
  34. </div>
  35. <div class="content-wrap pr-46">
  36. <div class="c-header p-0">
  37. </div>
  38. <div class="row w-100 sub-content">
  39. <div id="left-view" class="c-body" style="width: 100%">
  40. <!--上部分-->
  41. <% if (material.showStageExponent) { %>
  42. <div class="c-body sjs-height-1" style="width: 100%">
  43. <ul class="nav nav-tabs" id="myTab" role="tablist">
  44. <% for (const [index,ms] of materialStageData.entries()) { %>
  45. <li class="nav-item">
  46. <a class="nav-link change-material-stage <% if (index === 0) { %>active<% } %>" data-msid="<%- ms.id %>" data-toggle="tab" href="javascript:void(0);" role="tab" aria-selected="<% if (index === 0) { %>true<% } else { %>false<% } %>">第<%- ms.order %>期</a>
  47. </li>
  48. <% } %>
  49. </ul>
  50. <% if (material.exponent_node) { %>
  51. <% const nodeList = ctx.helper._.filter(materialExponentNodeData, { ms_id: materialStageData[0].id }); %>
  52. <div class="nav-tabs-wrapper">
  53. <ul class="nav nav-pills flex-nowrap my-1" id="myTab2" role="tablist">
  54. <% for (const [j, node] of nodeList.entries()) { %>
  55. <li class="nav-item">
  56. <a class="nav-link change-material-node <% if (j === 0) { %>active<% } %>" data-node="<%- node.node %>" data-mnid="<%- node.id %>" href="javascript:void(0);" data-toggle="tab"><%- node.name %><% if (node.node === '-1') { %>(不含新增分项)<% } %></a>
  57. </li>
  58. <% } %>
  59. </ul>
  60. </div>
  61. <% } %>
  62. <div class="sjs-height-material" id="material-exponent-spread"></div>
  63. </div>
  64. <% } else if (material.exponent_node) { %>
  65. <div class="c-body sjs-height-1" style="width: 100%">
  66. <div class="nav-tabs-wrapper">
  67. <ul class="nav nav-pills flex-nowrap my-1" id="myTab2" role="tablist">
  68. <% for (const [j,node] of materialExponentNodeData.entries()) { %>
  69. <li class="nav-item">
  70. <a class="nav-link change-material-node <% if (j === 0) { %>active<% } %>" data-node="<%- node.node %>" data-mnid="<%- node.id %>" href="javascript:void(0);" data-toggle="tab"><%- node.name %><% if (node.node === '-1') { %>(不含新增分项)<% } %></a>
  71. </li>
  72. <% } %>
  73. </ul>
  74. </div>
  75. <div class="sjs-height-material" id="material-exponent-spread"></div>
  76. </div>
  77. <% } else { %>
  78. <div class="sjs-height-1" id="material-exponent-spread">
  79. </div>
  80. <% } %>
  81. <!--下部分-->
  82. <div class="bcontent-wrap" id="main-bottom">
  83. <div id="main-resize" class="resize-y" r-Type="height" div1=".sjs-height-1" div2=".bcontent-wrap" title="调整大小"><!--调整上下高度条--></div>
  84. <div class="bc-bar mb-1">
  85. <ul class="nav nav-tabs" id="material-exponent-tab">
  86. <li class="nav-item">
  87. <a class="nav-link active" data-toggle="tab" href="#fysum" role="tab">费用统计</a>
  88. </li>
  89. <% if (material.showStageExponent) { %>
  90. <li class="nav-item">
  91. <a class="nav-link " data-toggle="tab" href="#qidetail" role="tab">各期统计</a>
  92. </li>
  93. <% } %>
  94. <li class="nav-item ml-2">
  95. <div class="ml-2">
  96. <!--调整税率-->
  97. <div class="d-inline-flex">
  98. <div class="input-group input-group-sm ">
  99. <div class="input-group-prepend">
  100. <span class="input-group-text" id="basic-addon1">增值税税率</span>
  101. </div>
  102. <input id="rateInput" class="form-control form-control-sm" <% if (material.readOnly || material.editForAudit) { %>disabled<% } %> type="number" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" min="0" step="1" max="100" value="<%- material.exponent_rate %>">
  103. <% if (!material.readOnly || !material.editForAudit) { %>
  104. <div class="dropdown-menu">
  105. <a class="dropdown-item changeRate" href="javascript:void(0);" data-value="9">9%</a>
  106. <a class="dropdown-item changeRate" href="javascript:void(0);" data-value="10">10%</a>
  107. <a class="dropdown-item changeRate" href="javascript:void(0);" data-value="11">11%</a>
  108. </div>
  109. <% } %>
  110. </div>
  111. </div>
  112. </div>
  113. </li>
  114. </ul>
  115. </div>
  116. <div class="tab-content">
  117. <div class="tab-pane active" id="fysum">
  118. <div class="sp-wrap" style="max-width: 800px;min-width: 500px;overflow: auto;">
  119. <div class="col-12 p-0">
  120. <table class="table table-sm table-bordered">
  121. <tr><th rowspan="2"></th><th colspan="2" class="text-center">本期金额</th><th colspan="2" class="text-center">截止本期金额</th></tr>
  122. <tr class="text-center">
  123. <th>材料调差费用 <% if (material.exponentStatus === materialType.exponent_status.shared_noNode) { %><a href="javascript:void(0);" id="ex_expr" data-toggle="tooltip" data-placement="bottom" title="本期价差:<%- material.ex_expr ? material.ex_expr : '' %>"><i class="fa fa-question-circle-o"></i></a><% } %></th>
  124. <th>材料调差费用(含建筑税)</th>
  125. <th>材料调差费用</th>
  126. <th>材料调差费用(含建筑税)</th>
  127. </tr>
  128. <% if (material.exponent_node) { %>
  129. <tbody id="tj_node">
  130. </tbody>
  131. <% } else { %>
  132. <tr id="tj_ledger">
  133. <td class="text-center">标段(不含新增分项)</td>
  134. <td class="text-center"><%= material.ex_tp !== null ? ctx.helper.round(material.ex_tp, material.exponent_decimal.tp) : null %></td>
  135. <td class="text-center"><%= material.ex_tax_tp !== null ? ctx.helper.round(material.ex_tax_tp, material.exponent_decimal.tp) : null %></td>
  136. <td class="text-center"><%= material.ex_tp !== null || material.ex_pre_tp !== null ? ctx.helper.add(ctx.helper.round(material.ex_tp, material.exponent_decimal.tp), material.ex_pre_tp) : null %></td>
  137. <td class="text-center"><%= material.ex_tax_tp !== null || material.ex_tax_pre_tp !== null ? ctx.helper.add(material.ex_tax_pre_tp, ctx.helper.round(material.ex_tax_tp, material.exponent_decimal.tp)) : null %></td>
  138. </tr>
  139. <% } %>
  140. <tr id="total_set">
  141. <td class="text-center">合计</td>
  142. <td class="text-center"><%= material.ex_tp !== null ? ctx.helper.round(material.ex_tp, material.exponent_decimal.tp) : null %></td>
  143. <td class="text-center"><%= material.ex_tax_tp !== null ? ctx.helper.round(material.ex_tax_tp, material.exponent_decimal.tp) : null %></td>
  144. <td class="text-center"><%= material.ex_tp !== null || material.ex_pre_tp !== null ? ctx.helper.add(ctx.helper.round(material.ex_tp, material.exponent_decimal.tp), material.ex_pre_tp) : null %></td>
  145. <td class="text-center"><%= material.ex_tax_tp !== null || material.ex_tax_pre_tp !== null ? ctx.helper.add(material.ex_tax_pre_tp, ctx.helper.round(material.ex_tax_tp, material.exponent_decimal.tp)) : null %></td>
  146. </tr>
  147. </table>
  148. </div>
  149. </div>
  150. </div>
  151. <% if (material.showStageExponent) { %>
  152. <div class="tab-pane" id="qidetail">
  153. <div class="sp-wrap" id="stage-tj-spread"></div>
  154. </div>
  155. <% } %>
  156. </div>
  157. </div>
  158. </div>
  159. <div id="right-view" class="c-body" style="display:none;width: 33%">
  160. <div class="resize-x" id="right-spr" r-Type="width" div1="#left-view" div2="#right-view" title="调整大小" a-type="percent"><!--调整左右高度条--></div>
  161. <div class="tab-content" style="width: 100%">
  162. <div id="tiaochaje" class="tab-pane active">
  163. <div class="sjs-sh-1">
  164. <table class="table table-bordered">
  165. <thead>
  166. <tr><th width="40">选择</th><th>调差基数(P)</th><th>金额</th></tr>
  167. </thead>
  168. <tbody id="calc_basic_select">
  169. <% if (!material.showStageExponent) { %>
  170. <% for (const bq of ex_calc) { %>
  171. <tr>
  172. <td><input type="checkbox" value="<%- bq.code %>" <% if (material.readOnly) { %>disabled<% } %> class="calc_select" <% if (bq.select) { %>checked<% } %>></td>
  173. <td><%- materialType.ex_basic_text[bq.code] %></td><td><% if (bq.code === 'zdy' && !material.readOnly) { %><input type="text" id="calc_zdy" class="form-control form-control-sm" value="<%- bq.value %>"><% } else { %><%- bq.value %><% } %></td>
  174. </tr>
  175. <% } %>
  176. <% } %>
  177. </tbody>
  178. </table>
  179. </div>
  180. </div>
  181. </div>
  182. </div>
  183. </div>
  184. <div class="side-menu">
  185. <!--右侧菜单-->
  186. <ul class="nav flex-column right-nav">
  187. <li class="nav-item">
  188. <a class="nav-link" content="#base-tab" href="javascript: void(0);">调差基数</a>
  189. </li>
  190. </ul>
  191. </div>
  192. </div>
  193. </div>
  194. <div style="display: none">
  195. <img src="/public/images/ellipsis_horizontal.png" id="ellipsis-icon" />
  196. <img src="/public/images/icon-ok.png" id="icon-ok" />
  197. </div>
  198. <script>
  199. const readOnly = <%- material.readOnly %>;
  200. const materialID = <%- material.id %>;
  201. const materialTax = <%- material.material_tax %>;
  202. const materialOrder = <%- material.order %>;
  203. const isStageSelf = parseInt('<%- material.is_stage_self %>');
  204. const showStageExponent = <%- material.showStageExponent %>;
  205. const exponent_nodes = JSON.parse(unescape('<%- escape(JSON.stringify(ctx.material.exponent_node)) %>'));
  206. const editForAudit = <%- material.editForAudit %>;
  207. const materialDecimal = JSON.parse(unescape('<%- escape(JSON.stringify(material.decimal)) %>'));
  208. const materialExponentDecimal = JSON.parse(unescape('<%- escape(JSON.stringify(material.exponent_decimal)) %>'));
  209. const decimal = JSON.parse('<%- JSON.stringify(ctx.tender.info.decimal) %>');
  210. let ex_tp = <%= material.ex_tp !== null ? material.ex_tp : 0 %>;
  211. let ex_tax_tp = <%= material.ex_tax_tp !== null ? material.ex_tax_tp : 0 %>;
  212. const ex_pre_tp = <%= material.ex_pre_tp !== null ? material.ex_pre_tp : 0 %>;
  213. const ex_pre_tp_hs = <%= material.ex_tax_pre_tp !== null ? material.ex_tax_pre_tp : 0 %>;
  214. const materialType = JSON.parse('<%- JSON.stringify(materialType) %>');
  215. let ex_calc = JSON.parse('<%- JSON.stringify(ex_calc) %>');
  216. let ex_calcList = [];
  217. if (showStageExponent || exponent_nodes) {
  218. ex_calcList = JSON.parse(unescape('<%- escape(JSON.stringify(ex_calc)) %>'));
  219. console.log(ex_calcList);
  220. ex_calc = ex_calcList[0].ex_calc;
  221. }
  222. let ex_expr = '<%- material.ex_expr %>';
  223. let materialRate = parseInt('<%- material.exponent_rate %>');
  224. let materialExponentData = JSON.parse(unescape('<%- escape(JSON.stringify(materialExponentData)) %>'));
  225. let materialStageData = showStageExponent ? JSON.parse(unescape('<%- escape(JSON.stringify(materialStageData)) %>')) : [];
  226. let materialExponentNodeData = exponent_nodes ? JSON.parse(unescape('<%- escape(JSON.stringify(materialExponentNodeData)) %>')) : [];
  227. let materialExponentShardData = showStageExponent || exponent_nodes ? JSON.parse(unescape('<%- escape(JSON.stringify(materialExponentShardData)) %>')) : [];
  228. </script>