Browse Source

设备抓拍违规、嫌疑船舶显示

温红权 3 years ago
parent
commit
ce748f7077

+ 205 - 198
ruoyi-ui/public/index.html

@@ -1,208 +1,215 @@
 <!DOCTYPE html>
 <html>
-  <head>
+
+<head>
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="renderer" content="webkit">
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
-    <title><%= webpackConfig.name %></title>
+    <title>
+        <%= webpackConfig.name %>
+    </title>
     <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
-	  <style>
-    html,
-    body,
-    #app {
-      height: 100%;
-      margin: 0px;
-      padding: 0px;
-    }
-    .chromeframe {
-      margin: 0.2em 0;
-      background: #ccc;
-      color: #000;
-      padding: 0.2em 0;
-    }
-
-    #loader-wrapper {
-      position: fixed;
-      top: 0;
-      left: 0;
-      width: 100%;
-      height: 100%;
-      z-index: 999999;
-    }
-
-    #loader {
-      display: block;
-      position: relative;
-      left: 50%;
-      top: 50%;
-      width: 150px;
-      height: 150px;
-      margin: -75px 0 0 -75px;
-      border-radius: 50%;
-      border: 3px solid transparent;
-      border-top-color: #FFF;
-      -webkit-animation: spin 2s linear infinite;
-      -ms-animation: spin 2s linear infinite;
-      -moz-animation: spin 2s linear infinite;
-      -o-animation: spin 2s linear infinite;
-      animation: spin 2s linear infinite;
-      z-index: 1001;
-    }
-
-    #loader:before {
-      content: "";
-      position: absolute;
-      top: 5px;
-      left: 5px;
-      right: 5px;
-      bottom: 5px;
-      border-radius: 50%;
-      border: 3px solid transparent;
-      border-top-color: #FFF;
-      -webkit-animation: spin 3s linear infinite;
-      -moz-animation: spin 3s linear infinite;
-      -o-animation: spin 3s linear infinite;
-      -ms-animation: spin 3s linear infinite;
-      animation: spin 3s linear infinite;
-    }
-
-    #loader:after {
-      content: "";
-      position: absolute;
-      top: 15px;
-      left: 15px;
-      right: 15px;
-      bottom: 15px;
-      border-radius: 50%;
-      border: 3px solid transparent;
-      border-top-color: #FFF;
-      -moz-animation: spin 1.5s linear infinite;
-      -o-animation: spin 1.5s linear infinite;
-      -ms-animation: spin 1.5s linear infinite;
-      -webkit-animation: spin 1.5s linear infinite;
-      animation: spin 1.5s linear infinite;
-    }
-
-
-    @-webkit-keyframes spin {
-      0% {
-        -webkit-transform: rotate(0deg);
-        -ms-transform: rotate(0deg);
-        transform: rotate(0deg);
-      }
-      100% {
-        -webkit-transform: rotate(360deg);
-        -ms-transform: rotate(360deg);
-        transform: rotate(360deg);
-      }
-    }
-
-    @keyframes spin {
-      0% {
-        -webkit-transform: rotate(0deg);
-        -ms-transform: rotate(0deg);
-        transform: rotate(0deg);
-      }
-      100% {
-        -webkit-transform: rotate(360deg);
-        -ms-transform: rotate(360deg);
-        transform: rotate(360deg);
-      }
-    }
-
-
-    #loader-wrapper .loader-section {
-      position: fixed;
-      top: 0;
-      width: 51%;
-      height: 100%;
-      background: #7171C6;
-      z-index: 1000;
-      -webkit-transform: translateX(0);
-      -ms-transform: translateX(0);
-      transform: translateX(0);
-    }
-
-    #loader-wrapper .loader-section.section-left {
-      left: 0;
-    }
-
-    #loader-wrapper .loader-section.section-right {
-      right: 0;
-    }
-
-
-    .loaded #loader-wrapper .loader-section.section-left {
-      -webkit-transform: translateX(-100%);
-      -ms-transform: translateX(-100%);
-      transform: translateX(-100%);
-      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-    }
-
-    .loaded #loader-wrapper .loader-section.section-right {
-      -webkit-transform: translateX(100%);
-      -ms-transform: translateX(100%);
-      transform: translateX(100%);
-      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-    }
-
-    .loaded #loader {
-      opacity: 0;
-      -webkit-transition: all 0.3s ease-out;
-      transition: all 0.3s ease-out;
-    }
-
-    .loaded #loader-wrapper {
-      visibility: hidden;
-      -webkit-transform: translateY(-100%);
-      -ms-transform: translateY(-100%);
-      transform: translateY(-100%);
-      -webkit-transition: all 0.3s 1s ease-out;
-      transition: all 0.3s 1s ease-out;
-    }
-
-    .no-js #loader-wrapper {
-      display: none;
-    }
-
-    .no-js h1 {
-      color: #222222;
-    }
-
-    #loader-wrapper .load_title {
-      font-family: 'Open Sans';
-      color: #FFF;
-      font-size: 19px;
-      width: 100%;
-      text-align: center;
-      z-index: 9999999999999;
-      position: absolute;
-      top: 60%;
-      opacity: 1;
-      line-height: 30px;
-    }
-
-    #loader-wrapper .load_title span {
-      font-weight: normal;
-      font-style: italic;
-      font-size: 13px;
-      color: #FFF;
-      opacity: 0.5;
-    }
-  </style>
-  </head>
-  <body>
+    <style>
+        html,
+        body,
+        #app {
+            height: 100%;
+            margin: 0px;
+            padding: 0px;
+        }
+        
+        .chromeframe {
+            margin: 0.2em 0;
+            background: #ccc;
+            color: #000;
+            padding: 0.2em 0;
+        }
+        
+        #loader-wrapper {
+            position: fixed;
+            top: 0;
+            left: 0;
+            width: 100%;
+            height: 100%;
+            z-index: 999999;
+        }
+        
+        #loader {
+            display: block;
+            position: relative;
+            left: 50%;
+            top: 50%;
+            width: 150px;
+            height: 150px;
+            margin: -75px 0 0 -75px;
+            border-radius: 50%;
+            border: 3px solid transparent;
+            border-top-color: #FFF;
+            -webkit-animation: spin 2s linear infinite;
+            -ms-animation: spin 2s linear infinite;
+            -moz-animation: spin 2s linear infinite;
+            -o-animation: spin 2s linear infinite;
+            animation: spin 2s linear infinite;
+            z-index: 1001;
+        }
+        
+        #loader:before {
+            content: "";
+            position: absolute;
+            top: 5px;
+            left: 5px;
+            right: 5px;
+            bottom: 5px;
+            border-radius: 50%;
+            border: 3px solid transparent;
+            border-top-color: #FFF;
+            -webkit-animation: spin 3s linear infinite;
+            -moz-animation: spin 3s linear infinite;
+            -o-animation: spin 3s linear infinite;
+            -ms-animation: spin 3s linear infinite;
+            animation: spin 3s linear infinite;
+        }
+        
+        #loader:after {
+            content: "";
+            position: absolute;
+            top: 15px;
+            left: 15px;
+            right: 15px;
+            bottom: 15px;
+            border-radius: 50%;
+            border: 3px solid transparent;
+            border-top-color: #FFF;
+            -moz-animation: spin 1.5s linear infinite;
+            -o-animation: spin 1.5s linear infinite;
+            -ms-animation: spin 1.5s linear infinite;
+            -webkit-animation: spin 1.5s linear infinite;
+            animation: spin 1.5s linear infinite;
+        }
+        
+        @-webkit-keyframes spin {
+            0% {
+                -webkit-transform: rotate(0deg);
+                -ms-transform: rotate(0deg);
+                transform: rotate(0deg);
+            }
+            100% {
+                -webkit-transform: rotate(360deg);
+                -ms-transform: rotate(360deg);
+                transform: rotate(360deg);
+            }
+        }
+        
+        @keyframes spin {
+            0% {
+                -webkit-transform: rotate(0deg);
+                -ms-transform: rotate(0deg);
+                transform: rotate(0deg);
+            }
+            100% {
+                -webkit-transform: rotate(360deg);
+                -ms-transform: rotate(360deg);
+                transform: rotate(360deg);
+            }
+        }
+        
+        #loader-wrapper .loader-section {
+            position: fixed;
+            top: 0;
+            width: 51%;
+            height: 100%;
+            background: #7171C6;
+            z-index: 1000;
+            -webkit-transform: translateX(0);
+            -ms-transform: translateX(0);
+            transform: translateX(0);
+        }
+        
+        #loader-wrapper .loader-section.section-left {
+            left: 0;
+        }
+        
+        #loader-wrapper .loader-section.section-right {
+            right: 0;
+        }
+        
+        .loaded #loader-wrapper .loader-section.section-left {
+            -webkit-transform: translateX(-100%);
+            -ms-transform: translateX(-100%);
+            transform: translateX(-100%);
+            -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+            transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+        }
+        
+        .loaded #loader-wrapper .loader-section.section-right {
+            -webkit-transform: translateX(100%);
+            -ms-transform: translateX(100%);
+            transform: translateX(100%);
+            -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+            transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+        }
+        
+        .loaded #loader {
+            opacity: 0;
+            -webkit-transition: all 0.3s ease-out;
+            transition: all 0.3s ease-out;
+        }
+        
+        .loaded #loader-wrapper {
+            visibility: hidden;
+            -webkit-transform: translateY(-100%);
+            -ms-transform: translateY(-100%);
+            transform: translateY(-100%);
+            -webkit-transition: all 0.3s 1s ease-out;
+            transition: all 0.3s 1s ease-out;
+        }
+        
+        .no-js #loader-wrapper {
+            display: none;
+        }
+        
+        .no-js h1 {
+            color: #222222;
+        }
+        
+        #loader-wrapper .load_title {
+            font-family: 'Open Sans';
+            color: #FFF;
+            font-size: 19px;
+            width: 100%;
+            text-align: center;
+            z-index: 9999999999999;
+            position: absolute;
+            top: 60%;
+            opacity: 1;
+            line-height: 30px;
+        }
+        
+        #loader-wrapper .load_title span {
+            font-weight: normal;
+            font-style: italic;
+            font-size: 13px;
+            color: #FFF;
+            opacity: 0.5;
+        }
+        
+        .el-tabs__header {
+            margin: 0 !important;
+        }
+    </style>
+</head>
+
+<body>
     <div id="app">
