detail.ejs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <% include ./sub_menu.ejs %>
  2. <div class="panel-content">
  3. <div class="panel-title">
  4. <div class="title-main d-flex">
  5. <% include ./sub_mini_menu.ejs %>
  6. <div class="d-inline-block">
  7. <div class="dropdown">
  8. <button class="btn btn-sm btn-light dropdown-toggle text-primary" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  9. <i class="fa fa-list-ol"></i> 显示层级
  10. </button>
  11. <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
  12. <a class="dropdown-item" name="showLevel" tag="1" href="javascript: void(0);">第一层</a>
  13. <a class="dropdown-item" name="showLevel" tag="2" href="javascript: void(0);">第二层</a>
  14. <a class="dropdown-item" name="showLevel" tag="3" href="javascript: void(0);">第三层</a>
  15. <a class="dropdown-item" name="showLevel" tag="4" href="javascript: void(0);">第四层</a>
  16. <a class="dropdown-item" name="showLevel" tag="5" href="javascript: void(0);">第五层</a>
  17. <a class="dropdown-item" name="showLevel" tag="last" href="javascript: void(0);">最底层</a>
  18. <!-- <a class="dropdown-item" name="showLevel" tag="leafXmj" href="javascript: void(0);">只显示项目节</a>-->
  19. </div>
  20. </div>
  21. </div>
  22. <% if (ctx.session.sessionUser.is_admin || audit_permission.permission_edit) { %>
  23. <div class="d-inline-block">
  24. <a href="javascript: void(0);" name="base-opr" type="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>
  25. <a href="javascript: void(0);" name="base-opr" type="add-child" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="新增子节点"><i class="fa fa-sign-in" aria-hidden="true"></i></a>
  26. <a href="javascript: void(0);" name="base-opr" type="delete" 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>
  27. <a href="javascript: void(0);" name="base-opr" type="up-level" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
  28. <a href="javascript: void(0);" name="base-opr" type="down-level" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
  29. <a href="javascript: void(0);" name="base-opr" type="down-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
  30. <a href="javascript: void(0);" name="base-opr" type="up-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
  31. <!-- <a href="javascript: void(0);" name="cpc" type="copy" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="复制"><i class="fa fa-files-o" aria-hidden="true"></i></a>-->
  32. <!-- <a href="javascript: void(0);" name="cpc" type="cut" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="剪切"><i class="fa fa-scissors" aria-hidden="true"></i></a>-->
  33. <!-- <a href="javascript: void(0);" name="cpc" type="paste" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>-->
  34. </div>
  35. <% } %>
  36. <div class="ml-auto">
  37. <% if (ctx.session.sessionUser.is_admin) { %>
  38. <a href="javascript:void(0);" data-stid="<%- ctx.contract_tender ? ctx.contractOptions.tid : '' %>" class="btn btn-sm btn-primary get-audits mr-2">成员管理</a>
  39. <a href="#empower" data-toggle="modal" data-target="#empower" class="btn btn-sm btn-primary mr-2">节点授权</a>
  40. <% } %>
  41. <!-- <a href="#cons-relat" data-toggle="modal" data-target="#cons-relat" class="btn btn-primary btn-sm pull-right">关联合同</a>-->
  42. <% if (ctx.session.sessionUser.is_admin || audit_permission.permission_add) { %>
  43. <a href="#cons-add" data-toggle="modal" data-target="#cons-add" class="btn btn-primary btn-sm pull-right mr-2" id="add-cons-btn" style="display: none">新增合同</a>
  44. <% } %>
  45. </div>
  46. </div>
  47. </div>
  48. <div class="content-wrap pr-46">
  49. <div class="c-header p-0">
  50. </div>
  51. <div class="row w-100 sub-content">
  52. <div class="col-12 c-body">
  53. <!--上部分-->
  54. <div class="sjs-height-1 row w-100 sub-content">
  55. <!--左栏-->
  56. <div class="c-body" id="left-view" style="width: 100%">
  57. <div class="sjs-height-1" style="overflow: hidden" id="contract-spread"></div>
  58. </div>
  59. <div class="c-body" id="right-view" style="display: none; width: 30%">
  60. <div class="resize-x" id="right-spr" r-Type="width" div1="#left-view" div2="#right-view" title="调整大小" a-type="percent"><!--调整左右高度条--></div>
  61. <div class="tab-content">
  62. <div id="std-xmj" class="tab-pane">
  63. </div>
  64. </div>
  65. </div>
  66. </div>
  67. <!--下部分-->
  68. <div class="bcontent-wrap mt-1">
  69. <div id="contract-resize" class="resize-y" id="top-spr" r-Type="height" div1=".sjs-height-1" div2=".bcontent-wrap" title="调整大小"><!--调整上下高度条--></div>
  70. <div class="bc-bar mb-1">
  71. <ul class="nav nav-tabs">
  72. <li class="nav-item">
  73. <a class="nav-link active" data-toggle="tab" href="#htdetail" role="tab">合同详情</a>
  74. </li>
  75. <li class="nav-item">
  76. <a class="nav-link " data-toggle="tab" href="#htpay" role="tab">合同<% if (ctx.contract_type === contractConst.type.expenses) { %>支付<% } else if (ctx.contract_type === contractConst.type.income) { %>回款<% } %></a>
  77. </li>
  78. <li class="nav-item">
  79. <a class="nav-link " data-toggle="tab" href="#htfile" role="tab">合同文件</a>
  80. </li>
  81. <li class="ml-auto">
  82. <!-- 结算合同所有tab可见 ,结算后见解锁合同,2者互斥-->
  83. <a href="#cons-unlock" data-toggle="modal" data-target="#cons-unlock" style="display: none;" class="btn btn-success btn-sm pull-right mr-2">解锁合同</a>
  84. <a href="#cons-close" data-toggle="modal" data-target="#cons-close" style="display: none;" class="btn btn-danger btn-sm pull-right mr-2">结算合同</a>
  85. <!-- 合同文件的按钮 -->
  86. <a href="#cons-upfile" data-toggle="modal" data-target="#cons-upfile" style="display: none;" class="btn btn-primary btn-sm pull-right mr-2">上传文件</a>
  87. <!-- 合同支付的按钮 -->
  88. <!-- <a href="#cons-addpay2" data-toggle="modal" data-target="#cons-addpay2" class="btn btn-primary btn-sm pull-right mr-2">添加回款2</a>-->
  89. <a href="javascript:void(0);" id="add_contract_pay_btn" style="display: none;" class="btn btn-primary btn-sm pull-right mr-2">添加<% if (ctx.contract_type === contractConst.type.expenses) { %>支付<% } else if (ctx.contract_type === contractConst.type.income) { %>回款<% } %></a>
  90. <!-- 合同详情的按钮,点击编辑出现确定和取消按钮 -->
  91. <a href="javascript:void(0);" id="cancel_contract_btn" style="display: none" class="btn btn-secondary btn-sm pull-right mr-2">取消</a>
  92. <a href="javascript:void(0);" id="save_contract_btn" style="display: none" class="btn btn-primary btn-sm pull-right mr-2">确定</a>
  93. <a href="javascript:void(0);" id="edit_contract_btn" style="display: none" class="btn btn-primary btn-sm pull-right mr-2">编辑合同</a>
  94. </li>
  95. </ul>
  96. </div>
  97. <div class="tab-content">
  98. <div class="tab-pane active" id="htdetail">
  99. <div class="sp-wrap col-12" style="overflow: auto;">
  100. <table class="table table-sm table-bordered" id="htdetail-table" style="display: none;">
  101. <tr>
  102. <th class="text-center align-middle" width="10%">合同编号</th>
  103. <td width="20%" class="change-input-td" id="htdetail_c_code"></td>
  104. <th class="text-center align-middle"width="10%">合同名称</th>
  105. <td width="30%" class="change-input-td" id="htdetail_name"></td>
  106. <th class="text-center align-middle"width="10%">创建时间</th>
  107. <td width="20%" id="htdetail_create_time"></td>
  108. </tr>
  109. <tr>
  110. <th class="text-center align-middle">合同金额</th>
  111. <td class="change-input-td" id="htdetail_total_price"></td>
  112. <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>累计回款(P)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>累计付款(P)<% } %></th>
  113. <td id="htdetail_pay_price"></td>
  114. <th class="text-center align-middle">累计扣款(K)</th>
  115. <td id="htdetail_debit_price"></td>
  116. </tr>
  117. <tr>
  118. <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>累计应回(S=P-K)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>累计应付(S=P-K)<% } %></th>
  119. <td id="htdetail_yf_price"></td>
  120. <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>累计实回(A)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>累计实付(A)<% } %></th>
  121. <td id="htdetail_sf_price"></td>
  122. <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>待回款(S-A)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>待支付(S-A)<% } %></th>
  123. <td id="htdetail_df_price"></td>
  124. </tr>
  125. <tr>
  126. <th class="text-center align-middle">甲方</th>
  127. <td class="change-input-td" id="htdetail_party_a"></td>
  128. <th class="text-center align-middle">签约人</th>
  129. <td class="change-input-td" id="htdetail_party_a_user"></td>
  130. <th class="text-center align-middle">签订日期</th>
  131. <td class="change-input-td" id="htdetail_sign_date"></td>
  132. </tr>
  133. <tr>
  134. <th class="text-center align-middle">乙方</th>
  135. <td class="change-input-td" id="htdetail_party_b"></td>
  136. <th class="text-center align-middle">签约人</th>
  137. <td class="change-input-td" id="htdetail_party_b_user"></td>
  138. <% if (ctx.contract_type === contractConst.type.expenses) { %>
  139. <th class="text-center align-middle">签约地点</th>
  140. <td class="change-input-td" id="htdetail_address"></td>
  141. <% } else if (ctx.contract_type === contractConst.type.income) { %>
  142. <th class="text-center align-middle">结算书编号</th>
  143. <td id="htdetail_settle_code"></td>
  144. <% } %>
  145. </tr>
  146. <% if (ctx.contract_type === contractConst.type.expenses) { %>
  147. <tr class="contract-expenses">
  148. <th class="text-center align-middle">收款单位</th>
  149. <td class="change-input-td" id="htdetail_entity"></td>
  150. <th class="text-center align-middle">收款开户行</th>
  151. <td class="change-input-td" id="htdetail_bank"></td>
  152. <th class="text-center align-middle">收款账号</th>
  153. <td class="change-input-td" id="htdetail_bank_account"></td>
  154. </tr>
  155. <% } %>
  156. <tr>
  157. <% if (ctx.contract_type === contractConst.type.expenses) { %>
  158. <th class="text-center align-middle">结算书编号</th>
  159. <td id="htdetail_settle_code"></td>
  160. <% } %>
  161. <th class="text-center align-middle">备注</th>
  162. <td class="change-input-td" colspan="<% if (ctx.contract_type === contractConst.type.expenses) { %>3<% } else if (ctx.contract_type === contractConst.type.income) { %>5<% } %>" id="htdetail_remark"></td>
  163. </tr>
  164. </table>
  165. </div>
  166. </div>
  167. <div class="tab-pane" id="htpay">
  168. <div class="sp-wrap" style="overflow: auto">
  169. <table class="table table-sm table-bordered" id="htpay-table" style="display: none;">
  170. <thead>
  171. <tr class="text-center">
  172. <% if (ctx.contract_type === contractConst.type.income) { %>
  173. <th width="5%">序号</th><th width="5%">回款日期</th><th width="10%">回款金额</th><th width="10%">扣款金额</th><th width="10%">应回金额</th><th width="10%">实回金额</th><th width="5%">回款方式</th><th width="5%">创建人</th><th width="10%">创建时间</th><th width="15%">备注</th><th width="5%">附件</th><th width="10%">操作</th>
  174. <% } else if (ctx.contract_type === contractConst.type.expenses) { %>
  175. <th width="5%">序号</th><th width="5%">支付日期</th><th width="10%">付款金额</th><th width="10%">扣款金额</th><th width="10%">应付金额</th><th width="10%">实付金额</th><th width="5%">支付方式</th><th width="5%">创建人</th><th width="10%">创建时间</th><th width="15%">备注</th><th width="5%">附件</th><th width="10%">操作</th>
  176. <% } %>
  177. </tr>
  178. </thead>
  179. <tbody>
  180. </tbody>
  181. </table>
  182. </div>
  183. </div>
  184. <div class="tab-pane" id="htfile">
  185. <div class="sp-wrap" style="overflow: auto">
  186. <table class="table table-sm table-bordered" id="htfile-table" style="display: none;">
  187. <thead>
  188. <tr class="text-center">
  189. <th width="5%">序号</th><th>名称</th><th width="5%">上传人</th><th width="15%">上传时间</th><th width="15%">操作</th>
  190. </tr>
  191. </thead>
  192. <tbody>
  193. </tbody>
  194. </table>
  195. </div>
  196. </div>
  197. </div>
  198. </div>
  199. </div>
  200. <div class="side-menu">
  201. <!--右侧菜单-->
  202. <ul class="nav flex-column right-nav">
  203. <li class="nav-item">
  204. <a class="nav-link" content="#std-xmj" href="javascript: void(0);">项目节</a>
  205. </li>
  206. </ul>
  207. </div>
  208. </div>
  209. </div>
  210. </div>
  211. <script>
  212. const user_id = <%- ctx.session.sessionUser.accountId %>;
  213. const is_admin = <%- ctx.session.sessionUser.is_admin %>;
  214. const permission_edit = <%- (ctx.session.sessionUser.is_admin || audit_permission.permission_edit) %>;
  215. const permission_add = <%- (ctx.session.sessionUser.is_admin || audit_permission.permission_add) %>;
  216. const permission_att = <%- (ctx.session.sessionUser.is_admin || audit_permission.permission_att) %>;
  217. const permission_edit_contract = <%- (ctx.session.sessionUser.is_admin || audit_permission.permission_edit_contract) %>;
  218. const permission_add_pay = <%- (ctx.session.sessionUser.is_admin || audit_permission.permission_add_pay) %>;
  219. const contract_type = <%- contract_type %>;
  220. const whiteList = JSON.parse(unescape('<%- escape(JSON.stringify(whiteList)) %>'));
  221. const contractConst = JSON.parse(unescape('<%- escape(JSON.stringify(contractConst)) %>'));
  222. let contractTreeAudits = JSON.parse(unescape('<%- escape(JSON.stringify(contractTreeAudits)) %>'));
  223. const thisUrl = JSON.parse(unescape('<%- escape(JSON.stringify(thisUrl)) %>'));
  224. const stdChapters = JSON.parse(unescape('<%- escape(JSON.stringify(stdChapters)) %>'));
  225. let contractPays = [];
  226. </script>