s2b.ejs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <% include ./sub_menu.ejs %>
  2. <div class="panel-content">
  3. <div class="panel-title">
  4. <div class="title-main">
  5. <h2>API设置</h2>
  6. </div>
  7. </div>
  8. <div class="content-wrap">
  9. <div class="c-body">
  10. <div class="sjs-height-0">
  11. <nav class="nav nav-tabs m-3" role="tablist">
  12. <a class="nav-item nav-link active" data-toggle="tab" href="#user-purview" role="tab">业务配置</a>
  13. <a class="nav-item nav-link" data-toggle="tab" href="#user-list" role="tab">标段列表</a>
  14. </nav>
  15. <div class="m-3">
  16. <div class="tab-content">
  17. <div class="tab-pane active" id="user-purview">
  18. <div class="col-4">
  19. <legend>工序报验</legend>
  20. <table class="table table-hover table-bordered">
  21. <thead><tr><th>值</th><th>名称</th><th>允许计量</th><th>计量比例</th></tr></thead>
  22. <tbody id="gxby_list">
  23. <% for (const s of ctx.session.sessionProject.gxby_status) { %>
  24. <tr>
  25. <td><%- s.value %></td>
  26. <td><%- s.name %></td>
  27. <td>
  28. <div class="form-check form-check-inline">
  29. <input class="form-check-input" type="checkbox" id="inlineCheckbox-g<%- s.value %>" <% if (s.limit) { %>checked<% } %> status="<%- s.value %>" onchange="updateStatusLimit(this, 'gxby');">
  30. <label class="form-check-label" for="inlineCheckbox-g<%- s.value %>"></label>
  31. </div>
  32. </td>
  33. <% if (s.ratio === undefined) { %>
  34. <td>-</td>
  35. <% } else { %>
  36. <td>
  37. <div class="input-group input-group-sm" style="width:90px">
  38. <input type="number" class="form-control" max="100" min="0" step="2" value="<%- s.ratio || 0 %>" status="<%- s.value %>" onchange="updateStatusRatio(this, 'gxby');">
  39. <div class="input-group-append">
  40. <span class="input-group-text">%</span>
  41. </div>
  42. </div>
  43. </td>
  44. <% } %>
  45. </tr>
  46. <% } %>
  47. </tbody>
  48. </table>
  49. <legend>档案管理</legend>
  50. <table class="table table-hover table-bordered">
  51. <thead><tr><th>值</th><th>名称</th><th>允许计量</th><th>计量比例</th></tr></thead>
  52. <% for (const s of ctx.session.sessionProject.dagl_status) { %>
  53. <tbody id="dagl_list">
  54. <tr>
  55. <td><%- s.value %></td>
  56. <td><%- s.name %></td>
  57. <td>
  58. <div class="form-check form-check-inline">
  59. <input class="form-check-input" type="checkbox" id="inlineCheckbox-d<%- s.value %>" <% if (s.limit) { %>checked<% } %> status="<%- s.value %>" onchange="updateStatusLimit(this, 'dagl');">
  60. <label class="form-check-label" for="inlineCheckbox-d<%- s.value %>"></label>
  61. </div>
  62. </td>
  63. <% if (s.ratio === undefined) { %>
  64. <td>-</td>
  65. <% } else { %>
  66. <td>
  67. <div class="input-group input-group-sm" style="width:90px">
  68. <input type="number" class="form-control" max="100" min="0" step="2" value="<%- s.ratio || 0 %>" status="<%- s.value %>" onchange="updateStatusRatio(this, 'dagl');">
  69. <div class="input-group-append">
  70. <span class="input-group-text">%</span>
  71. </div>
  72. </div>
  73. </td>
  74. <% } %>
  75. </tr>
  76. <% } %>
  77. </tbody>
  78. </table>
  79. </div>
  80. </div>
  81. <div class="tab-pane" id="user-list">
  82. <!--没有标段数据-->
  83. <% if (tenders.length === 0) { %>
  84. <div class="jumbotron m-3">
  85. <h3 class="display-6">没有标段数据</h3>
  86. </div>
  87. <% } else { %>
  88. <table class="table table-hover table-bordered">
  89. <thead>
  90. <tr>
  91. <th class="text-center" >名称</th>
  92. <th class="text-center" >计量模式</th>
  93. <th class="text-center" >计量期数</th>
  94. <th class="text-center" >创建人</th>
  95. <th class="text-center" >标段创建时间/期审批时间</th>
  96. <th class="text-center">工序报验</th>
  97. <th class="text-center">档案管理</th>
  98. </tr>
  99. </thead>
  100. <% for (const t of tenders) { %>
  101. <tr tid="<%- t.id %>">
  102. <td><%- t.name %></td>
  103. <td><%- t.measure_type_str %></td>
  104. <td><%- t.stage_count_str %></td>
  105. <td><%- t.user_str %></td>
  106. <td><%- ctx.moment(t.show_time).format('YYYY-MM-DD HH:mm:ss') %></td>
  107. <td class="text-center">
  108. <div class="form-check form-check-inline">
  109. <input class="form-check-input" type="checkbox" id="inlineCheckbox1" <% if (t.s2b_gxby_check) { %>checked<% } %> name="gxby_check" onchange="updateS2bSetting(this);" value="<%- t.s2b_gxby_check %>">
  110. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
  111. <label class="form-check-label" for="inlineCheckbox1">检查计量</label>
  112. </div>
  113. <div class="form-check form-check-inline">
  114. <input class="form-check-input" type="checkbox" id="inlineCheckbox2" <% if (t.s2b_gxby_limit) { %>checked<% } %> name="gxby_limit" onchange="updateS2bSetting(this);" value="<%- t.s2b_gxby_limit %>">
  115. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
  116. <label class="form-check-label" for="inlineCheckbox2">限制上报</label>
  117. </div>
  118. </td>
  119. <td class="text-center">
  120. <div class="form-check form-check-inline">
  121. <input class="form-check-input" type="checkbox" id="inlineCheckbox3" <% if (t.s2b_dagl_check) { %>checked<% } %> name="dagl_check" onchange="updateS2bSetting(this);" value="<%- t.s2b_dagl_check %>">
  122. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
  123. <label class="form-check-label" for="inlineCheckbox3">检查计量</label>
  124. </div>
  125. <div class="form-check form-check-inline">
  126. <input class="form-check-input" type="checkbox" id="inlineCheckbox4" <% if (t.s2b_dagl_limit) { %>checked<% } %> name="dagl_limit" onchange="updateS2bSetting(this);" value="<%- t.s2b_dagl_limit %>">
  127. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
  128. <label class="form-check-label" for="inlineCheckbox4">限制上报</label>
  129. </div>
  130. </td>
  131. </tr>
  132. <% } %>
  133. </table>
  134. <% } %>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. </div>
  141. </div>
  142. <script>
  143. const updateStatusLimit = function (obj, type) {
  144. const data = { type };
  145. data.status = parseInt(obj.getAttribute('status'));
  146. data.limit = obj.checked;
  147. postData('api/update-status', data, function(result) {
  148. }, function () {
  149. obj.checked = !obj.checked;
  150. });
  151. }
  152. const updateStatusRatio = function (obj, type) {
  153. const data = { type };
  154. data.status = parseInt(obj.getAttribute('status'));
  155. try {
  156. data.ratio = parseFloat(obj.value);
  157. if (data.ratio > 100 || data.ratio < 0) throw '请输入0-100间的数字';
  158. } catch (error) {
  159. toastr.warning('请输入0-100间的数字');
  160. return;
  161. }
  162. postData('api/update-status', data, function(result) {
  163. obj.org = result.ratio;
  164. obj.value = result.ratio;
  165. }, function () {
  166. obj.value = obj.org;
  167. });
  168. }
  169. const updateS2bSetting = function (obj) {
  170. try {
  171. const name = obj.getAttribute('name');
  172. const tid = parseInt(obj.parentNode.parentNode.parentNode.getAttribute('tid'));
  173. if (!name) return;
  174. const data = { tid };
  175. data[name] = obj.checked;
  176. postData('api/update', data, function() {
  177. obj.setAttribute('value', obj.checked);
  178. }, function () {
  179. obj.checked = obj.getAttribute('value') === true;
  180. })
  181. } catch (err) {
  182. obj.checked = obj.getAttribute('value') === true;
  183. }
  184. }
  185. $(() => {
  186. autoFlashHeight();
  187. })
  188. </script>