ServiceStationMng.html 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>服务器站点管理</title>
  8. <script src="Scripts/vue/vue.js"></script>
  9. <script src="Scripts/jquery/jquery.min.js"></script>
  10. <script src="Scripts/Sers/sers.apiClient.js"></script>
  11. <style>
  12. .line {
  13. border: 1px solid #cccccc;
  14. border-collapse: collapse;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <h1>服务站点管理</h1>
  20. <div id="stations">
  21. <div v-for="station in stations" style="width:300px;height:500px; float:left;margin:2px;padding:4px;word-wrap:break-word;" class="line">
  22. {{ (station.serviceStationInfo||{}).serviceStationName }} <br />
  23. {{station.apiStationNames}} <br />
  24. stationVersion:{{ (station.serviceStationInfo||{}).stationVersion }}<br />
  25. startTime:{{station.startTime}}<br />
  26. 状态:{{station.status}}(正常、暂停)<br />
  27. 操作: <a href="#" @click="start(station)">打开</a> <a href="#" @click="pause(station)">暂停</a> <a href="#" @click="stop(station)">强制关闭</a> <br />
  28. -----------------------<br />
  29. qps:{{station.qps}} <br />
  30. apiNodeCount:{{station.apiNodeCount}} <br />
  31. activeApiNodeCount:{{station.activeApiNodeCount}} <br />
  32. calledCount err/sum: {{(station.counter||{}).errorCount}}/ {{(station.counter||{}).sumCount}}<br />
  33. -----------------------<br />
  34. MachineName:{{ getStringByPath(station,'deviceInfo.MachineName')}}<br />
  35. cpuUsage:{{ getFloatByPath(station,'usageStatus.cpuUsage') }} %<br />
  36. memoryUsage:{{ getFloatByPath(station,'usageStatus.memoryUsage') }} % <br />
  37. -----------------------<br />
  38. <table>
  39. <tr>
  40. <td>deviceKey:</td>
  41. <td> <font :title="(station.deviceInfo||{}).deviceKey">{{((station.deviceInfo||{}).deviceKey||'').substr(0,4) }} </font></td>
  42. </tr>
  43. <tr>
  44. <td>serviceStationKey: </td>
  45. <td><font :title="(station.serviceStationInfo||{}).serviceStationKey">{{((station.serviceStationInfo||{}).serviceStationKey||'').substr(0,4) }} </font></td>
  46. </tr>
  47. <tr>
  48. <td>connKey:</td>
  49. <td> <font :title="station.connKey">{{(station.connKey||'').substr(0,4) }} </font></td>
  50. </tr>
  51. </table>
  52. <br /> <!--{{station.deviceInfo}}-->
  53. </div>
  54. </div>
  55. <script>
  56. // getFloatByPath({a:{b:'12.525'}},'a.b');
  57. function getFloatByPath(obj, path,fixed) {
  58. var items = path.split('.');
  59. for (var i in items) {
  60. if (!obj) return '';
  61. obj = obj[items[i]];
  62. }
  63. obj = parseFloat(obj);
  64. return isNaN(obj) ? '' : obj.toFixed(isNaN(fixed)?2:fixed);
  65. }
  66. function getStringByPath(obj, path) {
  67. var items = path.split('.');
  68. for (var i in items) {
  69. if (!obj) return '';
  70. obj = obj[items[i]];
  71. }
  72. return ''+obj;
  73. }
  74. var stations = new Vue({
  75. el: '#stations',
  76. data: {
  77. stations: [
  78. {
  79. }
  80. ]
  81. }, methods: {
  82. getFloatByPath: getFloatByPath,
  83. getStringByPath: getStringByPath,
  84. start: function (station) {
  85. sers.apiClient.serviceStation_start(station.connKey, function (data) {
  86. rendStations();
  87. });
  88. }, pause: function (station) {
  89. sers.apiClient.serviceStation_pause(station.connKey, function (data) {
  90. rendStations();
  91. });
  92. }, stop: function (station) {
  93. if (!confirm('手动关闭服务站点后,服务站点不一定会自动重新连接,确定继续吗?')) return;
  94. sers.apiClient.serviceStation_stop(station.connKey, function (data) {
  95. rendStations();
  96. });
  97. }
  98. }
  99. });
  100. function rendStations() {
  101. sers.apiClient.serviceStation_getAll(function (data) {
  102. stations.stations = data.data;
  103. });
  104. }
  105. rendStations();
  106. var intervals = [];
  107. function startRefreshTask() {
  108. var interval = setInterval(rendStations, 2000);
  109. intervals.push(interval);
  110. }
  111. function stopRefreshTask() {
  112. for (var t in intervals) {
  113. clearInterval(intervals[t]);
  114. }
  115. intervals = [];
  116. }
  117. startRefreshTask();
  118. </script>
  119. </body>
  120. </html>