frame3.html 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
  6. <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
  7. <title>生产数据</title>
  8. <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
  9. <!--<link rel="stylesheet" type="text/css" href="../../css/aui.css"/>-->
  10. <link rel="stylesheet" type="text/css" href="../../css/popoPicker.css"/>
  11. <link rel="stylesheet" href="../../css/apiToast.css">
  12. <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
  13. <link rel="stylesheet" href="../../css/projeck.css">
  14. <style>
  15. body,html{
  16. background: #F3F3F3;
  17. }
  18. .api_layout{
  19. /*border-top: 1px solid #37b0e9;*/
  20. padding: 13px 10px;
  21. -webkit-box-sizing: border-box;
  22. -moz-box-sizing: border-box;
  23. box-sizing: border-box;
  24. }
  25. .ventilate li .icon{
  26. width: 40px;
  27. height: 40px;
  28. background: url('../../icon/fengshan.png') no-repeat;
  29. background-size: cover;
  30. position: absolute;
  31. top: 0;
  32. bottom: 5px;
  33. left: 0;
  34. right: 0;
  35. margin: auto;
  36. }
  37. .ventilate li:nth-child(2) .icon{
  38. width: 40px;
  39. height: 40px;
  40. background: url('../../icon/kj_ico.png') no-repeat;
  41. background-size: cover;
  42. position: absolute;
  43. top: 0;
  44. bottom: 5px;
  45. left: 0;
  46. right: 0;
  47. margin: auto;
  48. }
  49. .ventilate li:nth-child(3) .icon{
  50. width: 40px;
  51. height: 40px;
  52. background: url('../../icon/704_ico.png') no-repeat;
  53. background-size: cover;
  54. position: absolute;
  55. top: 0;
  56. bottom: 5px;
  57. left: 0;
  58. right: 0;
  59. margin: auto;
  60. }
  61. .ventilate li:nth-child(4) .icon{
  62. width: 40px;
  63. height: 40px;
  64. background: url('../../image/rubberTyredCar.png') no-repeat;
  65. background-size: cover;
  66. position: absolute;
  67. top: 0;
  68. bottom: 5px;
  69. left: 0;
  70. right: 0;
  71. margin: auto;
  72. }
  73. .navs_item{
  74. padding:0;
  75. }
  76. .nav-btns li{
  77. width: 25%;
  78. }
  79. .nav-btns .icon_p{
  80. margin: auto;
  81. }
  82. .navs_item li:first-child:after{
  83. height: 0;
  84. }
  85. .navs_item li:last-child:after{
  86. height: 0;
  87. }
  88. </style>
  89. </head>
  90. <body>
  91. <div class="api_layout">
  92. <!-- 公告 -->
  93. <div class="Notice1 borderRa">
  94. <p class="Stitle">公告:</p>
  95. <p class="Scontent Stitle"></p>
  96. </div>
  97. <!-- 导航 -->
  98. <div class="navs Notice borderRa">
  99. <ul class="navs_item nav-btns flex-start">
  100. <li onclick="videoMonitor()">
  101. <div class="icon_p">
  102. <i class="icon"></i>
  103. </div>
  104. <span>视频监控</span>
  105. </li>
  106. <li onclick="personalLocationJu()">
  107. <div class="icon_p">
  108. <i class="icon"></i>
  109. </div>
  110. <span>人员定位</span>
  111. </li>
  112. <li onclick="securityMonitor()">
  113. <div class="icon_p">
  114. <i class="icon"></i>
  115. </div>
  116. <span>安全监测</span>
  117. </li>
  118. <li onclick="securityMonitor2()">
  119. <div class="icon_p">
  120. <i class="icon"></i>
  121. </div>
  122. <span>安全监测</span>
  123. </li>
  124. </ul>
  125. <ul class="navs_item nav-btns flex-start">
  126. <li class="scsj"onclick="effectControl()">
  127. <div class="icon_p">
  128. <i class="icon"></i>
  129. </div>
  130. <span>生产数据</span>
  131. </li>
  132. <li class="sbjk"onclick="shebeijiankong()">
  133. <div class="icon_p">
  134. <i class="icon"></i>
  135. </div>
  136. <span>设备监控</span>
  137. </li>
  138. </ul>
  139. <!-- <ul class="navs_item nav-btns flex-start ventilate" style="padding-top: 15px;">
  140. <li onclick="ventilate()">
  141. <div class="icon_p">
  142. <i class="icon"></i>
  143. </div>
  144. <span>风机监控</span>
  145. </li>
  146. <li onclick="Sewage()">
  147. <div class="icon_p">
  148. <i class="icon"></i>
  149. </div>
  150. <span>矿井水处理</span>
  151. </li>
  152. <li onclick="Face()">
  153. <div class="icon_p">
  154. <i class="icon"></i>
  155. </div>
  156. <span>704工作面</span>
  157. </li>
  158. <li onclick="rubberTyredCar()">
  159. <div class="icon_p">
  160. <i class="icon"></i>
  161. </div>
  162. <span>胶轮车监控</span>
  163. </li>
  164. </ul> -->
  165. </div>
  166. <!-- 报警 -->
  167. <div class="Notice navs borderRa police beforS hide">
  168. <p class="Stitle centertT" style="padding-bottom:5px">安全监测报警</p>
  169. <ul class="navs_item flex-space">
  170. <li>
  171. <span>二级报警</span>
  172. <div class="circular alarmNum1" onclick="securityMonitor()">0个</div>
  173. </li>
  174. <li>
  175. <span>三级报警</span>
  176. <div class="circular alarmNum2" onclick="securityMonitor()">0个</div>
  177. </li>
  178. <li>
  179. <span>四级报警</span>
  180. <div class="circular alarmNum3" onclick="securityMonitor()">0个</div>
  181. </li>
  182. </ul>
  183. </div>
  184. <!-- 瓦斯报警异常 -->
  185. <div class="Notice borderRa beforS hide">
  186. <p class="Stitle centertT">瓦斯异常情况</p>
  187. <ul class="items flex-space centertT">
  188. <li class="item" onclick="securityMonitor()">
  189. <span>报警</span>
  190. <p class="num Gasalarm">0个</p>
  191. <i class="imgIco"></i>
  192. </li>
  193. <li class="item" onclick="securityMonitor()">
  194. <span>断电</span>
  195. <p class="num duanDian">0个</p>
  196. <i class="imgIco"></i>
  197. </li>
  198. <li class="item" onclick="securityMonitor()">
  199. <span>故障</span>
  200. <p class="num guZhang">0个</p>
  201. <i class="imgIco"></i>
  202. </li>
  203. </ul>
  204. </div>
  205. <!-- 产量 进尺 -->
  206. <div class="Notice borderRa beforS hide">
  207. <p class="Stitle centertT">产量 进尺</p>
  208. <div class="Chart flex-space">
  209. <div style="width:50%" class="canvasParent centertT">
  210. <canvas id="yield" style="width: 100%;height:140px"></canvas>
  211. <span class="canvasTitle">今日产量</span>
  212. </div>
  213. <div class="centertT" style="width:50%">
  214. <canvas id="Footage" style="width: 100%;height:140px"></canvas>
  215. <span class="canvasTitle">今日掘进进尺</span>
  216. </div>
  217. </div>
  218. </div>
  219. <!-- 皮带秤 产量 -->
  220. <div class="Notice borderRa beforS hide">
  221. <p class="Stitle centertT">皮带秤小时产量</p>
  222. <div class="" style="width:100%">
  223. <canvas id="Belt" style="width: 100%;margin-top:10px;height:210px"></canvas>
  224. </div>
  225. </div>
  226. <!-- 销量 能耗 -->
  227. <div class="Notice borderRa beforS hide">
  228. <p class="Stitle centertT">销量 能耗</p>
  229. <div class="Chart flex-space">
  230. <div style="width:50%" class="canvasParent centertT">
  231. <canvas id="sales" style="width: 100%;height:140px"></canvas>
  232. <span class="canvasTitle">销量</span>
  233. </div>
  234. <div class="centertT" style="width:50%">
  235. <canvas id="energy" style="width: 100%;height:140px"></canvas>
  236. <span class="canvasTitle">能耗</span>
  237. </div>
  238. </div>
  239. </div>
  240. <!-- 隐患整治 三违 -->
  241. <div class="Notice borderRa beforS hide">
  242. <p class="Stitle centertT">隐患整治 三违</p>
  243. <div class="Chart flex-space">
  244. <div style="width:50%" class="canvasParent centertT">
  245. <canvas id="danger" style="width: 100%;height:140px"></canvas>
  246. <span class="canvasTitle">隐患整治</span>
  247. </div>
  248. <div class="centertT" style="width:50%">
  249. <canvas id="violation" style="width: 100%;height:140px"></canvas>
  250. <span class="canvasTitle">三违</span>
  251. </div>
  252. </div>
  253. </div>
  254. <!-- 一周产量 -->
  255. <div class="Notice borderRa hide">
  256. <!--<p class="Stitle flex-space">-->
  257. <!--<span> 一周产量趋势</span>-->
  258. <!--&lt;!&ndash; <span style="font-size:14px" class="currentNum">当前下井人数:</span> &ndash;&gt;-->
  259. <!--</p>-->
  260. <div class="Chart">
  261. <div class="flex-start">
  262. <div class="relative Sharebox screen">
  263. <input id="button-value" class="js-picker" value="周产量趋势">
  264. <i class="lower"></i>
  265. </div>
  266. <div class=" selectTime hide">
  267. <input class="button-value startYear" value="">
  268. </div>
  269. <div class="selectTime1 hide">
  270. <input class="button-value startTime" value="">
  271. </div>
  272. </div>
  273. <div class="" style="width:100%">
  274. <canvas id="weekYield" style="width: 100%;margin-top:10px;height:210px"></canvas>
  275. </div>
  276. </div>
  277. </div>
  278. <!-- 一周下井趋势 -->
  279. <div class="Notice borderRa hide afterS">
  280. <p class="Stitle flex-space">
  281. <span> 一周下井趋势</span>
  282. <span style="font-size:14px" class="currentNum"></span>
  283. </p>
  284. <div class="Chart">
  285. <div class="" style="width:100%">
  286. <canvas id="downWell" style="width: 100%;margin-top:10px;height:210px"></canvas>
  287. </div>
  288. </div>
  289. <p class="centertT seachDetatle" onclick="personalLocationJu()">查看详情</p>
  290. </div>
  291. </div>
  292. <script src="../../script/api.js"></script>
  293. <script src="../../script/popoPicker.js"></script>
  294. <script src="../../script/f2.js"></script>
  295. <script src="../../script/config.js"></script>
  296. <script>
  297. var headers;
  298. var apiToast = new apiToast();
  299. apiready = function () {
  300. var info = $api.getStorage('data'),
  301. user = JSON.parse(info).data.user;
  302. token = JSON.parse(info).data.access_token;
  303. headers = {
  304. "Authorization": "Bearer " + token
  305. };
  306. openSharebox();//选择器
  307. //公告
  308. noticeFun();
  309. // 图表权限
  310. chartsJurisdiction();
  311. // 监听切换tab标签,刷新页面
  312. api.addEventListener({
  313. name: 'refreshProduction'
  314. }, function(ret, err) {
  315. //公告
  316. noticeFun();
  317. // 图表权限
  318. chartsJurisdiction();
  319. });
  320. };
  321. // 下拉刷新
  322. function setCustomRefreshHeader() {
  323. api.setRefreshHeaderInfo({
  324. bgColor: '#f2f2f2',
  325. textColor: '#000',
  326. textDown: '下拉刷新...',
  327. textUp: '松开刷新...'
  328. }, function(ret, err) {
  329. //公告
  330. noticeFun();
  331. // 图表权限
  332. chartsJurisdiction();
  333. });
  334. }
  335. // 打开视频
  336. function videoMonitor() {
  337. $http.requestData(UrlRouter.regionApi,'get','')
  338. .then(ret=>{
  339. if (ret.code === 0) {
  340. $event.openWin('videoMonitor','../video/videoMonitor','','')
  341. }else if (ret.code === 1) {
  342. api.alert({
  343. title: '提示',
  344. msg: '该用户没有此权限',
  345. });
  346. }
  347. })
  348. .catch(err=>{})
  349. }
  350. // 安全监测权限
  351. function securityMonitor() {
  352. $http.requestData(UrlRouter.securityJurisdiction,'post','')
  353. .then(ret=>{
  354. if(ret.code === 0) {
  355. $event.openWin('securityMonitor','../productionData/securityMonitor','','');
  356. }else if (ret.code === 1) {
  357. api.alert({
  358. title: '提示',
  359. msg: '该用户没有此权限',
  360. });
  361. }
  362. })
  363. .catch(err=>{})
  364. }
  365. //二分区安全检测权限
  366. function securityMonitor2() {
  367. $http.requestData(UrlRouter.securityJurisdiction,'post',{show: 'must'})
  368. .then(ret=>{
  369. if(ret.code === 0) {
  370. $event.openWin('securityMonitor','../productionData/securityMonitor2','','');
  371. }else if (ret.code === 1) {
  372. api.alert({
  373. title: '提示',
  374. msg: '该用户没有此权限',
  375. });
  376. }
  377. })
  378. .catch(err=>{})
  379. }
  380. // 人员定位权限
  381. function personalLocationJu() {
  382. $http.requestData(UrlRouter.personalLocation,'post','')
  383. .then(ret=>{
  384. if(ret.code === 0) {
  385. $event.openWin('persnoalLocation','../productionData/persnoalLocation','','');
  386. }else if (ret.code === 1) {
  387. api.alert({
  388. title: '提示',
  389. msg: '该用户没有此权限',
  390. });
  391. }
  392. })
  393. .catch(err=>{})
  394. }
  395. // 效能管控
  396. function effectControl() {
  397. $http.requestData(UrlRouter.efficacyShow,'post','')
  398. .then(ret=>{
  399. if(ret.code === 0) {
  400. $event.openWin('efficiencyWin','../productionData/efficiencyWin','','');
  401. }else if (ret.code === 1) {
  402. api.alert({
  403. title: '提示',
  404. msg: '该用户没有此权限',
  405. });
  406. }
  407. })
  408. .catch(err=>{})
  409. }
  410. //设备监控
  411. function shebeijiankong() {
  412. $event.openWin('shebeijiankong_win','../productionData/shebeijiankong_win','','');
  413. }
  414. // 风机监控
  415. function ventilate() {
  416. $event.openWin('ventilate_win','../productionData/ventilate_win','','');
  417. }
  418. // 矿井水处理
  419. function Sewage() {
  420. $event.openTabLayout('sewage','../productionData/sewage','矿井水处理','');
  421. }
  422. // 704工作面
  423. function Face() {
  424. $http.requestData(UrlRouter.working220704,'post','')
  425. .then(ret=>{
  426. if(ret.code === 0) {
  427. $event.openTabLayout('Face','../704/704','枣泉煤矿智能开采工作面','');
  428. }else if (ret.code === 1) {
  429. api.alert({
  430. title: '提示',
  431. msg: '该用户没有此权限',
  432. });
  433. }
  434. })
  435. .catch(err=>{})
  436. }
  437. // 胶轮车
  438. function rubberTyredCar() {
  439. $http.requestData(UrlRouter.transparentShow,'post','')
  440. .then(ret=>{
  441. if(ret.code === 0) {
  442. $event.openTabLayout('rubberTyredCar','../productionData/rubberTyredCar','胶轮车','');
  443. }else if (ret.code === 1) {
  444. api.alert({
  445. title: '提示',
  446. msg: '该用户没有此权限',
  447. });
  448. }
  449. })
  450. .catch(err=>{})
  451. }
  452. // 生产图表权限
  453. function chartsJurisdiction() {
  454. $api.val($api.dom('#button-value'), '周产量趋势');
  455. $api.addCls($api.dom('.selectTime1'), 'hide');
  456. $api.addCls($api.dom('.selectTime'), 'hide');
  457. $http.fnReuestDataNologing(UrlRouter.chartsJurisdiction,headers,'post','',function (ret,err) {
  458. if (ret && ret.code === 0) {
  459. // 今日产量
  460. yieldFootage();footage();
  461. //一周的产量
  462. weekYield(false,210);
  463. // 一周下井趋势
  464. downWellFun();
  465. // 报警
  466. getAlarmData();
  467. //瓦斯异常
  468. getGas();
  469. // 皮带称
  470. getBeltData()
  471. // 下拉刷新
  472. setCustomRefreshHeader();
  473. var Notice = $api.domAll('.Notice');
  474. for (var i = 0; i < Notice.length; i++) {
  475. $api.removeCls(Notice[i], 'hide');
  476. }
  477. }else if (ret && ret.code === 1) {
  478. api.alert({
  479. title: '提示',
  480. msg: '该用户没有此权限',
  481. });
  482. }
  483. })
  484. }
  485. // 产量 进尺
  486. function yieldFootage() {
  487. $http.requestData(UrlRouter.getBanNowDayTotal,'get','')
  488. .then(ret=>{
  489. if (ret && ret.status === 20000 && ret.data.length > 0) {
  490. api.refreshHeaderLoadDone();
  491. var data = [{
  492. x: '1',
  493. y: 75
  494. }];
  495. var chart = new F2.Chart({
  496. id: 'yield',
  497. pixelRatio: window.devicePixelRatio
  498. });
  499. chart.source(data, {
  500. y: {
  501. max: 100,
  502. min: 0
  503. }
  504. });
  505. chart.axis(false);
  506. chart.tooltip(false);
  507. chart.coord('polar', {
  508. transposed: true,
  509. innerRadius: 0.92,
  510. radius: 0.99,
  511. });
  512. chart.guide().arc({
  513. start: [0, 0],
  514. end: [1, 99.98],
  515. top: false,
  516. style: {
  517. lineWidth: 8,
  518. stroke: '#ccc'
  519. }
  520. });
  521. chart.guide().text({
  522. position: ['50%', '50%'],
  523. content: Math.floor(ret.data[0].DayTotal/1)+'吨',
  524. style: {
  525. fontSize: 16,
  526. fill: '#3d3c42'
  527. }
  528. });
  529. chart.interval().position('x*y').size(8).animate({
  530. appear: {
  531. duration: 1200,
  532. easing: 'cubicIn'
  533. }
  534. }).color('#6C6F74');
  535. chart.render();
  536. }
  537. })
  538. .catch(err=>{})
  539. }
  540. function footage() {
  541. $http.fnReuestDataNologing(UrlRouter.getSchedule,'post','',function(ret,err){
  542. if (ret.code === 0 && ret) {
  543. // 进尺
  544. var data = [{
  545. x: '1',
  546. y: ret.data['tunnel'].reality
  547. }];
  548. var chart = new F2.Chart({
  549. id: 'Footage',
  550. pixelRatio: window.devicePixelRatio
  551. });
  552. chart.source(data, {
  553. y: {
  554. max: ret.data['tunnel'].plan,
  555. min: 0
  556. }
  557. });
  558. chart.axis(false);
  559. chart.tooltip(false);
  560. chart.coord('polar', {
  561. transposed: true,
  562. innerRadius: 0.92,
  563. radius: 0.99,
  564. });
  565. chart.guide().arc({
  566. start: [0, 0],
  567. end: [1, ret.data['tunnel'].plan - 0.1],
  568. top: false,
  569. style: {
  570. lineWidth: 8,
  571. stroke: '#ccc'
  572. }
  573. });
  574. chart.guide().text({
  575. position: ['50%', '50%'],
  576. content: ret.data['tunnel'].today+'米',
  577. style: {
  578. fontSize: 16,
  579. fill: '#3d3c42'
  580. }
  581. });
  582. chart.interval().position('x*y').size(8).animate({
  583. appear: {
  584. duration: 1200,
  585. easing: 'cubicIn'
  586. }
  587. }).color('#14D2B8');
  588. chart.render();
  589. // 销量
  590. var data1 = [{
  591. x: '1',
  592. y: ret.data['sales'].reality
  593. }];
  594. var chartSales = new F2.Chart({
  595. id: 'sales',
  596. pixelRatio: window.devicePixelRatio
  597. });
  598. chartSales.source(data1, {
  599. y: {
  600. max: ret.data['sales'].plan,
  601. min: 0
  602. }
  603. });
  604. chartSales.axis(false);
  605. chartSales.tooltip(false);
  606. chartSales.coord('polar', {
  607. transposed: true,
  608. innerRadius: 0.92,
  609. radius: 0.99,
  610. });
  611. chartSales.guide().arc({
  612. start: [0, 0],
  613. end: [1, ret.data['sales'].plan - 0.1],
  614. top: false,
  615. style: {
  616. lineWidth: 8,
  617. stroke: '#ccc'
  618. }
  619. });
  620. chartSales.guide().text({
  621. position: ['50%', '50%'],
  622. content: ret.data['sales'].today+'吨',
  623. style: {
  624. fontSize: 16,
  625. fill: '#3d3c42'
  626. }
  627. });
  628. chartSales.interval().position('x*y').size(8).animate({
  629. appear: {
  630. duration: 1200,
  631. easing: 'cubicIn'
  632. }
  633. }).color('#14D2B8');
  634. chartSales.render();
  635. // 能耗
  636. var data2 = [{
  637. x: '1',
  638. y: ret.data['energy'].reality
  639. }];
  640. var chartEnergy = new F2.Chart({
  641. id: 'energy',
  642. pixelRatio: window.devicePixelRatio
  643. });
  644. chartEnergy.source(data2, {
  645. y: {
  646. max: ret.data['energy'].plan,
  647. min: 0
  648. }
  649. });
  650. chartEnergy.axis(false);
  651. chartEnergy.tooltip(false);
  652. chartEnergy.coord('polar', {
  653. transposed: true,
  654. innerRadius: 0.92,
  655. radius: 0.99,
  656. });
  657. chartEnergy.guide().arc({
  658. start: [0, 0],
  659. end: [1, ret.data['energy'].plan - 0.1],
  660. top: false,
  661. style: {
  662. lineWidth: 8,
  663. stroke: '#ccc'
  664. }
  665. });
  666. chartEnergy.guide().text({
  667. position: ['50%', '50%'],
  668. content: ret.data['energy'].today+'千瓦',
  669. style: {
  670. fontSize: 16,
  671. fill: '#3d3c42'
  672. }
  673. });
  674. chartEnergy.interval().position('x*y').size(8).animate({
  675. appear: {
  676. duration: 1200,
  677. easing: 'cubicIn'
  678. }
  679. }).color('#FF8B8C');
  680. chartEnergy.render();
  681. // 隐患整治
  682. var data3 = [{
  683. x: '1',
  684. y: ret.data['danger'].reality
  685. }];
  686. var chartDanger = new F2.Chart({
  687. id: 'danger',
  688. pixelRatio: window.devicePixelRatio
  689. });
  690. chartDanger.source(data3, {
  691. y: {
  692. max: ret.data['danger'].plan,
  693. min: 0
  694. }
  695. });
  696. chartDanger.axis(false);
  697. chartDanger.tooltip(false);
  698. chartDanger.coord('polar', {
  699. transposed: true,
  700. innerRadius: 0.92,
  701. radius: 0.99,
  702. });
  703. chartDanger.guide().arc({
  704. start: [0, 0],
  705. end: [1, ret.data['danger'].plan - 0.1],
  706. top: false,
  707. style: {
  708. lineWidth: 8,
  709. stroke: '#ccc'
  710. }
  711. });
  712. chartDanger.guide().text({
  713. position: ['50%', '50%'],
  714. content: ret.data['danger'].today+'个',
  715. style: {
  716. fontSize: 16,
  717. fill: '#3d3c42'
  718. }
  719. });
  720. chartDanger.interval().position('x*y').size(8).animate({
  721. appear: {
  722. duration: 1200,
  723. easing: 'cubicIn'
  724. }
  725. }).color('#14D2B8');
  726. chartDanger.render();
  727. //三违
  728. var data4 = [{
  729. x: '1',
  730. y: ret.data['violation'].reality
  731. }];
  732. var chartViolation = new F2.Chart({
  733. id: 'violation',
  734. pixelRatio: window.devicePixelRatio
  735. });
  736. chartViolation.source(data4, {
  737. y: {
  738. max: ret.data['violation'].plan,
  739. min: 0
  740. }
  741. });
  742. chartViolation.axis(false);
  743. chartViolation.tooltip(false);
  744. chartViolation.coord('polar', {
  745. transposed: true,
  746. innerRadius: 0.92,
  747. radius: 0.99,
  748. });
  749. chartViolation.guide().arc({
  750. start: [0, 0],
  751. end: [1, ret.data['violation'].plan - 0.1],
  752. top: false,
  753. style: {
  754. lineWidth: 8,
  755. stroke: '#ccc'
  756. }
  757. });
  758. chartViolation.guide().text({
  759. position: ['50%', '50%'],
  760. content: ret.data['violation'].today+'个',
  761. style: {
  762. fontSize: 16,
  763. fill: '#3d3c42'
  764. }
  765. });
  766. chartViolation.interval().position('x*y').size(8).animate({
  767. appear: {
  768. duration: 1200,
  769. easing: 'cubicIn'
  770. }
  771. }).color('#FF8B8C');
  772. chartViolation.render();
  773. }
  774. });
  775. }
  776. // 一周下井趋势
  777. function downWellFun() {
  778. $http.requestData(UrlRouter.downWellTotal,'post','')
  779. .then(ret=>{
  780. if (ret && ret.code === 0) {
  781. api.refreshHeaderLoadDone();
  782. var data = ret.data;
  783. var chart = new F2.Chart({
  784. id: 'downWell',
  785. pixelRatio: window.devicePixelRatio
  786. });
  787. chart.source(data, {
  788. 'pepole_num': {
  789. tickCount: 5
  790. }
  791. });
  792. chart.tooltip({
  793. custom: false, // 自定义 tooltip 内容框
  794. });
  795. chart.interval().position('dater*pepole_num').color('classes').adjust('stack');
  796. chart.render();
  797. }
  798. }).catch(err=>{})
  799. // 当前人数
  800. $http.requestData(UrlRouter.currentPersonalNum,'post','')
  801. .then(ret=>{
  802. if (ret && ret.code === 0 && ret.data.length > 0) {
  803. $api.html($api.dom('.currentNum'), '当前下井人数:'+ret.data[0].pepole_num +'人');
  804. }
  805. }).catch(err=>{})
  806. }
  807. //一周的产量
  808. function weekYield(transposed,height,type,startTime,endTime) {
  809. if(type != '年产量趋势'){
  810. var data = {
  811. dateTime:startTime,
  812. endTime:endTime
  813. };
  814. $http.requestData(UrlRouter.getBanDayList,'get',data)
  815. .then(ret=>{
  816. if (ret && ret.status === 20000) {
  817. api.refreshHeaderLoadDone();
  818. var data = ret.data;
  819. var chart = new F2.Chart({
  820. id: 'weekYield',
  821. height: height,
  822. pixelRatio: window.devicePixelRatio
  823. });
  824. chart.source(data, {
  825. 'banTotal2': {
  826. tickCount: 5
  827. }
  828. });
  829. chart.coord({
  830. transposed: transposed
  831. });
  832. chart.tooltip({
  833. custom: false, // 自定义 tooltip 内容框
  834. });
  835. chart.interval().position('curDT*total').color('devName').adjust('stack');
  836. chart.render();
  837. }
  838. }).catch(err=>{})
  839. }else {
  840. $http.requestData(UrlRouter.getMonthSumByYear,'get',{year:startTime})
  841. .then(ret=>{
  842. if (ret && ret.status === 20000) {
  843. api.refreshHeaderLoadDone();
  844. var data = ret.data;
  845. var chart = new F2.Chart({
  846. id: 'weekYield',
  847. height: height,
  848. pixelRatio: window.devicePixelRatio
  849. });
  850. chart.source(data, {
  851. 'banTotal2': {
  852. tickCount: 5
  853. }
  854. });
  855. chart.coord({
  856. transposed: transposed
  857. });
  858. chart.axis('total', {
  859. line: null,
  860. grid: F2.Global._defaultAxis.grid,
  861. label: function label(text, index, total) {
  862. var textCfg = {
  863. text: text / 10000 + '万吨'
  864. };
  865. if (index === 0) {
  866. textCfg.textAlign = 'right';
  867. } else if (index === total - 1) {
  868. textCfg.textAlign = 'right';
  869. }else {
  870. textCfg.textAlign = 'right';
  871. }
  872. return textCfg;
  873. }
  874. });
  875. chart.interval().position('month*total').color('devName').adjust('stack');
  876. chart.render();
  877. }
  878. })
  879. }
  880. }
  881. // 公告
  882. function noticeFun() {
  883. $http.requestData(UrlRouter.getBulletin,'post','')
  884. .then(ret=>{
  885. if (ret && ret.code === 0) {
  886. api.refreshHeaderLoadDone();
  887. $api.html($api.dom('.Scontent'), ret.data.content ==""?'暂无公告':ret.data.content);
  888. }
  889. })
  890. }
  891. // 报警
  892. function getAlarmData() {
  893. $http.requestData(UrlRouter.getAlarmData,'post','')
  894. .then(ret=>{
  895. if (ret && ret.code === 0) {
  896. $api.html($api.dom('.alarmNum1'), ret.data.level2 +'个');
  897. $api.html($api.dom('.alarmNum2'), ret.data.level3 +'个');
  898. $api.html($api.dom('.alarmNum3'), ret.data.level4 +'个');
  899. }
  900. }).catch(err=>{})
  901. }
  902. // 瓦斯异常情况
  903. function getGas() {
  904. $http.requestData(UrlRouter.getGasData,'post','')
  905. .then(ret=>{
  906. if (ret && ret.code === 0) {
  907. $api.html($api.dom('.Gasalarm'), ret.data[0].count +'个');
  908. $api.html($api.dom('.duanDian'), ret.data[1].count +'个');
  909. $api.html($api.dom('.guZhang'), ret.data[2].count +'个');
  910. }
  911. }).catch(err=>{})
  912. }
  913. // 选择时间
  914. function openSharebox() {
  915. var myDate = new Date();
  916. var tYear = myDate.getFullYear();
  917. var tmonth = myDate.getMonth()+1
  918. $api.val($api.dom('.startYear'), tYear+'年');
  919. $api.val($api.dom('.startTime'), tYear+'-'+ (tmonth<10? 0+""+tmonth:tmonth));
  920. new popoPicker('.js-picker',{
  921. container:'.screen',
  922. wheels: [{
  923. infinite: false,
  924. //selected: 3,
  925. data:[
  926. {value:0,display:'周产量趋势'},
  927. {value:1,display:'月产量趋势'},
  928. {value:2,display:'年产量趋势'}
  929. ]
  930. }],
  931. background:'light',
  932. save:function (data) {
  933. switch (data.result[0].display) {
  934. case '周产量趋势':
  935. $api.addCls($api.dom('.selectTime1'), 'hide');
  936. $api.addCls($api.dom('.selectTime'), 'hide');
  937. weekYield(false,210);
  938. break;
  939. case '月产量趋势':
  940. $api.removeCls($api.dom('.selectTime1'), 'hide');
  941. $api.addCls($api.dom('.selectTime'), 'hide');
  942. weekYield(true,700,'',tYear+'-'+ (tmonth<10? 0+""+tmonth+'-'+0+""+1:tmonth),tYear+'-'+ (tmonth<10? 0+""+tmonth+'-'+31:tmonth),'');
  943. break;
  944. case '年产量趋势':
  945. $api.addCls($api.dom('.selectTime1'), 'hide');
  946. $api.removeCls($api.dom('.selectTime'), 'hide');
  947. weekYield(false,300,data.result[0].display,tYear)
  948. break;
  949. default:
  950. }
  951. }
  952. });
  953. new popoDate('.startTime',{
  954. container:'.selectTime1',
  955. background:'light',
  956. save:function (data) {
  957. weekYield(true,700,'',data+'-'+0+""+1,data+'-'+31);
  958. }
  959. });
  960. new popoYear('.startYear',{
  961. container:'.selectTime',
  962. background:'light',
  963. save:function (data) {
  964. $api.val($api.dom('.startYear'), data+'年');
  965. weekYield(false,300,'年产量趋势',data)
  966. }
  967. });
  968. }
  969. // 皮带称数据
  970. function getBeltData() {
  971. $http.requestData(UrlRouter.getDayHourTotal,'get','')
  972. .then(ret=>{
  973. if (ret.status === 20000) {
  974. var data = ret.data;
  975. var chart = new F2.Chart({
  976. id: 'Belt',
  977. pixelRatio: window.devicePixelRatio
  978. });
  979. chart.source(data, {
  980. time: {
  981. type: 'timeCat',
  982. mask: 'hh:mm',
  983. tickCount: 5,
  984. range: [0, 1]
  985. }
  986. });
  987. chart.tooltip({
  988. showCrosshairs: true,
  989. showItemMarker: false,
  990. onShow: function onShow(ev) {
  991. var items = ev.items;
  992. items[0].name = null;
  993. items[0].value = items[0].value +'吨';
  994. }
  995. });
  996. chart.axis('day', {
  997. label: function label(text, index, total) {
  998. var textCfg = {};
  999. if (index === 0) {
  1000. textCfg.textAlign = 'left';
  1001. } else if (index === total - 1) {
  1002. textCfg.textAlign = 'right';
  1003. }
  1004. return textCfg;
  1005. }
  1006. });
  1007. if (ret.data.length != 0) {
  1008. chart.legend({
  1009. custom: true,
  1010. itemWidth: null,
  1011. nameStyle: {
  1012. textAlign: 'middle',
  1013. fontSize: '14',
  1014. textBaseline: 'middle'
  1015. },
  1016. items: [{
  1017. name: '皮带秤',
  1018. marker: {
  1019. symbol:'circle',
  1020. radius: 5,
  1021. fill: ret.data[ret.data.length-1].runState === 'Stop'? '#E74C3C':'#2ECC71'
  1022. }
  1023. }]
  1024. });
  1025. }
  1026. chart.line().position('time*total').shape('smooth');
  1027. chart.point().position('time*total').shape('smooth').style({
  1028. stroke: '#fff',
  1029. lineWidth: 1
  1030. });
  1031. chart.render();
  1032. }
  1033. }).catch(err=>{})
  1034. }
  1035. </script>
  1036. </body>
  1037. </html>