select.ejs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <% include ./settle_menu.ejs %>
  2. <div class="panel-content">
  3. <div class="panel-title">
  4. <div class="title-main d-flex">
  5. <% include ./settle_mini_menu.ejs %>
  6. <div>
  7. <div class="d-inline-block">
  8. <div class="dropdown">
  9. <button class="btn btn-sm btn-light dropdown-toggle text-primary" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  10. <i class="fa fa-list-ol"></i> 显示层级
  11. </button>
  12. <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
  13. <a class="dropdown-item" name="showLevel" tag="1" href="javascript: void(0);">第一层</a>
  14. <a class="dropdown-item" name="showLevel" tag="2" href="javascript: void(0);">第二层</a>
  15. <a class="dropdown-item" name="showLevel" tag="3" href="javascript: void(0);">第三层</a>
  16. <a class="dropdown-item" name="showLevel" tag="4" href="javascript: void(0);">第四层</a>
  17. <a class="dropdown-item" name="showLevel" tag="5" href="javascript: void(0);">第五层</a>
  18. <a class="dropdown-item" name="showLevel" tag="last" href="javascript: void(0);">最底层</a>
  19. </div>
  20. </div>
  21. </div>
  22. </div>
  23. <div class="ml-auto">
  24. </div>
  25. </div>
  26. </div>
  27. <div class="content-wrap pr-46">
  28. <div class="c-header p-0">
  29. </div>
  30. <div class="row w-100 sub-content">
  31. <div id="left-view" class="c-body" style="width: 100%">
  32. <!--上部分-->
  33. <div class="sjs-height-1" id="settle-bills">
  34. </div>
  35. <!--下部分-->
  36. <div class="bcontent-wrap" id="main-bottom">
  37. <div id="main-resize" class="resize-y" r-Type="height" div1="#settle-bills" div2="#main-bottom" store-id="settle-main" store-version="1.0.0" min="100"></div>
  38. <div class="bc-bar mb-1">
  39. <ul class="nav nav-tabs">
  40. <li class="nav-item">
  41. <a class="nav-link active" href="#">计量单元</a>
  42. </li>
  43. </ul>
  44. </div>
  45. <div class="sp-wrap" id="settle-pos">
  46. </div>
  47. </div>
  48. </div>
  49. <div id="right-view" class="c-body" style="display: none; width: 33%;">
  50. <div class="resize-x" id="right-spr" r-Type="width" div1="#left-view" div2="#right-view" title="调整大小" a-type="percent"></div>
  51. <div class="tab-content">
  52. <!--查找定位-->
  53. <div id="search" class="tab-pane tab-select-show">
  54. <div class="sjs-bar-1">
  55. <div class="input-group input-group-sm pb-1">
  56. <div class="input-group-prepend">
  57. <div class="input-group-text">
  58. <input type="radio" name="searchType" id="over"> 超计
  59. </div>
  60. <div class="input-group-text">
  61. <input type="radio" name="searchType" id="empty"> 漏计
  62. </div>
  63. </div>
  64. <input type="text" class="form-control form-control-sm" placeholder="可查找 项目节编号 / 清单编号 /名称" id="keyword">
  65. <div class="input-group-append">
  66. <button class="btn btn-outline-secondary btn-sm" type="button" id="searchLedger">搜索</button>
  67. </div>
  68. </div>
  69. </div>
  70. <div id="search-result" class="sjs-sh-1">
  71. </div>
  72. </div>
  73. </div>
  74. </div>
  75. </div>
  76. <div class="side-menu">
  77. <!--右侧菜单-->
  78. <ul class="nav flex-column right-nav">
  79. <li class="nav-item">
  80. <a class="nav-link" content="#search" href="javascript: void(0);">查找定位</a>
  81. </li>
  82. </ul>
  83. </div>
  84. </div>
  85. <div style="display: none">
  86. <img src="/public/images/ellipsis_horizontal.png" id="ellipsis-icon" />
  87. <img src="/public/images/icon-ok.png" id="icon-ok" />
  88. <img src="/public/images/file_clip.png" id="rela-file-icon">
  89. <img src="/public/images/file_clip_hover.png" id="rela-file-hover">
  90. </div>
  91. </div>
  92. <script>
  93. const readOnly = <%- settle.readOnly %>;
  94. const tenderInfo = JSON.parse(unescape('<%- escape(JSON.stringify(ctx.tender.info)) %>'));
  95. const thousandth = <%- ctx.tender.info.display.thousandth %>;
  96. const thirdParty = JSON.parse('<%- JSON.stringify(thirdParty) %>');
  97. const settleStatusHint = JSON.parse('<%- JSON.stringify(settleStatusHint )%>');
  98. const settleStatus = JSON.parse('<%- JSON.stringify(settleStatus )%>');
  99. const settleStatusColor = JSON.parse('<%- JSON.stringify(settleStatusColor )%>');
  100. const billsSpreadSetting = {
  101. cols: [
  102. {title: '选择', colSpan: '1', rowSpan: '2', field: 'selected', hAlign: 1, width: 30, formatter: '@', cellType: 'checkbox'},
  103. {title: '结算状态', colSpan: '1', rowSpan: '2', field: 'settle_status', hAlign: 1, width: 60, formatter: '@', getValue: function(data) {
  104. //return data.b_code ? '' : (settleStatusHint[data.settle_status] || '')
  105. return settleStatusHint[data.settle_status] || '';
  106. }},
  107. {title: '项目节编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 145, formatter: '@', cellType: 'tree'},
  108. {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'b_code', hAlign: 0, width: 70, formatter: '@'},
  109. {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 185, formatter: '@'},
  110. {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@', cellType: 'unit'},
  111. {title: '单价', colSpan: '1', rowSpan: '2', field: 'unit_price', hAlign: 2, width: 60, type: 'Number'},
  112. {title: '台账|数量', colSpan: '2|1', rowSpan: '1|1', field: 'quantity', hAlign: 2, width: 60, type: 'Number'},
  113. {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'total_price', hAlign: 2, width: 60, type: 'Number'},
  114. {title: '累计合同计量|数量', colSpan: '2|1', rowSpan: '1|1', field: 'end_contract_qty', hAlign: 2, width: 60, type: 'Number'},
  115. {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'end_contract_tp', hAlign: 2, width: 60, type: 'Number'},
  116. {title: '累计数量变更|数量', colSpan: '2|1', rowSpan: '1|1', field: 'end_qc_qty', hAlign: 2, width: 60, type: 'Number'},
  117. {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'end_qc_tp', hAlign: 2, width: 60, type: 'Number'},
  118. {title: '累计完成计量|数量', colSpan: '3|1', rowSpan: '1|1', field: 'end_gather_qty', hAlign: 2, width: 60, type: 'Number'},
  119. {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'end_gather_tp', hAlign: 2, width: 60, type: 'Number'},
  120. {title: '|完成率(%)', colSpan: '1', rowSpan: '|1', field: 'end_final_1_percent', hAlign: 2, width: 80, type: 'Number'},
  121. {title: '图(册)号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 80, formatter: '@'},
  122. {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 100, formatter: '@', cellType: 'ellipsisAutoTip'},
  123. <% if (ctx.session.sessionProject.gxby) { %>
  124. {title: '工序报验', colSpan: '1', rowSpan: '2', field: 'gxby', hAlign: 1, width: 80, formatter: '@'},
  125. <% } %>
  126. <% if (ctx.session.sessionProject.dagl) { %>
  127. {title: '档案管理', colSpan: '1', rowSpan: '2', field: 'dagl', hAlign: 1, width: 80, formatter: '@'},
  128. <% } %>
  129. ],
  130. emptyRows: 0,
  131. headRows: 2,
  132. headRowHeight: [25, 25],
  133. defaultRowHeight: 21,
  134. headerFont: '12px 微软雅黑',
  135. font: '12px 微软雅黑',
  136. frozenColCount: 5,
  137. frozenLineColor: '#93b5e4',
  138. readOnly: true,
  139. getForeColor: function(sheet, data, row, col, foreColor) {
  140. if (col.field === 'settle_status') {
  141. return data ? settleStatusColor[data.settle_status] || foreColor : foreColor;
  142. } else {
  143. return foreColor;
  144. }
  145. }
  146. };
  147. const posSpreadSetting = {
  148. cols: [
  149. {title: '选择', colSpan: '1', rowSpan: '2', field: 'selected', hAlign: 0, width: 30, formatter: '@', cellType: 'checkbox'},
  150. {title: '结算状态', colSpan: '1', rowSpan: '2', field: 'settle_status', hAlign: 1, width: 60, formatter: '@', getValue: function(data) { return settleStatusHint[data.settle_status] || '' }},
  151. {title: '计量单元', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 180, formatter: '@'},
  152. {title: '位置', colSpan: '1', rowSpan: '2', field: 'position', hAlign: 0, width: 60, formatter: '@'},
  153. {title: '台账数量', colSpan: '1', rowSpan: '2', field: 'quantity', hAlign: 2, width: 60, formatter: '@'},
  154. {title: '累计计量|合同', colSpan: '3|1', rowSpan: '1|1', field: 'end_contract_qty', hAlign: 2, width: 60, type: 'Number'},
  155. {title: '|数量变更', colSpan: '|1', rowSpan: '|1', field: 'end_qc_qty', hAlign: 2, width: 80, type: 'Number'},
  156. {title: '|完成', colSpan: '|1', rowSpan: '|1', field: 'end_gather_qty', hAlign: 2, width: 60, type: 'Number'},
  157. {title: '图册号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 80, formatter: '@'},
  158. <% if (ctx.session.sessionProject.gxby) { %>
  159. {title: '工序报验', colSpan: '1', rowSpan: '2', field: 'gxby', hAlign: 1, width: 80, formatter: '@'},
  160. <% } %>
  161. <% if (ctx.session.sessionProject.dagl) { %>
  162. {title: '档案管理', colSpan: '1', rowSpan: '2', field: 'dagl', hAlign: 1, width: 80, formatter: '@'},
  163. <% } %>
  164. ],
  165. emptyRows: 0,
  166. headRows: 2,
  167. headRowHeight: [25, 25],
  168. headColWidth: [30],
  169. defaultRowHeight: 21,
  170. headerFont: '12px 微软雅黑',
  171. font: '12px 微软雅黑',
  172. readOnly: true,
  173. getForeColor: function(sheet, data, row, col, foreColor) {
  174. if (col.field === 'settle_status') {
  175. return data ? settleStatusColor[data.settle_status] || foreColor : foreColor;
  176. } else {
  177. return foreColor;
  178. }
  179. }
  180. };
  181. </script>