dashboard.ejs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
  6. <meta http-equiv="x-ua-compatible" content="ie=edge">
  7. <title>待审批-计量支付</title>
  8. <link rel="stylesheet" href="/public/css/bootstrap/bootstrap.min.css">
  9. <link rel="stylesheet" href="/public/css/wap/main.css">
  10. <link rel="stylesheet" href="/public/css/toast.css">
  11. <link rel="stylesheet" href="/public/css/font-awesome/font-awesome.min.css">
  12. <link rel="stylesheet" href="/public/css/toastr.css">
  13. <link rel="shortcut icon" href="/public/images/favicon.ico">
  14. <style>
  15. body {
  16. padding: 0;
  17. }
  18. .badge {
  19. height: 18px;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <%
  25. function getBuildName(dealInfo) {
  26. if (!dealInfo) return '';
  27. try {
  28. return JSON.parse(dealInfo).buildName || '';
  29. } catch (err) {
  30. return '';
  31. }
  32. }
  33. %>
  34. <div class="container">
  35. <!--顶部-->
  36. <nav class="fixed-top bg-dark">
  37. <div class="my-2 d-flex justify-content-between">
  38. <span class="text-white ml-3">待审批</span>
  39. <div class="mr-3">
  40. <div class="dropdown">
  41. <button class="btn btn-sm btn-light dropdown-toggle" type="button" data-toggle="dropdown">
  42. <%- ctx.session.sessionUser.name.substr(ctx.session.sessionUser.name.length > 2 ? ctx.session.sessionUser.name.length - 2 : 0) %>
  43. </button>
  44. <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
  45. <a class="dropdown-item" href="/wap/logout">退出登录</a>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </nav>
  51. <!--待审批期列表-->
  52. <div class="py-6">
  53. <% if (auditStages.length !== 0 || auditChanges.length !== 0 || auditRevise.length !== 0 || auditAdvance.length !== 0 || auditChangeProjects.length !== 0|| auditChangeApplys.length !== 0 || auditChangePlans.length !== 0 || auditMaterials.length !== 0 || auditQualityInspections.length !== 0 || auditSafeInspections.length !== 0) { %>
  54. <% for (const audit of auditStages) { %>
  55. <div class="card mb-3">
  56. <div class="card-header d-flex justify-content-between">
  57. <span><%- getBuildName(audit.deal_info) %></span>
  58. <span class="badge badge-pill bg-new-stage text-new-stage">计量期</span>
  59. </div>
  60. <div class="bg-light p-2 px-3"><b><%- audit.name %></b></div>
  61. <div class="card-body">
  62. <div class="d-flex justify-content-between"><span>第<%- audit.order %>期</span><span><%- audit.s_time %></span></div>
  63. <div class="my-2">
  64. <table class="table table-sm table-bordered">
  65. <tr><th>本期合同计量</th><td class="text-right"><%- audit.contract_tp ? audit.contract_tp : 0 %></td></tr>
  66. <tr><th>本期数量变更计量</th><td class="text-right"><%- audit.qc_tp ? audit.qc_tp : 0 %></td></tr>
  67. <tr><th>本期完成计量</th><td class="text-right"><%- audit.gather_tp ? audit.gather_tp : 0 %></td></tr>
  68. <tr><th>截止上期完成计量</th><td class="text-right"><%- audit.pre_gather_tp ? audit.pre_gather_tp : 0 %></td></tr>
  69. <tr><th>截止本期完成计量</th><td class="text-right"><%- audit.end_gather_tp ? audit.end_gather_tp : 0 %></td></tr>
  70. <% if (!audit.closeWapYfSf) { %>
  71. <tr><th>本期应付</th><td class="text-right"><%- audit.yf_tp ? audit.yf_tp : 0 %></td></tr>
  72. <tr><th>本期实付</th><td class="text-right"><%- audit.sf_tp ? audit.sf_tp : 0 %></td></tr>
  73. <% } %>
  74. </table>
  75. </div>
  76. <div class="">
  77. <a href="/wap/tender/<%- audit.tid %>/measure/stage/<%- audit.order %>" class="btn btn-block btn-success">审批</a>
  78. </div>
  79. </div>
  80. </div>
  81. <% } %>
  82. <% for (const revise of auditRevise) { %>
  83. <div class="card mb-3">
  84. <div class="card-header d-flex justify-content-between">
  85. <span><%- getBuildName(revise.deal_info) %></span>
  86. <span class="badge badge-pill bg-new-revise text-new-revise">台账修订</span>
  87. </div>
  88. <div class="bg-light p-2 px-3"><b><%- revise.t_name %></b></div>
  89. <div class="card-body">
  90. <div class="d-flex justify-content-between"><span>第<%- revise.corder %>次修订</span></div>
  91. <div class="my-2">
  92. <table class="table table-sm table-bordered">
  93. <tr><th width="90">修订时间</th><td class="text-right"><%- ctx.moment(revise.in_time).format('YYYY-MM-DD') %></td></tr>
  94. <tr><th>修订人</th><td class="text-right"><%- revise.yb_name %></td></tr>
  95. <tr><th>修订详情</th><td class=""><% if (!revise.content || revise.content.length <= 22) { %><%- revise.content %><% } else { %><%- revise.content.substring(0,22) %><a class="show-content" data-content="<%- revise.content %>" href="javascript:void(0);">展开更多</a><% } %></td></tr>
  96. </table>
  97. </div>
  98. <div class="">
  99. <a href="/wap/tender/<%- revise.t_id %>/revise/<%- revise.id %>/info" class="btn btn-block btn-success">审批</a>
  100. </div>
  101. </div>
  102. </div>
  103. <% } %>
  104. <% for (const change of auditChanges) { %>
  105. <div class="card mb-3">
  106. <div class="card-header d-flex justify-content-between">
  107. <span><%- getBuildName(change.deal_info) %></span>
  108. <span class="badge badge-pill bg-new-change text-new-change">工程变更</span>
  109. </div>
  110. <div class="bg-light p-2 px-3"><b><%- change.name %></b></div>
  111. <div class="card-body">
  112. <div class="d-flex justify-content-between"><span><%- change.ccode %></span></div>
  113. <div class="my-2">
  114. <table class="table table-sm table-bordered">
  115. <tr><th width="90">工程名称</th><td><%- change.cname %></td></tr>
  116. <tr><th>变更性质</th><td><% for (const q in changeConst.quality) { %>
  117. <% const cQuality = changeConst.quality[q] %><% if (cQuality.value === change.quality) { %><%- cQuality.name %><% } %><% } %></td></tr>
  118. <tr><th>变更金额</th><td class="text-right"><%- ctx.helper.roundNum(change.total_price, JSON.parse(change.decimal).tp) %></td></tr>
  119. </table>
  120. </div>
  121. <div class="">
  122. <a href="/wap/tender/<%- change.tid %>/change/<%- change.cid %>/information#shenpi" class="btn btn-block btn-success">审批</a>
  123. </div>
  124. </div>
  125. </div>
  126. <% } %>
  127. <% for (const change of auditChangeProjects) { %>
  128. <div class="card mb-3">
  129. <div class="card-header d-flex justify-content-between">
  130. <span><%- getBuildName(change.deal_info) %></span>
  131. <span class="badge badge-pill bg-new-changeProject text-new-changeProject">变更立项</span>
  132. </div>
  133. <div class="bg-light p-2 px-3"><b><%- change.t_name %></b></div>
  134. <div class="card-body">
  135. <div class="d-flex justify-content-between"><span><%- change.code %></span></div>
  136. <div class="my-2">
  137. <table class="table table-sm table-bordered">
  138. <tr><th width="90">工程名称</th><td><%- change.name %></td></tr>
  139. <tr><th>变更性质</th><td><%- change.quality %></td></tr>
  140. <tr><th>增减金额</th><td class="text-right"><%- change.crease_price %></td></tr>
  141. </table>
  142. </div>
  143. <div class="">
  144. <a href="/wap/tender/<%- change.tid %>/change/project/<%- change.id %>/information#shenpi" class="btn btn-block btn-success">审批</a>
  145. </div>
  146. </div>
  147. </div>
  148. <% } %>
  149. <% for (const change of auditChangeApplys) { %>
  150. <div class="card mb-3">
  151. <div class="card-header d-flex justify-content-between">
  152. <span><%- getBuildName(change.deal_info) %></span>
  153. <span class="badge badge-pill bg-new-changeApply text-new-changeApply">变更申请</span>
  154. </div>
  155. <div class="bg-light p-2 px-3"><b><%- change.t_name %></b></div>
  156. <div class="card-body">
  157. <div class="d-flex justify-content-between"><span><%- change.code %></span></div>
  158. <div class="my-2">
  159. <table class="table table-sm table-bordered">
  160. <tr><th width="90">工程名称</th><td><%- change.name %></td></tr>
  161. <tr><th>变更性质</th><td><%- change.quality %></td></tr>
  162. <tr><th>增减金额</th><td class="text-right"><%- change.crease_price %></td></tr>
  163. </table>
  164. </div>
  165. <div class="">
  166. <a href="/wap/tender/<%- change.tid %>/change/apply/<%- change.id %>/information#shenpi" class="btn btn-block btn-success">审批</a>
  167. </div>
  168. </div>
  169. </div>
  170. <% } %>
  171. <% for (const change of auditChangePlans) { %>
  172. <div class="card mb-3">
  173. <div class="card-header d-flex justify-content-between">
  174. <span><%- getBuildName(change.deal_info) %></span>
  175. <span class="badge badge-pill bg-new-changePlan text-new-changePlan">变更方案</span>
  176. </div>
  177. <div class="bg-light p-2 px-3"><b><%- change.t_name %></b></div>
  178. <div class="card-body">
  179. <div class="d-flex justify-content-between"><span><%- change.code %></span></div>
  180. <div class="my-2">
  181. <table class="table table-sm table-bordered">
  182. <tr><th width="90">工程名称</th><td><%- change.name %></td></tr>
  183. <tr><th>变更性质</th><td><%- change.quality %></td></tr>
  184. <tr><th>变更金额</th><td class="text-right"><%- ctx.helper.roundNum(change.total_price, JSON.parse(change.decimal).tp) %></td></tr>
  185. </table>
  186. </div>
  187. <div class="">
  188. <a href="/wap/tender/<%- change.tid %>/change/plan/<%- change.id %>/information#shenpi" class="btn btn-block btn-success">审批</a>
  189. </div>
  190. </div>
  191. </div>
  192. <% } %>
  193. <% for (const advance of auditAdvance) { %>
  194. <div class="card mb-3">
  195. <div class="card-header d-flex justify-content-between">
  196. <span><%- getBuildName(advance.deal_info) %></span>
  197. <span class="badge badge-pill bg-new-advance text-new-advance">预付款</span>
  198. </div>
  199. <div class="bg-light p-2 px-3"><b><%- advance.name %></b></div>
  200. <div class="card-body">
  201. <div class="d-flex justify-content-between"><span><%- advanceConst.typeCol[advance.type].name %>-第<%- advance.order %>期</span><span></span></div>
  202. <div class="my-2">
  203. <table class="table table-sm table-bordered">
  204. <% const advancePayTotal = JSON.parse(advance.deal_param)[advanceConst.typeCol[advance.type].key + 'Advance']; %>
  205. <tr><th>签约预付款</th><td class="text-right"><%- ctx.helper.formatMoney(advancePayTotal, ',', parseFloat(advancePayTotal).toString().split('.')[1] && parseFloat(advancePayTotal).toString().split('.')[1].length || 0) %></td></tr>
  206. <tr><th>本期支付比例</th><td class="text-right"><%- advance.pay_ratio %>%</td></tr>
  207. <tr><th>本期金额</th><td class="text-right"><%- advance.cur_amount %></td></tr>
  208. <tr><th>截止本期金额</th><td class="text-right"><%- advance.prev_total_amount %></td></tr>
  209. </table>
  210. </div>
  211. <div class="">
  212. <a href="/wap/tender/<%- advance.tid %>/advance/<%- advance.id %>/detail" class="btn btn-block btn-success">审批</a>
  213. </div>
  214. </div>
  215. </div>
  216. <% } %>
  217. <% for (const audit of auditMaterials) { %>
  218. <div class="card mb-3">
  219. <div class="card-header d-flex justify-content-between">
  220. <span><%- getBuildName(audit.deal_info) %></span>
  221. <span class="badge badge-pill bg-new-material text-new-material">材料调差</span>
  222. </div>
  223. <div class="bg-light p-2 px-3"><b><%- audit.name %></b></div>
  224. <div class="card-body">
  225. <div class="d-flex justify-content-between"><span>第<%- audit.order %>期</span></div>
  226. <div class="my-2">
  227. <table class="table table-sm table-bordered">
  228. <tr><th>计量期</th><td class="text-right">第<%- audit.s_order %>期</td></tr>
  229. <tr><th>信息价价差费用</th><td class="text-right"><%- audit.m_tp !== null ? ctx.helper.round(audit.m_tp, audit.decimal.tp) : 0 %></td></tr>
  230. <% if (audit.material_tax) { %>
  231. <tr><th>信息价(含材料税)</th><td class="text-right"><%- audit.m_tax_tp !== null ? audit.m_tax_tp : 0 %></td></tr>
  232. <% } else { %>
  233. <tr><th>信息价(含建筑税)</th><td class="text-right"><%- audit.rate_tp !== null ? audit.rate_tp : 0 %></td></tr>
  234. <% } %>
  235. <tr><th>指数法价差费用</th><td class="text-right"><%- audit.ex_tp !== null ? ctx.helper.round(audit.ex_tp, audit.decimal.tp) : 0 %></td></tr>
  236. <tr><th>指数法(含建筑税)</th><td class="text-right"><%- audit.ex_tp !== null ? ctx.helper.round(ctx.helper.mul(audit.ex_tp, 1+audit.exponent_rate/100), audit.decimal.tp) : 0 %></td></tr>
  237. </table>
  238. </div>
  239. <div class="">
  240. <a href="/wap/tender/<%- audit.tid %>/measure/material/<%- audit.order %>" class="btn btn-block btn-success">审批</a>
  241. </div>
  242. </div>
  243. </div>
  244. <% } %>
  245. <% for (const inspection of auditQualityInspections) { %>
  246. <div class="card mb-3">
  247. <div class="card-header d-flex justify-content-between">
  248. <span><%- getBuildName(inspection.deal_info) %></span>
  249. <span class="badge badge-pill bg-new-inspection text-new-inspection">质量巡检</span>
  250. </div>
  251. <div class="bg-light p-2 px-3"><b><%- inspection.t_name %></b></div>
  252. <div class="card-body">
  253. <div class="d-flex justify-content-between"><span><%- inspection.mcode %></span></div>
  254. <div class="my-2">
  255. <table class="table table-sm table-bordered">
  256. <tr><th width="90">检查项目</th><td><%- inspection.check_item.replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, ' ') %></td></tr>
  257. <tr><th>检查日期</th><td><%- ctx.moment(inspection.check_date).format('YYYY-MM-DD') %></td></tr>
  258. </table>
  259. </div>
  260. <div class="">
  261. <a href="/wap/sp/<%- inspection.spid %>/quality/tender/<%- inspection.tid %>/inspection/<%- inspection.qiid %>/information#shenpi" class="btn btn-block btn-success"><%- inspection.mstatus !== 2 ? '整改' : '审批' %></a>
  262. </div>
  263. </div>
  264. </div>
  265. <% } %>
  266. <% for (const inspection of auditSafeInspections) { %>
  267. <div class="card mb-3">
  268. <div class="card-header d-flex justify-content-between">
  269. <span><%- getBuildName(inspection.deal_info) %></span>
  270. <span class="badge badge-pill bg-new-inspection text-new-inspection">安全巡检</span>
  271. </div>
  272. <div class="bg-light p-2 px-3"><b><%- inspection.t_name %></b></div>
  273. <div class="card-body">
  274. <div class="d-flex justify-content-between"><span><%- inspection.mcode %></span></div>
  275. <div class="my-2">
  276. <table class="table table-sm table-bordered">
  277. <tr><th width="90">检查项目</th><td><%- inspection.check_item.replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, ' ') %></td></tr>
  278. <tr><th>检查日期</th><td><%- ctx.moment(inspection.check_date).format('YYYY-MM-DD') %></td></tr>
  279. </table>
  280. </div>
  281. <div class="">
  282. <a href="/wap/sp/<%- inspection.spid %>/safe/tender/<%- inspection.tid %>/inspection/<%- inspection.qiid %>/information#shenpi" class="btn btn-block btn-success"><%- inspection.mstatus !== 2 ? '整改' : '审批' %></a>
  283. </div>
  284. </div>
  285. </div>
  286. <% } %>
  287. <% } else { %>
  288. <h3 class="text-center text-muted">暂无待审批期计量</h3>
  289. <% } %>
  290. </div>
  291. <!--底栏菜单-->
  292. <nav class="fixed-bottom navbar-dark bg-light border-top">
  293. <ul class="nav nav-fill my-2">
  294. <li class="nav-item">
  295. <a class="nav-link active show-loading" href="/wap/dashboard"><i class="fa fa-check-square-o"></i> 待审批</a>
  296. </li>
  297. <li class="nav-item">
  298. <a class="nav-link text-muted show-loading" href="/wap/subproj"><i class="fa fa-list-ul"></i> 项目</a>
  299. </li>
  300. </ul>
  301. </nav>
  302. </div>
  303. <!-- JS. -->
  304. <script src="/public/js/jquery/jquery-3.2.1.min.js"></script>
  305. <script src="/public/js/popper/popper.min.js"></script>
  306. <script src="/public/js/bootstrap/bootstrap.min.js"></script>
  307. <script src="/public/js/cookies.js"></script>
  308. <script src="/public/js/toastr.min.js"></script>
  309. <script src="/public/js/wap/global.js"></script>
  310. <script>
  311. $(function () {
  312. $('.show-content').on('click', function () {
  313. $(this).parents('td').html($(this).data('content'));
  314. });
  315. })
  316. </script>
  317. </body>
  318. </html>