informationCenter.html 38 KB

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