equipmanage_ybq.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624
  1. var topicid = []; //imei数组
  2. $(function () {
  3. // 时间插件初始化
  4. layui.use('laydate', function () {
  5. var laydate = layui.laydate;
  6. //执行一个laydate实例
  7. laydate.render({
  8. elem: '#timSelectBox' //指定元素
  9. , type: 'time'
  10. , range: true
  11. , done: function (value, date) {
  12. var dateArray = value.split(' - ')
  13. $('#begin').val(dateArray[0])
  14. $('#end').val(dateArray[1])
  15. }
  16. });
  17. });
  18. $('#clock').on('change', function () {
  19. if ($(this).val() == 0) {
  20. $('#timeHourParent').hide();
  21. $('#durationParent').show();
  22. $('#timSelectBox').val('');
  23. $('#began').val('00:00:00');
  24. $('#end').val('00:00:00');
  25. } else {
  26. $('#timeHourParent').show();
  27. $('#durationParent').hide();
  28. $('#duration').val(0);
  29. }
  30. })
  31. var user = document.getElementById("datatable");
  32. // 分页初始化
  33. layui.use('laypage', function () {
  34. var laypage = layui.laypage;
  35. laypage.render({
  36. elem: 'page' //注意,这里的 test1 是 ID,不用加 # 号
  37. , count: $('#totalPage').val()
  38. ,theme: '#428BCA'
  39. , layout: ['prev', 'page', 'next', 'skip']
  40. , jump: function (obj, first) {
  41. $.ajax({
  42. url: 'equipmanage_ybq',
  43. type: 'post',
  44. data: {
  45. req: "reqdat",
  46. page: obj.curr
  47. },
  48. beforeSend: function () {
  49. $('#loadingParent').show();
  50. },
  51. complete: function () {
  52. $('#loadingParent').hide();
  53. },
  54. success: function (data) {
  55. var msg = $.parseJSON(data);
  56. if ($('#totalPage').val() > 0) {
  57. Fill_Table('datatable', msg);
  58. $('#page').parent().show();
  59. } else {
  60. Fill_null_Table('datatable', msg);
  61. $('#page').parent().hide();
  62. }
  63. topicid = [];//当点击下一页不保存当前选中项
  64. $('#checkAll').prop('checked',false)
  65. $('.controlModel').hide();
  66. // 当点击下一页保存当前选中项
  67. // for(var i = 0; i < topicid.length;i++){
  68. // $('.itemId').each(function(){
  69. // if($(this).html() == topicid[i]){
  70. // $(this).parent().find('.check').prop('checked','checked');
  71. // }
  72. // })
  73. // }
  74. scrollBar()
  75. }
  76. })
  77. if (!first) {
  78. $("#datatable tr:not(:first)").remove();
  79. }
  80. }
  81. });
  82. });
  83. })
  84. function Fill_null_Table(table_id, data) {
  85. var table = document.getElementById(table_id).children[1];
  86. var row = table.insertRow(table.rows.length);
  87. var c1 = row.insertCell(0);
  88. c1.setAttribute('colspan', '16');
  89. c1.setAttribute('class', 'nullData');
  90. c1.innerHTML = "暂无数据";
  91. }
  92. function Fill_Table(table_id, dat) {
  93. //js循环读取json数据
  94. var table = document.getElementById(table_id).children[1];
  95. for (var i = 0; i < dat.length; i++) {
  96. var row = table.insertRow(table.rows.length);
  97. var c1 = row.insertCell(0);
  98. // c1.innerHTML = "<input type='checkbox' onchange='checkAllSelect()' class='check' name='title-table-checkbox' />";
  99. c1.innerHTML = '<div style="position:relative"><label class="my_protocol">'+
  100. '<input type="checkbox" class="check" onclick="checkAllSelect()" value="2014" name="check_box_list">'+
  101. '<span></span></label></div>';
  102. //JSON字符串转换JSON对象
  103. var stat = eval('(' + dat[i].ybq_status + ')');
  104. var c2 = row.insertCell(1);
  105. c2.innerHTML = stat.imei;
  106. c2.setAttribute("class", "itemId");
  107. var c3 = row.insertCell(2);
  108. if (dat[i].equip_name == "") c3.innerHTML = "无";
  109. else c3.innerHTML = dat[i].equip_name;
  110. var c4 = row.insertCell(3);
  111. if (dat[i].is_online == 1) c4.innerHTML = '<img src="static/img/green.png" alt="">';
  112. else if (dat[i].is_online == 0) c4.innerHTML = '<img src="static/img/red.png" title=离线时间:'+dat[i].off_time.replace(' ',' ')+' alt="">';
  113. else c4.innerHTML = '--'
  114. var c5 = row.insertCell(4);
  115. if (dat[i].ds == 0) c5.innerHTML = "关";
  116. else c5.innerHTML = "开";
  117. var c6 = row.insertCell(5);
  118. if (stat.ws == 0) c6.innerHTML = "待机";
  119. else if (stat.ws == 1) c6.innerHTML = "工作";
  120. else if (stat.ws == 2) c6.innerHTML = "充电";
  121. var c7 = row.insertCell(6);
  122. if (stat.tt == 0) c7.innerHTML = "常亮";
  123. else c7.innerHTML = stat.tt;
  124. var c8 = row.insertCell(7);
  125. if (stat.tbs == 0) c8.innerHTML = '<img src="static/img/green.png" alt="">';
  126. else c8.innerHTML = '<img src="static/img/red.png" alt="">';
  127. var c9 = row.insertCell(8);
  128. if (stat.lps == 0) c9.innerHTML = '<img src="static/img/green.png" alt="">';
  129. else c9.innerHTML = '<img src="static/img/red.png" alt="">';
  130. var c10 = row.insertCell(9);
  131. if (stat.rps == 0) c10.innerHTML = '<img src="static/img/green.png" alt="">';
  132. else c10.innerHTML = '<img src="static/img/red.png" alt="">';
  133. var c11 = row.insertCell(10);
  134. if (stat.tps == 0) c11.innerHTML = '<img src="static/img/green.png" alt="">';
  135. else c11.innerHTML = '<img src="static/img/red.png" alt="">';
  136. var c12 = row.insertCell(11);
  137. if (stat.dps == 0) c12.innerHTML = '<img src="static/img/green.png" alt="">';
  138. else c12.innerHTML = '<img src="static/img/red.png" alt="">';
  139. var c13 = row.insertCell(12);
  140. c13.innerHTML = stat.csq;
  141. var c14 = row.insertCell(13);
  142. c14.innerHTML = stat.dver;
  143. var c15 = row.insertCell(14);
  144. c15.innerHTML = dat[i].upl_time;
  145. // var c16 = row.in sertCell(15);
  146. // c16.innerHTML = '<a class="btn btn-sm btn-primary" href="equipmanage_ybq_detail?id='+stat.imei+'">详情</button>';
  147. }
  148. }
  149. // 单个复选框
  150. function checkAllSelect() {
  151. var CheckCount = 0;
  152. $('.check').each(function () {
  153. if ($(this).prop("checked") == true) {
  154. CheckCount++;
  155. $(this).parents('tr').addClass('selectedColor');
  156. if (!contains(topicid, $(this).parents('tr').find('.itemId').html())) {
  157. topicid.push($(this).parents('tr').find('.itemId').html());
  158. }
  159. } else {
  160. $(this).parents('tr').removeClass('selectedColor');
  161. removeByValue(topicid, $(this).parents('tr').find('.itemId').html());
  162. }
  163. });
  164. if (CheckCount == $('.check').length) {
  165. $('#checkAll').prop("checked", true);
  166. } else {
  167. $('#checkAll').prop("checked", false);
  168. }
  169. if (CheckCount > 0) {
  170. $('.controlModel').slideDown();
  171. } else {
  172. $('.controlModel').slideUp();
  173. }
  174. }
  175. //全选
  176. function checkAll(obj) {
  177. if (obj.prop("checked") == true) {
  178. $('.check').each(function () {
  179. $(this).prop("checked", true);
  180. $(this).parents('tr').addClass('selectedColor');
  181. if (!contains(topicid, $(this).parents('tr').find('.itemId').html())) {
  182. topicid.push($(this).parents('tr').find('.itemId').html());
  183. }
  184. });
  185. $('.controlModel').slideDown();
  186. } else {
  187. $('.check').each(function () {
  188. $(this).parents('tr').removeClass('selectedColor');
  189. $(this).prop("checked", false);
  190. });
  191. topicid = [];
  192. $('.controlModel').slideUp();
  193. }
  194. }
  195. //移除数组元素
  196. function removeByValue(arr, val) {
  197. for (var i = 0; i < arr.length; i++) {
  198. if (arr[i] == val) {
  199. arr.splice(i, 1);
  200. break;
  201. }
  202. }
  203. }
  204. //判断数组中是否包含元素
  205. function contains(arr, obj) {
  206. var i = arr.length;
  207. while (i--) {
  208. if (arr[i] === obj) {
  209. return true;
  210. }
  211. }
  212. return false;
  213. }
  214. //定时
  215. function timing(obj) {
  216. if (topicid.length > 0) {
  217. var hours = obj.val();
  218. $.ajax({
  219. url: 'ybq_mqtt',
  220. type: 'post',
  221. data: {
  222. sw: "tt",//定时
  223. topicid: JSON.stringify(topicid),
  224. hours: hours,
  225. },
  226. beforeSend: function () {
  227. $('#loadingParent').show();
  228. },
  229. complete: function () {
  230. setTimeout(function () {
  231. $('#loadingParent').hide();
  232. }, 3000)
  233. },
  234. success: function (data) {
  235. if (data == "0") {
  236. var eId = $('#eId').val();
  237. layer.msg("发送成功!")
  238. var eswitch = $('#eswitch').val();
  239. var ename = $('#ename').val();
  240. var page = $('.layui-laypage-curr em').eq(1).html();
  241. var data = {
  242. req: "filter",
  243. ename: ename,
  244. eswitch: eswitch,
  245. page: page,
  246. f_id:eId,
  247. }
  248. setTimeout(function () {
  249. $.post("equipmanage_ybq",data,function(data){
  250. $("#datatable tr:not(:first)").html("");
  251. var msg = $.parseJSON(data);
  252. if (msg.dat.length > 0) {
  253. Fill_Table('datatable', msg.dat);
  254. $('#page').parent().show();
  255. } else {
  256. Fill_null_Table('datatable', msg.dat);
  257. $('#page').parent().hide();
  258. }
  259. $('#state').val('定时时长');
  260. $('#checkAll').prop('checked',false)
  261. $('.controlModel').slideUp();
  262. });
  263. }, 3000)
  264. }
  265. else {
  266. layer.msg("发送失败!")
  267. }
  268. }
  269. })
  270. } else {
  271. obj.val('定时时长');
  272. layui.use('layer', function () {
  273. var layer = layui.layer;
  274. layer.msg('请选择一条数据');
  275. });
  276. }
  277. }
  278. // 配置
  279. function allocation() {
  280. if (topicid.length > 0) {
  281. $('#myModal').modal('toggle');
  282. } else {
  283. layui.use('layer', function () {
  284. var layer = layui.layer;
  285. layer.msg('请选择一条数据');
  286. });
  287. }
  288. }
  289. //保存配置
  290. function saveMode() {
  291. var ts = $('#clock').val();
  292. var duration = $('#duration').val();
  293. var begin = $('#begin').val();
  294. var end = $('#end').val();
  295. $.ajax({
  296. url: 'ybq_mqtt',
  297. type: 'post',
  298. data: {
  299. sw: "timer",//定时
  300. topicid: topicid,
  301. ts: ts,
  302. hours: duration,//光控模式下的定时时长
  303. begin: begin,
  304. end: end
  305. },
  306. beforeSend: function () {
  307. $('#loadingParent').show();
  308. },
  309. complete: function () {
  310. setTimeout(function () {
  311. $('#loadingParent').hide();
  312. }, 3000)
  313. },
  314. success: function (data) {
  315. if (data == "0") {
  316. layer.msg("发送成功!")
  317. setTimeout(function () {
  318. window.location.href = window.location.href;
  319. }, 3000)
  320. }
  321. else {
  322. layer.msg("发送失败!")
  323. }
  324. }
  325. })
  326. }
  327. //开关
  328. function SetSwitch(obj) {
  329. if (topicid.length > 0) {
  330. var ds = obj.val();
  331. $.ajax({
  332. type: "post",
  333. url: 'ybq_mqtt',
  334. beforeSend: function () {
  335. $('#loadingParent').show();
  336. },
  337. complete: function () {
  338. setTimeout(function () {
  339. $('#loadingParent').hide();
  340. }, 3000)
  341. },
  342. data: {
  343. "sw": "ds",//开关
  344. "topicid": JSON.stringify(topicid),
  345. "ds": ds
  346. },
  347. dataType: "json",
  348. success: function (data) {
  349. if (data == "0") {
  350. var eId = $('#eId').val();
  351. layer.msg("发送成功!")
  352. var eswitch = $('#eswitch').val();
  353. var ename = $('#ename').val();
  354. var page = $('.layui-laypage-curr em').eq(1).html();
  355. var data = {
  356. req: "filter",
  357. ename: ename,
  358. eswitch: eswitch,
  359. page: page,
  360. f_id:eId,
  361. }
  362. setTimeout(function () {
  363. $.post("equipmanage_ybq",data,function(data){
  364. $("#datatable tr:not(:first)").html("");
  365. var msg = $.parseJSON(data);
  366. if (msg.dat.length > 0) {
  367. Fill_Table('datatable', msg.dat);
  368. $('#page').parent().show();
  369. } else {
  370. Fill_null_Table('datatable', msg.dat);
  371. $('#page').parent().hide();
  372. }
  373. $('#switchBtn').val('设备开关');
  374. $('#checkAll').prop('checked',false)
  375. $('.controlModel').slideUp();
  376. });
  377. }, 3000)
  378. }
  379. else {
  380. layer.msg("发送失败!")
  381. }
  382. }
  383. })
  384. } else {
  385. obj.val('设备开关');
  386. layui.use('layer', function () {
  387. var layer = layui.layer;
  388. layer.msg('请选择一条数据');
  389. });
  390. }
  391. }
  392. //刷新
  393. function reloadPage() {
  394. if (topicid.length > 0) {
  395. $.ajax({
  396. type: "post",
  397. url: 'ybq_mqtt',
  398. beforeSend: function () {
  399. $('#loadingParent').show();
  400. },
  401. complete: function () {
  402. setTimeout(function () {
  403. $('#loadingParent').hide();
  404. }, 3000)
  405. },
  406. data: {
  407. "sw": "read",//读取
  408. "topicid": JSON.stringify(topicid),
  409. "kind": "status"//读取下位机状态
  410. },
  411. dataType: "json",
  412. success: function (data) {
  413. if (data == "0") {
  414. layer.msg("发送成功!");
  415. var eswitch = $('#eswitch').val();
  416. var ename = $('#ename').val();
  417. var eId = $('#eId').val();
  418. var page = $('.layui-laypage-curr em').eq(1).html();
  419. var eId = $('#eId').val();
  420. var data = {
  421. req: "filter",
  422. ename: ename,
  423. eswitch: eswitch,
  424. f_id:eId,
  425. page: page,
  426. }
  427. setTimeout(function () {
  428. $.post("equipmanage_ybq",data,function(data){
  429. $("#datatable tr:not(:first)").html("");
  430. var msg = $.parseJSON(data);
  431. if (msg.dat.length > 0) {
  432. Fill_Table('datatable', msg.dat);
  433. $('#page').parent().show();
  434. } else {
  435. Fill_null_Table('datatable', msg.dat);
  436. $('#page').parent().hide();
  437. }
  438. $('#checkAll').prop('checked',false)
  439. $('.controlModel').slideUp();
  440. });
  441. }, 3000)
  442. }
  443. else {
  444. layer.msg("发送失败!")
  445. }
  446. }
  447. })
  448. } else {
  449. layui.use('layer', function () {
  450. var layer = layui.layer;
  451. layer.msg('请选择一条数据');
  452. });
  453. }
  454. }
  455. //筛选
  456. function sub_filter() {
  457. var ename = $('#ename').val();
  458. var eId = $('#eId').val();
  459. var eswitch = $('#eswitch').val();
  460. $.ajax({
  461. url: 'equipmanage_ybq',
  462. type: 'post',
  463. data: {
  464. req: "filter",
  465. ename: ename,
  466. eswitch: eswitch,
  467. page:1,
  468. f_id:eId
  469. },
  470. success: function (data) {
  471. var eId = $('#eId').val();
  472. $("#datatable tr:not(:first)").html("");
  473. var msg = $.parseJSON(data);
  474. if (msg.dat.length > 0) {
  475. Fill_Table('datatable', msg.dat);
  476. $('#page').parent().show();
  477. } else {
  478. Fill_null_Table('datatable', msg.dat);
  479. $('#page').parent().hide();
  480. }
  481. topicid = [];//当点击下一页不保存当前选中项
  482. $('#checkAll').prop('checked',false)
  483. $('.controlModel').hide();
  484. scrollBar()
  485. var datas = {
  486. req: "filter",
  487. ename: ename,
  488. eswitch: eswitch,
  489. f_id:eId
  490. };
  491. initSearchPage(msg.nums, '/equipmanage_ybq',datas);
  492. }
  493. })
  494. }
  495. //搜索分页
  496. function initSearchPage(page, url, datas) {
  497. layui.use('laypage', function () {
  498. var laypage = layui.laypage;
  499. laypage.render({
  500. elem: 'page' //注意,这里的 test1 是 ID,不用加 # 号
  501. , count: page
  502. ,theme: '#428BCA'
  503. , layout: ['prev', 'page', 'next', 'skip']
  504. , jump: function (obj, first) {
  505. datas.page = obj.curr;
  506. if (!first) {
  507. $.ajax({
  508. url: url,
  509. type: 'post',
  510. data: datas,
  511. success: function (data) {
  512. $("#datatable tr:not(:first)").html("");
  513. var msg = $.parseJSON(data);
  514. if (msg.dat.length > 0) {
  515. Fill_Table('datatable', msg.dat)
  516. } else {
  517. Fill_null_Table('datatable', msg.dat)
  518. }
  519. topicid = [];//当点击下一页不保存当前选中项
  520. $('#checkAll').prop('checked',false)
  521. $('.controlModel').hide();
  522. scrollBar()
  523. }
  524. })
  525. }
  526. }
  527. });
  528. });
  529. }
  530. // 强制升级
  531. function coerceshow(obj){
  532. if($('.coerce').hasClass('coerceBlock')){
  533. $('.coerce').removeClass('coerceBlock');
  534. $('.coerce').hide();
  535. $(obj).html('操作');
  536. }else{
  537. $('.coerce').show();
  538. $('.coerce').addClass('coerceBlock');
  539. $(obj).html('取消');
  540. }
  541. }
  542. function popupFrame(str,cmd,type,data){
  543. //询问框
  544. layer.confirm('确定'+str+'?', {
  545. icon:3,
  546. btn: ['确定','取消'] //按钮
  547. }, function(index){
  548. handleFun(cmd, type);
  549. layer.close(index);
  550. }, function(){
  551. });
  552. }
  553. function handleFun(cmd, type) {
  554. $.ajax({
  555. type: "post",
  556. url: 'ybq_mqtt',
  557. data: {
  558. "sw": "ctrl",//控制
  559. "topicid": JSON.stringify(topicid),
  560. "cmd": cmd,//升级 update
  561. "kind": type
  562. },
  563. dataType: "json",
  564. beforeSend: function () {
  565. $('#loadingParent').show();
  566. },
  567. complete: function () {
  568. setTimeout(function () {
  569. $('#loadingParent').hide();
  570. }, 3000)
  571. },
  572. success: function (data) {
  573. // layer.close(popupIndex);
  574. if(data==0){
  575. setTimeout(function () {
  576. $('#operationBtn').click();
  577. layer.msg('设置成功');
  578. }, 3000)
  579. }
  580. }
  581. })
  582. }
  583. // 窗口改变iframe高度改变
  584. $(window).resize(function () {
  585. scrollBar()
  586. });