Bladeren bron

可视化

tanyanfei 5 jaren geleden
bovenliggende
commit
5c26083cf5
14 gewijzigde bestanden met toevoegingen van 381 en 51 verwijderingen
  1. BIN
      src/images/1.png
  2. BIN
      src/images/2.png
  3. BIN
      src/images/3.png
  4. BIN
      src/images/bk.png
  5. BIN
      src/images/bt1.png
  6. BIN
      src/images/bt2.png
  7. BIN
      src/images/fxd.png
  8. BIN
      src/images/gkrw.png
  9. BIN
      src/images/hy.png
  10. BIN
      src/images/max.png
  11. BIN
      src/images/min.png
  12. BIN
      src/images/qy.png
  13. 1 1
      src/main.js
  14. 380 50
      src/views/Index.vue

BIN
src/images/1.png


BIN
src/images/2.png


BIN
src/images/3.png


BIN
src/images/bk.png


BIN
src/images/bt1.png


BIN
src/images/bt2.png


BIN
src/images/fxd.png


BIN
src/images/gkrw.png


BIN
src/images/hy.png


BIN
src/images/max.png


BIN
src/images/min.png


BIN
src/images/qy.png


+ 1 - 1
src/main.js

@@ -7,7 +7,7 @@ import 'element-ui/lib/theme-chalk/index.css';
 import 'font-awesome/css/font-awesome.css'
 import api from './api';
 import echarts from 'echarts';
