test_opreation.blade.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  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. <title>设备调试</title>
  7. <style>
  8. * {
  9. padding: 0;
  10. margin: 0;
  11. }
  12. #main {
  13. padding: 0 .4rem;
  14. }
  15. #main .bianhao {
  16. font-size: 0.5rem;
  17. font-weight: bold;
  18. color: black;
  19. padding: .4rem;
  20. }
  21. button {
  22. width: 2.3rem;
  23. background-color: #fff;
  24. outline: none;
  25. border: 0.01rem solid #efefef;
  26. padding: 0.2rem;
  27. }
  28. .redbtn {
  29. background-color: red !important;
  30. color: white !important;
  31. }
  32. .whitebtn {
  33. background-color: white;
  34. color: black;
  35. }
  36. </style>
  37. </head>
  38. <body>
  39. <div id="main" style="margin-bottom: 2rem;">
  40. <nav class="bianhao">
  41. 设备编号:@{{arrdata.device_name}}
  42. </nav>
  43. <article>
  44. <div class="bianhao" style="padding-top: 0;">
  45. 设备型号:@{{xiangti}}
  46. </div>
  47. <div class="bianhao" style="padding-top: 0;">
  48. 示意图:
  49. </div>
  50. <div style="text-align: center;">
  51. <img src="{{$img}}" alt="" style="width: 7rem;height: 4rem;">
  52. </div>
  53. <div class="bianhao" style="padding-top: 0;">
  54. 全部箱体
  55. </div>
  56. <div class="bianhao" style="padding-top: 0; border-bottom: 0.01rem solid #efefef;">
  57. <button @click="startbtn()" :class="classbtn" :disabled="startbtndib">@{{mssage}}</button>
  58. <div style="font-size: .3rem;padding-top: .1rem;padding-bottom: .1rem;">点击【开始测试】,全部箱体立即锁死,每15秒锁位状态改变一次
  59. </div>
  60. </div>
  61. <div class="bianhao" style="padding-top: 0; margin-top: .4rem; border-bottom: 0.01rem solid #efefef;">
  62. <button v-preventclick @click="dingshi()" class="" :disabled="dingshibtn">@{{time}}s定时</button>
  63. <div style="font-size: .3rem;padding-top: .1rem;padding-bottom: .1rem;">
  64. 点击【定时测试】,3min后,锁位开启,4min后锁位关闭,设备配置后,无法点击调试</div>
  65. </div>
  66. <div v-for="(item,index) in boxarr" :key="index">
  67. <div class="bianhao"
  68. style="font-size: 0.4rem;display: flex; align-items: center; justify-content: space-between;">
  69. <div>@{{item.name}}</div>
  70. <button @click="suowei(item,index)" :data-index="index" :data-id="item.id" :data-name="item.name"
  71. v-preventclick class="suoweiList" :disabled="allbtn">@{{item.time}}s定时</button>
  72. </div>
  73. </div>
  74. </article>
  75. </div>
  76. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.min.js"></script>
  77. <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.20.0/axios.min.js"></script>
  78. <script src="./js/auto-size.js"></script>
  79. <script>
  80. var id = {{$id}}
  81. Vue.directive('preventclick', {
  82. inserted: function (button, bind) {
  83. button.addEventListener('click', () => {
  84. if (!button.disabled) {
  85. button.disabled = true;
  86. setTimeout(() => {
  87. button.disabled = false
  88. }, 180000)
  89. }
  90. })
  91. }
  92. })
  93. const vm = new Vue({
  94. el: '#main',
  95. data: {
  96. isstart: false,
  97. mssage: "开始测试",
  98. classbtn: "",
  99. time: 180,
  100. allbtn: false,
  101. startbtndib: false,
  102. dingshibtn: false,
  103. arrdata: {},
  104. boxarr: [],
  105. type: 1,
  106. dingshitype: 3,
  107. alltype: 4,
  108. startdata: "",
  109. xiangti: ""
  110. },
  111. mounted() {
  112. this.getData()
  113. },
  114. methods: {
  115. startbtn(e) {
  116. //开始测试
  117. axios.get("http://172.31.31.199/send_protocol?id="+id+"&type=" + this.type).then(res => {
  118. if (res.data.code == 603) {
  119. alert(res.data.msg)
  120. } else {
  121. this.allbtn = !this.allbtn
  122. this.dingshibtn = !this.dingshibtn
  123. this.isstart = !this.isstart
  124. if (this.isstart) {
  125. this.mssage = "停止测试"
  126. this.classbtn = "redbtn"
  127. this.type = 2
  128. } else {
  129. this.mssage = "开始测试"
  130. this.classbtn = ""
  131. this.type = 1
  132. }
  133. console.log(this.type)
  134. }
  135. })
  136. },
  137. dingshi() {
  138. this.startbtndib = true
  139. this.allbtn = true
  140. let timestop = setInterval(() => {
  141. this.time--
  142. if (this.time == 0) {
  143. clearInterval(timestop)
  144. this.time = 180
  145. this.startbtndib = false
  146. this.allbtn = false
  147. }
  148. }, 1000)
  149. axios.get("http://172.31.31.199/send_protocol?id="+id+"&type=" + this.dingshitype).then(res => {
  150. if (res.data.code == 603) {
  151. alert(res.data.msg)
  152. }
  153. })
  154. },
  155. suowei(e, index) {
  156. let el = document.querySelectorAll('.suoweiList')
  157. el.forEach(item => {
  158. if (item.dataset.index != index && !item.disabled) {
  159. item.disabled = true
  160. setTimeout(() => {
  161. item.disabled = false
  162. }, 20000);
  163. }
  164. });
  165. axios.get("http://172.31.31.199/send_protocol?id="+id+"&type=" + this.alltype + "&box_name=" + e.id).then(res => {
  166. if (res.data.code == 603) {
  167. alert(res.data.msg)
  168. } else {
  169. this.reduceCount(index)
  170. }
  171. })
  172. },
  173. getData: function () {
  174. axios.get("http://172.31.31.199/get_boxname?id="+id).then(res => {
  175. console.log(res)
  176. if (res.data.code == 200) {
  177. let num = res.data.data.device_type == "1" ? 5 : 6
  178. this.arrdata = res.data.data
  179. this.xiangti = this.arrdata.device_type == "1" ? '四箱' : '五箱'
  180. for (let i = 0; i < num; i++) {
  181. let obj = {
  182. time: 180,
  183. status: false,
  184. name: i + 1 + "号箱体",
  185. id: i + 1
  186. }
  187. this.boxarr.push(obj)
  188. }
  189. }
  190. })
  191. },
  192. reduceCount(index) {
  193. let _index = index;
  194. let time = setInterval(() => {
  195. if (this.boxarr[_index].time > 0) {
  196. this.boxarr[_index].time--;
  197. } else {
  198. clearInterval(time)
  199. this.boxarr[_index].time = 180;
  200. }
  201. Vue.set(this.boxarr[_index], this.boxarr[_index].time, this.boxarr[_index].time)
  202. }, 1000);
  203. }
  204. },
  205. })
  206. </script>
  207. </body>
  208. </html>