-	    <div id="loader-wrapper">
-		    <div id="loader"></div>
-		    <div class="loader-section section-left"></div>
-		    <div class="loader-section section-right"></div>
-		    <div class="load_title">正在加载系统资源,请耐心等待</div>
+        <div id="loader-wrapper">
+            <div id="loader"></div>
+            <div class="loader-section section-left"></div>
+            <div class="loader-section section-right"></div>
+            <div class="load_title">正在加载系统资源,请耐心等待</div>
         </div>
-	</div>
-  </body>
-</html>
+    </div>
+</body>
+
+</html>

+ 13 - 5
ruoyi-ui/src/api/data/deviceData.js

@@ -2,9 +2,17 @@ import request from '@/utils/request'
 
 // 查询黑烟列表
 export function getdeviceList(query) {
-  return request({
-    url: 'gas/common/queryDeviceList',
-    method: 'get',
-    params: query
-  })
+    return request({
+        url: 'gas/common/queryDeviceList',
+        method: 'get',
+        params: query
+    })
 }
+
+export function queryShipByDeviceId(query) {
+    return request({
+        url: "gas/common/queryShipByDeviceId",
+        method: "get",
+        params: query
+    });
+}

+ 117 - 3
ruoyi-ui/src/components/map/index.vue

@@ -8,7 +8,10 @@
         <i class="el-icon-close" style="font-size:9rem;margin-top:2rem;float:right" @click="deviceShow=false"></i>
       </div>
       <div style="padding—left:10rem" class="shipContent">
