Engine.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>发电机管理</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
  8. <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  9. <meta http-equiv="pragma" content="no-cache">
  10. <meta http-equiv="Cache" content="no-cache">
  11. <meta http-equiv="cache-control" content="no-cache, must-revalidate">
  12. <meta http-equiv="expires" content="0">
  13. <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
  14. <!--引入 element-ui 的样式,-->
  15. <link rel="stylesheet" href="../css/element.css">
  16. <link rel="stylesheet" href="../css/style.css">
  17. <script src="../js/echarts.min.js" type="text/javascript" charset="utf-8"></script>
  18. <script src="../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
  19. <script src="../js/pako.js"></script>
  20. <script type="text/javascript">
  21. document.write('<script src="../js/yz/init.js?id='+(new Date().getTime())+'" type="text/javascript" charset="utf-8"><\/script>');
  22. document.write('<script src="../js/yz/shipLi.js?id='+(new Date().getTime())+'" type="text/javascript" charset="utf-8"><\/script>');
  23. document.write('<script src="../js/yz/defailt.js?id='+(new Date().getTime())+'" type="text/javascript" charset="utf-8"><\/script>');
  24. document.write('<script src="../js/yz/ajax.js?id='+(new Date().getTime())+'" type="text/javascript" charset="utf-8"><\/script>');
  25. document.write('<script src="../js/yz/configuration.js?id='+(new Date().getTime())+'" type="text/javascript" charset="utf-8"><\/script>');
  26. </script>
  27. <script>
  28. checkLogin();
  29. </script>
  30. </head>
  31. <style type="text/css">
  32. *{
  33. margin: 0;
  34. padding: 0;
  35. box-sizing: border-box;
  36. }
  37. body{
  38. height: 100vh;
  39. color: #94d1ff;
  40. overflow: auto;
  41. background-color: #040d32;
  42. }
  43. .Range{
  44. display: flex;
  45. flex-direction: column;
  46. justify-content: space-between;
  47. align-items: flex-end;
  48. padding-top: 6px;
  49. padding-right: 6px;
  50. height: 80px;
  51. }
  52. .Battery{
  53. position: relative;
  54. width: 43px;
  55. height: 80px;
  56. }
  57. .Battery>div{
  58. position: absolute;
  59. bottom: 6px;
  60. left: 5px;
  61. width: calc(100% - 11px);
  62. height:0%;
  63. border-radius: 4px;
  64. background-color: #45c5ff;
  65. }
  66. .Temp{
  67. position: relative;
  68. width: 44px;
  69. height: 80px;
  70. border: 2px solid #fff;
  71. }
  72. .Temp>div{
  73. position: absolute;
  74. bottom: 0px;
  75. left:0px;
  76. width:100%;
  77. height: 0%;
  78. background-color: #ffaa00;
  79. }
  80. .switch_li li{
  81. padding:4px 8px;
  82. width: 20%;
  83. text-align: center;
  84. /* height:20%; */
  85. font-size: 0.7vw;
  86. }
  87. .switch_li li .icon-cloud-state{
  88. margin-bottom: 3px;
  89. }
  90. .switch_li0 li,.switch_li2 li,.switch_li4 li,.switch_li6 li{
  91. width: 25%;
  92. }
  93. .warn_drog{
  94. position: relative;
  95. height: 42%;
  96. overflow: auto;
  97. padding-top:10px ;
  98. }
  99. .warn_drog::after{
  100. content: "";
  101. position: absolute;
  102. top: 0;
  103. left: 10%;
  104. width: 80%;
  105. border-top: 1px solid rgba(232, 232, 232, 0.2);
  106. }
  107. </style>
  108. <body>
  109. <div style="position: relative;height:45px;">
  110. <div class="tabUl" style="margin:7.5px 7.5px 0;">
  111. <div data-open="0" class="act_this">1#、2#发动机</div>
  112. <div data-open="1">3#、应急发动机</div>
  113. </div>
  114. <div style="position: absolute;bottom: 12px;right:20px;color: #fff;">
  115. 最后更新时间:<span id="endTime"></span>
  116. </div>
  117. </div>
  118. <div id="htmVi" style="height:calc(100% - 60px);">
  119. <div class="yz_clm15" style="height: 100%;font-size: 0.8vw;">
  120. </div>
  121. </div>
  122. </body>
  123. <script>
  124. var nowDis = null; switchKey = {},angVal = [];
  125. var timeId = null;
  126. var myChart1,myChart2,myChart3,myChart4,myChart5,myChart6,myChart7,myChart8;
  127. function setoption1(num,_max,_unit,_txt){
  128. num = num == undefined?0 : num;
  129. $("#"+_txt).text(num);
  130. option = {
  131. series: [
  132. {
  133. name: '实时数据',
  134. min: 0,
  135. max: _max,
  136. // splitNumber:6,
  137. type: 'gauge',
  138. fontSize: 13,
  139. center: ['50%', '50%'],
  140. radius: "93%",
  141. detail: {
  142. show: false,
  143. formatter: '{value}'+_unit,
  144. fontSize: 14,
  145. offsetCenter: [0,"80%"],
  146. color:"#fbbd08"
  147. },
  148. data: [{value:(isNaN(Number(num,10))?0:num) }],
  149. axisLine: {
  150. lineStyle: {
  151. color: [[0.09, 'lime'], [0.82, '#1e90ff'], [1, '#ff4500']],
  152. width: 5
  153. }
  154. },
  155. axisTick: {
  156. distance: 4,
  157. },
  158. pointer: {
  159. width:5,
  160. length:"50%"
  161. },
  162. axisLabel:{
  163. distance: 8,
  164. textStyle: {
  165. color: '#fff',
  166. fontSize:9
  167. }
  168. },
  169. splitLine: {
  170. distance: 4,
  171. length: 10,
  172. lineStyle: {
  173. width: 2,
  174. color: '#fff'
  175. }
  176. },
  177. title: {
  178. textStyle: {
  179. color: '#fff',
  180. }
  181. },
  182. }
  183. ]
  184. };
  185. return option;
  186. }
  187. var nowSn = localStorage.getItem("shipSn");
  188. window.addEventListener('message',(data)=>{
  189. initF(1);
  190. })
  191. $(document).ready(function(){
  192. smallSre = window.innerWidth < 1442;
  193. initF(0);
  194. })
  195. function initF(num){
  196. nowSn = localStorage.getItem("shipSn");
  197. let ds = Config((nowSn == "381001400"?"381001400":"382001400"),nowSn)["Engine"];
  198. switchKey = ds["switchKey"],angVal = ds["angVal"],nowDis = ds["Display"];
  199. ds.initHtml();
  200. $("#htmVi").css("height","calc(100% - "+(nowDis != "none"?60:52)+"px)");
  201. $(".tabUl").css("display",nowDis != "none"?"flex":"none");
  202. let _hei = ds["Height"];
  203. $(".Ch_hei").css("height",_hei+"%");
  204. $(".warn_drog").css("height",(100 - 2*_hei)+"%");
  205. myChart1 = echarts.init(document.getElementById('myChart1'));
  206. myChart2 = echarts.init(document.getElementById('myChart2'));
  207. myChart3 = echarts.init(document.getElementById('myChart3'));
  208. myChart4 = echarts.init(document.getElementById('myChart4'));
  209. myChart5 = echarts.init(document.getElementById('myChart5'));
  210. myChart6 = echarts.init(document.getElementById('myChart6'));
  211. if(nowDis != "none"){
  212. $(".tabUl>div").removeClass("act_this").eq(0).addClass("act_this");
  213. myChart7 = echarts.init(document.getElementById('myChart7'));
  214. myChart8 = echarts.init(document.getElementById('myChart8'));
  215. }
  216. firstData(0,nowDis);
  217. setOpt(2);
  218. }
  219. $(window).resize(function(){
  220. smallSre = window.innerWidth < 1442;
  221. setOpt(2);
  222. })
  223. function firstData(_num,_sf){
  224. if(_num == 0){yzkj.load("load1")};
  225. setTimeout(()=>{
  226. deviceList(function acb(_data){
  227. setOpt(1,_data,_sf);
  228. $("#endTime").text(_data["time"])
  229. if(_num == 0){yzkj.closeLoad("load1");}
  230. if(_data.mmsi==undefined){
  231. setTimeout(()=>{
  232. firstData(1,_sf);
  233. },60*1000)
  234. }
  235. })
  236. },100)
  237. }
  238. function setOpt(num,_obj,_sf){
  239. if(num == 1){
  240. myChart1.setOption(setoption1(_obj[angVal[0][0]],5000,"RPM","cyzs_0"));
  241. myChart2.setOption(setoption1(_obj[angVal[0][1]],(nowSn == "480000618"?1500:20),(nowSn == "480000618"?"kPa":"MPa"),"yali_0"));
  242. myChart3.setOption(setoption1(_obj[angVal[1][0]],5000,"RPM","cyzs_1"));
  243. myChart4.setOption(setoption1(_obj[angVal[1][1]],(nowSn == "480000618"?1500:20),(nowSn == "480000618"?"kPa":"MPa"),"yali_1"));
  244. myChart5.setOption(setoption1(_obj[angVal[2][0]],5000,"RPM","cyzs_2"));
  245. myChart6.setOption(setoption1(_obj[angVal[2][1]],(nowSn == "480000618"?1500:20),(nowSn == "480000618"?"kPa":"MPa"),"yali_2"));
  246. if(_sf != "none"){
  247. myChart7.setOption(setoption1(_obj[angVal[3][0]],5000,"RPM","cyzs_3"));
  248. myChart8.setOption(setoption1(_obj[angVal[3][1]],(nowSn == "480000618"?1500:20),(nowSn == "480000618"?"kPa":"MPa"),"yali_3"));
  249. }
  250. initData(_obj);
  251. setText(_obj);
  252. }else{
  253. myChart1.resize();
  254. myChart2.resize();
  255. myChart3.resize();
  256. myChart4.resize();
  257. myChart5.resize();
  258. myChart6.resize();
  259. if(nowDis != "none"){
  260. myChart7.resize();
  261. myChart8.resize();
  262. }
  263. }
  264. }
  265. function setText(_obj){
  266. let _data = _obj;
  267. for(var i=0;i<angVal.length;i++){
  268. let _ab = angVal[i];
  269. let _a = _data[_ab[2]] == undefined?0 : parseFloat(_data[_ab[2]]);//淡水
  270. let _b = _data[_ab[3]] == undefined?0 : parseFloat(_data[_ab[3]]);//滑油温度
  271. let _c = _data[_ab[4]] == undefined?0 : parseFloat(_data[_ab[4]]);//电池
  272. $("#dcdy_"+i).text(_c == -3200 ?0:(isNaN(Number(_c,10))?"---":_c));
  273. $("#dswd_"+i).text(_a == -3200 || _a > 101 ?0:(isNaN(Number(_a,10))?"---":_a));
  274. $("#hywd_"+i).text(_b == -3200 || _b > 101 ?0:(isNaN(Number(_b,10))?"---":_b));
  275. $("#yxsj_"+i).text(_data[_ab[5]] == undefined?0 :(isNaN(Number(_data[_ab[5]],10))?"---":_data[_ab[5]]));//时间
  276. $("#dl_"+i).css("height",(parseInt((_c/110)*80)>80?80:parseInt((_c/110)*80))+"%")
  277. $("#dwdz_"+i).css("height",(parseInt(((_a>101?0:_a)/100)*98)>100?100:parseInt(((_a>101?0:_a)/100)*98))+"%")
  278. $("#hwdzdl_"+i).css("height",(parseInt(((_b>101?0:_b)/100)*98)>100?100:parseInt(((_b>101?0:_b)/100)*98))+"%")
  279. }
  280. }
  281. function initData(_obj){
  282. for(var key in switchKey){
  283. let _arr = switchKey[key];
  284. let _str = "";
  285. if(_arr != null){
  286. for(var subkey in _arr){
  287. let _ab = _arr[subkey].split(",");
  288. let _cd = subkey.split("_");
  289. let _sta = '';
  290. if(_obj[_cd[0]] != undefined){
  291. let _c = _obj[_cd[0]].charAt(parseInt(_cd[1]));
  292. if(_ab[1] == 2){
  293. _sta = _c == 0?'red':'';
  294. }else{
  295. if(_ab[1]==1){
  296. _sta = _c == 1?'green':'';
  297. }else{
  298. _sta = _c == 1?'red':'';
  299. }
  300. }
  301. }else{
  302. _sta = '';
  303. }
  304. _str += '<li>'+
  305. '<div class="iconfont icon-cloud-state" style="color:'+_sta+'"></div>'+
  306. '<div>'+_ab[0]+'</div>'+
  307. '</li>';
  308. }
  309. }
  310. $("."+key).html(_str);
  311. }
  312. }
  313. $(".tabUl div").on("click","",function(){
  314. $(this).addClass("act_this").siblings().removeClass("act_this");
  315. let _id = $(this).data("open");
  316. if(_id == 0){
  317. $("._Engi0").css("display","block");
  318. $("._Engi1").css("display","block");
  319. $("._Engi2").css("display","none");
  320. $("._Engi3").css("display","none");
  321. }else if(_id == 1){
  322. $("._Engi0").css("display","none");
  323. $("._Engi1").css("display","none");
  324. $("._Engi2").css("display","block");
  325. $("._Engi3").css("display","block");
  326. }
  327. setOpt(2);
  328. })
  329. </script>
  330. </html>