-
+import  'echarts/theme/dark.js'
 import BaiduMap from 'vue-baidu-map'
 Vue.use(BaiduMap, {
   ak: '1hqg34NFaCw9jcv0xG82cI7uINFaXGGM'

+ 380 - 50
src/views/Index.vue

@@ -1,27 +1,139 @@
 <style lang="scss">
   .index{
+      .content{
+        background: #151932;
+        color:#fff;
+        padding:0 20px;
+        position:  relative;
+        .max,.min{
+          position: absolute;
+          top: 40px;
+          right: 20px;
+          cursor: pointer;
+        }
+        .min{
+          display: none;
+        }
+      }
+      #fixed{
+        position: fixed;
+        width: 100%;
+        height: 100vh;
+        left: 0;
+        top: 0;
+        z-index: 99999;
+        overflow: auto;
+        .all{
+          top: 80px!important;
+        }
+        .max{
+          display: none;
+        }
+        .min{
+          display: inline-block;
+        }
+      }
       .title{
-        color: #222;
-        font-size: 20px;
-        margin-bottom: 20px;
         text-align: center;
+        margin-bottom: 30px;
       }
       .datas{
-        margin-bottom: 60px;
+        // margin-bottom: 60px;
+        display: flex;     
         li{
           list-style: none;
-          display: inline-block;
-          // width: 30%;
-          margin-right: 10px;
+          padding-right: 30px;
           vertical-align: top;
-          padding: 10px 20px;
-          border-radius:6px;
-          border:1px solid rgba(238,238,238,1);
+          .li{
+            background: rgba(39, 51, 76, 0.64);
+            margin-bottom: 30px;
+            padding: 20px;
+            position: relative;
+            &::before{
+              content: url(../images/bk.png);
+              position: absolute;
+              right:0;
+              top:-5px;
+              transform: rotate(90deg);
+            }
+            &::after{
+              content: url(../images/bk.png);
+              position: absolute;
+              right:0;
+              bottom:-5px;
+              transform: rotate(180deg);
+            }
+            .top{
+              position: absolute;
+              left:0;
+              top:0;
+            }
+            .bottom{
+              position: absolute;
+              left:0;
+              bottom:0;
+              transform: rotate(-90deg);
+            }
+            .all{
+              font-size: 48px;
+              color: #fff;
+              position: absolute;
+              left: 0;
+              right: 0;
+              top: 75px;
+              margin: auto;
+              width: 100px;
+              text-align: center;
+              z-index: 999;
+              span{
+                color: #D2D9E3;
+                font-size: 12px;
+                display: block;
+              }
+            }
+          }
           h4{
             margin-bottom: 20px;
+            color:#fff;
           }
-          &>div{
-            margin-bottom: 20px;
+          .count{
+            margin-bottom: 50px;
+            margin-top: 27px;
+            span{
+              padding: 0 10px;
+              display: inline-block;
+              width: 160px;
+              height: 28px;
+              font-size: 14px;
+              line-height: 28px;
+              padding-left: 40px;
+              margin-bottom: 20px;
+              margin-right: 60px;
+            }
+            .span1{
+              background: url(../images/hy.png);
+            }
+            .span2{
+              background: url(../images/qy.png);
+            }
+            .span3{
+              background: url(../images/fxd.png);
+            }
+            .span4{
+              background: url(../images/gkrw.png);
+            }
+          }
+          table{
+            width: 100%;
+            thead td{
+              font-size: 16px;
+            }
+            td{
+              font-size: 14px;
+              padding: 5px;
+              color:#D2D9E3;
+              line-height: 25px;
+            }
           }
         }
       }
@@ -29,53 +141,129 @@
 </style>
 <template>
   <section class="index">
-    <p>概览</p>
-    <div class="content">
-        <h1 class="title">巴州区应急管理局风险管控可视化系统</h1>
+    <div class="content" :id="fullscreen">
+        <img @click="max" class="max" src="../images/max.png" alt="">
+        <img @click="min" class="min" src="../images/min.png" alt="">
+        <h1 class="title">
+          <img src="../images/bt2.png" alt="">
+        </h1>
         <ul class="datas">
-          <li>
-              <div id="chart1" style="width: 350px;height:300px;"></div>
-              <div id="chart2" style="width: 350px;height:300px;"></div>
-              <div id="chart3" style="width: 350px;height:300px;"></div>
+          <li style="width:30%;">
+              <div class="li">
+                <img class="top" src="../images/bk.png" alt="">
+                <h4>安全风险实时统计</h4>
+                <div style="position:relative;">
+                  <p class="all">
+                    32   <span>总风险(起)</span>
+                  </p>
+                  <div id="chart1" style="width: 100%;height:250px;"></div>
+                </div>
+                <div id="chart2" style="width: 100%;height:300px;"></div>
+                <img class="bottom" src="../images/bk.png" alt="">
+              </div>
+              <div class="li">
+                <img class="top" src="../images/bk.png" alt="">
+                <h4>安全隐患实时统计</h4>
+                <div style="position:relative;">
+                  <p class="all" style="top:75px;">
+                    24   <span>总隐患数(起)</span>
+                  </p>
+                  <div id="chart3" style="width: 100%;height:250px;"></div>
+                </div>
+                <img class="bottom" src="../images/bk.png" alt="">
+              </div>
+          </li>
+          <li  style="width:45%">
+            <div class="li">
+                <img class="top" src="../images/bk.png" alt="">
+                <h4>实时监测</h4>
+                <p class="count">
+                  <span class="span1">行业5个</span>
+                  <span class="span2">企业5个</span>
+                  <span class="span3">风险点5个</span>
+                  <span class="span4">管控任务5个</span>
+                </p>
+                <h4>行业风险统计</h4>
+                <div id="chart4" style="width: 100%;height:315px;"></div>
+                <br><br>
+                <h4>企业风险统计</h4>
+                <div id="chart5" style="width: 100%;height:315px;"></div>
+                <img class="bottom" src="../images/bk.png" alt="">
+            </div>
           </li>
-          <li>
-              <h4>行业风险统计</h4>
-              <div id="chart4" style="width: 400px;height:300px;"></div>
-              <h4>企业风险统计</h4>
-              <div id="chart5" style="width: 400px;height:300px;"></div>
+          <li style="width:25%;padding:0;">
+            <div class="li">
+              <img class="top" src="../images/bk.png" alt="">
+              <h4>企业告警TOP5</h4>
+              <table cellpadding='0' cellspacing='0'>
+                <thead><td>序号</td><td>企业名称</td><td>告警次数</td></thead>
+                <tr><td><img src="../images/1.png" alt=""></td><td>巴中达芙妮</td><td style="text-align:center;">20</td></tr>
+                <tr><td><img src="../images/2.png" alt=""></td><td>巴中达芙妮</td><td style="text-align:center;">20</td></tr>
+                <tr><td><img src="../images/3.png" alt=""></td><td>巴中达芙妮</td><td style="text-align:center;">20</td></tr>
+                <tr><td>4</td><td>巴中达芙妮</td><td style="text-align:center;">20</td></tr>
+                <tr><td>5</td><td>巴中达芙妮</td><td style="text-align:center;">20</td></tr>
+              </table>
+              <img class="bottom" src="../images/bk.png" alt="">
+            </div>
+            <div class="li">
+              <img class="top" src="../images/bk.png" alt="">
+              <h4>风险企业TOP5</h4>
+              <div id="chart6" style="width: 100%;height:230px;"></div>
+              <img class="bottom" src="../images/bk.png" alt="">
+            </div>
+            <div class="li">
+              <img class="top" src="../images/bk.png" alt="">
+              <h4>隐患企业TOP5</h4>
+              <div id="chart7" style="width: 100%;height:230px;"></div>
+              <img class="bottom" src="../images/bk.png" alt="">
+            </div>
           </li>
         </ul>
     </div>
   </section>
 </template>
 <script>
+import echarts from 'echarts';
 export default {
   data(){
     return{
+      fullscreen:''
     }
   },
   methods:{
     getData(){   
       // 基于准备好的dom,初始化echarts实例
-      var myChart1 = this.$echarts.init(document.getElementById('chart1'));
-      var myChart2 = this.$echarts.init(document.getElementById('chart2'));
-      var myChart3 = this.$echarts.init(document.getElementById('chart3'));
-      var myChart4 = this.$echarts.init(document.getElementById('chart4'));
-      var myChart5 = this.$echarts.init(document.getElementById('chart5'));
+      var myChart1 = this.$echarts.init(document.getElementById('chart1'),'dark');
+      var myChart2 = this.$echarts.init(document.getElementById('chart2'),'dark');
+      var myChart3 = this.$echarts.init(document.getElementById('chart3'),'dark');
+      var myChart4 = this.$echarts.init(document.getElementById('chart4'),'dark');
+      var myChart5 = this.$echarts.init(document.getElementById('chart5'),'dark');
+      var myChart6 = this.$echarts.init(document.getElementById('chart6'),'dark');
+      var myChart7 = this.$echarts.init(document.getElementById('chart7'),'dark');
+      this.myChart1=myChart1;
+      this.myChart2=myChart2;
+      this.myChart3=myChart3;
+      this.myChart4=myChart4;
+      this.myChart5=myChart5;
+      this.myChart6=myChart6;
+      this.myChart7=myChart7;
 		  // 指定图表的配置项和数据
 		  var option1 = {
-			  title: {
-				  text: '安全风险实时统计'
-        },
-        color:['#ef686a','#f6b481','#fcd554','#2b94eb'],
+        backgroundColor:'rgba(0,0,0,0)',
+        color:['#EF3030','#FF7729','#FFCC2C','#3FEDFF'],
 			  tooltip: {formatter: '{b}: {c} ({d}%)'},
 			  legend: {
           y:'bottom',
+          itemWidth:8,
+          itemHeight:8,
+          textStyle:{
+            color:'#8C8C8C',
+          },
 				  data:['重大风险', '较大风险','一般风险','低风险']
 			  },
 			  series: [{
           type: 'pie',
-          radius: ['45%', '70%'],
+          radius: ['55%', '60%'],
           label: {
               normal: {
                   show: false
@@ -85,43 +273,67 @@ export default {
                             {value: 100,name:'重大风险'},
                             {value: 200,name:'较大风险'},
                             {value: 50,name:'一般风险'},
-                            {value: 20,name:'低风险'},
+                            {value: 200,name:'低风险'},
                         ]
 			  }]
       };
       var option2 = {
-        color:['#3398dc'],
+        backgroundColor:'rgba(0,0,0,0)',
+        // color:['#3398dc'],
         tooltip: {formatter: '{b}: {c}'},
         grid: {
             left: '1%',
             right: '1%',
-            bottom: '1%',
-            top:'10px',
+            bottom: '30px',
+            // top:'50px',
             containLabel: true
         },
         xAxis: {
-				  data: ['重大风险', '较大风险','一般风险','低风险']
+          data: ['重大风险', '较大风险','一般风险','低风险'],
 			  },
-			  yAxis: {},
+			  yAxis: {
+          axisLine:{
+            show:false
+          },
+          splitLine:{
+              show:true,
+              lineStyle:{
+                type:'solid',
+                color:'#414B66'
+              }
+          },
+        },
 			  series: [{
           type: 'bar',
-          barWidth: 50,
-          data:  [5, 20, 36, 10]
+          barWidth: 20,
+          data:  [5, 20, 36, 10],
+          itemStyle: {
+                color: new echarts.graphic.LinearGradient(
+                    0, 0, 0, 1,
+                    [
+                        {offset: 0, color: '#7AF7FF'},
+                        {offset: 1, color: '#3687FF'}
+                    ]
+                )
+          },
         }]
       };
       var option3 = {
+        backgroundColor:'rgba(0,0,0,0)',
 			  title: {
-				  text: '安全隐患实时统计'
+				  text: ''
         },
-        color:['#ef686a','#2b94eb'],
+        color:['#EF3030','#3FEDFF'],
 			  tooltip: {formatter: '{b}: {c} ({d}%)'},
 			  legend: {
           y:'bottom',
+          itemWidth:8,
+          itemHeight:8,
 				  data:['重大风险','一般风险']
 			  },
 			  series: [{
           type: 'pie',
-          // radius: ['45%', '70%'],
+          radius: ['55%', '60%'],
           label: {
               normal: {
                   show: false
@@ -134,29 +346,50 @@ export default {
 			  }]
       };
       var option4 = {
+        backgroundColor:'rgba(0,0,0,0)',
         title: {
 				  text: ''
         },
         legend: {
-          // y:'bottom',
+          y:'bottom',
+          x:'left',
+          itemWidth:8,
+          itemHeight:8,
+          textStyle:{
+            color:'#8C8C8C',
+          },
 				  data:['重大风险', '较大风险','一般风险','低风险']
 			  },
-        color:['#ef686a','#f6b481','#fcd554','#2b94eb'],
+        color:['#EF3030','#FF7729','#FFCC2C','#3FEDFF'],
         tooltip: {formatter: '{b}: {c}'},
         grid: {
             left: '1%',
             right: '1%',
-            bottom: '1%',
+            top: '10px',
+            bottom:'40px',
             containLabel: true
         },
         xAxis: {
 				  data: ['危险化学品', '煤矿','非煤矿山','工贸行业']
 			  },
-			  yAxis: {},
+			  yAxis: {
+          axisLine:{
+            show:false
+          },
+          splitLine:{
+              show:true,
+              lineStyle:{
+                type:'solid',
+                color:'#414B66'
+              }
+          },
+        },
 			  series: [
            {
                 name: '重大风险',
                 type: 'bar',
+                stack:'风险',
+                barWidth:20,
                 data: [320, 332, 301, 334]
             },
             {
@@ -169,15 +402,77 @@ export default {
                 name: '一般风险',
                 type: 'bar',
                 stack:'风险',
+                barWidth:20,
                 data: [390, 320, 31, 140]
             },
             {
                 name: '低风险',
                 type: 'bar',
                 stack:'风险',
+                barWidth:20,
                 data: [90, 20, 31, 40]
             },
         ]
+      };
+      var option6 = {
+        backgroundColor:'rgba(0,0,0,0)',
+        color:['#3398dc'],
+        tooltip: {formatter: '{b}: {c}'},
+        legend: {
+          y:'bottom',
+          x:'left',
+          itemWidth:8,
+          itemHeight:8,
+          textStyle:{
+            color:'#8C8C8C',
+          },
+				  data:['风险点', '管控任务']
+			  },
+        grid: {
+            left: '1%',
+            right: '1%',
+            bottom: '10px',
+            top:'10px',
+            containLabel: true
+        },
+        yAxis: {
+          data: ['巴中达芙妮', '巴中达芙妮2','巴中达芙妮3','巴中达芙妮4'], 
+			  },
+			  xAxis: {
+          show:false
+        },
+			  series: [
+          {
+                name: '风险点',
+                type: 'bar',
+                barWidth:10,
+                data: [320, 332, 301, 334],
+                itemStyle: {
+                      color: new echarts.graphic.LinearGradient(
+                          0, 0, 0, 1,
+                          [
+                              {offset: 0, color: '#FFEE7F'},
+                              {offset: 1, color: '#E8B35F'}
+                          ]
+                      )
+                },
+          },
+          {
+                name: '管控任务',
+                type: 'bar',
+                barWidth:10,
+                data: [30, 132, 201, 34],
+                itemStyle: {
+                      color: new echarts.graphic.LinearGradient(
+                          0, 0, 0, 1,
+                          [
+                              {offset: 0, color: '#7AF7FF'},
+                              {offset: 1, color: '#3687FF'}
+                          ]
+                      )
+                },
+          },
+        ]
       };
 		  // 使用刚指定的配置项和数据显示图表。
 		  myChart1.setOption(option1);
@@ -185,11 +480,46 @@ export default {
       myChart3.setOption(option3);  
       myChart4.setOption(option4);  
       myChart5.setOption(option4);  
+      myChart6.setOption(option6);  
+      myChart7.setOption(option6);  
+      window.addEventListener("resize", () => {
+        myChart1.resize();
+        myChart2.resize();
+        myChart3.resize();
+        myChart4.resize();
+        myChart5.resize();
+        myChart6.resize();
+        myChart7.resize();
+      })
+    },
+    reload(){
+        this.myChart1.resize();
+        this.myChart2.resize();
+        this.myChart3.resize();
+        this.myChart4.resize();
+        this.myChart5.resize();
+        this.myChart6.resize();
+        this.myChart7.resize();
     },
-    
+    max(){
+     this.fullscreen='fixed';
+     let _this=this;
+     setTimeout(() => {
+        _this.reload()
+      }, 200)
+    },
+    min(){
+     this.fullscreen='';
+     let _this=this;
+     setTimeout(() => {
+        _this.reload()
+      }, 200)
+    }
   },
   mounted(){
      this.getData()
   },
+  created(){
+  }
 }
 </script>