httpTest.blade.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>table</title>
  6. <style type="text/css">
  7. #test th {
  8. position: sticky;
  9. position: -webkit-sticky;
  10. top: 0;
  11. z-index: 999;
  12. background-color: white;
  13. }
  14. </style>
  15. <link href="{{ mix('css/app.css') }}" rel="stylesheet">
  16. </head>
  17. <body>
  18. <div id="app">
  19. <div class="container-fluid">
  20. <div class="">
  21. <div class="form-group">
  22. <label for="key">参数</label>
  23. <input type="text" class="form-control" v-model="params.key" id="key">
  24. </div>
  25. <div class="form-group">
  26. <button class="btn btn-primary" @click="toggleHttpRequest(isStart)">@{{ isStart ? '关闭':'启动' }}</button>
  27. </div>
  28. <div class="form-group">
  29. <button class="btn btn-primary" @click="writeFile()">保存</button>
  30. </div>
  31. </div>
  32. <div class="row">
  33. <table class="table table">
  34. <thead>
  35. <tr>
  36. <th>序号</th>
  37. <th>请求时间</th>
  38. <th>状态</th>
  39. <th>响应时间</th>
  40. <th>备注</th>
  41. </tr>
  42. </thead>
  43. <tbody>
  44. <template v-for="(log,i) in logs">
  45. <tr :class="_getTrClass(log)">
  46. <td>@{{ i+1 }}</td>
  47. <td>@{{ log.reqDate }}</td>
  48. <td>@{{ log.status }}</td>
  49. <td>@{{ log.resDate }}</td>
  50. <td>@{{ logs.des }}</td>
  51. </tr>
  52. </template>
  53. </tbody>
  54. </table>
  55. </div>
  56. </div>
  57. </div>
  58. <script type="text/javascript" src="{{mix("js/app.js")}}"></script>
  59. <script type="text/javascript">
  60. let vue = new Vue({
  61. el: '#app',
  62. data: {
  63. logs: [],
  64. url: '{{url('api/thirdPart/hengli/weight/new')}}',
  65. params: {
  66. key: "hengli001,'210414000153',0_52,2021\/04\/01_10:29:17,12,11,23",
  67. },
  68. count:0,
  69. interval: null,
  70. isStart: false,
  71. },
  72. created() {
  73. },
  74. methods: {
  75. toggleHttpRequest(isStart) {
  76. if (isStart) {
  77. this._entHttpRequest();
  78. this.isStart = false;
  79. } else {
  80. this._startHttpRequest();
  81. this.isStart = true;
  82. }
  83. },
  84. _startHttpRequest() {
  85. let _this = this;
  86. this.interval = setInterval(function () {
  87. _this.sendRequest();
  88. }, 1000);
  89. },
  90. _entHttpRequest() {
  91. if (this.interval) {
  92. clearInterval(this.interval);
  93. }
  94. },
  95. sendRequest() {
  96. let requestDate = moment();
  97. let url = this.url + '?' + this.params.key + '=';
  98. let index= JSON.parse(JSON.stringify(this.count));
  99. this.count++;
  100. this._pushLogs(requestDate,null,null,null,index);
  101. window.axios.get(url).then(res => {
  102. if (res.data) {
  103. console.log(res.data.data);
  104. this._pushLogs(requestDate, moment(), null, true,index);
  105. }
  106. }).catch(err => {
  107. this._pushLogs(requestDate, moment(), err, false,index);
  108. });
  109. },
  110. _pushLogs(requestDate, date = null, isErr = null, isRes = null,index = null) {
  111. let type = '';
  112. let des = '';
  113. let status = '';
  114. if(isErr){
  115. type='isError';
  116. des = isErr;
  117. }else if(date!=null ) {
  118. type='isOk';
  119. let minute = date.minute() - requestDate.minute();
  120. let second = date.seconds() - requestDate.seconds();
  121. if ((minute === 0 && second > 10) || (minute > 0 && second > -50)){
  122. des = '超时';
  123. status = '超时';
  124. }else{
  125. des = '正常';
  126. status = '正常';
  127. }
  128. }
  129. let log = {
  130. type: type,
  131. reqDate: requestDate.format('YY-MM-DD HH:mm:ss'),
  132. requestDate: requestDate,
  133. resDate: date ? date.format('YYYY-MM-DD HH:mm:ss') :'',
  134. responseDate: date,
  135. des: des,
  136. status: des
  137. }
  138. this.$set(this.logs,index,log);
  139. this.$forceUpdate();
  140. },
  141. _getTrClass(log) {
  142. if (log.type === 'isError') return 'table-danger';
  143. if (log.type === 'isOk') {
  144. if (log.status === '超时') return 'table-warning';
  145. else if(log.status === '正常') return 'table-success';
  146. }
  147. return 'table-primary';
  148. },
  149. writeFile() {
  150. localStorage.setItem('RequestLogs',this.logs);
  151. alert('保存成功!');
  152. }
  153. },
  154. });
  155. </script>
  156. </body>
  157. </html>