s2b.ejs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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></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. </tr>
  34. <% } %>
  35. </tbody>
  36. </table>
  37. <legend>档案管理</legend>
  38. <table class="table table-hover table-bordered">
  39. <thead><tr><th>值</th><th>名称</th><th>允许计量</th><th>计量比例</th></tr></thead>
  40. <% for (const s of ctx.session.sessionProject.dagl_status) { %>
  41. <tbody id="dagl_list">
  42. <tr>
  43. <td><%- s.value %></td>
  44. <td><%- s.name %></td>
  45. <td>
  46. <div class="form-check form-check-inline">
  47. <input class="form-check-input" type="checkbox" id="inlineCheckbox-d<%- s.value %>" <% if (s.limit) { %>checked<% } %> status="<%- s.value %>" onchange="updateStatusLimit(this, 'dagl');">
  48. <label class="form-check-label" for="inlineCheckbox-d<%- s.value %>"></label>
  49. </div>
  50. </td>
  51. <% if (s.value === 0) { %>
  52. <td>-</td>
  53. <% } else { %>
  54. <td>
  55. <div class="input-group input-group-sm" style="width:90px">
  56. <input type="number" class="form-control" max="100" min="0" step="2" value="<%- s.ratio || 0 %>" status="<%- s.value %>" onchange="updateStatusRatio(this);">
  57. <div class="input-group-append">
  58. <span class="input-group-text">%</span>
  59. </div>
  60. </div>
  61. </td>
  62. <% } %>
  63. </tr>
  64. <% } %>
  65. </tbody>
  66. </table>
  67. </div>
  68. </div>
  69. <div class="tab-pane" id="user-list">
  70. <!--没有标段数据-->
  71. <% if (tenders.length === 0) { %>
  72. <div class="jumbotron m-3">
  73. <h3 class="display-6">没有标段数据</h3>
  74. </div>
  75. <% } else { %>
  76. <table class="table table-hover table-bordered">
  77. <thead>
  78. <tr>
  79. <th class="text-center" >名称</th>
  80. <th class="text-center" >计量模式</th>
  81. <th class="text-center" >计量期数</th>
  82. <th class="text-center" >创建人</th>
  83. <th class="text-center" >标段创建时间/期审批时间</th>
  84. <th class="text-center">工序报验</th>
  85. <th class="text-center">档案管理</th>
  86. </tr>
  87. </thead>
  88. <% for (const t of tenders) { %>
  89. <tr tid="<%- t.id %>">
  90. <td><%- t.name %></td>
  91. <td><%- t.measure_type_str %></td>
  92. <td><%- t.stage_count_str %></td>
  93. <td><%- t.user_str %></td>
  94. <td><%- ctx.moment(t.show_time).format('YYYY-MM-DD HH:mm:ss') %></td>
  95. <td class="text-center">
  96. <div class="form-check form-check-inline">
  97. <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 %>">
  98. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
  99. <label class="form-check-label" for="inlineCheckbox1">检查计量</label>
  100. </div>
  101. <div class="form-check form-check-inline">
  102. <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 %>">
  103. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
  104. <label class="form-check-label" for="inlineCheckbox2">限制上报</label>
  105. </div>
  106. </td>
  107. <td class="text-center">
  108. <div class="form-check form-check-inline">
  109. <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 %>">
  110. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
  111. <label class="form-check-label" for="inlineCheckbox3">检查计量</label>
  112. </div>
  113. <div class="form-check form-check-inline">
  114. <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 %>">
  115. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
  116. <label class="form-check-label" for="inlineCheckbox4">限制上报</label>
  117. </div>
  118. </td>
  119. </tr>
  120. <% } %>
  121. </table>
  122. <% } %>
  123. </div>
  124. </div>
  125. </div>
  126. </div>
  127. </div>
  128. </div>
  129. </div>
  130. <script>
  131. const updateStatusLimit = function (obj, type) {
  132. const data = { type };
  133. data.status = parseInt(obj.getAttribute('status'));
  134. data.limit = obj.checked;
  135. postData('api/update-status', data, function(result) {
  136. }, function () {
  137. obj.checked = !obj.checked;
  138. });
  139. }
  140. const updateStatusRatio = function (obj) {
  141. const data = { type: 'dagl' };
  142. data.status = parseInt(obj.getAttribute('status'));
  143. try {
  144. data.ratio = parseFloat(obj.value);
  145. if (data.ratio > 100 || data.ratio < 0) throw '请输入0-100间的数字';
  146. } catch (error) {
  147. toastr.warning('请输入0-100间的数字');
  148. return;
  149. }
  150. postData('api/update-status', data, function(result) {
  151. obj.org = result.ratio;
  152. obj.value = result.ratio;
  153. }, function () {
  154. obj.value = obj.org;
  155. });
  156. }
  157. const updateS2bSetting = function (obj) {
  158. try {
  159. const name = obj.getAttribute('name');
  160. const tid = parseInt(obj.parentNode.parentNode.parentNode.getAttribute('tid'));
  161. if (!name) return;
  162. const data = { tid };
  163. data[name] = obj.checked;
  164. postData('api/update', data, function() {
  165. obj.setAttribute('value', obj.checked);
  166. }, function () {
  167. obj.checked = obj.getAttribute('value') === true;
  168. })
  169. } catch (err) {
  170. obj.checked = obj.getAttribute('value') === true;
  171. }
  172. }
  173. $(() => {
  174. autoFlashHeight();
  175. })
  176. </script>