-            <el-row :gutter="3" style="margin-top:13rem">
+
+        <el-tabs v-model="d_activeName" @tab-click="handleClick1">
+          <el-tab-pane label="设备信息" name="d_first">
+             <el-row :gutter="3" style="margin-top:5rem">
               <el-col :span="4">
                 <div class="grid-content bg-purple contentFont" style="float:right;color:#959595;">设备名称:</div>
               </el-col>
@@ -50,6 +53,83 @@
                 <div class="grid-content bg-purple contentFont" style="float:left">{{deviceData.latilongti}}</div>
               </el-col>
             </el-row>
+
+         </el-tab-pane>
+          <el-tab-pane label="嫌疑船舶" name="d_second">
+            <el-table
+              :header-cell-style="{ background: '#e4eafc'}"
+              ref="singleTable"
+              :data="tabledatas" height="200px"
+              highlight-current-row
+              style="width: 100%;"
+              class="tableSc">
+              <el-table-column
+                type="index"
+                label="序号"
+                width="50">
+              </el-table-column>
+              <el-table-column
+                property="mmsi"
+                label="MMSI"
+                width="100">
+              </el-table-column>
+               <el-table-column
+                property="shipName"
+                label="船名"
+                width="100">
+              </el-table-column>
+               <el-table-column
+                property="values"
+                label="监测值"
+                width="100">
+              </el-table-column>
+              <el-table-column
+                property="createTime"
+                label="监测时间"
+                >
+              </el-table-column>
+            </el-table>
+
+          </el-tab-pane>
+
+          <el-tab-pane label="违规船舶" name="d_thrid">
+            <el-table
+              :header-cell-style="{ background: '#e4eafc'}"
+              ref="singleTable"
+              :data="tabledatas" height="200px"
+              highlight-current-row
+              style="width: 100%;"
+              class="tableSc">
+              <el-table-column
+                type="index"
+                label="序号"
+                width="50">
+              </el-table-column>
+              <el-table-column
+                property="mmsi"
+                label="MMSI"
+                width="100">
+              </el-table-column>
+               <el-table-column
+                property="shipName"
+                label="船名"
+                width="100">
+              </el-table-column>
+               <el-table-column
+                property="values"
+                label="监测值"
+                width="100">
+              </el-table-column>
+              <el-table-column
+                property="createTime"
+                label="监测时间"
+                >
+              </el-table-column>
+            </el-table>
+
+          </el-tab-pane>
+        </el-tabs>
+
             <!-- <el-row :gutter="3" style="margin-top:3rem">
               <el-col :span="4">
                 <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">对地航速:</div>
