countalarm.jsp 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892
  1. <%--
  2. Created by IntelliJ IDEA.
  3. User: SamRichard
  4. Date: 2018/3/1
  5. Time: 10:36
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page import="org.apache.commons.lang3.StringUtils" %>
  9. <%@ page import="java.sql.Timestamp" %>
  10. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  11. <%
  12. String prefix = request.getScheme() + "://" + request.getServerName();
  13. int port = request.getServerPort();
  14. if (port != 80)
  15. prefix += ":" + port;
  16. Boolean bAll = Boolean.FALSE;
  17. String strAll = (String)request.getParameter("all");
  18. if (StringUtils.isNotBlank(strAll)){
  19. bAll = strAll.equalsIgnoreCase("1");
  20. System.out.println(bAll);
  21. }
  22. Boolean bSS = Boolean.FALSE;
  23. bSS = Boolean.parseBoolean(request.getParameter("ss"));
  24. %>
  25. <!DOCTYPE html>
  26. <html lang="zh-CN">
  27. <head>
  28. <meta charset="utf-8">
  29. <meta http-equiv="x-ua-compatible" content="IE=edge">
  30. <meta name="viewport" content="width=device-width, initial-scale=1">
  31. <title>报警统计页面</title>
  32. <link rel="stylesheet" href="css/bootstrap.min.css">
  33. <link rel="stylesheet" href="css/bootstrap-table.min.css">
  34. <link rel="stylesheet" href="css/sweetalert2.min.css" >
  35. <link rel="stylesheet" href="css/select2.min.css">
  36. <link rel="stylesheet" href="css/select2-bootstrap.css">
  37. <link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css">
  38. <link rel="icon" href="favicon.ico">
  39. <style type="text/css">
  40. .handle
  41. {
  42. padding-left: 3px;
  43. padding-right: 3px;
  44. }
  45. </style>
  46. </head>
  47. <body>
  48. <div id="pagebody" class="container-fluid">
  49. <br>
  50. <form class="form-inline" id="t2">
  51. <fieldset>
  52. <div class="row">
  53. <div class="col-md-2 form-group" style="padding-right: 5px;">
  54. <label class="sr-only" for="js-data-ajax-subinfo">分中心</label>
  55. <select id="js-data-ajax-subinfo" class="form-control" style="width:100%"></select>
  56. </div>
  57. <div class="col-md-4 form-group" style="padding-right: 5px;">
  58. <label class="sr-only" for="js-data-ajax-taskinfo">通道名称:</label>
  59. <select id="js-data-ajax-taskinfo" class="form-control" style="width: 100%;height: 34px;"></select>
  60. </div>
  61. <div class="col-md-1 form-group">
  62. <label for="roadtype" class="sr-only">道路类型</label>
  63. <select class="form-control" id="roadtype" style="width: 100%">
  64. <option value="0" selected>道路类型</option>
  65. <option value="1">路面</option>
  66. <option value="2">隧道</option>
  67. </select>
  68. </div>
  69. <div class="col-md-1 form-group">
  70. <label for="alarmtype" class="sr-only">报警类型</label>
  71. <select class="form-control" id="alarmtype" style="width: 100%">
  72. <option value="0" selected>报警类型</option>
  73. <option value="80">停驶</option>
  74. <option value="83">拥堵</option>
  75. <option value="84">行人</option>
  76. <option value="85">逆行</option>
  77. <option value="87">抛洒物</option>
  78. <option value="92">光线异常</option>
  79. <option value="93">烟雾</option>
  80. <option value="95">低速</option>
  81. <option value="94">转动</option>
  82. <option value="90">抓拍</option>
  83. <option value="82">事故</option>
  84. </select>
  85. </div>
  86. <div class="col-md-1 form-group">
  87. <label for="result" class="sr-only">处理结果</label>
  88. <select class="form-control" id="result" style="width: 100%">
  89. <option value="-1" selected>处理结果</option>
  90. <option value="0">未处理</option>
  91. <option value="1">正确</option>
  92. <option value="2">误报</option>
  93. <option value="3">其他</option>
  94. </select>
  95. </div>
  96. <div class="col-md-1 form-group">
  97. <label for="level" class="sr-only">等级</label>
  98. <select class="form-control" id="level" style="width: 100%">
  99. <option value="0" selected>报警等级</option>
  100. <option value="4">提示</option>
  101. <option value="3">告警</option>
  102. <option value="2">重要</option>
  103. <option value="1">严重</option>
  104. </select>
  105. </div>
  106. <div class="col-md-1 form-group">
  107. <label for="timeslot" class="sr-only">时段</label>
  108. <select class="form-control" id="timeslot" style="width: 100%">
  109. <option value="0" selected>报警时段</option>
  110. <option value="1">白昼</option>
  111. <option value="2">黑夜</option>
  112. <option value="3">交替</option>
  113. </select>
  114. </div>
  115. <div class="col-md-1 form-group">
  116. <label for="videotype" class="sr-only">视频格式</label>
  117. <select class="form-control" id="videotype" style="width: 100%">
  118. <option value="0" selected>视频格式</option>
  119. <option value="1">SD</option>
  120. <option value="2">HD</option>
  121. <option value="3">FHD</option>
  122. </select>
  123. </div>
  124. </div>
  125. <br>
  126. <div class="row">
  127. <div class="col-md-3 form-group">
  128. <label for="dtp_input1" class="control-label">开始时间:</label>
  129. <div class="input-group date form_datetime" data-date="2016/09/16 00:00:00+0800" data-date-format="yyyy-mm-dd hh:ii:00" data-link-field="dtp_input1" id="starttime">
  130. <input class="form-control" size="16" type="text" value="" readonly>
  131. <span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span>
  132. <span class="input-group-addon"><span class="glyphicon glyphicon-th"></span></span>
  133. </div>
  134. <input type="hidden" id="dtp_input1" value="" /><br/>
  135. </div>
  136. <div class="col-md-3 form-group">
  137. <label for="dtp_input2" class="control-label">结束时间:</label>
  138. <div class="input-group date form_datetime" data-date="22016-09-16T05:25:07+08:00" data-date-format="yyyy-mm-dd hh:ii:00" data-link-field="dtp_input2" id="endtime">
  139. <input class="form-control" size="16" type="text" value="" readonly>
  140. <span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span>
  141. <span class="input-group-addon"><span class="glyphicon glyphicon-th"></span></span>
  142. </div>
  143. <input type="hidden" id="dtp_input2" value="" /><br/>
  144. </div>
  145. <div class="col-md-1 col-md-offset-4 form-group">
  146. <button id="getinfo" type="button" class="btn btn-primary btn-block">统计</button>
  147. </div>
  148. <div class="col-md-1 form-group">
  149. <button id="showalarm" type="button" class="btn btn-primary btn-block">展示</button>
  150. </div>
  151. </div>
  152. </fieldset>
  153. </form>
  154. <br>
  155. <p class = "bg-success" id = "countalarmresult" style=" padding: 15px;">
  156. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  157. 统计结果:&nbsp;一共<u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</u>条报警;&nbsp;&nbsp;
  158. 其中<u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</u>条正确,
  159. 占比<u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</u>%;&nbsp;&nbsp;
  160. <u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</u>条未处理,
  161. 占比<u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</u>%.</p>
  162. <table id="table" data-toolbar="#toolbar"
  163. data-sort-order="asc" data-sort-name="alarmtime"
  164. data-sort-field="alarmtime"
  165. data-unique-id="guid"
  166. data-show-pagination-switch="false"
  167. data-pagination="true" data-id-field="guid" data-id-table="advancedTable"
  168. data-page-list="[10, 50]" data-show-footer="false"
  169. data-query-params="queryParam" data-response-handler="responseHandler"
  170. data-side-pagination="server" data-url="getalarmdetail2.cpp?&timestamp=" + <%=System.currentTimeMillis()%>
  171. >
  172. </table>
  173. </div>
  174. <script src="js/jquery-3.1.1.min.js"></script>
  175. <script src="js/bootstrap.min.js"></script>
  176. <script src="js/highcharts.src.js"></script>
  177. <script src="js/exporting.js"></script>
  178. <script src="js/dark-unica.js"></script>
  179. <script src="js/select2.min.js"></script>
  180. <script src="js/select2-zh-CN.js"></script>
  181. <script src="js/bootstrap-datetimepicker.min.js" charset="UTF-8"></script>
  182. <script src="js/bootstrap-datetimepicker.zh-CN.js" charset="UTF-8"></script>
  183. <script src="js/sweetalert2.min.js"></script>
  184. <script src="js/es6-promise.auto.min.js"></script>
  185. <script>
  186. //全局变量
  187. var taskname;
  188. var alarmtype;
  189. var roadtype;
  190. var handleresult;
  191. var alarmlevel;
  192. var timeslot;
  193. var videotype;
  194. var starttime;
  195. var endtime;
  196. var $subinfo = $("#js-data-ajax-subinfo");
  197. var $taskinfo = $("#js-data-ajax-taskinfo");
  198. var $alarmtype = $("#alarmtype");
  199. var $result = $("#result");
  200. var $level = $("#level");
  201. var $roadtype = $("#roadtype");
  202. var $timeslot = $("#timeslot");
  203. var $videotype = $("#videotype");
  204. var $startime = $("#starttime");
  205. var $endtime = $("#endtime");
  206. var subinfo;
  207. var taskinfo;
  208. var subno = "0";
  209. var taskid = "0";
  210. //初始函数
  211. $(function () {
  212. $roadtype.select2({
  213. width: 'resolve',
  214. placeholder: "道路类型"
  215. });
  216. //报警类型
  217. $alarmtype.select2({
  218. width: 'resolve',
  219. placeholder: "报警类型"
  220. });
  221. //处理结果
  222. $result.select2({
  223. width: 'resolve',
  224. placeholder: "处理结果"
  225. });
  226. $level.select2({
  227. width: 'resolve',
  228. placeholder: "报警等级"
  229. })
  230. $timeslot.select2({
  231. width: 'resolve',
  232. placeholder: "报警时段"
  233. })
  234. $videotype.select2({
  235. width: 'resolve',
  236. placeholder: "视频格式"
  237. })
  238. {
  239. var date = new Date();
  240. date.setSeconds(0);
  241. date.setMilliseconds(0);
  242. date.setMinutes(date.getMinutes() + 1);
  243. var date2 = new Date(date);
  244. date2.setHours(date.getHours() - 2);
  245. $startime.datetimepicker('update', date2);
  246. $endtime.datetimepicker('update', date);
  247. //type = 0;
  248. //starttime = date2.toISOString();
  249. //endtime = date.toISOString();
  250. }
  251. $.get("getsubinfo.cpp", "", function (data) {
  252. var subdata = new Array();
  253. subdata[0] = new Object();
  254. subdata[0].id = "0";
  255. subdata[0].text = "选择分中心";
  256. subdata = subdata.concat(data);
  257. subinfo = $subinfo.select2({
  258. language: "zh-CN",
  259. minimumResultsForSearch: Infinity,
  260. placeholder: "选择分中心",
  261. data : subdata
  262. });
  263. {
  264. taskinfo = $taskinfo.select2({
  265. language: "zh-CN",
  266. placeholder: "选择通道",
  267. disabled : true,
  268. data : null
  269. });
  270. }
  271. });
  272. })
  273. function inittaskinfo() {
  274. $taskinfo.select2({
  275. language: "zh-CN",
  276. placeholder: "选择通道",
  277. disabled : true,
  278. data : null
  279. });
  280. }
  281. $subinfo.on("select2:select", function (e) {
  282. inittaskinfo();
  283. subno = e.params.data.id;
  284. taskid = "0";
  285. if (e.params.data.id === "0")
  286. return ;
  287. $.get("gettaskinfo.cpp", { subno : e.params.data.id }, function (data) {
  288. var taskinfodata = new Array();
  289. taskinfodata[0] = new Object();
  290. taskinfodata[0].id = "0";
  291. taskinfodata[0].text = "选择通道(全部通道)";
  292. taskinfodata = taskinfodata.concat(data);
  293. taskinfo = $taskinfo.select2({
  294. language: "zh-CN",
  295. placeholder: "选择通道(全部通道)",
  296. disabled : false,
  297. data : taskinfodata
  298. })
  299. })
  300. });
  301. $taskinfo.on("select2:select", function (e) {
  302. taskid = e.params.data.id;
  303. });
  304. $("#getinfo").click(function () {
  305. taskname = $taskinfo.select2("val");
  306. if (taskname == "0" || taskname == null)
  307. taskname = '';
  308. alarmtype = $alarmtype.select2("val");
  309. roadtype = $roadtype.select2("val");
  310. handleresult = $result.select2("val");
  311. alarmlevel = $level.select2("val");
  312. timeslot = $timeslot.select2("val");
  313. videotype = $videotype.select2("val");
  314. starttime = $("#dtp_input1").val();
  315. endtime = $("#dtp_input2").val();
  316. countData();
  317. });
  318. function countData() {
  319. $("#countalarmresult").removeClass("bg-success");
  320. $("#countalarmresult").addClass("bg-primary");
  321. var date = new Date(Date.parse(starttime.replace(/-/g, "/")));
  322. var date2 = new Date(Date.parse(endtime.replace(/-/g, "/")));
  323. if (date > date2)
  324. {
  325. swal({
  326. title: 'Sorry!',
  327. text: '查询时间有误.',
  328. timer: 1500,
  329. confirmButtonText: "确定"
  330. }).then(
  331. function () {},
  332. // handling the promise rejection
  333. function (dismiss) {
  334. if (dismiss === 'timer') {
  335. console.log('I was closed by the timer')
  336. }
  337. }
  338. );
  339. return ;
  340. };
  341. $.get("countalarmresult.cpp", {
  342. taskname : taskname,
  343. roadtype : roadtype,
  344. alarmtype : alarmtype,
  345. result : handleresult,
  346. level : alarmlevel,
  347. timeslot : timeslot,
  348. videotype : videotype,
  349. starttime : starttime,
  350. endtime : endtime,
  351. all: <%=strAll%>
  352. }, function (data) {
  353. $("#countalarmresult").html(
  354. "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
  355. "统计结果:&nbsp;一共<u>&nbsp;&nbsp;" + data.total + "&nbsp;&nbsp;</u>条报警; &nbsp;&nbsp;"+
  356. "其中<u>&nbsp;&nbsp;" + data.right + "&nbsp;&nbsp;</u>条正确, " +
  357. "占比<u>&nbsp;&nbsp;" + data.rightrate / 10.0 + "&nbsp;&nbsp;</u>%;&nbsp;&nbsp;" +
  358. "<u>&nbsp;&nbsp;" + data.unhandle + "&nbsp;&nbsp;</u>条未处理, " +
  359. "占比<u>&nbsp;&nbsp;" + data.unhandlerate / 10.0 + "&nbsp;&nbsp;</u>%."
  360. );
  361. $("#countalarmresult").removeClass("bg-primary");
  362. $("#countalarmresult").addClass("bg-success");
  363. });
  364. };
  365. $("#showalarm").click(function () {
  366. taskname = $taskinfo.select2("val");
  367. if (taskname == "0" || taskname == null)
  368. taskname = undefined;
  369. alarmtype = $alarmtype.select2("val");
  370. roadtype = $roadtype.select2("val");
  371. handleresult = $result.select2("val");
  372. alarmlevel = $level.select2("val");
  373. timeslot = $timeslot.select2("val");
  374. videotype = $videotype.select2("val");
  375. starttime = $("#dtp_input1").val();
  376. endtime = $("#dtp_input2").val();
  377. $table.bootstrapTable('refresh');
  378. //$table.bootstrapTable('refresh',
  379. // {url:url});
  380. /*
  381. swal({
  382. title: 'Sorry!',
  383. text: '暂时未实现此功能.',
  384. timer: 1500,
  385. confirmButtonText: "确定"
  386. }).then(
  387. function () {},
  388. // handling the promise rejection
  389. function (dismiss) {
  390. if (dismiss === 'timer') {
  391. console.log('I was closed by the timer')
  392. }
  393. }
  394. );
  395. */
  396. });
  397. //表格
  398. var $table = $('#table');
  399. function initTable() {
  400. $table.bootstrapTable({
  401. //height: getHeight(),
  402. queryParams:function(params){
  403. params.taskname = taskname;
  404. params.roadtype = roadtype;
  405. params.alarmtype = alarmtype;
  406. params.result = handleresult;
  407. params.level = alarmlevel;
  408. params.timeslot = timeslot;
  409. params.videotype = videotype;
  410. params.starttime = starttime;
  411. params.endtime = endtime;
  412. if (<%=StringUtils.isNotBlank(strAll)%>)
  413. params.all = 1;
  414. return params;
  415. },
  416. exportDataType: "basic",
  417. columns: [[{
  418. field: 'guid',
  419. title: "GUID",
  420. visible: false
  421. }, {
  422. title: '通道名称',
  423. field: 'taskname',
  424. align: 'center',
  425. valign: 'middle',
  426. sortable: true,
  427. //filterControl:"select",
  428. }, {
  429. field: 'alarmtime',
  430. title: '报警时间',
  431. searchable: true,
  432. align: 'center',
  433. valign: 'middle',
  434. sortable: true
  435. }, {
  436. field: 'alarmtype',
  437. title: '报警类型',
  438. searchable: true,
  439. align: 'center',
  440. valign: 'middle',
  441. filterControl:"select",
  442. formatter: function (value) {
  443. return getAlarmTypeName(value);
  444. }
  445. //visible: false,
  446. }, {
  447. field: 'result',
  448. title: '处理结果',
  449. align: 'center',
  450. valign: 'middle',
  451. formatter: function (value) {
  452. return getResult(value);
  453. }
  454. }, {
  455. field: 'level',
  456. title: '报警等级',
  457. align: 'center',
  458. valign: 'middle',
  459. formatter: function (value) {
  460. return getLevel(value);
  461. }
  462. }, {
  463. field: 'mark',
  464. title: '备注',
  465. align: 'center',
  466. valign: 'middle',
  467. }, {
  468. field: 'pic',
  469. title: '报警图片',
  470. //align: 'center',
  471. //valign: 'middle',
  472. //searchable: false,
  473. width:317,
  474. events: operateEvents,
  475. formatter: operateFormatter3
  476. }, {
  477. field: 'video',
  478. title: '报警录像',
  479. align: 'center',
  480. width:317,
  481. valign: 'middle',
  482. events: operateEvents,
  483. formatter: operateFormatter4
  484. }
  485. ],]
  486. });
  487. // sometimes footer render error.
  488. setTimeout(function () {
  489. $table.bootstrapTable('resetView');
  490. }, 200);
  491. $table.on('expand-row.bs.table', function (e, index, row, $detail) {
  492. });
  493. $table.on('all.bs.table', function (e, name, args) {
  494. console.log(name, args);
  495. });
  496. $(window).resize(function () {
  497. $table.bootstrapTable('resetView', {
  498. height: getHeight()
  499. });
  500. });
  501. }
  502. function queryParam(params) {
  503. return params;
  504. }
  505. function getFilterResult(result) {
  506. switch (result){
  507. case -1:
  508. return "未过滤";
  509. case 0:
  510. return "匹配到一致";
  511. case 1:
  512. return "匹配到相似";
  513. case 2:
  514. return "匹配到部分相似";
  515. case 3:
  516. return "未匹配到";
  517. case 4:
  518. return "宽高比例过滤";
  519. case 5:
  520. return "最小像素值过滤";
  521. case 6:
  522. return "连续播报过滤";
  523. case 7:
  524. return "水平框过滤";
  525. case 8:
  526. return "行人报警过滤";
  527. case 10:
  528. return "白线过滤";
  529. case 11:
  530. return "梯形过滤";
  531. case 12:
  532. return "树叶过滤";
  533. case 13:
  534. return "地面过滤";
  535. case 14:
  536. return "无明显无标过滤";
  537. case 15:
  538. return "最小高度过滤";
  539. case 18:
  540. return "分类器过滤";
  541. case 20:
  542. return "夜晚亮度过滤";
  543. default:
  544. return result;
  545. }
  546. }
  547. function getLevel(level) {
  548. switch (level){
  549. case 1:
  550. return "紧急";
  551. case 2:
  552. return "重要";
  553. case 3:
  554. return "警告";
  555. case 4:
  556. return "提示";
  557. default:
  558. return "未知";
  559. }
  560. }
  561. function getResult(result) {
  562. switch (result) {
  563. case 0:
  564. return "未处理";
  565. case 1:
  566. return "已处理";
  567. case 2:
  568. return "误报警";
  569. default :
  570. return "其他";
  571. }
  572. }
  573. function getAlarmTypeName(alarmtype) {
  574. switch (alarmtype){
  575. case 0x50:
  576. return "停驶";
  577. case 0x51:
  578. return "超速";
  579. case 0x52:
  580. return "事故";
  581. case 0x53:
  582. return "拥堵";
  583. case 0x54:
  584. return "行人";
  585. case 0x55:
  586. return "逆行";
  587. case 0x56:
  588. return "火灾";
  589. case 0x57:
  590. return "抛洒物";
  591. case 0x58:
  592. return "排队超限";
  593. case 0x59:
  594. return "交通状态信息";
  595. case 0x5a:
  596. return "抓拍";
  597. case 0x5b:
  598. return "抓拍";
  599. case 0x5c:
  600. return "光线异常";
  601. case 0x5d:
  602. return "烟雾";
  603. case 0x5e:
  604. return "转动";
  605. case 0x5f:
  606. return "低速";
  607. case 0xFF:
  608. return "测试";
  609. default:
  610. return "未知";
  611. }
  612. }
  613. function responseHandler(res) {
  614. return res;
  615. }
  616. function detailFormatter(index, row) {
  617. var html = [];
  618. html.push('<div class="well well-sm">');
  619. html.push('<ul>');
  620. html.push('<li>GUID:' + row.guid);
  621. html.push('<li>通道名称:' + row.taskname);
  622. html.push('<li>报警时间:' + row.alarmtime);
  623. html.push('<li>报警类型:' + getAlarmTypeName(row.alarmtype));
  624. html.push('<li>报警等级:' + getLevel(row.level));
  625. if (row.result === 0) {
  626. html.push('<li>处理结果:未处理');
  627. } else if (row.result === 1) {
  628. html.push('<li>处理结果:已处理');
  629. html.push('<li>处理信息:' + row.mark);
  630. } else if (row.result === 2) {
  631. html.push('<li>处理结果:误报警');
  632. html.push('<li>误报信息:' + row.mark);
  633. }
  634. var filefullname = "http://<%=request.getServerName()%>:<%=request.getServerPort()%>/DB/pic/" + row.imagepath1 + ".jpg";
  635. //var filefullname = "http://192.168.2.251:21006/DB/pic/" + row.imagepath1 + ".jpg";
  636. html.push('<li>报警图片:<img src="' + filefullname + '" width="352" height="288" />');
  637. html.push('</ul>');
  638. html.push('</div>');
  639. return html.join('');
  640. }
  641. function operateFormatter2(value, row, index) {
  642. return [
  643. '<a class="handle" title="查看图片" data-guid="' + row.guid + '" onclick="viewpic(this)">',
  644. '<i class="glyphicon glyphicon-picture"></i>', '</a>',
  645. '<a class="handle" title="查看录像" data-guid="' + row.guid + '" onclick="viewvideo(this)">',
  646. '<i class="glyphicon glyphicon-facetime-video"></i>', '</a>']
  647. .join('');
  648. };
  649. function operateFormatter3(value, row, index) {
  650. var picpath = "http://<%=request.getServerName()%>:<%=request.getServerPort()%>/DB/pic/" + row.imagepath1 + ".jpg";
  651. return [
  652. '<a target="_blank" href=' + picpath + '>',
  653. '<img src=' + picpath + ' alt="" width=300 height=180/>',
  654. '</a>'
  655. ].join('');
  656. };
  657. /*
  658. function operateFormatter4(value, row, index) {
  659. var picpath = "http://<%=request.getServerName()%>:<%=request.getServerPort()%>/DB/video/" + row.imagepath1 + ".mp4";
  660. return [
  661. '<a class="handle" title="下载录像" href="' + picpath + '" download="{' + row.guid + '}.mp4">',
  662. '<i class="glyphicon glyphicon-facetime-video"></i>', '</a>'
  663. ].join(''); preload="auto"
  664. };
  665. */
  666. function operateFormatter4(value, row, index) {
  667. var picpath = "http://<%=request.getServerName()%>:<%=request.getServerPort()%>/DB/video/" + row.imagepath1 + ".mp4";
  668. return [
  669. '<a target="_blank" href=' + picpath + '>',
  670. '<video controls="controls" src=' + picpath + ' width=300 height=180/>',
  671. '</a>'
  672. ].join('');
  673. };
  674. function removealarm(t) {
  675. if (t.dataset.guid){
  676. $.post("deletealarm.cpp", {guid : t.dataset.guid}, function (data, status) {
  677. if (data)
  678. {
  679. swal({
  680. title: 'success',
  681. text: '删除成功.',
  682. type: 'success',
  683. timer: 2500,
  684. confirmButtonText: "确定"
  685. }).then(
  686. function () {},
  687. // handling the promise rejection
  688. function (dismiss) {
  689. if (dismiss === 'timer') {
  690. console.log('I was closed by the timer')
  691. }
  692. }
  693. );
  694. var obj = $table.bootstrapTable('removeByUniqueId', t.dataset.guid);
  695. return ;
  696. }
  697. swal({
  698. title: 'error!',
  699. text: '删除失败.',
  700. timer: 2500,
  701. type: 'error',
  702. confirmButtonText: "确定"
  703. }).then(
  704. function () {},
  705. // handling the promise rejection
  706. function (dismiss) {
  707. if (dismiss === 'timer') {
  708. console.log('I was closed by the timer')
  709. }
  710. }
  711. );
  712. });
  713. }
  714. }
  715. function viewvideo(t) {
  716. var isIE=window.ActiveXObject || "ActiveXObject" in window
  717. if (isIE)
  718. {
  719. swal({
  720. title: 'Sorry!',
  721. text: '暂时未实现此功能.',
  722. timer: 2500,
  723. confirmButtonText: "确定"
  724. }).then(
  725. function () {},
  726. // handling the promise rejection
  727. function (dismiss) {
  728. if (dismiss === 'timer') {
  729. console.log('I was closed by the timer')
  730. }
  731. }
  732. );
  733. }
  734. else
  735. {
  736. swal({
  737. title: 'Sorry!',
  738. text: '暂时只支持IE11版本以上.',
  739. timer: 2500,
  740. confirmButtonText: "确定"
  741. }).then(
  742. function () {},
  743. // handling the promise rejection
  744. function (dismiss) {
  745. if (dismiss === 'timer') {
  746. console.log('I was closed by the timer')
  747. }
  748. }
  749. );
  750. }
  751. }
  752. function viewpic(t) {
  753. if (t.dataset.guid) {
  754. var obj = $table.bootstrapTable('getRowByUniqueId', t.dataset.guid);
  755. //var filefullname = "ftp://12.1.89.30:21010/pic/" + obj.imagepath1 + ".jpg";
  756. var filefullname = "http://<%=request.getServerName()%>:<%=request.getServerPort()%>/DB/pic/" + obj.imagepath1 + ".jpg";
  757. console.log(filefullname);
  758. swal({
  759. title: getAlarmTypeName(obj.alarmtype),
  760. text: obj.taskname,
  761. //imageUrl: 'https://unsplash.it/400/200/?random',
  762. //imageUrl: 'ftp://127.0.0.1:21010/pic/201612/{D7EE7FCC-CC00-466A-94E8-CEFEB20CB5F7}.jpg',
  763. imageUrl: filefullname,
  764. //imageWidth: 400,
  765. //imageHeight: 400,
  766. animation: false,
  767. confirmButtonText: "关闭"
  768. }).catch(swal.noop)
  769. }
  770. }
  771. window.operateEvents = {};
  772. function getHeight() {
  773. return $(window).height();
  774. //return $(window).height() - $('h1').outerHeight(true);
  775. return $(window).height() - $('.page-footer').outerHeight(true)
  776. - $('.page-header').outerHeight(true);
  777. }
  778. $(function () {
  779. var scripts = [
  780. //location.search.substring(1) ||
  781. 'js/bootstrap-table.min.js', 'js/bootstrap-table-zh-CN.min.js',
  782. 'js/bootstrap-table-export.min.js', 'js/tableExport.js',
  783. 'js/bootstrap-table-editable.min.js',
  784. //"js/bootstrap-table-filter-control.js",
  785. //'js/bootstrap-editable.js',
  786. 'js/bootstrap-table-toolbar.min.js'], eachSeries = function (arr, iterator, callback) {
  787. callback = callback || function () {
  788. };
  789. if (!arr.length) {
  790. return callback();
  791. }
  792. var completed = 0;
  793. var iterate = function () {
  794. iterator(arr[completed], function (err) {
  795. if (err) {
  796. callback(err);
  797. callback = function () {
  798. };
  799. } else {
  800. completed += 1;
  801. if (completed >= arr.length) {
  802. callback(null);
  803. } else {
  804. iterate();
  805. }
  806. }
  807. });
  808. };
  809. iterate();
  810. };
  811. eachSeries(scripts, getScript, initTable);
  812. });
  813. function getBrowserInfo(){
  814. var Sys = {};
  815. var ua = navigator.userAgent.toLowerCase();
  816. var re =/(msie|firefox|chrome|opera|version).*?([\d.]+)/;
  817. var m = ua.match(re);
  818. Sys.browser = m[1].replace(/version/, "'safari");
  819. Sys.ver = m[2];
  820. return Sys;
  821. }
  822. function getScript(url, callback) {
  823. var head = document.getElementsByTagName('head')[0];
  824. var script = document.createElement('script');
  825. script.src = url;
  826. var done = false;
  827. // Attach handlers for all browsers
  828. script.onload = script.onreadystatechange = function () {
  829. if (!done
  830. && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
  831. done = true;
  832. if (callback)
  833. callback();
  834. // Handle memory leak in IE
  835. script.onload = script.onreadystatechange = null;
  836. }
  837. };
  838. head.appendChild(script);
  839. // We handle everything using the script element injection
  840. return undefined;
  841. }
  842. </script>
  843. </body>
  844. </html>