detail.ejs 18 KB

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