sex_trap_data2.html 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785
  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/layui/css/layui.css' %}">
  10. <style type="text/css">
  11. body {
  12. overflow: hidden;
  13. background: #fff;
  14. }
  15. /* 返回 */
  16. .headerPlace {
  17. font-size: 22px;
  18. color: #418fbb;
  19. cursor: pointer;
  20. }
  21. .headerPlace img {
  22. vertical-align: middle;
  23. margin-right: 10px;
  24. margin-top: -4px;
  25. }
  26. .userinfo .fa {
  27. font-size: 18px;
  28. color: #26b3ff;
  29. margin: 0px 5px;
  30. }
  31. /* 右侧操作按钮 */
  32. .refresh {
  33. text-align: right;
  34. }
  35. .echartsParent{
  36. display: flex;
  37. justify-content: space-around;
  38. }
  39. .echartsParent >div{
  40. width: 50%;
  41. height: 400px;
  42. position: relative;
  43. }
  44. button.btn.btn-sm.btn-white.active {
  45. background: #428bca !important;
  46. color: #fff !important;
  47. }
  48. .echartsParent .echartsBox .hint {
  49. width: 100%;
  50. height: 100%;
  51. position: absolute;
  52. text-align: center;
  53. line-height: 400px;
  54. font-size: 22px;
  55. color: #8a8a8a;
  56. }
  57. .downTitle {
  58. text-align: right;
  59. line-height: 27px;
  60. padding-left: 0;
  61. margin-bottom: 5px;
  62. }
  63. .downContent {
  64. padding-left: 0;
  65. margin-bottom: 5px;
  66. }
  67. .timeStage {
  68. display: none;
  69. }
  70. </style>
  71. </head>
  72. <body>
  73. <div class="content">
  74. <div class="page-header">
  75. <span class="headerPlace" onclick="back()">
  76. <img src="{% static '/img/gobackIcon.png' %}" alt="">返回
  77. </span>
  78. </div>
  79. <div class="userinfocover">
  80. <div class="row ">
  81. <div class="col-xs-8 userinfo">
  82. <i class="fa fa-user-o" aria-hidden="true"></i>
  83. 设备编号:
  84. <span class="userinfoTitle" id="devNum"></span>
  85. 设备ID:
  86. <span class="userinfoTitle" id="equip_id"></span>
  87. 设备名称:
  88. <span class="userinfoTitle" id="equip_name"></span>
  89. 上报时间:
  90. <span class="userinfoTitle" id="upl_time"></span>
  91. 位置:
  92. <span class="userinfoTitle" id="curr_area"></span>
  93. </div>
  94. <div class="col-xs-4 refresh">
  95. <!-- <button class="btn btn-sm btn-info" onclick='sendexamineSIM()'>
  96. <i class="ace-icon fa fa-search align-top bigger-125 icon-on-right"></i>
  97. SIM卡查询
  98. </button> -->
  99. <!-- <button type="button" class="btn btn-sm btn-warning" id="operationBtn" >拍照</button> -->
  100. <!-- <button type="button" class="btn btn-sm btn-success" onclick="reloadPage()">刷新</button> -->
  101. </div>
  102. </div>
  103. <br />
  104. <div class="searchCover">
  105. 统计图时间段搜索:
  106. <button type="button" onclick="getCharts(this,1)" class="btn btn-sm btn-white">当天</button>
  107. <button type="button" onclick="getCharts(this,2)" class="btn btn-sm btn-white active">本月</button>
  108. <button type="button" onclick="getCharts(this,3)" class="btn btn-sm btn-white">半年</button>
  109. <button type="button" onclick="getCharts(this,4)" class="btn btn-sm btn-white">本年</button>
  110. <input type="text" id="timSelectBox" autocomplete="off" placeholder="请选择时间段 ">
  111. <input type="hidden" id="begin" name="begin">
  112. <input type="hidden" id="end" name="end">
  113. <button type="button" onclick="dtl_sub_filter()" class="btn btn-sm btn-primary">筛选</button>
  114. </div>
  115. <div class="echartsParent">
  116. <div>
  117. <div class="echartsBox fl">
  118. <div class="hint"></div>
  119. <div class="fl" id="line-chart"></div>
  120. </div>
  121. </div>
  122. <div>
  123. <div class="echartsBox fl">
  124. <div class="hint"></div>
  125. <div class="fl" id="line-chart2"></div>
  126. </div>
  127. </div>
  128. </div>
  129. <div>
  130. <div class="searchCover">
  131. 数据列表时间段搜索:
  132. <input type="text" id="dataSelectBox" autocomplete="off" placeholder="请选择时间段 ">
  133. <input type="hidden" id="databegin" name="begin">
  134. <input type="hidden" id="dataend" name="end">
  135. <button type="button" onclick="data_sub_filter()" class="btn btn-sm btn-primary">筛选</button>
  136. <!-- <button type="button" onclick="operation()" class="btn btn-sm btn-success">导出</button> -->
  137. <!-- <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal">导出</button> -->
  138. <button type="button" class="btn btn-success btn-sm" onclick="decideExport()">导出</button>
  139. </div>
  140. <div>
  141. <table class="layui-hide" id="test" lay-filter="test"></table>
  142. </div>
  143. <div class="fenpei-bottom">
  144. <!-- <input type="hidden" id="totalPage" value={{ nums }}> -->
  145. <input type="hidden" id="totalPage" value=32>
  146. <div id="page" style="text-align: center;"></div>
  147. </div>
  148. </div>
  149. </div>
  150. <!-- 导出提示框 -->
  151. <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  152. <div class="modal-dialog" role="document">
  153. <div class="modal-content">
  154. <div class="modal-header">
  155. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  156. <span aria-hidden="true">&times;</span>
  157. </button>
  158. <h4 class="modal-title" id="myModalLabel">导出信息</h4>
  159. </div>
  160. <div class="modal-body">
  161. <div class="row">
  162. <div class="col-xs-3 downTitle">文件名称:</div>
  163. <div class="col-xs-8 downContent" style=>
  164. <input type="text" id="filename" placeholder="请输入文件的名称" maxlength="15" class="col-xs-12">
  165. </div>
  166. <div class="col-xs-3 downTitle">下载类型:</div>
  167. <div class="col-xs-8 downContent">
  168. <select name="downtype" id="downtype" onchange="downtype(this)" class="col-xs-12">
  169. <option value="1">全部</option>
  170. <option value="2">时间段</option>
  171. </select>
  172. </div>
  173. <div class="col-xs-3 downTitle timeStage">时间段:</div>
  174. <div class="col-xs-8 downContent timeStage">
  175. <input type="text" id="timSelectBox3" autocomplete="off" placeholder="请选择时间段 " class="col-xs-12">
  176. <input type="hidden" id="downbegin" name="begin">
  177. <input type="hidden" id="downend" name="end">
  178. </div>
  179. </div>
  180. </div>
  181. <div class="modal-footer">
  182. <button type="button" class="btn btn-default btn-sm" data-dismiss="modal">取消</button>
  183. <button type="button" class="btn btn-primary btn-sm" onclick="operation()">下载</button>
  184. </div>
  185. </div>
  186. </div>
  187. </div>
  188. </div>
  189. <script src="{% static '/lib/js/jquery-2.1.4.min.js' %}"></script>
  190. <script src="{% static '/lib/bootstrap-3.3.7/js/bootstrap.js' %}"></script>
  191. <script src="{% static '/lib/layui/layui.all.js' %}"></script>
  192. <script src="{% static '/lib/js/highcharts.js'%}" type="text/javascript"></script>
  193. <script src="{% static '/js/common.js' %}0.3.4"></script>
  194. <script type="text/javascript">
  195. $.ajaxSetup({
  196. data: {
  197. csrfmiddlewaretoken: '{{ csrf_token }}'
  198. },
  199. });
  200. $(window).resize(function () {
  201. scrollBar()
  202. });
  203. var chart;
  204. var chart2;
  205. $(function () {
  206. currpage = getQueryString('currpage') || 1;
  207. equipName = getQueryString('equipName') || '';
  208. equipId = getQueryString('equipId') || '';
  209. id = getQueryString('id') || '';
  210. // etype = getQueryString('etype') || '';
  211. etypeA = getQueryString('etypeA') || '';
  212. onoffSelect = getQueryString('onoffSelect') || '';
  213. // 时间插件初始化
  214. layui.use('laydate', function () {
  215. var laydate = layui.laydate;
  216. var _layDateMark = (new Date()).getTime();
  217. $('#timSelectBox').attr('lay-key', '11' + _layDateMark);
  218. //执行一个laydate实例
  219. laydate.render({
  220. elem: '#timSelectBox' //指定元素
  221. ,
  222. range: true,
  223. done: function (value, date) {
  224. var dateArray = value.split(' - ')
  225. $('#begin').val(dateArray[0])
  226. $('#end').val(dateArray[1])
  227. }
  228. });
  229. $('#dataSelectBox').attr('lay-key', '22' + _layDateMark);
  230. laydate.render({
  231. elem: '#dataSelectBox' //指定元素
  232. ,
  233. range: true,
  234. done: function (value, date) {
  235. var dateArray = value.split(' - ')
  236. $('#databegin').val(dateArray[0])
  237. $('#dataend').val(dateArray[1])
  238. }
  239. });
  240. //执行一个laydate实例
  241. $('#timSelectBox3').attr('lay-key', '33' + _layDateMark);
  242. laydate.render({
  243. elem: '#timSelectBox3' //指定元素
  244. ,
  245. range: true,
  246. done: function (value, date) {
  247. var dateArray = value.split(' - ')
  248. $('#downbegin').val(dateArray[0])
  249. $('#downend').val(dateArray[1])
  250. }
  251. });
  252. });
  253. getData(1)
  254. getChartsData('','',24*60*60*1000)
  255. scrollBar()
  256. })
  257. function data_sub_filter(){
  258. getData(1)
  259. }
  260. var dataArr = {
  261. dat:[{
  262. 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"}',
  263. upl_time: "2020-02-29 17:41:11",
  264. is_online: "0",
  265. off_time: "2020-02-29 18:00:13",
  266. },
  267. {
  268. 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"}',
  269. upl_time: "2020-02-28 17:41:11",
  270. is_online: "1",
  271. off_time: "2020-02-28 18:00:13",
  272. },
  273. {
  274. 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"}',
  275. upl_time: "2020-02-27 17:41:11",
  276. is_online: "0",
  277. off_time: "2020-02-27 18:00:13",
  278. },
  279. {
  280. 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"}',
  281. upl_time: "2020-02-26 17:41:11",
  282. is_online: "0",
  283. off_time: "2020-02-26 18:00:13",
  284. }],
  285. nums: 55
  286. }
  287. // 数据请求
  288. function getData(page){
  289. var begin = $('#databegin').val();
  290. var end = $('#dataend').val();
  291. $.ajax({
  292. url:'sex_trap_data',
  293. type:'post',
  294. data:{
  295. e_id:id,
  296. page:page,
  297. begin:begin,
  298. end:end,
  299. // etype:etype
  300. etype:etypeA
  301. },
  302. dataType:'json',
  303. success:function(data){
  304. renderTable(processingData(data));
  305. renderPage(page,data)
  306. scrollBar()
  307. },
  308. error:function(type){
  309. console.log(type);
  310. }
  311. })
  312. }
  313. // renderTable(processingData(dataArr));
  314. // renderPage(1,dataArr)
  315. // 1当天 2本月 3半年 4本年
  316. function getCharts(obj,flag){
  317. $('#timSelectBox').val('')
  318. $('#begin').val('')
  319. $('#end').val('')
  320. if($(obj).hasClass('active')){
  321. return false;
  322. }else{
  323. $('.searchCover .btn-white').removeClass('active');
  324. $(obj).addClass('active')
  325. }
  326. var newDate = new Date();
  327. var begin;
  328. var end;
  329. var endNewDate = new Date(newDate.getTime()+24*60*60*1000);
  330. end = endNewDate.getFullYear()+'-'+(endNewDate.getMonth()+1)+'-'+endNewDate.getDate();
  331. if(flag == 1){
  332. end = getTime(-1);
  333. begin = getTime(0);
  334. var spaceNum = 60*60*1000;
  335. }else if(flag == 2){
  336. begin = getTime(30);
  337. var spaceNum = 24*60*60*1000;
  338. }else if(flag == 3){
  339. begin = getTime(182.5);
  340. var spaceNum = 30*24*60*60*1000;
  341. }else if(flag == 4){
  342. begin = getTime(365);
  343. var spaceNum = 30*24*60*60*1000;
  344. }
  345. getChartsData(begin,end,spaceNum)
  346. }
  347. function getChartsData(begin,end,spaceNum){
  348. $.ajax({
  349. url: 'sex_at_ah',
  350. type: 'post',
  351. data: {
  352. begin: begin,
  353. end: end,
  354. e_id: id
  355. },
  356. dataType: 'json',
  357. success: function (data) {
  358. if (!data.length) {
  359. $('#line-chart').prev().html('暂无温度数据').css('z-index', 99);
  360. $('#line-chart2').prev().html('暂无温度数据').css('z-index', 99);
  361. if(chart){
  362. var seriesList = chart.series; //获得图表的所有序列
  363. var seriesCount=seriesList.length;
  364. //通过for循环删除序列数据
  365. for(var i = 0;i<seriesCount;i++)
  366. {
  367. chart.series[0].remove();
  368. }
  369. }
  370. if(chart2){
  371. var seriesList = chart2.series; //获得图表的所有序列
  372. var seriesCount=seriesList.length;
  373. //通过for循环删除序列数据
  374. for(var i = 0;i<seriesCount;i++)
  375. {
  376. chart2.series[0].remove();
  377. }
  378. }
  379. return false;
  380. } else {
  381. $('#line-chart').prev().html('').css('z-index', 0);
  382. $('#line-chart2').prev().html('').css('z-index', 0);
  383. }
  384. // var temp = eval('(' + data + ')');
  385. var temp = data;
  386. var atData = [];
  387. var ahData = [];
  388. var cpuTmpData = [];
  389. for (var i = 0; i < temp.length; i++) {
  390. var arr1 = [],
  391. arr2 = [],
  392. arr3 = [];
  393. var thisTime = temp[i].tim;
  394. thisTime = thisTime.replace(/-/g, '/');
  395. var time = new Date(thisTime);
  396. timestamp = time.getTime() + 8 * 3600000;
  397. // console.log(timestamp)
  398. arr1.push(timestamp);
  399. arr1.push(parseFloat(temp[i].at));
  400. arr2.push(timestamp);
  401. arr2.push(parseFloat(temp[i].ah));
  402. arr3.push(timestamp);
  403. arr3.push(parseFloat((temp[i].cpu_tmp / 1000).toFixed(1)));
  404. atData.unshift(arr1);
  405. ahData.unshift(arr2);
  406. cpuTmpData.unshift(arr3);
  407. if (i == temp.length - 1) {
  408. renderCharts(atData, ahData,cpuTmpData,spaceNum)
  409. }
  410. }
  411. if (!temp.length) {
  412. $('#line-chart').prev().html('暂无温度数据').css('z-index', 99);
  413. $('#line-chart2').prev().html('暂无温度数据').css('z-index', 99);
  414. } else {
  415. $('#line-chart').prev().html('').css('z-index', 0);
  416. $('#line-chart2').prev().html('').css('z-index', 0);
  417. }
  418. },
  419. error: function (type) {}
  420. })
  421. }
  422. Highcharts.setOptions({
  423. // 所有语言文字相关配置都设置在 lang 里
  424. lang: {
  425. resetZoom: '重置',
  426. resetZoomTitle: '重置缩放比例'
  427. }
  428. });
  429. function renderCharts(atData, ahData,cpuTmpData,tickInterval) {
  430. chart = Highcharts.chart('line-chart', {
  431. chart: {
  432. type: 'spline',
  433. zoomType: 'x',
  434. selectionMarkerFill: 'rgba(0,0,0, 0.2)',
  435. resetZoomButton: {
  436. // 按钮定位
  437. position:{
  438. align: 'right', // by default
  439. verticalAlign: 'top', // by default
  440. x: -20,
  441. y: -50
  442. },
  443. }
  444. },
  445. title: {
  446. text: '环境温湿度'
  447. },
  448. subtitle: {
  449. // text: '非规律性时间内的变化'
  450. },
  451. xAxis: {
  452. crosshair: true, //十字基准线
  453. type: 'datetime',
  454. dateTimeLabelFormats: { //根据时间间距X轴自动显示哪种格式
  455. millisecond: '%H:%M:%S.%L',
  456. second: '%H:%M:%S',
  457. minute: '%H:%M',
  458. hour: '%H:%M',
  459. day: '%m-%d',
  460. week: '%m-%d',
  461. month: '%Y-%m',
  462. year: '%Y'
  463. },
  464. // dateTimeLabelFormats: {
  465. // week: '%m/%d'
  466. // },
  467. // tickInterval: 7 * 24 * 3600 * 1000,
  468. tickInterval: tickInterval,
  469. // minRange: 20
  470. },
  471. colors: ['#39F', '#6CF', '#036', '#000', '#6CF', ],
  472. yAxis: {
  473. title: {
  474. text: '温湿度变化'
  475. },
  476. },
  477. credits: { //去掉默认的highcharts.com
  478. enabled: false
  479. },
  480. tooltip: {
  481. // crosshairs: true,
  482. shared: true, //折线共享
  483. headerFormat: '<b>{point.x:%Y-%m-%e %H:%M:%S}</b><br>',
  484. },
  485. plotOptions: {
  486. spline: {
  487. marker: {
  488. enabled: true,
  489. radius: 3, //曲线点半径,默认是4
  490. symbol: 'diamond' //曲线点类型:”circle”, “square”, “diamond”, “triangle”,”triangle-down”,默认是”circle”
  491. }
  492. }
  493. },
  494. series: [{
  495. name: '环境温度',
  496. data: atData,
  497. tooltip: {
  498. valueSuffix: '°C'
  499. }
  500. },
  501. {
  502. name: '环境湿度',
  503. data: ahData,
  504. tooltip: {
  505. valueSuffix: '%RH'
  506. }
  507. },
  508. ]
  509. });
  510. chart2 = Highcharts.chart('line-chart2', {
  511. chart: {
  512. type: 'spline',
  513. zoomType: 'x',
  514. selectionMarkerFill: 'rgba(0,0,0, 0.2)',
  515. resetZoomButton: {
  516. // 按钮定位
  517. position:{
  518. align: 'right', // by default
  519. verticalAlign: 'top', // by default
  520. x: -20,
  521. y: -50
  522. },
  523. }
  524. },
  525. title: {
  526. text: 'CPU温度'
  527. },
  528. subtitle: {
  529. // text: '非规律性时间内的变化'
  530. },
  531. xAxis: {
  532. crosshair: true, //十字基准线
  533. type: 'datetime',
  534. dateTimeLabelFormats: { //根据时间间距X轴自动显示哪种格式
  535. millisecond: '%H:%M:%S.%L',
  536. second: '%H:%M:%S',
  537. minute: '%H:%M',
  538. hour: '%H:%M',
  539. day: '%m-%d',
  540. week: '%m-%d',
  541. month: '%Y-%m',
  542. year: '%Y'
  543. },
  544. // dateTimeLabelFormats: {
  545. // week: '%m/%d'
  546. // },
  547. // tickInterval: 7 * 24 * 3600 * 1000,
  548. tickInterval: tickInterval,
  549. // minRange: 20
  550. },
  551. colors: ['#036','#39F', '#6CF', '#000', '#6CF', ],
  552. yAxis: {
  553. title: {
  554. text: 'CPU温度变化'
  555. },
  556. },
  557. credits: { //去掉默认的highcharts.com
  558. enabled: false
  559. },
  560. tooltip: {
  561. // crosshairs: true,
  562. shared: true, //折线共享
  563. headerFormat: '<b>{point.x:%Y-%m-%e %H:%M:%S}</b><br>',
  564. },
  565. plotOptions: {
  566. spline: {
  567. marker: {
  568. enabled: true,
  569. radius: 3, //曲线点半径,默认是4
  570. symbol: 'diamond' //曲线点类型:”circle”, “square”, “diamond”, “triangle”,”triangle-down”,默认是”circle”
  571. }
  572. }
  573. },
  574. series: [{
  575. name: 'CPU温度',
  576. data: cpuTmpData,
  577. tooltip: {
  578. valueSuffix: '°C'
  579. }
  580. }
  581. ]
  582. });
  583. }
  584. // 获取想要时间 num为天数
  585. function getTime(num) {
  586. // 先获取当前时间
  587. var curDate = (new Date()).getTime();
  588. // 将半年的时间单位换算成毫秒
  589. var halfYear = num * 24 * 3600 * 1000;
  590. var pastResult = curDate - halfYear; // 半年前的时间(毫秒单位)
  591. // 日期函数,定义起点为半年前
  592. var pastDate = new Date(pastResult),
  593. pastYear = pastDate.getFullYear(),
  594. pastMonth = pastDate.getMonth() + 1,
  595. pastDay = pastDate.getDate();
  596. return pastYear + '-' + pastMonth + '-' + pastDay;
  597. }
  598. function processingData(data){
  599. if(data.nums){
  600. var dataArr = data.dat;
  601. var newDataArr = [];
  602. for(var i = 0;i<dataArr.length;i++){
  603. var sex_trap = eval('('+ dataArr[i].sex_trap +')');
  604. sex_trap.upl_time = dataArr[i].upl_time;
  605. sex_trap.is_online = dataArr[i].is_online;
  606. sex_trap.off_time = dataArr[i].off_time;
  607. sex_trap.equip_name = dataArr[i].equip_name || '--';
  608. sex_trap.dev_num = sex_trap.dev_num || '--';
  609. newDataArr.push(sex_trap);
  610. if(i == dataArr.length-1){
  611. return newDataArr;
  612. }
  613. }
  614. }else{
  615. return [];
  616. }
  617. }
  618. function renderTable(newDataArr){
  619. layui.use(['table'], function(){
  620. var table = layui.table;
  621. table.render({
  622. elem: '#test'
  623. // ,url:'/demo/table/user/'
  624. ,skin: 'line' //行边框风格
  625. ,even: true //开启隔行背景
  626. // ,size: 'lg' //小尺寸的表格
  627. ,data:newDataArr
  628. ,cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
  629. ,cols: [[
  630. // {field:'proj',align:'center', title: '型号', minWidth: 100, templet: function(d){if(d.proj == 'SEX_TRAP_1'){return 'I型'}else if(d.proj == 'SEX_TRAP_2'){return 'II型'}}}
  631. {field:'ds',align:'center', title: '设备开关', templet: function(d){if(d.ds == 1){return '开'}else{return '关'}}}
  632. ,{field:'ws',align:'center',title: '工作状态', templet: function(d){if(d.ws == 1){return '工作'}else{return '待机'}}}
  633. ,{field:'at',align:'center', title: '环境温度', templet: function(d){if(d.at == ""){return '--'}else{return d.at}}}
  634. ,{field:'ah',align:'center', title: '环境湿度', templet: function(d){if(d.ah == ""){return '--'}else{return d.ah}}}
  635. ,{field:'cv',align:'center', title: '充电电压', templet: function(d){if(d.cv == ""){return '--'}else{return (d.cv/1000).toFixed(2)}}}
  636. ,{field:'bv',align:'center', title: '电池电压', templet: function(d){if(d.bv==""){return "--"}else{return (d.bv/1000).toFixed(2)}}}
  637. ,{field:'cs',align:'center', title: '充电状态', templet: function(d){if(d.cs==1){return "充电"}else{return '非充电'}}}
  638. ,{field:'bs',align:'center', title: '电池状态', templet: function(d){if(d.bps==""){return "--"}else if(d.bs == 1){return '欠压'}else if(d.bs == 2){return '过压'}else{return '正常'}}}
  639. ,{field:'csq',align:'center', title: '信号强度'}
  640. ,{fixed: 'right',field:'upl_time',align:'center', title: '上报时间', minWidth: 200}
  641. ]]
  642. });
  643. // //监听行工具事件
  644. // table.on('tool(test)', function(obj){
  645. // var data = obj.data;
  646. // console.log(data)
  647. // if(obj.event == 'lookall'){
  648. // window.location.href = 'sex_trap_detail?id='+data.imei+'&currpage='+$(".layui-laypage-skip .layui-input").val() +'&equipName='+$('#ename').val()+'&equipId='+$('#eId').val()
  649. // }
  650. // });
  651. });
  652. }
  653. function renderPage(currpage,data){
  654. var begin = $('#databegin').val();
  655. var end = $('#dataend').val();
  656. //调用分页
  657. layui.use(['laypage'], function(){
  658. var laypage = layui.laypage;
  659. laypage.render({
  660. elem: 'page'
  661. ,count: data.nums
  662. ,curr:currpage
  663. , theme: '#428BCA'
  664. , layout: ['prev', 'page', 'next', 'skip']
  665. ,jump: function(obj, first){
  666. //首次不执行
  667. if(!first){
  668. $.ajax({
  669. url:'sex_trap_data',
  670. type:'post',
  671. data:{
  672. e_id:id,
  673. page:obj.curr,
  674. begin:begin,
  675. end:end,
  676. // etype:etype
  677. etype:etypeA
  678. },
  679. dataType:'json',
  680. success:function(data){
  681. renderTable(processingData(data));
  682. },
  683. error:function(type){
  684. console.log(type)
  685. }
  686. })
  687. }
  688. }
  689. });
  690. })
  691. }
  692. // 判断主流浏览器
  693. function decideExport(){
  694. $('#myModal').modal('toggle')
  695. }
  696. //导出
  697. function operation() {
  698. if (!$('#filename').val()) {
  699. layer.msg("请填写文件名!", { time: 2000 });
  700. return false;
  701. }
  702. if ($('#downtype').val() == 2) {
  703. if (!($('#downbegin').val() && $('#downbegin').val())) {
  704. layer.msg("请选择时间段!", { time: 2000 });
  705. return false;
  706. }
  707. }
  708. window.location.href = 'cbd_data_export?id='+$('#equip_id').val()+'&begin='+$('#downbegin').val()+'&end='+$('#downend').val()+'&filename='+$('#filename').val()
  709. }
  710. // 窗口改变iframe高度改变
  711. $(window).resize(function () {
  712. if ($('.content').height() > 750) {
  713. $('#iframe-main', parent.document).css('height', $('.content').height() + 20)
  714. } else {
  715. $('#iframe-main', parent.document).css('height', '750px')
  716. }
  717. });
  718. function downtype(obj) {
  719. if ($(obj).val() == 2) {
  720. $('.timeStage').show();
  721. } else {
  722. $('.timeStage').hide();
  723. $('#downbegin').val('');
  724. $('#downend').val('');
  725. $('#downtimSelectBox').val('');
  726. }
  727. }
  728. function getQueryString(name) {
  729. let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  730. let url = window.location.href.split('?')[1].match(reg);
  731. // console.log(url)
  732. if (url != null) {
  733. return decodeURI(url[2]) //decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。
  734. } else {
  735. return null
  736. }
  737. }
  738. function back() {
  739. var url = 'sex_trap_detail?equipId=' + equipId + '&equipName=' + equipName + '&currpage=' + currpage +'&id='+ id + '&etypeA=' + etypeA + '&etype=SEX_TRAP_2' + '&onoffSelect' + onoffSelect;
  740. location.href = url;
  741. }
  742. </script>
  743. </body>
  744. </html>