Browse Source

Merge remote-tracking branch 'origin/visu_traffic_01_siping_2.5d' into visu_traffic_01_siping_2.5d

# Conflicts:
#	src/views/eventdetailsdialog.vue
#	src/views/firespread.vue
#	src/views/forest.vue
王通 2 years ago
parent
commit
4e0bca4cec

+ 1 - 0
package.json

@@ -39,6 +39,7 @@
     "@jiaminghi/data-view": "^2.10.0",
     "@riophae/vue-treeselect": "0.4.0",
     "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+    "animate.css": "^4.1.1",
     "axios": "0.24.0",
     "clipboard": "2.0.8",
     "core-js": "3.19.1",

+ 1 - 1
src/api/monitor.js

@@ -68,7 +68,7 @@ export function rotation(lng, lat, list) {
 // 获取重点区域
 export function getRegionalFlag(id) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getRegionalFlag/' + id,
+    url: '/center-data/importarea/getRegionalFlagFeign/' + id,
     method: 'get',
   })
 }

+ 1 - 1
src/assets/styles/base.scss

@@ -84,7 +84,7 @@ $date-state3: #d6333b;
 
 //视频摄像头预览弹层样式
 .videoCustomWidth {
-  width: 1070px !important;
+  width: 1150px !important;
   height: 700px !important;
 }
 //电视墙视频摄像头预览弹层样式

+ 10 - 0
src/components/supermap-2.5d.vue

@@ -975,6 +975,14 @@
     background: linear-gradient(rgba(4, 23, 62, 0.6), rgba(0, 28, 70, 0.6));
     min-width: 300px;
 
