sugar_tccd.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. {% load staticfiles %}
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8" />
  6. <link href="{% static '/lib/bootstrap-3.3.7/css/bootstrap.css' %}" rel="stylesheet">
  7. <link rel="stylesheet" href="{% static '/lib/font-awesome/4.5.0/css/font-awesome.css' %}">
  8. <link rel="stylesheet" href="{% static '/lib/css/ace.min.css' %}" />
  9. <link rel="stylesheet" href="{% static '/lib/css/ace-skins.min.css' %}">
  10. <link rel="stylesheet" href="{% static '/lib/css/ace-rtl.min.css' %}">
  11. <link rel="stylesheet" href="{% static '/lib/layui/css/layui.css' %}">
  12. <link rel="stylesheet" href="{% static '/lib/css/jquery-ui.css' %}" />
  13. <link rel="stylesheet" href="{% static '/css/loading.css' %}?versions=0.5.0" />
  14. <link rel="stylesheet" href="{% static '/css/equipmanage_cbd.css' %}" />
  15. <style>
  16. .content {
  17. overflow-x: scroll;
  18. }
  19. .searchCover {
  20. margin: 20px 0;
  21. }
  22. .innerTable {
  23. padding: 0 1px 0 0;
  24. min-width: 750px;
  25. }
  26. .table,
  27. .table.table-striped>thead>tr>th {
  28. text-align: center;
  29. }
  30. table td {
  31. vertical-align: middle !important;
  32. }
  33. .nullData {
  34. width: 100%;
  35. height: 500px;
  36. background: #ddd;
  37. text-align: center;
  38. line-height: 500px;
  39. font-size: 20px;
  40. border: 1px solid #ddd;
  41. }
  42. </style>
  43. <body>
  44. <div class="content">
  45. <div id="detialPage"></div>
  46. <div id="listPage">
  47. <div class="searchCover">
  48. 设备名称:
  49. <input type="text" value="" id="ename" placeholder="请输入设备名称"
  50. onkeypress="if (event.keyCode == 13) sub_filter();" /> 设备ID:
  51. <input type="text" value="" id="eId" placeholder="请输入设备ID"
  52. onkeypress="if (event.keyCode == 13) sub_filter();" />
  53. <button type="button" onclick="sub_filter()" class="btn btn-sm btn-primary">筛选</button>
  54. </div>
  55. <div class="innerTable">
  56. <table class="layui-hide" id="test" lay-filter="test"></table>
  57. <!-- <table id="datatable" class="table table-striped table-hover">
  58. <thead>
  59. <tr>
  60. <th>设备ID</th>
  61. <th>设备名称</th>
  62. <th>在线状态</th>
  63. <th>设备开关</th>
  64. <th>工作状态</th>
  65. <th>雨控保护</th>
  66. <th>温控保护</th>
  67. <th>倾倒保护</th>
  68. <th>电池状态</th>
  69. <th>定时时长</th>
  70. <th>充电电压</th>
  71. <th>电池电压</th>
  72. <th>计数值</th>
  73. <th>信号强度</th>
  74. <th>版本号</th>
  75. <th>上报时间</th>
  76. </tr>
  77. </thead>
  78. <tbody>
  79. </tbody>
  80. </table> -->
  81. <div class="fenpei-bottom">
  82. <!-- <input type="hidden" id="totalPage" value={{ nums }}> -->
  83. <input type="hidden" id="totalPage" value=32>
  84. <div id="page" style="text-align: center;"></div>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. <!-- loading -->
  90. <div id="loadingParent">
  91. <div id="loadCenter">
  92. <div class="skype-loader">
  93. <div class="dot">
  94. <div class="first"></div>
  95. </div>
  96. <div class="dot"></div>
  97. <div class="dot"></div>
  98. <div class="dot"></div>
  99. </div>
  100. Logging in...
  101. </div>
  102. </div>
  103. <script src="{% static '/lib/js/jquery-2.1.4.min.js' %}"></script>
  104. <script src="{% static '/lib/bootstrap-3.3.7/js/bootstrap.js' %}"></script>
  105. <script src="{% static '/lib/layui/layui.all.js' %}"></script>
  106. <!-- <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=TcRPmrsiZUqdUBWoELrUArRkCRC36KMx"></script> -->
  107. <script src="{% static '/js/common.js' %}?versions=0.5.0"></script>
  108. <script type="text/html" id="barDemo">
  109. <!-- <a class="btn btn-sm btn-primary" lay-event="lookall">查看详情</a> -->
  110. <button class="btn btn-sm btn-primary" lay-event="lookall">查看详情</button>
  111. </script>
  112. <script>
  113. $.ajaxSetup({
  114. data: { csrfmiddlewaretoken: '{{ csrf_token }}' },
  115. });
  116. window.onload = function () {
  117. // console.log(window.location)
  118. if (window.location.search) {
  119. var currpage = getQueryString('currpage') || 1;
  120. var equipName = getQueryString('equipName') || '';
  121. var equipId = getQueryString('equipId') || '';
  122. getData(currpage, equipName, equipId);
  123. // let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  124. // let url = window.location.hash.split('?')[1].match(reg);
  125. } else {
  126. getData(1, '', '');
  127. }
  128. }
  129. function sub_filter() {
  130. var equipName = $('#ename').val();
  131. var equipId = $('#eId').val();
  132. getData(1, equipName, equipId);
  133. }
  134. function getQueryString(name) {
  135. let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  136. let url = window.location.href.split('?')[1].match(reg);
  137. // console.log(url)
  138. if (url != null) {
  139. return decodeURI(url[2])//decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。
  140. } else {
  141. return null
  142. }
  143. }
  144. // 数据请求
  145. function getData(page, equipName, equipId) {
  146. $.ajax({
  147. url: '',
  148. type: 'post',
  149. data: {
  150. f_id: equipId,
  151. ename: equipName,
  152. page: page
  153. },
  154. dataType: 'json',
  155. success: function (data) {
  156. renderTable(processingData(data));
  157. renderPage(page, data);
  158. },
  159. error: function (type) {
  160. console.log(type);
  161. }
  162. })
  163. }
  164. var dataArr = {
  165. dat: [{
  166. sex_trap: '{"imei":"123","iccid":"89860401101700076471","csq":29,"dver":"1.0.1","proj":"SEX_TRAP2","ds":1,"ws":1,"cbs":0,"rps":0,"tps":0,"dps":0,"bps":0,"ts":0,"st":20,"et":2,"cv":18000,"bv":12800,"at":"0","ah":"0","infr_ct":25,"volt_ct":100,"dat_f":5,"pic_f":10,"bt_ct":10,"lng":"113.67336","lat":"34.815187","stamp":"20180301211805"}',
  167. upl_time: "2020-02-29 17:41:11",
  168. is_online: "0",
  169. off_time: "2020-02-29 18:00:13",
  170. },
  171. {
  172. sex_trap: '{"imei":"456","iccid":"89860401101700076471","csq":29,"dver":"1.0.1","proj":"SEX_TRAP3","ds":1,"ws":1,"cbs":0,"rps":0,"tps":0,"dps":0,"bps":0,"ts":0,"st":20,"et":2,"cv":18000,"bv":12800,"at":"0","ah":"0","infr_ct":25,"volt_ct":100,"dat_f":5,"pic_f":10,"bt_ct":10,"lng":"113.67336","lat":"34.815187","stamp":"20180301211805"}',
  173. upl_time: "2020-02-28 17:41:11",
  174. is_online: "1",
  175. off_time: "2020-02-28 18:00:13",
  176. },
  177. {
  178. sex_trap: '{"imei":"789","iccid":"89860401101700076471","csq":29,"dver":"1.0.1","proj":"SEX_TRAP1","ds":1,"ws":1,"cbs":0,"rps":0,"tps":0,"dps":0,"bps":0,"ts":0,"st":20,"et":2,"cv":18000,"bv":12800,"at":"0","ah":"0","infr_ct":25,"volt_ct":100,"dat_f":5,"pic_f":10,"bt_ct":10,"lng":"113.67336","lat":"34.815187","stamp":"20180301211805"}',
  179. upl_time: "2020-02-27 17:41:11",
  180. is_online: "0",
  181. off_time: "2020-02-27 18:00:13",
  182. },
  183. {
  184. sex_trap: '{"imei":"867038032102765","iccid":"89860401101700076471","csq":29,"dver":"1.0.1","proj":"SEX_TRAP3","ds":1,"ws":1,"cbs":0,"rps":0,"tps":0,"dps":0,"bps":0,"ts":0,"st":20,"et":2,"cv":18000,"bv":12800,"at":"0","ah":"0","infr_ct":25,"volt_ct":100,"dat_f":5,"pic_f":10,"bt_ct":10,"lng":"113.67336","lat":"34.815187","stamp":"20180301211805"}',
  185. upl_time: "2020-02-26 17:41:11",
  186. is_online: "0",
  187. off_time: "2020-02-26 18:00:13",
  188. }],
  189. nums: 2
  190. }
  191. function processingData(data) {
  192. if (data.nums) {
  193. var dataArr = data.dat;
  194. var newDataArr = [];
  195. for (var i = 0; i < dataArr.length; i++) {
  196. var tccb_status = eval('(' + dataArr[i].tccb_status + ')');
  197. tccb_status.upl_time = dataArr[i].upl_time;
  198. tccb_status.is_online = dataArr[i].is_online;
  199. tccb_status.off_time = dataArr[i].off_time;
  200. tccb_status.equip_name = dataArr[i].equip_name || '--';
  201. tccb_status.dev_num = tccb_status.dev_num || '--';
  202. newDataArr.push(tccb_status);
  203. if (i == dataArr.length - 1) {
  204. return newDataArr;
  205. }
  206. }
  207. } else {
  208. return [];
  209. }
  210. }
  211. function renderTable(newDataArr) {
  212. console.log(newDataArr)
  213. layui.use(['table'], function () {
  214. var table = layui.table;
  215. table.render({
  216. elem: '#test'
  217. // ,url:'/demo/table/user/'
  218. , skin: 'line' //行边框风格
  219. , even: true //开启隔行背景
  220. , size: 'lg' //小尺寸的表格
  221. , data: newDataArr
  222. , cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
  223. // 糖醋测报
  224. , cols: [[
  225. { field: 'imei', align: 'center', title: '设备ID', minWidth: 150 }
  226. , { 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>' } } }
  227. , { field: 'dev_num', align: 'center', title: '设备名称', minWidth: 50 }
  228. , { field: 'csq', align: 'center', title: '信号强度' }
  229. , { field: 'vbatstatus', align: 'center', title: '电池状态', minWidth: 100, templet: function (d) { if (d.vbatstatus == '0') { return '正常' } else if (d.vbatstatus == '1') { return '电量过低' } } }
  230. , { field: 'vbat', align: 'center', title: '电压(V)', templet: function (d) { return d.vbat } }
  231. , { field: 'dver', align: 'center', title: '设备版本', templet: function (d) { return d.dver } }
  232. , { field: 'upl_time', align: 'center', title: '上报时间', minWidth: 200 }
  233. , { fixed: 'right', align: 'center', title: '操作', toolbar: '#barDemo', width: 150 }
  234. ]]
  235. });
  236. //监听行工具事件
  237. table.on('tool(test)', function (obj) {
  238. var data = obj.data;
  239. // console.log(data)
  240. if (obj.event == 'lookall') {
  241. window.location.href = 'tccb_detail?id=' + data.imei + '&currpage=' + $(".layui-laypage-skip .layui-input").val() + '&equipName=' + $('#ename').val() + '&equipId=' + $('#eId').val()
  242. }
  243. });
  244. });
  245. }
  246. function renderPage(currpage, data) {
  247. //调用分页
  248. layui.use(['laypage'], function () {
  249. var laypage = layui.laypage;
  250. laypage.render({
  251. elem: 'page'
  252. , count: data.nums
  253. , curr: currpage
  254. , theme: '#428BCA'
  255. , layout: ['prev', 'page', 'next', 'skip']
  256. , jump: function (obj, first) {
  257. //首次不执行
  258. if (!first) {
  259. $.ajax({
  260. url: '',
  261. type: 'post',
  262. data: {
  263. page: obj.curr
  264. },
  265. dataType: 'json',
  266. beforeSend: function () {
  267. $('#loadingParent').show();
  268. },
  269. complete: function () {
  270. $('#loadingParent').hide();
  271. },
  272. success: function (data) {
  273. if (data.nums > 0) {
  274. renderTable(processingData(data));
  275. $('#page').parent().show();
  276. } else {
  277. $('#page').parent().hide();
  278. }
  279. },
  280. error: function (type) {
  281. var data = {
  282. dat: [
  283. {
  284. sex_trap: '{"imei":"123","iccid":"89860401101700076471","csq":29,"dver":"1.0.1","proj":"SEX_TRAP2","ds":1,"ws":1,"cbs":0,"rps":0,"tps":0,"dps":0,"bps":0,"ts":0,"st":20,"et":2,"cv":18000,"bv":12800,"at":"0","ah":"0","infr_ct":25,"volt_ct":100,"dat_f":5,"pic_f":10,"bt_ct":10,"lng":"113.67336","lat":"34.815187","stamp":"20180301211805"}',
  285. upl_time: "2020-02-29 17:41:11",
  286. is_online: "0",
  287. off_time: "2020-02-29 18:00:13",
  288. },
  289. {
  290. sex_trap: '{"imei":"456","iccid":"89860401101700076471","csq":29,"dver":"1.0.1","proj":"SEX_TRAP3","ds":1,"ws":1,"cbs":0,"rps":0,"tps":0,"dps":0,"bps":0,"ts":0,"st":20,"et":2,"cv":18000,"bv":12800,"at":"0","ah":"0","infr_ct":25,"volt_ct":100,"dat_f":5,"pic_f":10,"bt_ct":10,"lng":"113.67336","lat":"34.815187","stamp":"20180301211805"}',
  291. upl_time: "2020-02-28 17:41:11",
  292. is_online: "1",
  293. off_time: "2020-02-28 18:00:13",
  294. },
  295. {
  296. sex_trap: '{"imei":"789","iccid":"89860401101700076471","csq":29,"dver":"1.0.1","proj":"SEX_TRAP1","ds":1,"ws":1,"cbs":0,"rps":0,"tps":0,"dps":0,"bps":0,"ts":0,"st":20,"et":2,"cv":18000,"bv":12800,"at":"0","ah":"0","infr_ct":25,"volt_ct":100,"dat_f":5,"pic_f":10,"bt_ct":10,"lng":"113.67336","lat":"34.815187","stamp":"20180301211805"}',
  297. upl_time: "2020-02-27 17:41:11",
  298. is_online: "0",
  299. off_time: "2020-02-27 18:00:13",
  300. },
  301. {
  302. sex_trap: '{"imei":"867038032102765","iccid":"89860401101700076471","csq":29,"dver":"1.0.1","proj":"SEX_TRAP3","ds":1,"ws":1,"cbs":0,"rps":0,"tps":0,"dps":0,"bps":0,"ts":0,"st":20,"et":2,"cv":18000,"bv":12800,"at":"0","ah":"0","infr_ct":25,"volt_ct":100,"dat_f":5,"pic_f":10,"bt_ct":10,"lng":"113.67336","lat":"34.815187","stamp":"20180301211805"}',
  303. upl_time: "2020-02-26 17:41:11",
  304. is_online: "0",
  305. off_time: "2020-02-26 18:00:13",
  306. },
  307. ],
  308. nums: 32
  309. }
  310. renderTable(processingData(data));
  311. }
  312. })
  313. }
  314. }
  315. });
  316. })
  317. }
  318. </script>
  319. </body>
  320. </html>