NetworkTest.cshtml 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. @{
  2. ViewBag.Title = "联网测试";
  3. Layout = "~/Views/Shared/_Index.cshtml";
  4. }
  5. <script>
  6. $(document).ready(function () {
  7. initialPage();
  8. GetGrid();
  9. htmlTimeCtrlhis();
  10. //表格表头居中显示
  11. $(".ui-th-column").css("text-align", "center");
  12. setFocus();
  13. });
  14. //重设(表格)宽高
  15. function initialPage() {
  16. //resize重设(表格、树形)宽高
  17. $(window).resize(function (e) {
  18. window.setTimeout(function () {
  19. $('#gridTable').setGridWidth(($('.gridPanel').width()));
  20. $("#gridTable").setGridHeight($(window).height() - 108.5);
  21. }, 200);
  22. e.stopPropagation();
  23. });
  24. }
  25. function htmlTimeCtrlhis() {
  26. $("#ThisDate").val("@DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")");
  27. $("#LastDate").val("@DateTime.Now.ToString("yyyy-MM-dd")");
  28. }
  29. //追加信息
  30. function btn_SearchAdd() {
  31. var isHas;
  32. var imei = $("#txt_imei").val();
  33. var thisDate = $('#ThisDate').val();
  34. var lastDate = $('#LastDate').val();
  35. var address = $('#txt_Address').val();
  36. var data;
  37. var count = $("#gridTable").getGridParam("reccount");//获取当前行数
  38. var rowid = count + 1;
  39. $.ajax({
  40. type: 'POST',
  41. cache: false,
  42. ifModified: true,
  43. url: "/NBManage/NBEquipmentDebug/GetRecord?imei=" + imei + "&thisDate=" + thisDate + "&lastDate=" + lastDate + "&address=" + address,
  44. datatype: "json",
  45. success: function (jsonData) {
  46. if (jsonData.length > 0) {
  47. data = jsonData.substring(1, jsonData.length - 1);
  48. if (data.length > 0) {
  49. //增加重复判断 2019-09-30 cxj
  50. var datas = $("#gridTable").jqGrid("getRowData");
  51. $(datas).each(function (i, id) {
  52. if (address == this.MeterAddr) {
  53. isHas = this.MeterAddr;
  54. return;
  55. }
  56. });
  57. if (address != isHas) {
  58. $("#gridTable").jqGrid('addRowData', rowid, $.parseJSON(data), 'last');
  59. }
  60. ////////////////////////////////////////////////
  61. }
  62. else {
  63. alert("没有该水表信息");
  64. }
  65. }
  66. },
  67. })
  68. }
  69. //btn_SearchClear()清空
  70. function btn_SearchClear() {
  71. jQuery("#gridTable").jqGrid("clearGridData")
  72. }
  73. //加载表格
  74. function GetGrid() {
  75. var selectedRowIndex = 0;
  76. var $gridTable = $('#gridTable');
  77. $gridTable.jqGrid({
  78. url: "/NBManage/NBEquipmentDebug/GetRecord",
  79. datatype: "json",
  80. height: $(window).height() - 138.5,
  81. autowidth: true,
  82. colModel: [
  83. { label: '小区', name: 'ID1', width: 35, fixed: true, frozen: true },
  84. { label: '楼宇', name: 'ID2', width: 35, fixed: true, frozen: true },
  85. { label: '单元', name: 'ID3', width: 35, fixed: true, frozen: true },
  86. { label: '户号', name: 'ID4', width: 35, fixed: true, frozen: true },
  87. { label: 'ID', name: 'ID', hidden: true, fixed: true, frozen: true, isExport: false },
  88. { label: "表地址", name: "MeterAddr", width: 100, align: "right", sortable: false, fixed: true, frozen: true },
  89. { label: "IMEI", name: "IMEI", width: 130, align: "right", sortable: false, fixed: true, frozen: true },
  90. { label: "ICCID", name: "SIM", width: 160, align: "right", sortable: false, fixed: true, frozen: true },
  91. { label: "DeviceID", name: "DeviceID", width: 280, align: "left", sortable: false, fixed: true, frozen: true },
  92. {
  93. label: "注册时间", name: "RegisterDate", width: 165, align: "right", sortable: false,
  94. formatter: function (cellvalue, options, rowObject) {
  95. return formatDate(cellvalue, 'yyyy-MM-dd hh:mm:ss')
  96. }
  97. , fixed: true, isExport: false
  98. },
  99. { label: "抄表时间", name: "ReadingDT", width: 165, align: "right", sortable: false, fixed: true, isExport: false },
  100. { label: "电池电量(%)", name: "BatteryLevel", width: 100, align: "right", fixed: true, hidden: true },
  101. { label: "信号强度", name: "Rsrp", width: 100, align: "right", sortable: false, fixed: true },
  102. { label: "信号覆盖等级", name: "Ecl", width: 100, align: "right", sortable: false, fixed: true, hidden: true },
  103. { label: "信噪比", name: "Snr", width: 100, align: "right", sortable: false, hidden: true, fixed: true },
  104. { label: "电池门", name: "BatteryDoor", width: 100, align: "right", sortable: false, fixed: true },
  105. { label: "公司代码", name: "FactoryCode", width: 100, align: "right", sortable: false, fixed: true },
  106. { label: "方向", name: "Direction", width: 100, align: "right", sortable: false, fixed: true },
  107. { label: "数据错误标识", name: "DataRight", width: 100, align: "right", sortable: false, fixed: true },
  108. { label: "电池电量", name: "BatteryQuantity", width: 100, align: "right", sortable: false, fixed: true },
  109. { label: "计量状态", name: "MeasureState", width: 100, align: "right", sortable: false, fixed: true },
  110. { label: "水表电子号", name: "MeterEleno", width: 100, align: "right", sortable: false, fixed: true },
  111. { label: "基站信息", name: "Pci", width: 100, align: "right", sortable: false, fixed: true },
  112. { label: "其它报警值", name: "OtherState", width: 100, align: "right", sortable: false, fixed: true },
  113. { label: "day1-15", name: "day1_day15", width: 200, align: "right", sortable: false, fixed: true },
  114. { label: "otherpart", name: "OtherPart", width: 200, align: "right", sortable: false, fixed: true },
  115. {
  116. label: "净累计流量(m³)", name: "Total", align: "right", fixed: true, width: 125, isExport: false
  117. },
  118. {
  119. label: "正累计流量(m³)", name: "total_up", align: "right", fixed: true, width: 125, isExport: false
  120. },
  121. {
  122. label: "负累计流量(m³)", name: "total_down", align: "right", fixed: true, width: 125, isExport: false
  123. },
  124. {
  125. label: "瞬时流量(m³/h)", name: "Instance", align: "right", fixed: true, width: 125, isExport: false
  126. },
  127. {
  128. label: "电池状态%", name: "batteryLevel", align: "right", fixed: true, width: 125, isExport: false
  129. }
  130. ,
  131. {
  132. label: "信号强度", name: "rsrp", align: "right", fixed: true, width: 125, isExport: false, hidden: true
  133. },
  134. {
  135. label: "信号覆盖等级", name: "ecl", align: "right", fixed: true, width: 125, isExport: false, hidden: true
  136. },
  137. {
  138. label: "信噪比", name: "snr", align: "right", fixed: true, width: 125, isExport: false
  139. },
  140. {
  141. label: "磁攻击报警", name: "attack", align: "right", fixed: true, width: 125, isExport: false
  142. },
  143. {
  144. label: "曾经磁攻击", name: "attack_ever", align: "right", fixed: true, width: 125, isExport: false
  145. },
  146. {
  147. label: "超过Q4 ", name: "q4", align: "right", fixed: true, width: 125, isExport: false
  148. },
  149. {
  150. label: "上报时间 ", name: "time", align: "right", fixed: true, width: 165, isExport: false
  151. }
  152. ],
  153. rownumbers: true,
  154. viewrecords: true,
  155. multiselect: true,
  156. rowNum: -1,
  157. gridComplete: function () {
  158. $("#" + this.id).setSelection(selectedRowIndex, false);
  159. }
  160. });
  161. $gridTable.jqGrid('setFrozenColumns');
  162. }
  163. function addCellAttr(rowId, val, rawObject, cm, rdata) {
  164. if (val == "已注册") {
  165. return "style='color:green'";
  166. }
  167. else {
  168. return "style='color:red'";
  169. }
  170. }
  171. function dataFmatter(cellvalue, options, rowObject) {
  172. return formatDate(cellvalue, 'yyyy-MM-dd hh:mm:ss');
  173. }
  174. // 编辑
  175. function editData() {
  176. //首先判断 jqgrid 中有没有选中数据
  177. //有的话 执行删除表信息 操作
  178. var IOT_Code = $("#gridTable").jqGridRowValue("DeviceID");
  179. var MeterID = $("#gridTable").jqGridRowValue("ID");
  180. if (MeterID) {
  181. dialogOpen({
  182. id: "ApmtForm",
  183. title: '编辑表具信息',
  184. url: '/NBManage/NBEquipmentDebug/MeterForm?keyValue=' + MeterID,
  185. width: "750px",
  186. height: "500px",
  187. callBack: function (iframeId) {
  188. top.frames[iframeId].AcceptApmtClick();
  189. }
  190. });
  191. }
  192. }
  193. // 删除
  194. function deleteData() {
  195. var ids = $("#gridTable").jqGrid("getGridParam", "selarrrow");
  196. var meterIDs = [];
  197. //遍历访问这个集合
  198. for (var ii = 0; ii < ids.length; ii++) {
  199. //由id获得对应数据行
  200. var row = $("#gridTable").jqGrid('getRowData', ids[ii]);
  201. //首先判断 jqgrid 中有没有选中数据
  202. //有的话 执行删除表信息 操作
  203. var IOT_Code = row.DeviceID;
  204. var MeterID = row.ID;
  205. meterIDs.push(MeterID);
  206. }
  207. if (meterIDs.length > 0) {
  208. $.RemoveForm({
  209. url: "/NBManage/NBEquipmentDebug/DeleteMeterForm",
  210. param: { id: meterIDs.toString() },
  211. async: false,
  212. success: function (data) {
  213. $("#gridTable").trigger("reloadGrid");
  214. //$("#gridTable").jqGrid("delRowData", ids[ii]);
  215. }
  216. })
  217. }
  218. }
  219. // 取最新数据
  220. function getLastData() {
  221. var ids = $("#gridTable").jqGrid("getGridParam", "selarrrow");
  222. var startQueque = Promise.resolve();
  223. $(ids).each(function (index, id) {
  224. var row = $("#gridTable").jqGrid('getRowData', id);
  225. var IOT_Code = row.DeviceID;
  226. (function (IOT_Code) {
  227. startQueque = startQueque.then(function () {
  228. $.ajax({
  229. type: 'POST',
  230. url: "/NBManage/NBEquipmentDebug/GetAjaxData?deviceId=" + IOT_Code,
  231. cache: false,
  232. ifModified: true,
  233. dataType: 'JSON',
  234. beforeSend: function () {
  235. $("#gridTable").jqGrid('setCell', id, "Total", '<img class="alarmimg" src="/Content/images/send_wait.gif" " />');
  236. $("#gridTable").jqGrid('setCell', id, "ReadingDT", '读取中...');
  237. },
  238. success: function (jsonData) {
  239. if (jsonData.length > 0) {
  240. $("#gridTable").jqGrid('setCell', id, "Total", jsonData[0].total);
  241. $("#gridTable").jqGrid('setCell', id, "ReadingDT", jsonData[0].read_time);
  242. $("#gridTable").jqGrid('setCell', id, "total_up", jsonData[0].total_up);
  243. $("#gridTable").jqGrid('setCell', id, "total_down", jsonData[0].total_down);
  244. $("#gridTable").jqGrid('setCell', id, "instance", jsonData[0].instance);
  245. $("#gridTable").jqGrid('setCell', id, "batteryLevel", jsonData[0].batteryLevel);
  246. $("#gridTable").jqGrid('setCell', id, "attack", jsonData[0].attack);
  247. $("#gridTable").jqGrid('setCell', id, "attack_ever", jsonData[0].attack_ever);
  248. $("#gridTable").jqGrid('setCell', id, "q4", jsonData[0].q4);
  249. $("#gridTable").jqGrid('setCell', id, "rsrp", jsonData[0].rsrp);
  250. $("#gridTable").jqGrid('setCell', id, "ecl", jsonData[0].ecl);
  251. $("#gridTable").jqGrid('setCell', id, "snr", jsonData[0].snr);
  252. $("#gridTable").jqGrid('setCell', id, "time", jsonData[0].time);
  253. $("#gridTable").jqGrid('setCell', id, "BatteryLevel", jsonData[0].BatteryLevel);
  254. $("#gridTable").jqGrid('setCell', id, "Rsrp", jsonData[0].Rsrp);
  255. $("#gridTable").jqGrid('setCell', id, "Ecl", jsonData[0].Ecl);
  256. $("#gridTable").jqGrid('setCell', id, "BatteryDoor", jsonData[0].BatteryDoor);
  257. $("#gridTable").jqGrid('setCell', id, "FactoryCode", jsonData[0].FactoryCode);
  258. $("#gridTable").jqGrid('setCell', id, "Direction", jsonData[0].Direction);
  259. $("#gridTable").jqGrid('setCell', id, "DataRight", jsonData[0].DataRight);
  260. $("#gridTable").jqGrid('setCell', id, "BatteryQuantity", jsonData[0].BatteryQuantity);
  261. $("#gridTable").jqGrid('setCell', id, "MeasureState", jsonData[0].MeasureState);
  262. $("#gridTable").jqGrid('setCell', id, "MeterEleno", jsonData[0].MeterEleno);
  263. $("#gridTable").jqGrid('setCell', id, "Pci", jsonData[0].Pci);
  264. $("#gridTable").jqGrid('setCell', id, "OtherState", jsonData[0].OtherState);
  265. $("#gridTable").jqGrid('setCell', id, "day1_day15", jsonData[0].day1_day15);
  266. $("#gridTable").jqGrid('setCell', id, "OtherPart", jsonData[0].OtherPart);
  267. $("#gridTable").jqGrid('setCell', id, "Snr", jsonData[0].Snr);
  268. }
  269. },
  270. })
  271. });
  272. })(IOT_Code);
  273. })
  274. }
  275. function btn_Search() {
  276. var imei = $("#txt_imei").val();
  277. var thisDate = $('#ThisDate').val();
  278. var lastDate = $('#LastDate').val();
  279. var address = $('#txt_Address').val();
  280. $("#gridTable").jqGrid('setGridParam', {
  281. postData: {
  282. imei: imei,
  283. thisDate: thisDate,
  284. lastDate: lastDate,
  285. address: address
  286. }
  287. }).trigger('reloadGrid');
  288. }
  289. //导出
  290. function btn_export() {
  291. var datavalue = $("#gridTable").jqGrid('getRowData'); //获取全部数据
  292. dialogOpen({
  293. id: "ExcelIExportDialog",
  294. title: '导出',
  295. url: '/Utility/ExcelExportForm?gridId=gridTable&filename=联网测试',
  296. width: "500px",
  297. height: "380px",
  298. callBack: function (iframeId) {
  299. top.frames[iframeId].AcceptClick();
  300. }, btn: ['导出Excel', '关闭']
  301. });
  302. }
  303. function handleEnter(field, event) {
  304. var keyCode = event.keyCode ? event.keyCode : event.which ? event.which
  305. : event.charCode;
  306. if (keyCode == 13) {
  307. btn_SearchAdd();
  308. setFocus();
  309. } else
  310. return true;
  311. }
  312. //清空并设置文本框
  313. function setFocus() {
  314. var txt1 = document.getElementById("txt_Address");
  315. txt1.value = "";
  316. txt1.focus();
  317. }
  318. function OpenClose(cmdText) {
  319. var addr = $("#gridTable").jqGridRowValue("MeterAddr");
  320. var id = $("#gridTable").jqGridRowValue("ID");
  321. var IOT_Code = $("#gridTable").jqGridRowValue("DeviceID");
  322. //var ValveStatus = $("#gridTable").jqGridRowValue("ValveStatus");
  323. //if (cmdText == 55 && ValveStatus == "开") {
  324. // dialogConfirm("注:当前阀门为开启状态,确定重复开阀?", function (r) {
  325. // if (!r) {
  326. // return;
  327. // }
  328. // });
  329. //}
  330. //if (cmdText == 99 && ValveStatus == "关") {
  331. // dialogConfirm("注:当前阀门为关闭状态,确定重复关阀?", function (r) {
  332. // if (r) {
  333. // return;
  334. // }
  335. // });
  336. //}
  337. if (checkedRow(addr)) {
  338. $.ajax({
  339. url: "/NBManage/NBValveControl/SendCommandSY",
  340. type: "POST",
  341. data: { code: IOT_Code, commandValue: 1002, addr: addr, id: id, cmdText: cmdText },
  342. cache: false,
  343. async: false,
  344. datatype: "json",
  345. success: function (data) {
  346. if (cmdText == "55") {
  347. dialogMsg("开阀命令发送成功!", 1);
  348. } else {
  349. dialogMsg("关阀命令发送成功!", 1);
  350. }
  351. setInterval("reload()", 5000);
  352. }
  353. });
  354. }
  355. }
  356. </script>
  357. <div class="titlePanel">
  358. <div class="title-search">
  359. <table>
  360. <tr>
  361. @* <td style="padding-left: 2px;">
  362. <input id="txt_imei" type="text" class="form-control" placeholder="IMEI" style="width: 200px;" />
  363. </td>
  364. <td style="padding-left: 5px;">开始日期</td>
  365. <td>
  366. <input id="ThisDate" type="text" class="form-control input-wdatepicker" onfocus="WdatePicker()" />
  367. </td>
  368. <td style="padding-left: 5px;">结束日期</td>
  369. <td>
  370. <input id="LastDate" type="text" class="form-control input-wdatepicker" onfocus="WdatePicker()" />
  371. </td>
  372. <td style="padding-left: 10px;">
  373. <a id="btn_Search" class="btn btn-primary" onclick="btn_Search()"><i class="fa fa-search"></i>&nbsp;查询</a>
  374. </td>*@
  375. <td style="padding-left: 2px;">
  376. <input id="txt_imei" type="text" class="form-control" placeholder="IMEI" style="width: 200px;" />
  377. </td>
  378. <td style="padding-left: 2px;">
  379. <input id="txt_Address" type="text" class="form-control" placeholder="表地址" style="width: 200px;" onkeypress="return handleEnter(this, event)" />
  380. </td>
  381. <td style="padding-left: 5px;">开始日期</td>
  382. <td>
  383. <input id="ThisDate" type="text" value="@LeaRun.Util.Time.ShortDateTime" class="form-control input-wdatepicker" onfocus="WdatePicker({maxDate:'%y-%M',dateFmt:'yyyy-MM-dd HH:mm'})" style="width:175px">
  384. </td>
  385. <td style="padding-left: 5px;">结束日期</td>
  386. <td>
  387. <input id="LastDate" type="text" value="@LeaRun.Util.Time.ShortDateTime" class="form-control input-wdatepicker" onfocus="WdatePicker({maxDate:'%y-%M',dateFmt:'yyyy-MM-dd HH:mm'})" style="width:175px">
  388. </td>
  389. <td style="padding-left: 10px;">
  390. <a id="btn_Search" class="btn btn-primary" onclick="btn_Search()"><i class="fa fa-search"></i>&nbsp;查询</a>
  391. </td>
  392. <td style="padding-left: 10px;">
  393. <a id="btn_SearchAdd" class="btn btn-primary" onclick="btn_SearchAdd()"><i class="fa fa-search"></i>&nbsp;追加</a>
  394. </td>
  395. <td style="padding-left: 10px;">
  396. <a id="btn_SearchClear" class="btn btn-primary" onclick="btn_SearchClear()"><i class="fa fa-search"></i>&nbsp;清空</a>
  397. </td>
  398. </tr>
  399. </table>
  400. </div>
  401. <div class="toolbar">
  402. <div class="btn-group">
  403. <a id="lr-replace" class="btn btn-default" onclick="reload();"><i class="fa fa-refresh"></i>&nbsp;刷新</a>
  404. <a id="lr-replace" class="btn btn-default" onclick="getLastData();"><i class="fa fa-refresh"></i>&nbsp;取数据</a>
  405. <a id="lr-edit" class="btn btn-default" onclick="deleteData()"><i class="fa fa-remove"></i>&nbsp;删除</a>
  406. <a id="lr-edit" class="btn btn-default" onclick="editData()"><i class="fa fa-edit"></i>&nbsp;修改</a>
  407. <a id="lr-edit" class="btn btn-default" onclick="btn_export()"><i class="fa fa-file-excel-o"></i>&nbsp;导出</a>
  408. <a id="lr-more" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
  409. <i class="fa fa-reorder"></i>&nbsp;更多<span class="caret"></span>
  410. </a>
  411. <ul class="dropdown-menu pull-right">
  412. <li id="lr-enabled"><a onclick="OpenClose(55)"><i></i>&nbsp;开阀</a></li>
  413. <li id="lr-enabled"><a onclick="OpenClose(99)"><i></i>&nbsp;关阀</a></li>
  414. </ul>
  415. </div>
  416. </div>
  417. </div>
  418. <div class="gridPanel">
  419. <table id="gridTable"></table>
  420. @*<div id="gridPager"></div>*@
  421. </div>