+    .sj-icon-btn {
+      display: block;
+      margin: 10px auto 15px auto;
+      padding: 0px 16px;
+      font-size: 10px;
+      height: 1.7rem;
+    }
+
     .top-tit {
       width: 100%;
       height: 28px;
@@ -986,6 +994,8 @@
       padding: 0px 10px;
       align-items: center;
 
+
+
       i {
         color: #10ccff;
         font-size: 18px;

+ 9 - 2
src/components/supermap.vue

@@ -1,6 +1,12 @@
 <template>
   <div v-bind:id="mapDivId" ref="map" style="width: 100%; height: 100%;background: none;">
-    <div id="toolbar" v-if="isdynamicPlotting" class="panel panel-primary"
+        <transition-group
+          appear
+          name="animate__animated animate__bounce"
+          enter-active-class="animate__backInLeft"
+          leave-active-class="animate__backOutLeft"
+        >
+          <div id="toolbar" v-if="isdynamicPlotting" class="panel panel-primary" v-show="mapToolShowBH" key="mapFlash"
          style="position:absolute;z-index: 9999;top:4rem;left: 1rem; border-radius: 4px; width: fit-content;height:635px;overflow-y:scroll;background:#040b1f">
       <div class="panel-heading" id="panelheading">
         <h5 style=" color: #2bacf7;font-size: 1rem;padding:.5rem;">鼠标标绘</h5>
@@ -17,7 +23,7 @@
         </div>
       </div>
     </div>
-
+    </transition-group>
     <div id="toolbar-heat" v-if="isheatPlotting" class="panel panel-primary"
          style="position:absolute;z-index: 9999; padding: 1rem; bottom:3rem;right: 1rem; border-radius: 4px; width: fit-content;height:fit-content;overflow-y:scroll;background:#040b1f">
       <div class="panel-body content">
@@ -311,6 +317,7 @@ export default {
     }
   },
   props: {
+    mapToolShowBH:false,
     mapDiv: null,
     codes: null,
     mapSite: {},

+ 2 - 2
src/components/vBottomMenu.vue

@@ -198,7 +198,7 @@
                 查看事件详情
               </el-link>
               <div class="btm-r-pop-info-btm-btn" v-else>
-                <el-button type="primary"  @click="selectMessageById(item.id)">标记已读
+                <el-button type="primary" v-if="item.type ==2" @click="selectMessageById(item.id)">标记已读
                 </el-button>
               </div>
             </div>
@@ -532,7 +532,7 @@
           </el-input>
         </el-form-item>
         <el-form-item label="附件" prop="schedulePictures" v-if="eventStatusButton=='sh'">
-          <ImageUpload class="sj-upload" ref="ImageUpload" :limit="10" :fileType="['jpg', 'png','jpeg']" :value="uploadAttachList"
+          <ImageUpload ref="ImageUpload" :limit="10" :fileType="['jpg', 'png','jpeg']" :value="uploadAttachList"
                        @input="getUrl"></ImageUpload>
         </el-form-item>
         <el-button size="mini" type="primary" v-if="eventStatusButton=='sh'"

+ 4 - 0
src/main.js

@@ -30,6 +30,9 @@ import './permission' // permission control
 //DataV动效组件
 import dataV from '@jiaminghi/data-view'
 
+//动画库
+import animated from 'animate.css'
+
 // 头部标签组件
 import MetaInfo from 'vue-meta-info';
 
@@ -51,6 +54,7 @@ Vue.prototype.selectDictLabels = selectDictLabels
 Vue.use(ElementUI)
 Vue.use(VueCookies)
 Vue.use(directive)
+Vue.use(animated)
 Vue.use(plugins)
 Vue.use(dataV)
 Vue.use(MetaInfo)

+ 211 - 77
src/views/forest.vue

@@ -118,7 +118,7 @@
       </div>
       <!-- 地图 -->
       <supermap ref="supermap" style="width: 100%;height: 100vh;" @showEventDialog="showEventDialog" :showLayer="true"
-        @fatherMethod="fatherMethod"></supermap>
+        @fatherMethod="fatherMethod" @sewageOutletClick="sewageOutletClick"></supermap>
       <!-- 右侧 -->
       <div class="rightbar rightbar-index" ref="right">
         <div class="right-item1">
@@ -365,8 +365,7 @@
               </div>
               <!--分页-->
               <div class="paging">
-                <el-button type="button"
-                  @click="getEventList(calendarDay,10,pageNum-1,eventSearch)">上一页 </el-button>
+                <el-button type="button" @click="getEventList(calendarDay,10,pageNum-1,eventSearch)">上一页 </el-button>
                 <span>第{{pageNum}}页</span>
                 <el-button type="button" :disabled="nextbutton"
                   @click="getEventList(calendarDay,10,pageNum+1,eventSearch)">下一页 </el-button>
@@ -806,6 +805,61 @@
           "                </div>" +
           "                </span></div>";
         return markersMap;
+        let that = this
+        getResourcesCount().then(res => {
+          this.resourcesCountList = res.data;
+          this.resourcesCountList.forEach(function(data, index) {
+            let icon = 'sj' + '-' + 'icon' + '-' + data.type.replaceAll("_", "-").replaceAll("@", "-");
+            that.$set(that.resourcesCountList[index], 'icon', icon);
+            that.$set(that.resourcesCountList[index], 'bg', getIconBg(icon));
+          })
+        })
+      },
+      sewageOutletClick(data) {
+        const params = Object.assign({});
+        params.longitude = data.longitude;
+        params.latitude = data.latitude;
+
+        const treeLabels = [{
+          id: null,
+          labelCode: "999",
+          labelName: "电视墙",
+          cameraType: null,
+          parentLabelCode: "",
+        }, ];
+        const labelChannels = [];
+        for (let i in data.cameraList) {
+          treeLabels.push({
+            id: null,
+            labelCode: data.cameraList[i].cameraCode,
+            labelName: data.cameraList[i].cameraName,
+            cameraType: data.cameraList[i].cameraType,
+            parentLabelCode: "999",
+          });
+          labelChannels.push({
+            labelCode: data.cameraList[i].cameraCode,
+            channelDates: [{
+              channelCode: data.cameraList[i].cameraCode,
+              channelName: data.cameraList[i].cameraName,
+              channelSn: null,
+              cameraType: data.cameraList[i].cameraType,
+              online: "1",
+              cameraCode: "1",
+            }, ],
+          });
+        }
+        const dianshiqiang = [{
+          switchTab: "2",
+          treeLabels: treeLabels,
+          labelChannels: labelChannels,
+        }, ];
+        if (data.cameraList.length > 0) {
+          this.$refs.TVWall.showTVWall1(
+            data.longitude,
+            data.latitude,
+            dianshiqiang
+          );
+        }
       },
       //点击左侧某资源,将该资源进行落点
       selectResourcesByLabel(label, name) {
@@ -831,23 +885,29 @@
         })
       },
       initMarkers(list, type) {
-        console.log("list=", list)
         if (list != null && list.length > 0) {
           for (let i = 0; i < list.length; i++) {
             let markersMap = {
               lng: 124.59,
               lat: 43.02,
-              icon: 'marker',
-              bindPopupHtml: '',
-              click: '',
-              parameter: '',
+              icon: "marker",
+              bindPopupHtml: "",
+              click: "sewageOutletClick",
+              parameter: list[i],
               keepBindPopup: false,
-              isAggregation: false
-            }
+              isAggregation: false,
+            };
             if (list.length > 200) {
               markersMap.isAggregation = true;
             }
             //根据标签确定资源的图标
+            markersMap.icon =
+              "traffic-resources-" +
+              (type ?
+                type == "sign" ?
+                "warning_sign" :
+                type :
+                this.resourcesList[i].label);
             // markersMap.icon = 'traffic-resources-' + type;
             // alert(type+"=type")
             // alert(this.resourcesList[i].label+"=this.resourcesList[i].label")
@@ -860,95 +920,156 @@
             markersMap.lng = list[i].longitude;
             markersMap.lat = list[i].latitude;
             //POP的通用部分
-            markersMap.bindPopupHtml = '<div class="map-tip">' +
-              '<span>' +
+            markersMap.bindPopupHtml =
+              '<div class="map-tip">' +
+              "<span>" +
               ' <div class="d-l-con">' +
               '   <div class="d-l-l-text">' +
-              '     <h4>名称:' + (list[i].name ? list[i].name : "") + '</h4>' +
-              '   </div>' +
-              ' </div>' +
-              '</span>';
-            if (list[i].label == this.labelList[0] || this.labelList[0].indexOf(type) != -1) { //警示牌的POP
-              markersMap.bindPopupHtml += '' +
-                '<span>' +
+              "     <h4>名称:" +
+              (list[i].name ? list[i].name : "") +
+              "</h4>" +
+              "   </div>" +
+              " </div>" +
+              "</span>";
+            if (
+              list[i].label == this.labelList[0] ||
+              this.labelList[0].indexOf(type) != -1
+            ) {
+              //警示牌的POP
+              markersMap.bindPopupHtml +=
+                "" +
+                "<span>" +
                 ' <div class="d-l-con">' +
                 '   <div class="d-l-l-text">' +
-                '     <h4>设置日期:' + ((list[i].setTime ? list[i].setTime : list[i].set_time) ? (list[i].setTime ? list[i]
-                  .setTime : list[i].set_time) : "") + '</h4>' +
-                '   </div>' +
-                ' </div>' +
-                '</span>' +
-                '<span>' +
+                "     <h4>设置日期:" +
+                ((list[i].setTime ? list[i].setTime : list[i].set_time) ?
+                  list[i].setTime ?
+                  list[i].setTime :
+                  list[i].set_time :
+                  "") +
+                "</h4>" +
+                "   </div>" +
+                " </div>" +
+                "</span>" +
+                "<span>" +
                 ' <div class="d-l-con">' +
                 '   <div class="d-l-l-text">' +
-                '     <h4>用途:' + (list[i].effect ? list[i].effect : "") + '</h4>' +
-                '   </div>' +
-                ' </div>' +
-                '</span>';
+                "     <h4>用途:" +
+                (list[i].effect ? list[i].effect : "") +
+                "</h4>" +
+                "   </div>" +
+                " </div>" +
+                "</span>";
             }
-            if (list[i].label == this.labelList[1] || list[i].label == this.labelList[2] || this.labelList[1].indexOf(
-                type) != -1 || this.labelList[2].indexOf(type) != -1) { //桥梁涵洞的POP
-              markersMap.bindPopupHtml += '' +
-                '<span>' +
+            if (
+              list[i].label == this.labelList[1] ||
+              list[i].label == this.labelList[2] ||
+              this.labelList[1].indexOf(type) != -1 ||
+              this.labelList[2].indexOf(type) != -1
+            ) {
+              //桥梁涵洞的POP
+              markersMap.bindPopupHtml +=
+                "" +
+                "<span>" +
                 ' <div class="d-l-con">' +
                 '   <div class="d-l-l-text">' +
-                '     <h4>竣工日期:' + ((list[i].completionDate ? list[i].completionDate : list[i].completion_date) ? (list[
-                  i].completionDate ? list[i].completionDate : list[i].completion_date) : "") + '</h4>' +
-                '   </div>' +
-                ' </div>' +
-                '</span>' +
-                '<span>' +
-                '<span>' +
+                "     <h4>竣工日期:" +
+                ((
+                    list[i].completionDate ?
+                    list[i].completionDate :
+                    list[i].completion_date
+                  ) ?
+                  list[i].completionDate ?
+                  list[i].completionDate :
+                  list[i].completion_date :
+                  "") +
+                "</h4>" +
+                "   </div>" +
+                " </div>" +
+                "</span>" +
+                "<span>" +
+                "<span>" +
                 ' <div class="d-l-con">' +
                 '   <div class="d-l-l-text">' +
-                '     <h4>管理单位:' + ((list[i].managementUnit ? list[i].managementUnit : list[i].management_unit) ? (list[
-                  i].managementUnit ? list[i].managementUnit : list[i].management_unit) : "") + '</h4>' +
-                '   </div>' +
-                ' </div>' +
-                '</span>' +
-                '<span>' +
+                "     <h4>管理单位:" +
+                ((
+                    list[i].managementUnit ?
+                    list[i].managementUnit :
+                    list[i].management_unit
+                  ) ?
+                  list[i].managementUnit ?
+                  list[i].managementUnit :
+                  list[i].management_unit :
+                  "") +
+                "</h4>" +
+                "   </div>" +
+                " </div>" +
+                "</span>" +
+                "<span>" +
                 ' <div class="d-l-con">' +
                 '   <div class="d-l-l-text">' +
-                '     <h4>联系电话:' + ((list[i].manaTel ? list[i].manaTel : list[i].mana_tel) ? (list[i].manaTel ? list[i]
-                  .manaTel : list[i].mana_tel) : "") + '</h4>' +
-                '   </div>' +
-                ' </div>' +
-                '</span>' +
-                '<span>' +
+                "     <h4>联系电话:" +
+                ((list[i].manaTel ? list[i].manaTel : list[i].mana_tel) ?
+                  list[i].manaTel ?
+                  list[i].manaTel :
+                  list[i].mana_tel :
+                  "") +
+                "</h4>" +
+                "   </div>" +
+                " </div>" +
+                "</span>" +
+                "<span>" +
                 ' <div class="d-l-con">' +
                 '   <div class="d-l-l-text">' +
-                '     <h4>养护单位:' + ((list[i].maintenanceUnit ? list[i].maintenanceUnit : list[i].maintenance_unit) ? (
-                  list[i].maintenanceUnit ? list[i].maintenanceUnit : list[i].maintenance_unit) : "") + '</h4>' +
-                '   </div>' +
-                ' </div>' +
-                '</span>' +
-                '<span>' +
+                "     <h4>养护单位:" +
+                ((
+                    list[i].maintenanceUnit ?
+                    list[i].maintenanceUnit :
+                    list[i].maintenance_unit
+                  ) ?
+                  list[i].maintenanceUnit ?
+                  list[i].maintenanceUnit :
+                  list[i].maintenance_unit :
+                  "") +
+                "</h4>" +
+                "   </div>" +
+                " </div>" +
+                "</span>" +
+                "<span>" +
                 ' <div class="d-l-con">' +
                 '   <div class="d-l-l-text">' +
-                '     <h4>联系电话:' + ((list[i].mainTel ? list[i].mainTel : list[i].main_tel) ? (list[i].mainTel ? list[i]
-                  .mainTel : list[i].main_tel) : "") + '</h4>' +
-                '   </div>' +
-                ' </div>' +
-                '</span>';
+                "     <h4>联系电话:" +
+                ((list[i].mainTel ? list[i].mainTel : list[i].main_tel) ?
+                  list[i].mainTel ?
+                  list[i].mainTel :
+                  list[i].main_tel :
+                  "") +
+                "</h4>" +
+                "   </div>" +
+                " </div>" +
+                "</span>";
             }
-            if (list[i].remark != "" && list[i].remark != null) { //POP的备注部分
-              markersMap.bindPopupHtml += '' +
-                '<span>' +
+            if (list[i].remark != "" && list[i].remark != null) {
+              //POP的备注部分
+              markersMap.bindPopupHtml +=
+                "" +
+                "<span>" +
                 ' <div class="d-l-con">' +
                 '   <div class="d-l-l-text">' +
-                '     <h4>备注:' + (list[i].remark ? list[i].remark : "") + '</h4>' +
-                '   </div>' +
-                ' </div>' +
-                '</span>';
+                "     <h4>备注:" +
+                (list[i].remark ? list[i].remark : "") +
+                "</h4>" +
+                "   </div>" +
+                " </div>" +
+                "</span>";
             }
-            markersMap.bindPopupHtml += '</div>'
-            this.markersList.push(markersMap)
+            markersMap.bindPopupHtml += "</div>";
+            this.markersList.push(markersMap);
           }
           setTimeout(() => {
-            // return
-            // this.$refs.supermap.clearM()
-            this.$refs.supermap.setMarkers(this.markersList)
-          }, 2000)
+            this.$refs.supermap.clearM();
+            this.$refs.supermap.setMarkers(this.markersList);
+          }, 2000);
         }
       },
 
