test_opreation.blade.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  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. input{
  37. /*width: 2.3rem;*/
  38. background-color: #fff;
  39. outline: none;
  40. border: 0.01rem solid #efefef;
  41. padding: 0.22rem;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <div id="main" style="margin-bottom: 2rem;">
  47. <div v-if="findBox" style="margin-top: 1rem; text-align: center">
  48. <h1 style="font-size: 0.7rem;text-align: center">绿色地球定时定点设备调试</h1>
  49. <input type="text" v-model="value" placeholder="请输入设备编号" >
  50. <button @click="btnfun()" >搜索</button>
  51. </div>
  52. <div v-else>
  53. <nav class="bianhao">
  54. 设备编号:@{{arrdata.device_name}}
  55. </nav>
  56. <article>
  57. <div class="bianhao" style="padding-top: 0;">
  58. 设备型号:@{{xiangti}}
  59. </div>
  60. <div class="bianhao" style="padding-top: 0;">
  61. 示意图:
  62. </div>
  63. <div style="text-align: center;">
  64. <img v-bind:src="{{@devceImg}}" alt="" style="width: 7rem;height: 4rem;">
  65. </div>
  66. <div class="bianhao" style="padding-top: 0;">
  67. 全部箱体
  68. </div>
  69. <div class="bianhao" style="padding-top: 0; border-bottom: 0.01rem solid #efefef;">
  70. <button @click="startbtn()" :class="classbtn" :disabled="startbtndib">@{{mssage}}</button>
  71. <div style="font-size: .3rem;padding-top: .1rem;padding-bottom: .1rem;">点击【开始测试】,全部箱体立即锁死,每15秒锁位状态改变一次
  72. </div>
  73. </div>
  74. <div class="bianhao" style="padding-top: 0; margin-top: .4rem; border-bottom: 0.01rem solid #efefef;">
  75. <button v-preventclick @click="dingshi()" class="" :disabled="dingshibtn">定时测试</button>
  76. <div style="font-size: .3rem;padding-top: .1rem;padding-bottom: .1rem;">
  77. 点击【定时测试】,5-6秒之内锁位关闭,约4分钟左右锁位开启,1分钟后锁位关闭,测试按钮可再次点击。<br>注:设备配置后,无法点击调试</div>
  78. </div>
  79. <div v-for="(item,index) in boxarr" :key="index">
  80. <div class="bianhao"
  81. style="font-size: 0.4rem;display: flex; align-items: center; justify-content: space-between;">
  82. <div>@{{item.name}}</div>
  83. <button @click="suowei(item,index)" :data-index="index" :data-id="item.id" :data-name="item.name"
  84. v-preventclick class="suoweiList" :disabled="allbtn">定时测试</button>
  85. </div>
  86. </div>
  87. </article>
  88. </div>
  89. </div>
  90. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.min.js"></script>
  91. <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.20.0/axios.min.js"></script>
  92. <script src="./js/auto-size.js"></script>
  93. <script src="./js/jquery-1.11.0.min.js"></script>
  94. <script>
  95. Vue.directive('preventclick', {
  96. inserted: function (button, bind) {
  97. button.addEventListener('click', () => {
  98. if (!button.disabled) {
  99. button.disabled = true;
  100. setTimeout(() => {
  101. button.disabled = false
  102. }, 180000)
  103. }
  104. })
  105. }
  106. })
  107. var url = "{{env('APP_URL')}}"
  108. const vm = new Vue({
  109. el: '#main',
  110. data: {
  111. isstart: false,
  112. mssage: "开始测试",
  113. classbtn: "",
  114. findBox: true,
  115. isShow:false,
  116. time: 180,
  117. allbtn: false,
  118. startbtndib: false,
  119. dingshibtn: false,
  120. devceImg:'',
  121. id:'',
  122. arrdata: {},
  123. boxarr: [],
  124. boxnamearr:["四箱","五箱","四箱可回收","五箱可回收"],
  125. type: 1,
  126. dingshitype: 3,
  127. alltype: 4,
  128. startdata: "",
  129. xiangti: "",
  130. value:""
  131. },
  132. mounted() {
  133. // this.getData("866222053211317")
  134. // console.log("111111")
  135. },
  136. methods: {
  137. btnfun(){
  138. console.log(this.value)
  139. if(this.value){
  140. this.getData(this.value)
  141. } else {
  142. alert('请输入设备编号')
  143. }
  144. },
  145. startbtn(e) {
  146. //开始测试
  147. axios.get("http://172.31.31.199/send_protocol?id="+this.value+"&type=" + this.type).then(res => {
  148. if (res.data.code == 603) {
  149. alert(res.data.msg)
  150. } else {
  151. this.allbtn = !this.allbtn
  152. this.dingshibtn = !this.dingshibtn
  153. this.isstart = !this.isstart
  154. if (this.isstart) {
  155. this.mssage = "停止测试"
  156. this.classbtn = "redbtn"
  157. this.type = 2
  158. } else {
  159. this.mssage = "开始测试"
  160. this.classbtn = ""
  161. this.type = 1
  162. }
  163. console.log(this.type)
  164. }
  165. })
  166. },
  167. dingshi() {
  168. this.startbtndib = true
  169. this.allbtn = true
  170. let timestop = setInterval(() => {
  171. this.time--
  172. if (this.time == 0) {
  173. clearInterval(timestop)
  174. this.time = 180
  175. this.startbtndib = false
  176. this.allbtn = false
  177. }
  178. }, 1000)
  179. axios.get("http://172.31.31.199/send_protocol?id="+this.value+"&type=" + this.dingshitype).then(res => {
  180. if (res.data.code == 603) {
  181. alert(res.data.msg)
  182. }
  183. })
  184. },
  185. suowei(e, index) {
  186. let el = document.querySelectorAll('.suoweiList')
  187. el.forEach(item => {
  188. if (item.dataset.index != index && !item.disabled) {
  189. item.disabled = true
  190. setTimeout(() => {
  191. item.disabled = false
  192. }, 20000);
  193. }
  194. });
  195. axios.get("http://172.31.31.199/send_protocol?id="+this.value+"&type=" + this.alltype + "&box_name=" + e.id).then(res => {
  196. if (res.data.code == 603) {
  197. alert(res.data.msg)
  198. } else {
  199. this.reduceCount(index)
  200. }
  201. })
  202. },
  203. getData: function (id) {
  204. axios.get("http://172.31.31.199/get_boxname?id="+this.value).then(res => {
  205. console.log(res)
  206. if (res.data.code == 200) {
  207. let type = res.data.data.device_type
  208. switch (parseInt(type)){
  209. case 1:
  210. num = 4;
  211. break;
  212. case 2:
  213. num = 5;
  214. break;
  215. case 3:
  216. num = 5;
  217. break;
  218. case 4:
  219. num = 6;
  220. break;
  221. default:
  222. console.log('defige',type)
  223. num = 4;
  224. }
  225. this.arrdata = res.data.data
  226. if(this.arrdata.length == 0){
  227. alert('异常设备请重新输入');
  228. return ;
  229. }
  230. this.findBox = false;
  231. this.devceImg = res.data.data.device_image
  232. // this.xiangti = this.arrdata.device_type == "1" ? '四箱' : '五箱'
  233. this.xiangti = this.boxnamearr[res.data.data.device_type-1];
  234. if((res.data.data.device_type-1) < 0){
  235. this.xiangti = '四箱';
  236. }
  237. for (let i = 0; i < num; i++) {
  238. let obj = {
  239. time: 180,
  240. status: false,
  241. name: i + 1 + "号箱体",
  242. id: i + 1
  243. }
  244. this.boxarr.push(obj)
  245. }
  246. }
  247. })
  248. },
  249. reduceCount(index) {
  250. let _index = index;
  251. let time = setInterval(() => {
  252. if (this.boxarr[_index].time > 0) {
  253. this.boxarr[_index].time--;
  254. } else {
  255. clearInterval(time)
  256. this.boxarr[_index].time = 180;
  257. }
  258. Vue.set(this.boxarr[_index], this.boxarr[_index].time, this.boxarr[_index].time)
  259. }, 1000);
  260. }
  261. },
  262. })
  263. </script>
  264. </body>
  265. </html>