frame3_2.html 33 KB

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