@@ -1352,6 +1473,19 @@
           } else {
             setTimeout(() => {
               that.$refs.supermap.clearM()
+              //数据自动落点开始
+              let maxCount = 150; //落点数超过这个数的资源不落点
+              let list = that.resourcesCountList;
+              let types = [];
+              for (let i = 0; i < list.length; i++) { //获取符合要求的类型及数量
+                if (list[i].num <= maxCount) {
+                  types.push(list[i].type);
+                }
+              }
+              for (let i = 0; i < types.length; i++) {
+                that.selectResourcesByLabel(types[i], '所有');
+              }
+              //数据自动落点结束
             }, 2000)
           }
         })
@@ -1393,7 +1527,7 @@
           eventName: eventSearch
         }, loading).then(res => {
           this.eventList = res.data
-          if (res.data !== null && res.data.length !== 0&& res.data.length == 10) {
+          if (res.data !== null && res.data.length !== 0 && res.data.length == 10) {
             this.nextbutton = false
           } else {
             this.nextbutton = true

+ 6 - 5
src/views/monitor.vue

@@ -1259,11 +1259,12 @@
         let that = this;
         getRegionalFlag(id).then((res) => {
           that.graphicsList = [];
-          //地图标记
-          if (res.data != null && res.data.length > 0) {
-            for (let i = 0; i < res.data.length; i++) {
-              that.graphicsList.push(res.data[i].lng);
-              that.graphicsList.push(res.data[i].lat);
+        //地图标记
+        let latLngs = JSON.parse(res.data.data.latLngs!=null?res.data.data.latLngs:'[]')
+        if (latLngs.length > 0) {
+          for (let i = 0; i < latLngs.length; i++) {
+            that.graphicsList.push(latLngs[i].lng);
+            that.graphicsList.push(latLngs[i].lat);
             }
             setTimeout(() => {
               that.$refs.supermap.clearG();

+ 21 - 4
src/views/system/login.vue

@@ -17,11 +17,11 @@
     <!-- 二维码开始 -->
     <el-popover placement="top-start" trigger="click" :show="bindQRCode" popper-class="sj-pop">
       <div class="img-container">
-        <a class="img-list" onclick="window.open('https://pan.baidu.com/s/1MlWyhFw6pEYiaLvzsje-BA?pwd=3jps')">
+        <a class="img-list" :href="video_plugin_url" target="_blank">
           <img src="../../assets/images/login-b-1.png" alt="" />
           <span>视频插件</span>
         </a>
-        <a class="img-list" onclick="window.open('https://pan.baidu.com/s/1MlWyhFw6pEYiaLvzsje-BA?pwd=3jps')">
+        <a class="img-list" :href="meeting_plugin_url" target="_blank">
           <img src="../../assets/images/login-b-2.png" alt="" />
           <span>会议插件</span>
         </a>
@@ -32,7 +32,7 @@
             <span>手机APP</span>
           </div>
         </el-popover>
-        <a class="img-list" onclick="window.open('https://pan.baidu.com/s/1MlWyhFw6pEYiaLvzsje-BA?pwd=3jps')">
+        <a class="img-list" :href="help_url" target="_blank">
           <img src="../../assets/images/login-b-4.png" alt="" />
           <span>使用帮助</span>
         </a>
@@ -102,6 +102,9 @@
     getSecretKey
   } from "@/api/login";
   import {
+    getConfigKey
+  } from "@/api/system/config";
+  import {
     encryptedData
   } from "@/api/encrypt";
   import Cookies from "js-cookie";
@@ -132,7 +135,9 @@
         sliderOnOff: false,
         verified: true,
         popoverVisible: false,
-
+        video_plugin_url: "",
+        meeting_plugin_url: "",
+        help_url: "",
         QRCode: "",
         backgroudImg: "", //背景图片
         systemTitle: {
@@ -187,9 +192,21 @@
       this.fontConfig();
     },
     mounted() {
+      this.getConfigKey();
       this.getVersionInfo();
     },
     methods: {
+      getConfigKey(){
+        getConfigKey('video_plugin_url').then(response => {
+          this.video_plugin_url = response.msg
+        })
+        getConfigKey('meeting_plugin_url').then(response => {
+          this.meeting_plugin_url = response.msg
+        })
+        getConfigKey('help_url').then(response => {
+          this.help_url = response.msg
+        })
+      },
       getVersionInfo() {
         getVersionInfo().then(res => {
           this.QRCode = res.data.picUrl