CargoCx.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567
  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"
  14. content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
  15. <link rel="stylesheet" href="../../css/element.css">
  16. <link rel="stylesheet" href="../../css/style.css">
  17. <link rel="stylesheet" id="linkSource" href="../../css/base.css">
  18. <script src="../../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
  19. <script src="../../js/yz/init.js" type="text/javascript" charset="utf-8"></script>
  20. <script src="../../js/echarts.min.js" type="text/javascript" charset="utf-8"></script>
  21. <script src="../../js/pako.js"></script>
  22. <script type="text/javascript">
  23. document.write('<script src="../../js/yz/shipLi.js?id='+(new Date().getTime())+'" type="text/javascript" charset="utf-8"><\/script>');
  24. document.write('<script src="../../js/yz/defailt.js?id='+(new Date().getTime())+'" type="text/javascript" charset="utf-8"><\/script>');
  25. document.write('<script src="../../js/yz/ajax.js?id='+(new Date().getTime())+'" type="text/javascript" charset="utf-8"><\/script>');
  26. checkLogin();
  27. </script>
  28. </head>
  29. <style type="text/css">
  30. *{
  31. margin: 0;
  32. padding: 0;
  33. }
  34. body {
  35. color: #fff;
  36. height: 100%;
  37. background-color: #103151;
  38. }
  39. div,td {
  40. box-sizing: border-box;
  41. }
  42. .infoLi{
  43. width: 50%;
  44. line-height:19px;
  45. font-size: 13px;
  46. padding-left:18px;
  47. color: rgba(255,255,255,0.7);
  48. border-right: 1px solid #797979;
  49. border-bottom: 1px solid #797979;
  50. }
  51. .infoLi:nth-child(even){
  52. border-right:none;
  53. }
  54. .infoLi>div{
  55. display: flex;
  56. }
  57. .infoLi>div>div:first-child{
  58. width: 50px;
  59. text-align: right;
  60. padding-right: 15px;
  61. }
  62. .infoLi .shipYw{
  63. position: relative;
  64. }
  65. .infoLi .shipYw .text-lg{
  66. position: absolute;
  67. left: -10px;
  68. }
  69. .title{
  70. color: #0081ff;
  71. font-size: 15px;
  72. font-weight: 600;
  73. justify-content: center;
  74. padding: 9px 0;
  75. }
  76. .beng_box{
  77. box-sizing: border-box;
  78. width: 100%;
  79. padding:6px;
  80. font-size: 12px;
  81. margin-bottom: 10px;
  82. background-color: rgba(82,152,159,0.6);
  83. }
  84. .beng_box>div:last-child{
  85. text-align: center;
  86. margin-top: 10px;
  87. font-size: 14px;
  88. }
  89. .beng_box span{
  90. letter-spacing:4px;
  91. font-size: 22px;
  92. font-weight: bold;
  93. color: #fbbd08;
  94. margin-right: 6px;
  95. }
  96. .numbox{
  97. font-size: 16px;
  98. font-weight: bold;
  99. color: #fbbd08;
  100. margin-right: 5px;
  101. }
  102. .numbox+span{
  103. font-size: 12px;
  104. }
  105. .bg-theme-son{
  106. display: flex;
  107. align-items: center;
  108. justify-content: space-between;
  109. padding: 5px 10px;
  110. /* color: rgba(255,255,255,0.8); */
  111. }
  112. .bg-theme-son .iconfont.act{
  113. transform:rotate(90deg);
  114. transition:transform 0.3s linear;
  115. }
  116. .temBox{
  117. width: 50px;
  118. height: 80px;
  119. background-color: #005eb6;
  120. border: 1px solid #fff;
  121. margin-left: 5px;
  122. background-image: linear-gradient(0deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 20%, #103151 1%);
  123. }
  124. </style>
  125. <body>
  126. <div class="topParen">
  127. <div class="topBox">
  128. <div>货控室管理</div>
  129. <i class="iconfont icon-left text-white" onclick="javascript:history.back(-1);"></i>
  130. </div>
  131. <div class="tabli">
  132. <div class="yz_this" name="oneEng">货舱</div>
  133. <div name="twoEng" style="flex: 2;">压载舱、淡水舱液位容量</div>
  134. <div name="thrEng">泵舱</div>
  135. </div>
  136. <div class="hk_inf oneEng">
  137. <div style="border: 1px solid rgba(125,125,125,0.4);margin: 7px;">
  138. <div class="bg-theme-son flex justify-between">
  139. <div>货舱压力、液位、温度</div>
  140. <div class="text-sm text-grey flex">
  141. <div class="flex align-center">
  142. <span class="text-lg">●</span>
  143. <span>无</span>
  144. </div>
  145. <div class="flex align-center margin-lr-sm">
  146. <span class="text-lg text-red">●</span>
  147. <span>高高位</span>
  148. </div>
  149. <div class="flex align-center">
  150. <span class="text-lg text-orange">●</span>
  151. <span>高位</span>
  152. </div>
  153. </div>
  154. </div>
  155. <div class="flex flex-wrap" id="_View">
  156. </div>
  157. </div>
  158. </div>
  159. <div class="hk_inf twoEng" style="display: none;">
  160. <div style="border: 1px solid rgba(125,125,125,0.4);margin: 7px;">
  161. <div class="bg-theme-son">
  162. <div>压载舱、淡水舱液位容量</div>
  163. </div>
  164. <div class="flex flex-wrap" id="_yaView">
  165. </div>
  166. </div>
  167. </div>
  168. <div class="hk_inf thrEng" style="display: none;">
  169. <div style="border: 1px solid rgba(125,125,125,0.4);margin: 7px;">
  170. <div class="bg-theme-son">
  171. <span>泵进出口压力</span>
  172. <span class="iconfont icon-right act"></span>
  173. </div>
  174. <div>
  175. <div class="flex justify-around">
  176. <div style="width: 46%;">
  177. <div class="beng_box">
  178. <div>进口 - 1#压载泵</div>
  179. <div><span id="beng_1">0</span>MPa</div>
  180. </div>
  181. <div class="beng_box">
  182. <div>进口 - 2#压载泵</div>
  183. <div><span id="beng_2">0</span>MPa</div>
  184. </div>
  185. <div class="beng_box">
  186. <div>进口 - 1#清洗泵</div>
  187. <div><span id="beng_3">0</span>MPa</div>
  188. </div>
  189. <div class="beng_box">
  190. <div>进口 - 2#清洗泵</div>
  191. <div><span id="beng_4">0</span>MPa</div>
  192. </div>
  193. </div>
  194. <div style="width: 46%;">
  195. <div class="beng_box">
  196. <div>进口 - 1#压载泵</div>
  197. <div><span id="beng_5">0</span>MPa</div>
  198. </div>
  199. <div class="beng_box">
  200. <div>进口 - 2#压载泵</div>
  201. <div><span id="beng_6">0</span>MPa</div>
  202. </div>
  203. <div class="beng_box">
  204. <div>进口 - 1#清洗泵</div>
  205. <div><span id="beng_7">0</span>MPa</div>
  206. </div>
  207. <div class="beng_box">
  208. <div>进口 - 2#清洗泵</div>
  209. <div><span id="beng_8">0</span>MPa</div>
  210. </div>
  211. </div>
  212. </div>
  213. </div>
  214. </div>
  215. <div style="border: 1px solid rgba(125,125,125,0.4);margin: 7px;">
  216. <div class="bg-theme-son">
  217. <span>穿舱件温度</span>
  218. <span class="iconfont icon-right act"></span>
  219. </div>
  220. <div class="padding-sm flex flex-wrap" id="ccWd">
  221. </div>
  222. </div>
  223. <div style="border: 1px solid rgba(125,125,125,0.4);margin: 7px;">
  224. <div class="bg-theme-son">
  225. <span>蒸汽回收总管压力</span>
  226. <span class="iconfont icon-right"></span>
  227. </div>
  228. <div style="display: none;">
  229. <div class="flex text-center">
  230. <div class="flex-sub">
  231. <div id="myChart2" style="height: 160px;"></div>
  232. <div>1#蒸汽</div>
  233. </div>
  234. <div class="flex-sub">
  235. <div id="myChart3" style="height: 160px;"></div>
  236. <div>2#蒸汽</div>
  237. </div>
  238. </div>
  239. </div>
  240. </div>
  241. <div style="border: 1px solid rgba(125,125,125,0.4);margin: 7px;">
  242. <div class="bg-theme-son">
  243. <span>液货舱集管压力(MPa)</span>
  244. <span class="iconfont icon-right"></span>
  245. </div>
  246. <div style="display: none;">
  247. <div id="myChart1" style="height: 220px;"></div>
  248. </div>
  249. </div>
  250. </div>
  251. </div>
  252. <script type="text/javascript">
  253. let nowSn = localStorage.getItem("shipSn");
  254. var awData = {};
  255. var yhbWd = [["1#压载泵","z2P"],["1#洗舱泵","z2R"], ["2#压载泵","z2Q"],["2#洗舱泵","z2S"]];
  256. var huoCang = [{"name":"左-1#","data":["z01","z0D1","z0R1","z0T1","z0S1",41.06,["Q0J-3","Q0J-15"]]},
  257. {"name":"右-1#","data":["z00","z0C1","z0O1","z0Q1","z0P1",40.34,["Q0J-2","Q0J-14"]]},
  258. {"name":"左-2#","data":["z03","z0F1","z0X1","z0Z1","z0Y1",75.44,["Q0J-1","Q0J-13"]]},
  259. {"name":"右-2#","data":["z02","z0E1","z0U1","z0W1","z0V1",75.43,["Q0J-0","Q0J-12"]]},
  260. {"name":"左-3#","data":["z05","z0H1","z0d","z0f","z0e",79.44,["Q0K-15","Q0J-11"]]},
  261. {"name":"右-3#","data":["z04","z0G1","z0a","z0c","z0b",79.37,["Q0K-14","Q0J-10"]]},
  262. {"name":"左-4#","data":["z07","z0J1","z0j","z0l","z0k",79.28,["Q0K-13","Q0J-9"]]},
  263. {"name":"右-4#","data":["z06","z0I1","z0g","z0i","z0h",79.31,["Q0K-12","Q0J-8"]]},
  264. {"name":"左-5#","data":["z09","z0L1","z0p","z0r","z0q",79.81,["Q0K-11","Q0J-7"]]},
  265. {"name":"右-5#","data":["z08","z0K1","z0m","z0o","z0n",79.28,["Q0K-10","Q0J-6"]]},
  266. {"name":"左-6#","data":["z2U","z0N1","z1x","z1w","z1v",23.27,["Q0K-9","Q0J-8"]]},
  267. {"name":"右-6#","data":["z2T","z0M1","z20","z1z","z1y",23.85,["Q0K-8","Q0J-4"]]}];
  268. var yaCang = [{"name":"左-1#压载舱","data":["0KF","0eL"]},
  269. {"name":"右-1#压载舱","data":["0KG","0eM"]},
  270. {"name":"左-2#压载舱","data":["0KH","0eN"]},
  271. {"name":"右-2#压载舱","data":["0KI","0eO"]},
  272. {"name":"左-3#压载舱","data":["0KJ","0eP"]},
  273. {"name":"右-3#压载舱","data":["0KK","0eQ"]},
  274. {"name":"左-4#压载舱","data":["0KL","0eR"]},
  275. {"name":"右-4#压载舱","data":["0KM","0eS"]},
  276. {"name":"左-5#压载舱","data":["0KN","0eT"]},
  277. {"name":"右-5#压载舱","data":["0KO","0eU"]},
  278. {"name":"左-1#淡水舱","data":["0KP","0ef"]},
  279. {"name":"右-1#淡水舱","data":["0KG","0eg"]},
  280. {"name":"左-2#淡水舱","data":["0KR","0eh"]},
  281. {"name":"右-2#淡水舱","data":["0KS","0ei"]}];
  282. var myChart1 = echarts.init(document.getElementById('myChart1'));
  283. var myChart2 = echarts.init(document.getElementById('myChart2'));
  284. var myChart3 = echarts.init(document.getElementById('myChart3'));
  285. function setoption1(dataList){
  286. option = {
  287. color: ['#3398DB'],
  288. tooltip: {
  289. trigger: 'axis',
  290. axisPointer: {
  291. type: 'cross',
  292. crossStyle: {
  293. color: '#999'
  294. }
  295. }
  296. },
  297. grid: {
  298. top: '10%',
  299. left: '2%',
  300. right: '2%',
  301. bottom: '4%',
  302. containLabel: true
  303. },
  304. xAxis: [{
  305. type: 'category',
  306. data: ['1#','2#', '3#', '4#', '5#', '6#'],
  307. axisTick: {
  308. alignWithLabel: true
  309. },
  310. axisLine: {
  311. lineStyle: {
  312. color: '#fff',
  313. }
  314. },
  315. axisLabel: {
  316. textStyle: {
  317. fontSize:12,
  318. }
  319. }
  320. }
  321. ],
  322. yAxis: [{
  323. type: 'value',
  324. axisLine: {
  325. show: false
  326. },
  327. splitLine: {
  328. lineStyle: {
  329. color: ['rgba(132, 132, 132, 0.5)']
  330. }
  331. },
  332. axisLabel:{
  333. formatter: function(){
  334. return "";
  335. }
  336. }
  337. }
  338. ],
  339. series: [{
  340. name: '实时数据',
  341. type: 'bar',
  342. barWidth: '20',
  343. itemStyle:{
  344. normal: {
  345. label:{
  346. color:'#8799a3'
  347. },
  348. color: new echarts.graphic.LinearGradient(
  349. 0, 0, 0, 1,
  350. [
  351. {offset: 0, color:'#3973ac'},
  352. {offset: 1, color:'#00aaff'}
  353. ]
  354. )
  355. }
  356. },
  357. label: {
  358. normal: {
  359. show: true,
  360. position: 'top',
  361. color:'#fbbd08',
  362. formatter: function (params) {
  363. var index = params.dataIndex;
  364. return dataList[index]
  365. }
  366. }
  367. },
  368. data:dataList
  369. }
  370. ]
  371. };
  372. return option;
  373. }
  374. function setoption2(data){
  375. data = data>100?(data/1000).toFixed(2):data;
  376. option = {
  377. graphic: [{
  378. type: 'text',
  379. left: 'center',
  380. top: 'center',
  381. z: 10,
  382. style: {
  383. fill: '#fbbd08',
  384. text: data + "MPa",
  385. font: '16px Microsoft YaHei'
  386. }
  387. }],
  388. series: [{
  389. name: '实时数据',
  390. type: 'pie',
  391. center:["50%", "50%"],
  392. radius: ['60%', '80%'],
  393. avoidLabelOverlap: false,
  394. hoverAnimation: false,
  395. label: {
  396. normal: {
  397. show: false,
  398. position: 'center',
  399. textStyle: {
  400. fontSize: 20,
  401. color: '#d9d9d9'
  402. }
  403. }
  404. },
  405. data: [{
  406. value: data,
  407. name: data + "MPa"
  408. },{
  409. value: 3 - parseFloat(data),
  410. name: ''
  411. }]
  412. }],
  413. color: ['#FFF076','#52989F']
  414. };
  415. return option;
  416. }
  417. $(document).ready(function(){
  418. firstData();
  419. // setInterval(()=>{firstData();},60*1000);
  420. })
  421. function firstData(){
  422. awData = {};
  423. deviceList(function(_obj){
  424. awData = _obj
  425. setVal();
  426. setYaVal();
  427. changeSta();
  428. setCcwd();
  429. })
  430. }
  431. function changeSta(){
  432. myChart1.setOption(setoption1([awData["z1j"] == undefined?0: awData["z1j"],
  433. awData["z1k"] == undefined?0: awData["z1k"],
  434. awData["z1l"] == undefined?0: awData["z1l"],
  435. awData["z1m"] == undefined?0: awData["z1m"],
  436. awData["z1n"] == undefined?0: awData["z1n"],
  437. awData["z1o"] == undefined?0: awData["z1o"]]));
  438. myChart2.setOption(setoption2(awData["z1p"] == undefined?0: awData["z1p"]));
  439. myChart3.setOption(setoption2(awData["z1q"] == undefined?0: awData["z1q"]));
  440. $("#beng_1").text(awData["z1S1"] == undefined ? 0 : awData["z1S1"]);
  441. $("#beng_2").text(awData["z1U1"] == undefined ? 0 : awData["z1U1"]);
  442. $("#beng_3").text(awData["z1r"] == undefined ? 0 : awData["z1r"]);
  443. $("#beng_4").text(awData["z1t"] == undefined ? 0 : awData["z1t"]);
  444. $("#beng_5").text(awData["z1T1"] == undefined ? 0 : awData["z1T1"]);
  445. $("#beng_6").text(awData["z1V1"] == undefined ? 0 : awData["z1V1"]);
  446. $("#beng_7").text(awData["z1s"] == undefined ? 0 : awData["z1s"]);
  447. $("#beng_8").text(awData["z1u"] == undefined ? 0 : awData["z1u"]);
  448. }
  449. function setCcwd(){
  450. let _htm = "";
  451. for(let d=0;d<yhbWd.length;d++){
  452. let sf = yhbWd[d];
  453. let _h = awData[sf[1]] != undefined&&!isNaN(Number(awData[sf[1]],10))? parseFloat(awData[sf[1]]): "---"
  454. _htm += `<div class="text-center margin-tb-sm" style="width: 50%;">
  455. <div class="flex align-center justify-center">
  456. <div style="height: 80px;" class="flex flex-direction justify-between text-grey align-end">
  457. <span>100</span>
  458. <span>75</span>
  459. <span>50</span>
  460. <span>25</span>
  461. <span>0</span>
  462. </div>
  463. <div class="temBox" style="background-image: linear-gradient(0deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) ${isNaN(Number(_h,10))?0:_h}%, #103151 1%);"></div>
  464. </div>
  465. <div class="margin-top-xs">${sf[0]}:<span class="numbox">${_h}</span>℃</div>
  466. </div>`
  467. }
  468. $("#ccWd").html(_htm);
  469. }
  470. function setVal(){
  471. let _str = "";
  472. for(let i=0;i<huoCang.length;i++){
  473. let _ab = huoCang[i].data;
  474. let _e = awData[_ab[0]] != undefined&&!isNaN(Number(awData[_ab[0]],10))?(awData[_ab[0]]* parseFloat(_ab[5])).toFixed(2):"---";
  475. _str += `<div class="infoLi">
  476. <div class="title">${huoCang[i].name}</div>
  477. <div>
  478. <div class="shipYw"><span class="text-lg ${getYWarm(_ab[6])}">●</span>液位:</div>
  479. <div><span class="numbox">${awData[_ab[0]] || 0}</span><span>m</span></div>
  480. </div>
  481. <div>
  482. <div>压力:</div>
  483. <div><span class="numbox">${awData[_ab[1]] || 0}</span><span>kPa</span></div>
  484. </div>
  485. <div>
  486. <div>上温:</div>
  487. <div><span class="numbox">${awData[_ab[2]] || 0}</span><span>℃</span></div>
  488. </div>
  489. <div>
  490. <div>中温:</div>
  491. <div><span class="numbox">${awData[_ab[3]] || 0}</span><span>℃</span></div>
  492. </div>
  493. <div>
  494. <div>底温:</div>
  495. <div><span class="numbox">${awData[_ab[4]] || 0}</span><span>℃</span></div>
  496. </div>
  497. <div>
  498. <div>容量:</div>
  499. <div><span class="numbox">${_e}</span><span>m³</span></div>
  500. </div>
  501. </div>`
  502. }
  503. $("#_View").html(_str);
  504. }
  505. function setYaVal(){
  506. let _str = "";
  507. for(let i=0;i<yaCang.length;i++){
  508. let _ab = yaCang[i].data;
  509. _str += `<div class="infoLi">
  510. <div class="title">${yaCang[i].name}</div>
  511. <div>
  512. <div>液位:</div>
  513. <div><span class="numbox">${awData[_ab[0]] == undefined?0.00 : awData[_ab[0]]}</span><span>m</span></div>
  514. </div>
  515. <div>
  516. <div>容量:</div>
  517. <div><span class="numbox">${awData[_ab[1]] == undefined?0.00 : awData[_ab[1]]}</span><span>m³</span></div>
  518. </div>
  519. </div>`
  520. }
  521. $("#_yaView").html(_str);
  522. }
  523. function getYWarm(_key){
  524. let _ab = _key[0].split("-");
  525. let _df = awData[_ab[0]] == undefined?0:awData[_ab[0]].charAt(parseInt(_ab[1]));
  526. let _cb = _key[1].split("-");
  527. let _eh = awData[_cb[0]] == undefined?0:awData[_cb[0]].charAt(parseInt(_cb[1]));
  528. let _ij = "";
  529. if(_df == 0&&_eh==0){
  530. _ij = "";
  531. }else if(_df == 1&&_eh==0){
  532. _ij = "text-red";
  533. }else if(_df == 0&&_eh==1){
  534. _ij = "text-orange";
  535. }
  536. return _ij
  537. }
  538. $(".tabli>div").on("click","",function(){
  539. $(".hk_inf").css("display","none");
  540. $("."+$(this).attr("name")).css("display","block");
  541. $(this).addClass("yz_this").siblings().removeClass("yz_this");
  542. myChart1.resize();
  543. myChart2.resize();
  544. myChart3.resize();
  545. })
  546. $(".bg-theme-son").on("click","",function(){
  547. if($(this).next().is(":hidden")){
  548. $(this).next().css("display","block");
  549. $(this).find(".iconfont").addClass("act");
  550. }else{
  551. $(this).next().css("display","none");
  552. $(this).find(".iconfont").removeClass("act");
  553. }
  554. myChart1.resize();
  555. myChart2.resize();
  556. myChart3.resize();
  557. })
  558. </script>
  559. </body>
  560. </html>