NewFuelInventory.cshtml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. @*
  2. For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
  3. *@
  4. @{
  5. ViewData["Title"] = "Auto Tank Gauge System";
  6. Layout = null;
  7. }
  8. <script src="~/js/mqtt.min.js"></script>
  9. <script src="~/js/Chart.bundle.js"></script>
  10. <script src="~/js/jquery-3.4.1.min.js"></script>
  11. <body id="Page_Body" style="height:700px;width:1280px;background-image:url(/images/device/background/background.png);background-repeat:no-repeat">
  12. <div style="display:flex;height:5%;width:50%">
  13. <div style="position:absolute;float:right;left:1081px;height:10%;width:0%;z-index:0;top:0px">
  14. <img id="testimage" src="~/images/device/title/505455.png" style="z-index: 2; position: absolute; float: left">
  15. <p style="z-index:4; left:30px;height:7%;position:absolute;float:left;top:-11px"><font size="5" color="white"> 03/31/2020 </font></p>
  16. <canvas></canvas>
  17. </div>
  18. <div style="position:absolute;float:left;height:10%;width:1280px;z-index:0;left:0px;top:0px">
  19. <img id="testimage" src="~/images/device/title/ff1d1c.png" style="z-index:1;position:absolute;float:left;left:0px">
  20. <img id="testimage" src="~/images/device/title/0182d6.png" style="z-index:1;position:absolute;float:left;left:0px">
  21. <img id="testimage" src="~/images/device/title/f8cd1c.png" style="z-index:1;position:absolute;float:left;left:0px">
  22. <p style="z-index: 1; left: 30px; height: 7%; position: absolute; float: left"><font size="6" color="white"> X号油罐 : 高油位警报, </font></p>
  23. <p style="z-index:1; left:550px;height:7%;position:absolute;float:left"><font size="6" color="white"> 活跃预警: </font></p>
  24. <p style="z-index:1; left:850px;height:7%;position:absolute;float:left"><font size="6" color="white"> 活跃报警: </font></p>
  25. <canvas></canvas>
  26. </div>
  27. </div>
  28. <div id="Page_MainBody_Table_FuelDetailList" style="position:absolute;top:100px;height:600px">
  29. <div id="Table_FuelDetailList" style="position:absolute;float:left;height:600px;width:950px" onclick="PageMainBodyClickEvent()">
  30. <table border="0" cellpadding="0" cellspacing="0" width="1280px" style="position:absolute;left:50px;line-height:45px">
  31. <thead style="font-size:24;text-align:left">
  32. <tr>
  33. <th style="width:315px"> 日期 </th>
  34. <th style="width:200px"> 时间 </th>
  35. <th style="width:315px"> 加油量(升) </th>
  36. <th style="width:200px"> 温度补偿油量(升) </th>
  37. <th style="width:200px"> 油位(mm) </th>
  38. <th style="width:200px"> 水位(mm) </th>
  39. </tr>
  40. </thead>
  41. <tbody style="font-size:20;text-align:left">
  42. @for (int i = 0; i <= 1; i++)
  43. {
  44. <tr>
  45. <th style="width:315px"> 20202-04-10 </th>
  46. <th style="width:200px"> 20202-04-10 </th>
  47. <th style="width:315px"> 20202-04-10 </th>
  48. <th style="width:200px"> 20202-04-10 </th>
  49. <th style="width:200px"> 20202-04-10 </th>
  50. <th style="width:200px"> 20202-04-10 </th>
  51. </tr>
  52. }
  53. </tbody>
  54. </table>
  55. </div>
  56. <div style="display:flex;margin-left:1120px">
  57. <div id="FilterList_HiddenPicture" style="margin-left:70px;margin-top:-40px;visibility:visible">
  58. <a><img src="~/images/device/fairbanks/筛选图标.png" style="" onclick="FilterListPictureClickEvent()"></a>
  59. </div>
  60. <div id="FilterList_ShowTable" style="position:absolute;background-image:url('/images/device/fairbanks/筛选背景.jpg');background-size:contain;height:400px;width:150px;margin-top:-40px;margin-left:-20px;visibility:hidden">
  61. <table style="width:180px;text-align:left">
  62. <caption style="font-size:28;font-weight:bolder;widows:initial;text-align:left"> 筛选查询 </caption>
  63. <tr style="height: 10px">
  64. <th> </th>
  65. </tr>
  66. <tbody>
  67. <tr>
  68. <th style="font-size:24"> 起始时间: </th>
  69. </tr>
  70. <tr>
  71. <th style="font-size:20"> <input type="date" value="2020/4/17" /></th>
  72. </tr>
  73. <tr>
  74. <th style="font-size:24"> 结束日期: </th>
  75. </tr>
  76. <tr>
  77. <th style="font-size:20"> temp </th>
  78. </tr>
  79. <tr>
  80. <th style="font-size:24"> 油罐选择: </th>
  81. </tr>
  82. <tr>
  83. <th style="font-size:20"> temp </th>
  84. </tr>
  85. <tr style="height:10px">
  86. <th> </th>
  87. </tr>
  88. <tr>
  89. <th> 查询条件: </th>
  90. </tr>
  91. </tbody>
  92. </table>
  93. <div style="position:absolute;margin-top:20px;margin-left:15px">
  94. <div id="FilterList_NewInStockFuel" style="display:flex">
  95. <a href="NewFuelInventory">
  96. <img id="img_NewInStockFuel" src="~/images/device/fairbanks/选框.png" style="z-index:1;position:absolute;float:left;visibility:hidden">
  97. <p style="z-index:1;float:left;position:absolute;width:110px;margin-top:3px;left:25px"><font id="font_NewInStockFuel" size="5" color="white" style="font-weight:bold"> 最新进油 </font></p>
  98. </a>
  99. </div>
  100. <div id="FilterList_InStockFuelReport" style="display:flex;margin-top:50px">
  101. <a href="InStockFuelReport">
  102. <img id="img_InStockFuelReport" src="~/images/device/fairbanks/选框.png" style="z-index:1;position:absolute;float:left;visibility:hidden">
  103. <p style="z-index:1;float:left;position:absolute;width:110px;margin-top:3px;left:25px"><font id="font_InStockFuelReport" size="5" color="white" style="font-weight:bold"> 进油报表 </font></p>
  104. </a>
  105. </div>
  106. <div id="FilterList_NewFuelInventory" style="display:flex;margin-top:50px">
  107. <a href="NewInStockFuel">
  108. <img id="img_NewFuelInventory" src="~/images/device/fairbanks/选框.png" style="z-index:1;position:absolute;float:left;visibility:hidden">
  109. <p style="z-index:1;float:left;position:absolute;width:110px;margin-top:3px;left:25px"><font id="font_NewFuelInventory" size="5" color="white" style="font-weight:bold"> 最新库存 </font></p>
  110. </a>
  111. </div>
  112. <div id="FilterList_FuelInventoryList" style="display:flex;margin-top:50px">
  113. <a href="FuelInventoryList">
  114. <img id="img_FuelInventoryList" src="~/images/device/fairbanks/选框.png" style="z-index:1;position:absolute;float:left;visibility:hidden">
  115. <p style="z-index:1;float:left;position:absolute;width:110px;margin-top:3px;left:25px"><font id="font_FuelInventoryList" size="5" color="white" style="font-weight:bold"> 库存报表 </font></p>
  116. </a>
  117. </div>
  118. </div>
  119. </div>
  120. </div>
  121. </div>
  122. <div style="position:absolute;top:500px">
  123. <div style="height:40px">
  124. <p style="z-index:1; height:10%;position:absolute;float:left"></p>
  125. </div>
  126. <div style="display:flex;height:5%;width:50%">
  127. <div style="position:absolute;float:left;height:10%;width:1280px;z-index:0;left:50px">
  128. <a href="TankDevicesOverview">
  129. <img id="testimage" src="~/images/device/pages/3fa0df.png" style="z-index:1;position:absolute;float:left;visibility:hidden">
  130. @*<asp:ImageButton ImageUrl="~/image/device/pages/3fa0df.png" href="/_Layout_TankDetail.cshtml" ></asp:ImageButton>*@
  131. <p style="z-index:1; left:25px;height:7%;position:absolute;float:left;top:-11px"><font size="5" color="black" style="font-weight:bold"> 油罐总览 </font></p>
  132. <canvas></canvas>
  133. </a>
  134. </div>
  135. <div style="position:absolute;float:right;left:200px;height:10%;width:1000px;z-index:0">
  136. <a href="TankDeviceDetails">
  137. <img id="testimage" src="~/images/device/pages/3fa0df.png" style="z-index:2;position:absolute;float:left;visibility:hidden" onclick="">
  138. <p style="z-index:4; left:25px;height:7%;position:absolute;float:left;top:-11px"><font size="5" color="black" style="font-weight:bold"> 油罐详情 </font></p>
  139. <canvas></canvas>
  140. </a>
  141. </div>
  142. <div style="position:absolute;float:right;left:350px;height:10%;width:1000px;z-index:0">
  143. <a href="AlarmHistory">
  144. <img id="testimage" src="~/images/device/pages/3fa0df.png" style="z-index:2;position:absolute;float:left;visibility:hidden" onclick="">
  145. <p style="z-index:4; left:25px;height:7%;position:absolute;float:left;top:-11px"><font size="5" color="black" style="font-weight:bold"> 报警查询 </font></p>
  146. <canvas></canvas>
  147. </a>
  148. </div>
  149. <div style="position:absolute;float:right;left:500px;height:10%;width:1000px;z-index:0">
  150. <a href="FuelInventoryList">
  151. <img id="testimage" src="~/images/device/pages/3fa0df.png" style="z-index:2;position:absolute;float:left" onclick="">
  152. <p style="z-index:4; left:25px;height:7%;position:absolute;float:left;top:-11px"><font size="5" color="white" style="font-weight:bold"> 进油库存 </font></p>
  153. <canvas></canvas>
  154. </a>
  155. </div>
  156. @*<div>
  157. <div style="position:absolute;float:right;left:860px;height:10%;width:50px;z-index:0;margin-top:10px">
  158. <img src="~/images/device/pages/1a8eda.png" style="position:absolute;left:0px">
  159. <img src="~/images/device/pages/b1d5eb.png" style="position:absolute;left:0px">
  160. </div>
  161. <div style="position:absolute;float:right;left:940px;height:10%;width:50px;z-index:0;margin-top:10px">
  162. <img src="~/images/device/pages/1a8eda.png" style="position:absolute;left:0px">
  163. <img src="~/images/device/pages/b1d5eb.png" style="position:absolute;left:0px">
  164. </div>
  165. <div style="position:absolute;float:right;left:1020px;height:10%;width:50px;z-index:0;margin-top:10px">
  166. <img src="~/images/device/pages/1a8eda.png" style="position:absolute;left:0px">
  167. <img src="~/images/device/pages/b1d5eb.png" style="position:absolute;left:0px">
  168. </div>
  169. <div style="position:absolute;float:right;left:1100px;height:10%;width:50px;z-index:0;margin-top:10px">
  170. <img src="~/images/device/pages/1a8eda.png" style="position:absolute;left:0px">
  171. <img src="~/images/device/pages/b1d5eb.png" style="position:absolute;left:0px">
  172. </div>
  173. <div style="position:absolute;float:right;left:1180px;height:10%;width:50px;z-index:0;margin-top:10px">
  174. <img src="~/images/device/pages/1a8eda.png" style="position:absolute;left:0px">
  175. <img src="~/images/device/pages/b1d5eb.png" style="position:absolute;left:0px">
  176. </div>
  177. </div>*@
  178. </div>
  179. </div>
  180. </body>
  181. <script>
  182. var FilterList_Pciture = document.getElementById("FilterList_HiddenPicture");
  183. var FilterList_Table = document.getElementById("FilterList_ShowTable");
  184. function FilterList_ShowHide(DivID) {
  185. if (DivID == "PageMainBody" || DivID == "PageBody") {
  186. if (FilterList_Table.style.visibility == "visible") {
  187. FilterList_Pciture.style.visibility = (FilterList_Pciture.style.visibility = "hidden") ? "visible" : "hidden";
  188. FilterList_Table.style.visibility = (FilterList_Table.style.visibility = "visible") ? "hidden" : "visible";
  189. TagDeal_hidden();
  190. }
  191. }
  192. else if (DivID == "FilterListPicture") {
  193. FilterList_Pciture.style.visibility = (FilterList_Pciture.style.visibility = "visible") ? "hidden" : "visible";;
  194. FilterList_Table.style.visibility = (FilterList_Table.style.visibility = "hidden") ? "visible" : "hidden";
  195. TagDeal();
  196. }
  197. }
  198. function PageMainBodyClickEvent() {
  199. FilterList_ShowHide("PageMainBody");
  200. }
  201. function FilterListPictureClickEvent() {
  202. FilterList_ShowHide("FilterListPicture");
  203. }
  204. function TagDeal() {
  205. document.getElementById("font_NewInStockFuel").style.color = "white";
  206. document.getElementById("font_InStockFuelReport").style.color = "black";
  207. document.getElementById("font_NewFuelInventory").style.color = "black";
  208. document.getElementById("font_FuelInventoryList").style.color = "black";
  209. document.getElementById("img_NewInStockFuel").style.visibility = "visible";
  210. document.getElementById("img_InStockFuelReport").style.visibility = "hidden";
  211. document.getElementById("img_NewFuelInventory").style.visibility = "hidden";
  212. document.getElementById("img_FuelInventoryList").style.visibility = "hidden";
  213. }
  214. function TagDeal_hidden() {
  215. document.getElementById("img_NewInStockFuel").style.visibility = "hidden";
  216. }
  217. //$(document).ready(function () {
  218. var hostname = 'localhost', //'192.168.1.2',
  219. port = 8384,
  220. clientId = 'mqttjs_' + (Math.random() * 1000000).toString(),
  221. timeout = 5000,
  222. keepAlive = 100,
  223. cleanSession = false,
  224. mqttVersion = 3,
  225. ssl = false;
  226. var options = {
  227. //mqtt客户端的id,这里面应该还可以加上其他参数,具体看官方文档
  228. clientId: 'mqttjs_' + (Math.random() * 1000000).toString(),
  229. timeout: timeout,
  230. useSSL: false
  231. }
  232. //浏览器采用websocket协议,host主机地址为192.168.0.200,端口为9001,路径为/mqtt
  233. var client = mqtt.connect("ws://localhost:8384/mqtt", options); // you add a ws:// url here
  234. ////建立连接
  235. client.on('connect',
  236. function () {
  237. var a = document.getElementById("testmqqt");
  238. if (a != null) a.innerHTML = "connected";
  239. //订阅主题 presence
  240. client.subscribe('/sys/VeederRoot_ATG_Console_Tcp/VeederRoot_ATG_Console.Handler/thing/service/GetTankReadingsAsync_reply',
  241. function (err) {
  242. if (!err) {
  243. //client.publish('/sys/VeederRoot_ATG_Console_Tcp/VeederRoot_ATG_Console.Handler/thing/service/GetTankReadingsAsync');
  244. } else {
  245. //打印错误
  246. if (a != null) a.innerHTML = err;
  247. }
  248. });
  249. });
  250. client.publish('/sys/VeederRoot_ATG_Console_Tcp/VeederRoot_ATG_Console.Handler/thing/service/GetTankReadingsAsync', 'Mqtt Hello');
  251. //如果连接错误,打印错误
  252. client.on('error',
  253. function (err) {
  254. var a = document.getElementById("testmqqt");
  255. if (a != null) a.innerHTML = err;
  256. client.end();
  257. });
  258. //如果client订阅主题成功,那么这里就是当接收到自己订阅主题的处理逻辑
  259. client.on('message',
  260. function (topic, message) {
  261. var a = document.getElementById("testmqqt");
  262. //if (a != null) a.innerHTML = message.toString();
  263. if (topic == "/sys/VeederRoot_ATG_Console_Tcp/VeederRoot_ATG_Console.Handler/thing/service/GetTankReadingsAsync_reply") {
  264. TableRowADD(JSON.parse(message.toString()));
  265. }
  266. });
  267. //// 用户程序点击事件
  268. //function Onmqtttest() {
  269. // message = "message from browser with websocket"; // 消息内容
  270. // //发布主题presence,消息内容为Hello mqtt,订阅与推送一样自发自收
  271. // client.publish('/sys/VeederRoot_ATG_Console_Tcp/VeederRoot_ATG_Console.Handler/thing/service/GetTankDeliveryAsync', 'Hello mqtt ' + message);
  272. // var a = document.getElementById("testmqqt");
  273. // if (a != null) a.innerHTML = message;
  274. //}
  275. function TableRowADD(datas) {
  276. if (datas == null) {
  277. console.log("response data is null for chart table");
  278. return;
  279. }
  280. var chartTable = document.getElementById("Chart_table");
  281. if (chartTable == null) {
  282. console.log("chart table is not created");
  283. return;
  284. }
  285. var originalTableRows = chartTable.rows.length;
  286. var r = chartTable.insertRow(chartTable.rows.length);
  287. //var c1 = r.insertCell(r.cells.length);
  288. //c1.innerHTML = d.DataCollectorNozzleNumber;
  289. var c1 = r.insertCell(r.cells.length);
  290. c1.innerHTML = new Date().getFullYear() + "-" + (new Date().getMonth() + 1, 2) + "-" + (new Date().getDate(), 2);
  291. var c2 = r.insertCell(r.cells.length);
  292. c2.innerHTML = datas.Volume;
  293. var c3 = r.insertCell(r.cells.length);
  294. c3.innerHTML = datas.TcVolume;
  295. var c4 = r.insertCell(r.cells.length);
  296. c4.innerHTML = datas.Volume//(new Date(d.FuellingEndTime) - new Date(d.FuellingStartTime)) / 1000;
  297. var c5 = r.insertCell(r.cells.length);
  298. c5.innerHTML = datas.WaterVolume;
  299. var c6 = r.insertCell(r.cells.length);
  300. c6.innerHTML = datas.Temperature;
  301. //datas.forEach(function (d) {
  302. // var r = chartTable.insertRow(chartTable.rows.length);
  303. // //var c1 = r.insertCell(r.cells.length);
  304. // //c1.innerHTML = d.DataCollectorNozzleNumber;
  305. // var c1 = r.insertCell(r.cells.length);
  306. // c1.innerHTML = new Date(d.FuellingStartTime).getFullYear() + "-" + Pad(new Date(d.FuellingStartTime).getMonth() + 1, 2) + "-" + Pad(new Date(d.FuellingStartTime).getDate(), 2);
  307. // var c2 = r.insertCell(r.cells.length);
  308. // c2.innerHTML = d.Volume;
  309. // var c3 = r.insertCell(r.cells.length);
  310. // c3.innerHTML = d.TcVolume;
  311. // var c4 = r.insertCell(r.cells.length);
  312. // c4.innerHTML = d.Volume//(new Date(d.FuellingEndTime) - new Date(d.FuellingStartTime)) / 1000;
  313. // var c5 = r.insertCell(r.cells.length);
  314. // c5.innerHTML = d.WaterVolume;
  315. // var c6 = r.insertCell(r.cells.length);
  316. // c6.innerHTML = d.Temperature;
  317. //});
  318. //insert an empty row, otherwise the style of the table will be changed
  319. if (datas.length === 0) {
  320. var r = chartTable.insertRow(chartTable.rows.length);
  321. var c1 = r.insertCell(r.cells.length);
  322. c1.innerHTML = "";
  323. var c2 = r.insertCell(r.cells.length);
  324. c2.innerHTML = "";
  325. var c3 = r.insertCell(r.cells.length);
  326. c3.innerHTML = "";
  327. var c4 = r.insertCell(r.cells.length);
  328. c4.innerHTML = "";
  329. var c5 = r.insertCell(r.cells.length);
  330. c5.innerHTML = "";
  331. var c6 = r.insertCell(r.cells.length);
  332. c6.innerHTML = "";
  333. }
  334. }
  335. //})
  336. </script>