@@ -77,7 +157,6 @@
               <el-col :span="8">
                 <div class="grid-content bg-purple contentFont" style="float:left">11111</div>
               </el-col> -->
-            </el-row>
             <!-- <el-button style="margin-top:5rem;margin-left:10rem;background-color:#0d25a5;color:white;font-size:7rem" icon="el-icon-location-information">历史轨迹</el-button> -->
       </div>
     </div>
@@ -292,6 +371,7 @@ import { Feature } from "ol";
 import { Point,LineString } from "ol/geom";
 import { Style, Icon,Stroke } from "ol/style";
 import { Vector as LayerVec } from "ol/layer";
+import {queryShipByDeviceId} from "@/api/data/deviceData";
 
 let ispro = process.env.NODE_ENV === "production";
 //  ispro = false;
@@ -314,6 +394,9 @@ export default {
       normalPer: 0.1,
       normalCount: 1,
       activeName:'first',
+      tabledatas:[],
+
+      d_activeName:'d_first',
        tableData: [{
         date: '2016-05-02',
         name: '南京四桥',
@@ -365,7 +448,6 @@ export default {
              if(tadata.sectionId=="point"){
                console.log(tadata);
                if(tadata.type == "ship"){
-                    console.log(111111);
                      that.shipShow = true;
                      that.deviceShow = false;
                      that.shipName = tadata.data
@@ -386,6 +468,35 @@ export default {
   },
   methods: {
     //[[1111,1111]]
+    handleClick1:function(tab, event){
+
+      var sect = tab.name;
+      if(sect == "d_first"){
+        return;
+      }
+
+      var q= {
+        deviceId:this.deviceData.deviceId,
+        illegalStatus:sect=="d_second"?2:3,
+        index:this.deviceData.source
+      }
+
+      this.tabledatas = [];
+       queryShipByDeviceId(q).then(data => {
+        console.log(data);
+
+        data.data.forEach(element => {
+          element["values"]= element.illegalType=="heiyan"?element.rcgSoot:(element.illegalType=="guangpu"?element.so2Percent
+:(element.illegalType=="xiutan"?element.so2Percent:0));
+          this.tabledatas.push(element);
+        });
+
+
+        //  console.log(deviceList);
+      });
+      //dd
+
+    },
      handleClick(tab, event) {
       console.log(tab, event);
     },
@@ -700,4 +811,7 @@ export default {
 .radio_div>div{
   line-height: 10rem;
 }
+.el-tabs__header{
+  margin: 0 !important;
+}
 </style>

+ 12 - 2
ruoyi-ui/src/views/components/table/homeTable.vue

@@ -260,8 +260,18 @@ export default {
             var obj = data.data[key][index]
             //  console.log(data.data[key][index].source);
             //  deviceList.push(data.data[key][index]);
-            var locationArry = [[obj.latilongti]];
-            this.$refs.mapv.addpoint(locationArry, obj, obj.source + '.png', 'device');
+            var locationArry = JSON.parse("[["+obj.latilongti+"]]");
+            var icons = "";
+            if(obj.source.indexOf("so2")!=0){
+              icons = "so2.png"
+            }
+            if(obj.source.indexOf("ais")!=0){
+              icons = "ais.png"
+            }
+             if(obj.source.indexOf("heiyan")!=0){
+              icons = "hy.png"
+            }
+            this.$refs.mapv.addpoint(locationArry, obj, icons , 'device');
           }
         }
         //  console.log(deviceList);