detail.ejs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  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="#col-set" data-toggle="modal" data-target="#col-set" class="btn btn-sm btn-primary mr-2">列设置</a>
  39. <a href="javascript:void(0);" data-stid="<%- ctx.contract_tender ? ctx.contractOptions.tid : '' %>" class="btn btn-sm btn-primary get-audits mr-2">成员管理</a>
  40. <a href="#empower" data-toggle="modal" data-target="#empower" class="btn btn-sm btn-primary mr-2">节点授权</a>
  41. <% } %>
  42. <!-- <a href="#cons-relat" data-toggle="modal" data-target="#cons-relat" class="btn btn-primary btn-sm pull-right">关联合同</a>-->
  43. <% if (ctx.session.sessionUser.is_admin || audit_permission.permission_add) { %>
  44. <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>
  45. <% } %>
  46. </div>
  47. </div>
  48. </div>
  49. <div class="content-wrap pr-46">
  50. <div class="c-header p-0">
  51. </div>
  52. <div class="row w-100 sub-content">
  53. <div class="col-12 c-body">
  54. <!--上部分-->
  55. <div class="sjs-height-1 row w-100 sub-content">
  56. <!--左栏-->
  57. <div class="c-body" id="left-view" style="width: 100%">
  58. <div class="sjs-height-1" style="overflow: hidden" id="contract-spread"></div>
  59. </div>
  60. <div class="c-body" id="right-view" style="display: none; width: 30%">
  61. <div class="resize-x" id="right-spr" r-Type="width" div1="#left-view" div2="#right-view" title="调整大小" a-type="percent"><!--调整左右高度条--></div>
  62. <div class="tab-content">
  63. <div id="std-xmj" class="tab-pane">
  64. </div>
  65. </div>
  66. </div>
  67. </div>
  68. <!--下部分-->
  69. <div class="bcontent-wrap mt-1">
  70. <div id="contract-resize" class="resize-y" id="top-spr" r-Type="height" div1=".sjs-height-1" div2=".bcontent-wrap" title="调整大小"><!--调整上下高度条--></div>
  71. <div class="bc-bar mb-1">
  72. <ul class="nav nav-tabs">
  73. <li class="nav-item">
  74. <a class="nav-link active" data-toggle="tab" href="#htdetail" role="tab">合同详情</a>
  75. </li>
  76. <li class="nav-item">
  77. <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>
  78. </li>
  79. <li class="nav-item">
  80. <a class="nav-link " data-toggle="tab" href="#htfile" role="tab">合同文件</a>
  81. </li>
  82. <li class="ml-auto">
  83. <!-- 结算合同所有tab可见 ,结算后见解锁合同,2者互斥-->
  84. <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>
  85. <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>
  86. <!-- 合同文件的按钮 -->
  87. <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>
  88. <!-- 合同支付的按钮 -->
  89. <!-- <a href="#cons-addpay2" data-toggle="modal" data-target="#cons-addpay2" class="btn btn-primary btn-sm pull-right mr-2">添加回款2</a>-->
  90. <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>
  91. <!-- 合同详情的按钮,点击编辑出现确定和取消按钮 -->
  92. <a href="javascript:void(0);" id="cancel_contract_btn" style="display: none" class="btn btn-secondary btn-sm pull-right mr-2">取消</a>
  93. <a href="javascript:void(0);" id="save_contract_btn" style="display: none" class="btn btn-primary btn-sm pull-right mr-2">确定</a>
  94. <a href="javascript:void(0);" id="edit_contract_btn" style="display: none" class="btn btn-primary btn-sm pull-right mr-2">编辑合同</a>
  95. </li>
  96. </ul>
  97. </div>
  98. <div class="tab-content">
  99. <div class="tab-pane active" id="htdetail">
  100. <div class="sp-wrap col-12" style="overflow: auto;">
  101. <table class="table table-sm table-bordered" id="htdetail-table" style="display: none;">
  102. <tr>
  103. <th class="text-center align-middle" width="10%">合同编号</th>
  104. <td width="20%" class="change-input-td" id="htdetail_c_code"></td>
  105. <th class="text-center align-middle"width="10%">合同名称</th>
  106. <td width="30%" class="change-input-td" id="htdetail_name"></td>
  107. <th class="text-center align-middle"width="10%">创建时间</th>
  108. <td width="20%" id="htdetail_create_time"></td>
  109. </tr>
  110. <tr>
  111. <th class="text-center align-middle">合同金额</th>
  112. <td class="change-input-td" id="htdetail_total_price"></td>
  113. <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>累计回款(P)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>累计付款(P)<% } %></th>
  114. <td id="htdetail_pay_price"></td>
  115. <th class="text-center align-middle">累计扣款(K)</th>
  116. <td id="htdetail_debit_price"></td>
  117. </tr>
  118. <tr>
  119. <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>
  120. <td id="htdetail_yf_price"></td>
  121. <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>累计实回(A)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>累计实付(A)<% } %></th>
  122. <td id="htdetail_sf_price"></td>
  123. <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>
  124. <td id="htdetail_df_price"></td>
  125. </tr>
  126. <tr>
  127. <th class="text-center align-middle">甲方</th>
  128. <td class="change-input-td" id="htdetail_party_a"></td>
  129. <th class="text-center align-middle">签约人</th>
  130. <td class="change-input-td" id="htdetail_party_a_user"></td>
  131. <th class="text-center align-middle">签订日期</th>
  132. <td class="change-input-td" id="htdetail_sign_date"></td>
  133. </tr>
  134. <tr>
  135. <th class="text-center align-middle">乙方</th>
  136. <td class="change-input-td" id="htdetail_party_b"></td>
  137. <th class="text-center align-middle">签约人</th>
  138. <td class="change-input-td" id="htdetail_party_b_user"></td>
  139. <% if (ctx.contract_type === contractConst.type.expenses) { %>
  140. <th class="text-center align-middle">签约地点</th>
  141. <td class="change-input-td" id="htdetail_address"></td>
  142. <% } else if (ctx.contract_type === contractConst.type.income) { %>
  143. <th class="text-center align-middle">结算书编号</th>
  144. <td id="htdetail_settle_code"></td>
  145. <% } %>
  146. </tr>
  147. <% if (ctx.contract_type === contractConst.type.expenses) { %>
  148. <tr class="contract-expenses">
  149. <th class="text-center align-middle">收款单位</th>
  150. <td class="change-input-td" id="htdetail_entity"></td>
  151. <th class="text-center align-middle">收款开户行</th>
  152. <td class="change-input-td" id="htdetail_bank"></td>
  153. <th class="text-center align-middle">收款账号</th>
  154. <td class="change-input-td" id="htdetail_bank_account"></td>
  155. </tr>
  156. <% } %>
  157. <tr>
  158. <% if (ctx.contract_type === contractConst.type.expenses) { %>
  159. <th class="text-center align-middle">结算书编号</th>
  160. <td id="htdetail_settle_code"></td>
  161. <% } %>
  162. <th class="text-center align-middle">备注</th>
  163. <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>
  164. </tr>
  165. </table>
  166. </div>
  167. </div>
  168. <div class="tab-pane" id="htpay">
  169. <div class="sp-wrap" style="overflow: auto">
  170. <table class="table table-sm table-bordered" id="htpay-table" style="display: none;">
  171. <thead>
  172. <tr class="text-center">
  173. <% if (ctx.contract_type === contractConst.type.income) { %>
  174. <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>
  175. <% } else if (ctx.contract_type === contractConst.type.expenses) { %>
  176. <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>
  177. <% } %>
  178. </tr>
  179. </thead>
  180. <tbody>
  181. </tbody>
  182. </table>
  183. </div>
  184. </div>
  185. <div class="tab-pane" id="htfile">
  186. <div class="sp-wrap" style="overflow: auto">
  187. <table class="table table-sm table-bordered" id="htfile-table" style="display: none;">
  188. <thead>
  189. <tr class="text-center">
  190. <th width="5%">序号</th><th>名称</th><th width="5%">上传人</th><th width="15%">上传时间</th><th width="15%">操作</th>
  191. </tr>
  192. </thead>
  193. <tbody>
  194. </tbody>
  195. </table>
  196. </div>
  197. </div>
  198. </div>
  199. </div>
  200. </div>
  201. <div class="side-menu">
  202. <!--右侧菜单-->
  203. <ul class="nav flex-column right-nav">
  204. <li class="nav-item">
  205. <a class="nav-link" content="#std-xmj" href="javascript: void(0);">项目节</a>
  206. </li>
  207. </ul>
  208. </div>
  209. </div>
  210. </div>
  211. </div>
  212. <script>
  213. const user_id = <%- ctx.session.sessionUser.accountId %>;
  214. const is_admin = <%- ctx.session.sessionUser.is_admin %>;
  215. const permission_edit = <%- (ctx.session.sessionUser.is_admin || audit_permission.permission_edit) %>;
  216. const permission_add = <%- (ctx.session.sessionUser.is_admin || audit_permission.permission_add) %>;
  217. const permission_att = <%- (ctx.session.sessionUser.is_admin || audit_permission.permission_att) %>;
  218. const permission_edit_contract = <%- (ctx.session.sessionUser.is_admin || audit_permission.permission_edit_contract) %>;
  219. const permission_add_pay = <%- (ctx.session.sessionUser.is_admin || audit_permission.permission_add_pay) %>;
  220. const contract_type = <%- contract_type %>;
  221. const whiteList = JSON.parse(unescape('<%- escape(JSON.stringify(whiteList)) %>'));
  222. const contractConst = JSON.parse(unescape('<%- escape(JSON.stringify(contractConst)) %>'));
  223. let contractTreeAudits = JSON.parse(unescape('<%- escape(JSON.stringify(contractTreeAudits)) %>'));
  224. const colSet = JSON.parse(unescape('<%- escape(JSON.stringify(colSet)) %>'));
  225. const thisUrl = JSON.parse(unescape('<%- escape(JSON.stringify(thisUrl)) %>'));
  226. const stdChapters = JSON.parse(unescape('<%- escape(JSON.stringify(stdChapters)) %>'));
  227. let contractPays = [];
  228. </script>