cbdBatchOperate.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. var layer;
  2. // 时间插件初始化
  3. layui.use(['laydate','form','layer'], function () {
  4. var laydate = layui.laydate;
  5. var form = layui.form;
  6. layer = layui.layer;
  7. form.on('select(userSelect)', function(data){
  8. dverSelect()
  9. });
  10. });
  11. // 版本筛选
  12. function dverSelect(obj, param) {
  13. var ename = $('#ename').val() || '';
  14. var eId = $('#eId').val() || '';
  15. var onoffSelectVal = $('#onoffSelect').val() || '';
  16. var edverVal = $('#edver').val() || '';
  17. var euserVal = $('#userSelect').val() || '';
  18. $.ajax({
  19. url: 'equipmanage_cbd',
  20. type: 'post',
  21. data: {
  22. req: "filter",
  23. dver: edverVal,
  24. is_online: onoffSelectVal,
  25. ename: ename,
  26. f_id: eId,
  27. page: 1,
  28. uname:euserVal
  29. },
  30. dataType:'json',
  31. beforeSend: function () {
  32. $('#loadingParent').show();
  33. },
  34. complete: function () {
  35. $('#loadingParent').hide();
  36. },
  37. success: function (data) {
  38. checkedArr = [];
  39. renderTable(processingData(data));
  40. renderPage(1,data)
  41. }
  42. })
  43. }
  44. getData(1,'','','','','')
  45. // 数据请求
  46. function getData(page,dver,is_online,ename,f_id,uname){
  47. $.ajax({
  48. url:'equipmanage_cbd',
  49. type:'post',
  50. data:{
  51. req: 'filter',
  52. dver: dver,
  53. is_online: is_online,
  54. ename: ename,
  55. f_id: f_id,
  56. page: page,
  57. uname: uname,
  58. },
  59. beforeSend: function () {
  60. $('#loadingParent').show();
  61. },
  62. complete: function () {
  63. $('#loadingParent').hide();
  64. },
  65. dataType:'json',
  66. success:function(data){
  67. renderTable(processingData(data));
  68. renderPage(page,data)
  69. },
  70. error:function(type){
  71. console.log(type);
  72. }
  73. })
  74. }
  75. function processingData(data){
  76. if(data.nums){
  77. var dataArr = data.dat;
  78. var newDataArr = [];
  79. for(var i = 0;i<dataArr.length;i++){
  80. var cbd_status = eval('('+ dataArr[i].cbd_status +')');
  81. cbd_status.equip_desc = dataArr[i].equip_desc;
  82. cbd_status.equip_name = dataArr[i].equip_name || '--';
  83. cbd_status.iccid = dataArr[i].iccid;
  84. cbd_status.is_online = dataArr[i].is_online;
  85. cbd_status.off_time = dataArr[i].off_time;
  86. cbd_status.upl_time = dataArr[i].upl_time;
  87. cbd_status.updata = dataArr[i].update;
  88. newDataArr.push(cbd_status);
  89. if(i == dataArr.length-1){
  90. return newDataArr;
  91. }
  92. }
  93. }else{
  94. return [];
  95. }
  96. }
  97. function renderTable(newDataArr){
  98. layui.use(['table'], function(){
  99. var table = layui.table;
  100. table.render({
  101. elem: '#datatable'
  102. ,skin: 'line' //行边框风格
  103. ,even: true //开启隔行背景
  104. ,size: 'lg' //小尺寸的表格
  105. ,data:newDataArr
  106. // ,cellMinWidth: 102 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
  107. ,cols: [[
  108. {checkbox: true}
  109. ,{field:'imei', align:'center', title:'设备ID', minWidth: 200}
  110. ,{field:'equip_name',align:'center', title: '设备名称', minWidth: 100}
  111. ,{field:'is_online',align:'center', title: '在线状态', templet: function(d){if(d.is_online == 1){return '<img src="static/img/onLine.png" />'}else{return '<span title="离线时间:'+d.off_time+'"><img src="static/img/offLine.png" /></span>'}}}
  112. ,{field:'ts', align:'center', title: '定时模式', templet: function(d){if(d.ts == 1){return '时控'}else{return '光控'}}}
  113. ,{field:'rps',align:'center', title: '雨控', templet: function(d){if(d.rps == 0){return '<img src="static/img/noRCtrl.png" />'}else{return '<img src="static/img/rCtrl.png" />'}}}
  114. ,{field:'lps', align:'center', title: '光照', templet: function(d){if(d.lps == 1){return '<img src="static/img/daytime.png" />'}else{return '<img src="static/img/night.png" />'}}}
  115. ,{field:'tps', align:'center', title: '温控', templet: function(d){if(d.tps == 0){return '<img src="static/img/noHighTemp.png" />'}else{return '<img src="static/img/highTemp.png" />'}}}
  116. ,{field:'ts', align:'center', title: '灯管状态', templet:function(d){return lampFun(d)} }
  117. ,{field:'gs',align:'center', title: '通道', templet: function(d){if(d.gs == 0){return '排水'}else{return '落虫'}} }
  118. ,{field:'hs', align:'center', title: '加热状态', templet: function(d){if(d.hs == 0){return '正常'}else{return '加热'}} }
  119. ,{field:'upds', align:'center', title: '上仓门', templet: function(d){if(d.upds == 0){return '关闭'}else{return '打开'}} }
  120. ,{field:'dnds', align:'center', title: '下仓门', templet: function(d){if(d.dnds == 0){return '关闭'}else{return '打开'}} }
  121. ,{field:'csq', align:'center', title: '信号强度', }
  122. ,{field:'dver', align:'center', title: '设备版本',templet: function(d){if(d.updata == "0"){return '<span class="blue" title="该设备可升级">' + d.dver + '</span>'}else{return '<span>' + d.dver + '</span>'}} }
  123. ,{field:'upl_time', align:'center', title: '上报时间', minWidth: 200}
  124. ]]
  125. ,done: function(res, page, count){
  126. // console.log(res)
  127. //可以自行添加判断的条件是否选中
  128. //这句才是真正选中,通过设置关键字LAY_CHECKED为true选中,这里只对第一行选中
  129. // res.data[0]["LAY_CHECKED"]='true';
  130. //下面三句是通过更改css来实现选中的效果
  131. // var index= res.data[0]['LAY_TABLE_INDEX'];
  132. // $('tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);
  133. // $('tr[data-index=' + index + '] input[type="checkbox"]').next().addClass('layui-form-checked');
  134. }
  135. });
  136. //监听行工具事件
  137. table.on('checkbox(datatable)', function(obj){
  138. if(obj.type == 'all'){
  139. if(obj.checked){
  140. checkedArr = [];
  141. for(var i = 0;i<newDataArr.length;i++){
  142. checkedArr.push(newDataArr[i].imei)
  143. }
  144. }else{
  145. checkedArr = [];
  146. }
  147. }else{
  148. if(obj.checked){
  149. checkedArr.push(obj.data.imei)
  150. }else{
  151. checkedArr.splice(checkedArr.indexOf(obj.data.imei),1)
  152. }
  153. }
  154. // console.log(checkedArr)
  155. });
  156. });
  157. }
  158. function lampFun(stat){
  159. if(stat.lamp != undefined){
  160. if(stat.ws == 1){
  161. if(stat.lamp == 1){
  162. return '<div title="工作中"><img src="static/img/greenLamp.png" height="30px" alt=""></div>';
  163. }else if(stat.lux == 0){
  164. return '<div title="未检测到传感器">N/A</div>';
  165. }else{
  166. return '<div title="异常"><img src="static/img/redLamp.png" height="30px" alt=""></div>';
  167. }
  168. }else{
  169. return '<div title="关闭"><img src="static/img/blueLamp.png" height="30px" alt=""></div>';
  170. }
  171. }else{
  172. return "--";
  173. }
  174. }
  175. function renderPage(currpage,data){
  176. var checkedArr = [];
  177. var ename = $('#ename').val() || '';
  178. var eId = $('#eId').val() || '';
  179. var onoffSelectVal = $('#onoffSelect').val() || '';
  180. var edverVal = $('#edver').val() || '';
  181. var euserVal = $('#userSelect').val() || '';
  182. // alert(1)
  183. //调用分页
  184. layui.use(['laypage'], function(){
  185. var laypage = layui.laypage;
  186. laypage.render({
  187. elem: 'page'
  188. ,count: data.nums
  189. ,curr:currpage
  190. , theme: '#428BCA'
  191. , layout: ['prev', 'page', 'next', 'skip']
  192. ,jump: function(obj, first){
  193. //首次不执行
  194. if(!first){
  195. $.ajax({
  196. url:'equipmanage_cbd',
  197. type:'post',
  198. data:{
  199. req: 'filter',
  200. dver: edverVal,
  201. is_online: onoffSelectVal,
  202. ename: ename,
  203. f_id: eId,
  204. page: obj.curr,
  205. uname: euserVal,
  206. },
  207. dataType:'json',
  208. beforeSend: function () {
  209. $('#loadingParent').show();
  210. },
  211. complete: function () {
  212. $('#loadingParent').hide();
  213. },
  214. success:function(data){
  215. checkedArr = [];
  216. renderTable(processingData(data));
  217. },
  218. error:function(type){
  219. }
  220. })
  221. }
  222. }
  223. });
  224. })
  225. }
  226. function handHandle(flag){
  227. if(flag == 1){
  228. var txt = '升级';
  229. var params = 'update';
  230. }else if(flag == 2){
  231. var txt = '重启';
  232. var params = 'reboot';
  233. }else if(flag == 3){
  234. var txt = '刷新';
  235. var params = 'read';
  236. }
  237. if(!checkedArr.length){
  238. layer.msg('请至少选择一条设备')
  239. }else{
  240. layer.confirm('是否进行批量'+txt+'操作?', {icon: 3, title:'警告'}, function(index){
  241. $.ajax({
  242. url:'cbd_mqtt_all',
  243. type:'post',
  244. data:{
  245. cmd: params,
  246. eidlist: JSON.stringify(checkedArr),
  247. },
  248. dataType:'json',
  249. beforeSend: function () {
  250. $('#loadingParent').show();
  251. },
  252. complete: function () {
  253. $('#loadingParent').hide();
  254. },
  255. success:function(data){
  256. if(data==0){
  257. layer.msg('设置成功',{icon:1})
  258. }
  259. },
  260. error:function(type){
  261. }
  262. })
  263. layer.close(index);
  264. });
  265. }
  266. }
  267. var user = document.getElementById("datatable");
  268. //可升级版本数据填充
  269. function Fill_Table(table_id, data) {
  270. //js循环读取json数据
  271. var table = document.getElementById(table_id).children[1];
  272. for (var i = 0; i < data.length; i++) {
  273. var row = table.insertRow(table.rows.length);
  274. if (data[i].length == 0) { continue; }
  275. var c1 = row.insertCell(0);
  276. c1.innerHTML = '<div class="deviceId">' + data[i].num + '</div>';
  277. var c2 = row.insertCell(1);
  278. c2.innerHTML = data[i].dver;
  279. var c3 = row.insertCell(2);
  280. c3.innerHTML = '<input type="text" class="pid" value="" placeholder="输入需要更改的版本号">';
  281. var c4 = row.insertCell(3);
  282. // c4.innerHTML = '<button onclick="ensure(\''+data[i].num+'\')" class="btn btn-sm btn-success">确定</button>';
  283. c4.innerHTML = '<button onclick="ensure($(this))" class="btn btn-sm btn-success">确定</button>';
  284. }
  285. }
  286. //可升级版本暂无数据
  287. function Fill_null_Table(table_id, data) {
  288. var table = document.getElementById(table_id).children[1];
  289. var row = table.insertRow(table.rows.length);
  290. var c1 = row.insertCell(0);
  291. c1.setAttribute('colspan', '18');
  292. c1.setAttribute('class', 'nullData');
  293. c1.innerHTML = "暂无数据";
  294. }
  295. //可升级版本
  296. function upgradeRelease() {
  297. layer.open({
  298. type: 1,
  299. title: '可升级版本',
  300. offset: '100px',
  301. shadeClose: true,
  302. area: ['750px', '465px'],
  303. content: $('#handleBtns'),
  304. end:function (res) {
  305. // self.location.reload(); //刷新框架内页面
  306. $("#datatableA tr:not(:first)").html("");
  307. }
  308. });
  309. $.ajax({
  310. url: 'cbd_dver',
  311. type: 'post',
  312. data: {
  313. dver: '',
  314. num: '',
  315. },
  316. dataType: 'json',
  317. beforeSend: function () {
  318. $('#loadingParent').show();
  319. },
  320. complete: function () {
  321. $('#loadingParent').hide();
  322. },
  323. success: function (data) {
  324. if (data.length > 0) {
  325. Fill_Table('datatableA', data);
  326. } else {
  327. Fill_null_Table('datatableA', data);
  328. }
  329. },
  330. error: function (type) {
  331. }
  332. })
  333. }
  334. //可升级版本确定
  335. function ensure(obj) {
  336. var iptVal = $(obj).parents("tr").find(".pid").val()
  337. var parent = obj.parents('tr');
  338. var id = parent.find('.deviceId').html().trim();
  339. $.ajax({
  340. url: 'cbd_dver',
  341. type: 'post',
  342. data: {
  343. dver: iptVal,
  344. num: id,
  345. },
  346. dataType: 'json',
  347. beforeSend: function (XMLHttpRequest) {
  348. layer.msg('请求中,请稍候……', { icon: 16, shade: 0.01, shadeClose: false, time: 60000 });
  349. },
  350. success: function (data) {
  351. if (data == "0") {
  352. layer.msg('修改成功!!', { icon: 1, shade: 0.01, shadeClose: false, time: 500 });
  353. } else {
  354. layer.msg('修改失败!!', { icon: 2, shade: 0.01, shadeClose: false, time: 500 });
  355. }
  356. },
  357. error: function (type) {
  358. layer.msg('修改失败!!', { icon: 2, shade: 0.01, shadeClose: false, time: 500 });
  359. }
  360. })
  361. }