server-list.html 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <!-- include 'fc-header' -->
  2. <!-- include 'fc-leftWrap' -->
  3. <div class="warp-content">
  4. <div class="container">
  5. <div class="page-header">
  6. <a href="/addhosts" class="btn btn-info pull-right">添加客户机</a>
  7. <h2><i class="glyphicon glyphicon-list"></i>&nbsp;客户机列表</h2>
  8. </div>
  9. <div class="clearfix">
  10. <div class="form-inline">
  11. <div class="form-group">
  12. <select class="form-control" name="op" id="op">
  13. <option value="0">筛选服务器</option>
  14. <!-- if !empty({{server}}) -->
  15. <!-- loop server -->
  16. <option value="{{server' value.id}}" <!-- if isset({{op}}) && {{op}} == {{server' value.id}} -->selected<!-- endif --> >{{server' value.name}}({{server' value.ip}})</option>
  17. <!-- endloop -->
  18. <!-- endif -->
  19. </select>
  20. </div>
  21. </div>
  22. </div>
  23. <!--报表列表-->
  24. <table class="table table-hover">
  25. <thead>
  26. <tr>
  27. <th>客户机名称/域名</th>
  28. <th>服务器</th>
  29. <th>销售</th>
  30. <th>创建时间</th>
  31. <th>状态</th>
  32. <th>版本</th>
  33. <th>操作</th>
  34. </tr>
  35. </thead>
  36. <tbody>
  37. <!-- if !empty({{hosts}}) -->
  38. <!-- loop hosts -->
  39. <tr>
  40. <td>{{hosts' value.hostname}}<br>{{hosts' value.domain}}</td>
  41. <td>{{hosts' value.servername}}({{hosts' value.serverip}})</td>
  42. <td>{{hosts' value.sales}}</td>
  43. <td>{{hosts' value.created_at}}</td>
  44. <td id="status_{{hosts' value.id}}"><!-- if {{hosts' value.status}} == 1 --><span class="text-success">通讯正常</span><!-- else --><span class="text-warning">通讯异常<span><!-- endif --></td>
  45. <td><span id="webver_{{hosts' value.id}}">{{hosts' value.webver}}</span><br><span id="softver_{{hosts' value.id}}"><!-- if {{host' value.condition}} == 1 --><span class="glyphicon glyphicon-eject" title="更高版本"></span><!-- else --><span class="glyphicon glyphicon-minus" title="当前版本"></span><!-- endif -->v{{hosts' value.softver}}</span></td>
  46. <td><a href="/edithosts/{{hosts' value.id}}" type="button" class="btn btn-info btn-xs">编辑</a> <a type="button"
  47. class="btn btn-info btn-xs"
  48. href="#update"
  49. id="upgrade_{{hosts' value.id}}"
  50. domainid="{{hosts' value.id}}"
  51. data-toggle="modal">升级</a> <a
  52. type="button"
  53. class="btn btn-info btn-xs"
  54. id="getVersion_{{hosts' value.id}}"
  55. hostid = "{{hosts' value.id}}"
  56. domain="{{hosts' value.domain}}"
  57. webversion="{{hosts' value.webver}}"
  58. >更新云端版本</a></td>
  59. </tr>
  60. <!-- endloop -->
  61. <!-- endif -->
  62. </tbody>
  63. </table>
  64. <!--翻页-->
  65. <nav>
  66. <ul class="pagination">
  67. {{pager}}
  68. </ul>
  69. </nav>
  70. </div>
  71. </div>
  72. <!--弹框-添加页码内容-->
  73. <div class="modal fade " tabindex="-1" role="dialog" aria-hidden="true" id="update">
  74. <div class="modal-dialog ">
  75. <div class="modal-content">
  76. <div class="modal-header">
  77. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
  78. <h4 class="modal-title" >升级客户机</h4>
  79. </div>
  80. <div class="modal-body">
  81. <div class="form-group">
  82. <label>云端版本</label>
  83. <div class="row">
  84. <div class="col-xs-4">
  85. <input type="text" id="upwebver" class="form-control input-sm" value="" disabled>
  86. </div>
  87. </div>
  88. </div>
  89. <div class="form-group">
  90. <label>软件版本</label>
  91. <div class="row">
  92. <div class="col-xs-4">
  93. <div class="input-group">
  94. <div class="input-group-addon">兼容</div>
  95. <select class="form-control input-sm" id="scondition" name="condition">
  96. <option value="1">更高版本</option>
  97. <option value="2">当前版本</option>
  98. </select>
  99. </div>
  100. </div>
  101. <div class="col-xs-4">
  102. <div class="input-group">
  103. <div class="input-group-addon">版本</div>
  104. <input type="text" id="sversion" name="version" class="form-control input-sm" value="">
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. <div class="form-group">
  110. <label>下载地址</label>
  111. <div class="row">
  112. <div class="col-xs-9">
  113. <input type="text" id="sdownload" name="download" class="form-control input-sm" value="http://d2.smartcost.com.cn/soft/Measure_Cloud_V3.1.X.zip">
  114. </div>
  115. </div>
  116. </div>
  117. <div class="form-group">
  118. <label>升级内容</label>
  119. <textarea id="sdesc" name="desc" class="form-control" rows="3">客户端软件有新版本,需要更新才能继续使用。</textarea>
  120. </div>
  121. <div class="alert alert-danger" role="alert">升级前请“禁止客户端登陆”,谨慎填写软件版本。</div>
  122. </div>
  123. <div class="modal-footer">
  124. <input type="button" id="up" class="btn btn-info" value="确定升级"/>
  125. </div>
  126. </div>
  127. </div>
  128. </div>
  129. <!--弹框-结束-->
  130. <!--弹框-结束-->
  131. <link href="//cdn.bootcss.com/toastr.js/2.1.2/toastr.css" rel="stylesheet">
  132. <script src="//cdn.bootcss.com/toastr.js/2.1.2/toastr.min.js"></script>
  133. <script type="text/javascript">
  134. $(document).ready(function () {
  135. toastr.options = {
  136. "closeButton": false,
  137. "debug": false,
  138. "newestOnTop": false,
  139. "progressBar": false,
  140. "positionClass": "toast-top-right",
  141. "preventDuplicates": false,
  142. "onclick": null,
  143. "showDuration": "300",
  144. "hideDuration": "1000",
  145. "timeOut": "5000",
  146. "extendedTimeOut": "1000",
  147. "showEasing": "swing",
  148. "hideEasing": "linear",
  149. "showMethod": "fadeIn",
  150. "hideMethod": "fadeOut"
  151. }
  152. var did = undefined;
  153. $("a[id^='upgrade_']").click(function () {
  154. did = $(this).attr('domainid');
  155. $('#upwebver').val($('#webver_'+did).text());
  156. });
  157. $("#up").click(function () {
  158. var condition = $('#scondition').val();
  159. var version = $('#sversion').val();
  160. var download = $('#sdownload').val();
  161. var desc = $('#sdesc').val();
  162. $.ajax({
  163. type: "POST",
  164. dataType: "json",
  165. url: "/hosts/upgradeinfo",
  166. data: {
  167. "domainid": did,
  168. "scondition": condition,
  169. "sversion": version,
  170. "sdownload": download,
  171. "sdesc": desc
  172. },
  173. success: function (data) {
  174. $('#update').modal('hide');
  175. if (data.onoff == 1) {
  176. toastr.success('更新升级信息完成');
  177. if(data.condition == 1){
  178. $('#softver_'+did).html('<span class="glyphicon glyphicon-eject" title="更高版本"></span>v'+data.softver);
  179. }else{
  180. $('#softver_'+did).html('<span class="glyphicon glyphicon-minus" title="当前版本"></span>v'+data.softver);
  181. }
  182. } else {
  183. toastr.error('更新升级信息失败');
  184. }
  185. }
  186. });
  187. });
  188. $("a[id^='getVersion_']").click(function () {
  189. // console.log($(this));
  190. var domain = $(this).attr('domain');
  191. var webversion = $(this).attr('webversion');
  192. var id = $(this).attr('hostid');
  193. $.ajax({
  194. type: "POST",
  195. dataType: "json",
  196. url: "/update/hosts/webversion/status",
  197. data:{id:id,domain:domain,version:webversion},
  198. success: function (data) {
  199. if(data.change == 2){
  200. $('#status_'+id).html('<span class="text-warning">通讯异常<span>');
  201. $('#webver_'+id).text('');
  202. toastr.warning('当前客户机通讯异常或已关闭!');
  203. }else if(data.change == 1){
  204. $('#status_'+id).html('<span class="text-success">通讯正常</span>');
  205. $('#webver_'+id).text(data.version);
  206. toastr.success('更新成功!');
  207. }else{
  208. toastr.info('云端版本未发生改变。');
  209. }
  210. }
  211. });
  212. });
  213. $("#op").change(function () {
  214. var valval = '';
  215. if($(this).val() != 0){
  216. valval = '?op=' + $(this).val();
  217. }
  218. window.location.href = "/hostlist" + valval;
  219. });
  220. });
  221. </script>
  222. </body>