浏览代码

Merge remote-tracking branch 'origin/visu_environment' into visu_environment

# Conflicts:
#	visu_forest/index.html
#	visu_forest/static/js/chunk-176d0dbf.5c34cf17.js
#	visu_forest/static/js/chunk-commons.efc2f5d6.js
#	vue.config.js
Administrator 2 年之前
父节点
当前提交
6fcbe3f738

+ 1 - 1
.env.development

@@ -1,5 +1,5 @@
 # 页面标题
-VUE_APP_TITLE = 四平市态势感知平台
+VUE_APP_TITLE = 通榆县乡村振兴监管平台
 
 # 开发环境配置
 ENV = 'development'

+ 1 - 1
.env.production

@@ -1,5 +1,5 @@
 # 页面标题
-VUE_APP_TITLE = 数字四平态势感知监管平台
+VUE_APP_TITLE = 通榆县乡村振兴监管平台
 
 # 生产环境配置
 ENV = 'production'

+ 1 - 1
.env.staging

@@ -1,5 +1,5 @@
 # 页面标题
-VUE_APP_TITLE = 数字四平态势感知监管平台
+VUE_APP_TITLE = 通榆县乡村振兴监管平台
 
 NODE_ENV = production
 

+ 1 - 1
package.json

@@ -1,7 +1,7 @@
 {
   "name": "ruoyi",
   "version": "3.4.0",
-  "description": "数字四平态势感知监管平台",
+  "description": "通榆县乡村振兴监管平台",
   "author": "若依",
   "license": "MIT",
   "scripts": {

二进制
public/hk/VideoWebPlugin.exe


+ 43 - 2
src/api/forest.js

@@ -85,7 +85,7 @@ export function getEventByReportorOrder(param) {
 // 日志文件上传
 export function eventLogUpload(param) {
   return request({
-    url: '/center-event/eventcatalogue/upload',
+    url: '/center-event/centereventtfirelog',
     method: 'post',
     data: param
   })
@@ -93,7 +93,7 @@ export function eventLogUpload(param) {
 // 日志发送
 export function sendEventLog(param) {
   return request({
-    url: '/center-event/eventcatalogue/uploadConext',
+    url: '/center-event/centereventtfirelog',
     method: 'post',
     data: param
   })
@@ -191,3 +191,44 @@ export function uploadBase64(param) {
     data:param
   })
 }
+// 通过事件code查询事件责任部门
+export function centereventtdepteventList(param) {
+  return request({
+    url: '/center-environment/VisuForestCloudMapController/centereventtdepteventList',
+    method: 'post',
+    data:param
+  })
+}
+// 通过责任部门查询责任人
+export function dutysystemList(param) {
+  return request({
+    url: '/center-environment/VisuForestCloudMapController/dutysystemList',
+    method: 'post',
+    data:param
+  })
+}
+
+// 事件责任制添加联系人
+export function dutysystemAdd(param) {
+  return request({
+    url: '/center-environment/VisuForestCloudMapController/dutysystemAdd',
+    method: 'post',
+    data:param
+  })
+}
+// 事件责任制删除联系人
+export function dutysystemRemove(param) {
+  return request({
+    url: '/center-environment/VisuForestCloudMapController/dutysystemRemove',
+    method: 'get',
+    params:param
+  })
+}
+
+// 事件短信联系人
+export function userFeginlist(param) {
+  return request({
+    url: '/center-environment/VisuForestCloudMapController/userFeginlist',
+    method: 'post'
+  })
+}

+ 10 - 2
src/api/monitor.js

@@ -15,10 +15,18 @@ export function selectCameraByDeptId(deptId) {
     data:{"deptId":deptId}
   })
 }
-// 获取重点区域
+// 获取重点区域列表
 export function selectKeyAreaList() {
   return request({
-    url: '/center-data/importarea/listFegin',
+    url: '/center-environment/VisuForestCloudMapController/importarealistFegin',
     method: 'get',
   })
 }
+// 获取重点区域
+export function getRegionalFlag(id) {
+  return request({
+    url: '/center-environment/VisuForestCloudMapController/getRegionalFlag/'+id,
+    method: 'get',
+  })
+}
+

二进制
src/assets/images/login/login-ty.jpg


+ 6 - 6
src/components/TVWall.vue

@@ -457,7 +457,7 @@ export default {
         },
         cbConnectError: function() { // 创建WebControl实例失败
           that.oWebControl = null
-          $('#playWnd').html('插件未启动,正在尝试启动,请稍候...')
+          $('#playWnd').html('插件未启动,正在尝试启动,请稍候...<a href="./hk/VideoWebPlugin.exe">点击下载插件</a>')
           WebControl.JS_WakeUp('VideoWebPlugin://') // 程序未启动时执行error函数,采用wakeup来启动程序
           initCount++
           if (initCount < 3) {
@@ -465,7 +465,7 @@ export default {
               that.initPlugin()
             }, 3000)
           } else {
-            $('#playWnd').html('插件启动失败,请检查插件是否安装!')
+            $('#playWnd').html('插件启动失败,请检查插件是否安装!<a href="./hk/VideoWebPlugin.exe">点击下载插件</a>')
           }
         },
         cbConnectClose: function(bNormalClose) {
@@ -481,11 +481,11 @@ export default {
       let that=this
       this.getPubKey(function() {
         ////////////////////////////////// 请自行修改以下变量值	////////////////////////////////////
-        var appkey = '22654202'                           //综合安防管理平台提供的appkey,必填
-        var secret = that.setEncrypt('d7HlmRIaiXp3MQBmsuUg')   //综合安防管理平台提供的secret,必填
-        var ip = '218.27.1.154'                           //综合安防管理平台IP地址,必填
+        var appkey = '24699060'                           //综合安防管理平台提供的appkey,必填
+        var secret = that.setEncrypt('tt1pMbsrlwGZUWucdAPw')   //综合安防管理平台提供的secret,必填
+        var ip = '36.49.108.22'                           //综合安防管理平台IP地址,必填
         var playMode = 0                                  //初始播放模式:0-预览,1-回放
-        var port = 54321                                    //综合安防管理平台端口,若启用HTTPS协议,默认443
+        var port = 1443                                    //综合安防管理平台端口,若启用HTTPS协议,默认443
         var snapDir = 'D:\\SnapDir'                       //抓图存储路径
         var videoDir = 'D:\\VideoDir'                     //紧急录像或录像剪辑存储路径
         var layout = '3x3'                                //playMode指定模式的布局

+ 1 - 1
src/components/eventLocation.vue

@@ -344,7 +344,7 @@
                   markersMap.icon = 'sj-icon-map-banjie'
                 } else if (this.eventList[i].eventStatusValue == 'forest_event_status_6') {
                   markersMap.click = 'showEventDialog'
-                  markersMap.icon = 'sj-icon-map-guidnag'
+                  markersMap.icon = 'sj-icon-map-guidang'
                 }
                 markersMap.parameter = this.eventList[i].eventCode
                 markersMap.lng = this.eventList[i].longitude

+ 69 - 0
src/components/star.vue

@@ -0,0 +1,69 @@
+<template>
+  <div class="stars">
+    <div class="star" v-for="(item, index) in starsCount" :key="index" ref="star"></div>
+  </div>
+</template>
+ 
+<script>
+ 
+export default {
+  name: 'StarBackground',
+  props: {},
+  data() {
+    return {
+      starsCount: 1500,
+      distance: 1000
+    }
+  },
+  mounted() {
+    this.initStars()
+  },
+  methods: {
+    initStars() {
+      let starArr = this.$refs.star
+      starArr.forEach(item => {
+        let speed = 0.2 + (Math.random() * 1)
+        let thisDistance = this.distance + (Math.random() * 300)
+        item.style.transformOrigin = `0 0 ${thisDistance}px`
+        item.style.transform = `translate3d(0, 0, -${thisDistance}px) rotateY(${(Math.random() * 360)}deg) rotateX(${(Math.random() * -50)}deg) scale(${speed}, ${speed})`
+      })
+    }
+  }
+}
+</script>
+ 
+<style scoped lang="scss">
+@keyframes rotate {
+  0% {
+    transform: perspective(600px) rotateZ(20deg) rotateX(-40deg) rotateY(0);
+  }
+  100% {
+    transform: perspective(600px) rotateZ(20deg) rotateX(-40deg) rotateY(-360deg);
+  }
+}
+ 
+.stars {
+  transform: perspective(500px);
+  transform-style: preserve-3d;
+  position: absolute;
+  perspective-origin: 50% 100%;
+  left: 50%;
+  animation: rotate 90s infinite linear;
+  bottom: -200px;
+}
+ 
+.star {
+  width: 3px;
+  height: 2px;
+  background: #39ffe8;
+  position: absolute;
+  top: 0;
+  left: 0;
+  backface-visibility: hidden;
+  border-radius: 2px;
+  box-shadow: 0 0 5px rgba($color: #00f6ff, $alpha: 1);
+  // box-shadow: 0 0 5px rgba(81, 203, 238, 1);
+  // -webkit-box-shadow: 0 0 5px rgba(81, 203, 238, 1);
+  // -moz-box-shadow: 0 0 5px rgba(81, 203, 238, 1);
+}
+</style>

+ 8 - 8
src/components/supermap.vue

@@ -584,7 +584,6 @@ export default {
         if (this.isAggregationMyGroup != undefined && this.isAggregationMyGroup != false) {
           this.isAggregationMyGroup.clearLayers()
         }
-        if (this.isAggregationLayers != null && this.isAggregationLayers.length > 0) {
           this.map.removeLayer(this.isAggregationLayers)
           this.isAggregationLayers = []
           this.radiusLayers = []
@@ -598,11 +597,11 @@ export default {
             //最大缩放级别点击聚合图标展开图标
             spiderfyOnMaxZoom: true
           })
-        }
       } else {
         if (this.myGroup != undefined && this.myGroup != false) {
           this.myGroup.clearLayers()
         }
+        this.map.removeLayer(this.layers)
         this.layers = []
       }
     },
@@ -974,7 +973,7 @@ export default {
         })
         let markerClick = window.L.marker([markersList[i].lat, markersList[i].lng], {
           icon: icon
-        }).addTo(this.map)
+        })
         if (markersList[i].bindPopupHtml != null && markersList[i].bindPopupHtml !== '') {
           let html = markersList[i].bindPopupHtml
           if (keepBindPopup) {
@@ -1008,14 +1007,15 @@ export default {
         if (isAggregation) {
           _that.isAggregationLayers.addLayer(markerClick)
           _that.isAggregationMyGroup = window.L.layerGroup(_that.isAggregationLayers)
-          this.map.addLayer(_that.isAggregationLayers)
         } else {
           _that.layers.push(markerClick)
           _that.myGroup = window.L.layerGroup(_that.layers)
-          this.map.addLayer(_that.myGroup)
         }
-
       }
+      if (_that.myGroup != undefined && _that.myGroup != false) {
+        _that.map.addLayer(_that.myGroup)
+      }
+      _that.map.addLayer(_that.isAggregationLayers)
     },
     setMarkersByType: function(markersList, type) { //地图标点(根据类型,可取消落点 clearMByType方法)
       const _that = this
@@ -1033,7 +1033,7 @@ export default {
         })
         let markerClick = window.L.marker([markersList[i].lat, markersList[i].lng], {
           icon: icon
-        }).addTo(this.map)
+        })
         if (markersList[i].bindPopupHtml != null && markersList[i].bindPopupHtml !== '') {
           let html = markersList[i].bindPopupHtml
           if (keepBindPopup) {
@@ -1266,7 +1266,7 @@ export default {
 		align-items: center;
 		.input-group-addon{
 			color: $inBlue;
-			
+
 		}
 		.form-control{
 			padding: 0 .3rem;

+ 10 - 1
src/components/v-fastmenu.vue

@@ -22,7 +22,7 @@
 						<el-button type="primary" size="small" @click="resetPwd">修改密码</el-button>
 						<el-button type="warning" size="small" @click="logout">退出登录</el-button>
 					</div>
-					<a href="https://117.78.49.164:15001/index58" style="border-top: 1px solid #334780;"><i class="el-icon-s-home"></i>返回首页</a>
+          <el-link type="primary" @click="backToMainPage" style="border-top: 1px solid #334780;" icon="el-icon-s-home">回到首页</el-link>
 				</div>
 				<div slot="reference" style="text-align: center; width:4rem;height:3rem;">
 					<img src="@/assets/images/mascot-small.png" />
@@ -68,6 +68,15 @@ import { getUserProfile } from "@/api/system/user";
       this.getUser()
     },
 		methods: {
+      backToMainPage(){
+        let href = window.location.href
+        let protacal = href.substr(0,href.indexOf("://")+3)
+        let mo = href.lastIndexOf(":") > 6  ? href.lastIndexOf(":") : href.lastIndexOf("/")
+        let ip = href.substr(href.indexOf("://")+3,mo);
+        let url =href.substr(0,mo)
+        let toUrl = url +":15001/index58"
+        window.location.href = toUrl
+      },
       getUser(){
         getUserProfile().then(response => {
           this.nickName=response.data.nickName

+ 1 - 1
src/components/v-header.vue

@@ -5,7 +5,7 @@
 		<!--中间LOGO -->
 		<div class="title">
 			<!-- <img src="@/assets/images/integrated/bigdata-header-nav-left2.png" /> -->
-			<h3><img class="logo" src="@/assets/images/integrated/logo-small.png" />四平市态势感知平台 {{titlename}}
+			<h3><img class="logo" src="@/assets/images/integrated/logo-small.png" />通榆县乡村振兴监管平台 {{titlename}}
 			</h3>
 			<!-- <img src="@/assets/images/integrated/bigdata-header-nav-right2.png" /> -->
 		</div>

+ 1 - 1
src/components/vBottomMenu.vue

@@ -742,7 +742,7 @@ export default {
           } else if (res.data.catalogue[0].eventStatusValue == 'forest_event_status_5') {
             markersMap.icon = 'sj-icon-map-banjie'
           } else if (res.data.catalogue[0].eventStatusValue == 'forest_event_status_6') {
-            markersMap.icon = 'sj-icon-map-guidnag'
+            markersMap.icon = 'sj-icon-map-guidang'
           }
           markersMap.lng = res.data.catalogue[0].longitude
           markersMap.lat = res.data.catalogue[0].latitude

+ 1 - 1
src/layout/components/Sidebar/Logo.vue

@@ -35,7 +35,7 @@ export default {
   },
   data() {
     return {
-      title: '数字四平态势感知监管平台',
+      title: '通榆县乡村振兴监管平台',
       logo: logoImg
     }
   }

+ 2 - 2
src/router/index.js

@@ -45,8 +45,8 @@ export const constantRoutes = [
 	},
 	{
 		//数据中心
-		path: '/datacenter',
-		name: 'datacenter',
+		path: '/',
+		name: '',
 		component: () => import('@/views/datacenter'),
 		meta: {
 			title: '数据中心'

+ 1 - 1
src/views/bigdata/bigdata.vue

@@ -5,7 +5,7 @@
     <div class="header">
       <!-- title -->
       <div class="header-left"><img class="logo" src="@/assets/images/integrated/logo-small.png"/>
-        <h3 class="title">数字四平态势感知监管平台-数字环保-统计分析</h3>
+        <h3 class="title">通榆县乡村振兴监管平台-数字环保-统计分析</h3>
       </div>
       <div class="bignav">
         <img src="@/assets/images/integrated/bigdata-header-nav-left.png"/>

+ 2 - 2
src/views/eventLogUpload.vue

@@ -125,11 +125,11 @@ export default {
       let fileUrl=[]
       if(this.fileList!=null&&this.fileList.length>0){
         for (let i = 0; i < this.fileList.length; i++) {
-          let file={url:this.fileList[i].url,webname:this.fileList[i].webName}
+          let file={attachPath:this.fileList[i].url,fileName:this.fileList[i].webName,busIndx:  "bus_indx_forest",busSource: "PC"}
           fileUrl.push(file)
         }
       }
-      let param={ eventCode:this.eventCode,fileUrl: fileUrl }
+      let param={ eventCode:this.eventCode,operation:"bus_oper_type_2",operationType:"log_oper_type_1",fileList: fileUrl }
       //日志文件上传
       eventLogUpload(param).then(res => {
         if(res.code==200){

文件差异内容过多而无法显示
+ 711 - 232
src/views/eventdetailsdialog.vue


+ 16 - 22
src/views/forest.vue

@@ -24,7 +24,7 @@
             </div>
           </dv-border-box-13>
         </div>
-        <!-- 2 事件统计-->
+        <!-- 2 事件统计11-->
         <div class="forthis">
           <dv-border-box-13 :color="['#0e7957', '#0da24c']" backgroundColor="#09140e" style="padding-bottom: 1rem;">
             <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
@@ -279,7 +279,7 @@
                 <div class="d-l-con padding-box nowrap" v-for="(item,index) in eventList"
                      @click="dropLocation(item.latitude,item.longitude)">
                   <div class="bgt-img">
-                    <img v-if="item.picturePath!=null&&item.picturePath!=''&& isAssetTypeAnImage(item.picturePath)"
+                    <img v-if="item.picturePath!=null&&item.picturePath!=''&& item.pictureType=='image'"
                          :src="item.picturePath"
                          style="width: 93px;height: 64px"/>
                     <img v-else src="../assets/images/integrated/event-img-sub.png" style="width: 93px;height: 64px"/>
@@ -373,7 +373,7 @@
                 <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;"/>
               </div>
               <div class="i-list-con small-bottom-margin h-19">
-                <dv-scroll-ranking-board :config="reportList" style="width: 100%;height: 20vh; padding:.5rem 1rem"/>
+                <dv-scroll-ranking-board :config="reportList" style="width: 100%;height: 300px; padding:.5rem 1rem"/>
               </div>
             </dv-border-box-13>
           </div>
@@ -559,27 +559,27 @@ export default {
             keepBindPopup: false,
             isAggregation: false
           }
-          if (this.eventList.length > 50) {
+          if (this.eventList.length > 200) {
             markersMap.isAggregation = true
           }
           if (this.eventList[i].eventStatusValue == 'forest_event_status_1' && this.eventList[i].urgeCount == 0) {
             markersMap.click = 'showEventDialog'
             markersMap.icon = 'sj-icon-map-xinshangbao'
-            markersMap.isAggregation = false
           }
           if (this.eventList[i].eventStatusValue == 'forest_event_status_1' && this.eventList[i].urgeCount > 0) {
             markersMap.click = 'showEventDialog'
             markersMap.icon = 'sj-icon-map-cuiban'
-            markersMap.isAggregation = false
           } else if (this.eventList[i].eventStatusValue == 'forest_event_status_2') {
             markersMap.click = 'showEventDialog'
             markersMap.icon = 'sj-icon-map-qianshou'
+            markersMap.isAggregation = false
           } else if (this.eventList[i].eventStatusValue == 'forest_event_status_5') {
             markersMap.click = 'showEventDialog'
             markersMap.icon = 'sj-icon-map-banjie'
+            markersMap.isAggregation = false
           } else if (this.eventList[i].eventStatusValue == 'forest_event_status_6') {
             markersMap.click = 'showEventDialog'
-            markersMap.icon = 'sj-icon-map-guidnag'
+            markersMap.icon = 'sj-icon-map-guidang'
           }
           markersMap.parameter = this.eventList[i].eventCode
           markersMap.lng = this.eventList[i].longitude
@@ -606,7 +606,7 @@ export default {
             '                </div>' +
             '                </div>' +
             '                </span>'
-          if (this.eventList[i].picturePath != null && this.eventList[i].picturePath != '' && this.isAssetTypeAnImage(this.eventList[i].picturePath)) {
+          if (this.eventList[i].picturePath != null && this.eventList[i].picturePath != '' && this.eventList[i].pictureType=='image') {
             markersMap.bindPopupHtml += '<span>' +
               '                  <div class="d-l-con">' +
               '                  <div class="d-l-l-text">' +
@@ -918,27 +918,30 @@ export default {
               keepBindPopup: false,
               isAggregation: false
             }
-            if (this.eventList.length > 50) {
+            if (this.eventList.length > 200) {
               markersMap.isAggregation = true
             }
             if (this.eventList[i].eventStatusValue == 'forest_event_status_1' && this.eventList[i].urgeCount == 0) {
               markersMap.click = 'showEventDialog'
               markersMap.icon = 'sj-icon-map-xinshangbao'
-              markersMap.isAggregation = false
+              markersMap.isAggregation = true
             }
             if (this.eventList[i].eventStatusValue == 'forest_event_status_1' && this.eventList[i].urgeCount > 0) {
               markersMap.click = 'showEventDialog'
               markersMap.icon = 'sj-icon-map-cuiban'
-              markersMap.isAggregation = false
+              markersMap.isAggregation = true
             } else if (this.eventList[i].eventStatusValue == 'forest_event_status_2') {
               markersMap.click = 'showEventDialog'
               markersMap.icon = 'sj-icon-map-qianshou'
+              markersMap.isAggregation = false
             } else if (this.eventList[i].eventStatusValue == 'forest_event_status_5') {
               markersMap.click = 'showEventDialog'
               markersMap.icon = 'sj-icon-map-banjie'
+              markersMap.isAggregation = false
             } else if (this.eventList[i].eventStatusValue == 'forest_event_status_6') {
               markersMap.click = 'showEventDialog'
-              markersMap.icon = 'sj-icon-map-guidnag'
+              markersMap.icon = 'sj-icon-map-guidang'
+              markersMap.isAggregation = true
             }
             markersMap.parameter = this.eventList[i].eventCode
             markersMap.lng = this.eventList[i].longitude
@@ -965,7 +968,7 @@ export default {
               '                </div>' +
               '                </div>' +
               '                </span>'
-            if (this.eventList[i].picturePath != null && this.eventList[i].picturePath != '' && this.isAssetTypeAnImage(this.eventList[i].picturePath)) {
+            if (this.eventList[i].picturePath != null && this.eventList[i].picturePath != '' && this.eventList[i].pictureType=='image') {
               markersMap.bindPopupHtml += '<span>' +
                 '                  <div class="d-l-con">' +
                 '                  <div class="d-l-l-text">' +
@@ -990,15 +993,6 @@ export default {
         }
       })
     },
-    // 判断是否为图片
-    isAssetTypeAnImage(filePath) {
-      //获取最后一个.的位置
-      var index = filePath.lastIndexOf('.')
-      //获取后缀
-      var ext = filePath.substr(index + 1)
-      let aa = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp', 'psd', 'svg', 'tiff'].indexOf(ext.toLowerCase()) !== -1
-      return aa
-    },
     getEventByEventType(day) {
       let that = this
       //右侧获取事件分类

+ 38 - 11
src/views/monitor.vue

@@ -99,7 +99,7 @@
               <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;"/>
             </div>
             <div class="i-list-con h-25">
-              <div class="d-l-con" v-for="(item,index) in keyAreaList" @click="">
+              <div class="d-l-con" v-for="(item,index) in keyAreaList" :class="{on:listCurrentIndex3 == index}" @click="getRegionalFlag(item.id)">
                 <div class="d-l-l-text">
                   <i class="i-small"></i>
                   <h4>{{ item.areaName }}</h4>
@@ -132,7 +132,8 @@
 import {
   selectDeviceType,
   selectCameraByDeptId,
-  selectKeyAreaList
+  selectKeyAreaList,
+  getRegionalFlag
 } from '@/api/monitor'
 
 import supermap from '@/components/supermap' //超图
@@ -183,6 +184,7 @@ export default {
       iconCurrentIndex1: '-1',
       listCurrentIndex1: '-1',
       listCurrentIndex2: '-1',
+      listCurrentIndex3: '-1',
       /** ----------------------------------摄像头预览开始------------------------------------- */
       //大华
       activePanel: 'key1',
@@ -216,6 +218,38 @@ export default {
     }
   },
   methods: {
+    selectKeyAreaList() {
+      this.keyAreaList=[]
+      //获取重点区域列表
+      let that = this
+      selectKeyAreaList().then(res => {
+        that.keyAreaList = res.data
+      })
+    },
+    getRegionalFlag(id){
+      //获取重点区域
+      this.listCurrentIndex3=id
+      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++) {
+            let latlng = {
+              lat: res.data[i].lat,
+              lng: res.data[i].lng
+            }
+            that.graphicsList.push(latlng)
+          }
+          setTimeout(() => {
+            that.$refs.supermap.clearG()
+            that.$refs.supermap.setGraphicsList(this.graphicsList, 'red')
+          }, 1000)
+        } else {
+          that.$refs.supermap.clearG()
+        }
+      })
+    },
     /** ----------------------------------底部按钮公用组件开始------------------------------------- */
     showDialog(click) {
       if (click == 'eventLocation') {
@@ -374,13 +408,6 @@ export default {
         }]
       })
     },
-    selectKeyAreaList() {
-      //获取重点区域
-      let that = this
-      selectKeyAreaList().then(res => {
-        that.keyAreaList = res
-      })
-    },
     selectDeviceType(index) {
       this.iconCurrentIndex1 = index
       //获取左侧动态感知设备
@@ -664,7 +691,7 @@ export default {
         },
         cbConnectError: function() { // 创建WebControl实例失败
           that.oWebControl = null
-          $('#playWnd').html('插件未启动,正在尝试启动,请稍候...')
+          $('#playWnd').html('插件未启动,正在尝试启动,请稍候...<a href="./hk/VideoWebPlugin.exe">点击下载插件</a>')
           WebControl.JS_WakeUp('VideoWebPlugin://') // 程序未启动时执行error函数,采用wakeup来启动程序
           initCount++
           if (initCount < 3) {
@@ -672,7 +699,7 @@ export default {
               that.initPlugin(newappkey,newloginIp,newsecret,newloginPort)
             }, 3000)
           } else {
-            $('#playWnd').html('插件启动失败,请检查插件是否安装!')
+            $('#playWnd').html('插件启动失败,请检查插件是否安装!<a href="./hk/VideoWebPlugin.exe">点击下载插件</a>')
           }
         },
         cbConnectClose: function(bNormalClose) {

+ 253 - 245
src/views/system/login.vue

@@ -1,271 +1,279 @@
 <template>
-  <div class="login">
-    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
-      <h3 class="title">数字四平态势感知监管平台</h3>
-      <div class="login-container">
-        <h4>请登录</h4>
-        <el-form-item prop="username">
-          <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号" class="m-b-15">
-            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon"/>
-          </el-input>
-        </el-form-item>
-        <el-form-item prop="password">
-          <el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码"
-                    @keyup.enter.native="handleLogin" class="m-b-15">
-            <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon"/>
-          </el-input>
-        </el-form-item>
-        <el-form-item prop="code" v-if="captchaOnOff">
-          <el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 63%"
-                    @keyup.enter.native="handleLogin">
-            <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon"/>
-          </el-input>
-          <div class="login-code">
-            <img :src="codeUrl" @click="getCode" class="login-code-img"/>
-          </div>
-        </el-form-item>
-        <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
-        <el-form-item style="width:100%;">
-          <el-button :loading="loading" size="medium" type="primary" style="width:100%;"
-                     @click.native.prevent="handleLogin">
-            <span v-if="!loading">登 录</span>
-            <span v-else>登 录 中...</span>
-          </el-button>
-          <div style="float: right;" v-if="register">
-            <router-link class="link-type" :to="'/register'">立即注册</router-link>
-          </div>
-        </el-form-item>
-      </div>
-    </el-form>
-  </div>
+	<div class="login">
+		  <StarBackground />
+		<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
+			<h3 class="title"> 通榆县乡村振兴综合监管平台</h3>
+			<h3 class="title">数字环保</h3>
+			<div class="login-container">
+				<h4>请登录</h4>
+				<el-form-item prop="username">
+					<el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号"
+						class="m-b-15">
+						<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+					</el-input>
+				</el-form-item>
+				<el-form-item prop="password">
+					<el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码"
+						@keyup.enter.native="handleLogin" class="m-b-15">
+						<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+					</el-input>
+				</el-form-item>
+				<el-form-item prop="code" v-if="captchaOnOff">
+					<el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 63%"
+						@keyup.enter.native="handleLogin">
+						<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
+					</el-input>
+					<div class="login-code">
+						<img :src="codeUrl" @click="getCode" class="login-code-img" />
+					</div>
+				</el-form-item>
+<!--				<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>-->
+				<el-form-item style="width:100%;">
+					<el-button :loading="loading" size="medium" type="primary" style="width:100%;"
+						@click.native.prevent="handleLogin">
+						<span v-if="!loading">登 录</span>
+						<span v-else>登 录 中...</span>
+					</el-button>
+					<div style="float: right;" v-if="register">
+						<router-link class="link-type" :to="'/register'">立即注册</router-link>
+					</div>
+				</el-form-item>
+			</div>
+		</el-form>
+	</div>
 </template>
 
 <script>
-  import {
-    getCodeImg
-  } from '@/api/login'
-  import Cookies from 'js-cookie'
-  import {
-    encrypt,
-    decrypt
-  } from '@/utils/jsencrypt'
+	import StarBackground from '@/components/star'
+	import {
+		getCodeImg
+	} from '@/api/login'
+	import Cookies from 'js-cookie'
+	import {
+		encrypt,
+		decrypt
+	} from '@/utils/jsencrypt'
 
-  export default {
-    name: 'Login',
-    data() {
-      return {
-        codeUrl: '',
-        loginForm: {
-          username: 'admin',
-          password: 'admin123',
-          rememberMe: false,
-          code: '',
-          uuid: ''
-        },
-        loginRules: {
-          username: [{
-            required: true,
-            trigger: 'blur',
-            message: '请输入您的账号'
-          }],
-          password: [{
-            required: true,
-            trigger: 'blur',
-            message: '请输入您的密码'
-          }],
-          code: [{
-            required: true,
-            trigger: 'change',
-            message: '请输入验证码'
-          }]
-        },
-        loading: false,
-        // 验证码开关
-        captchaOnOff: true,
-        // 注册开关
-        register: false,
-        redirect: undefined
-      }
-    },
-    watch: {
-      $route: {
-        handler: function(route) {
-          this.redirect = route.query && route.query.redirect
-        },
-        immediate: true
-      }
-    },
-    created() {
-      this.getCode()
-      this.getCookie()
-    },
-    methods: {
-      getCode() {
-        getCodeImg().then(res => {
-          this.captchaOnOff = res.captchaOnOff === undefined ? true : res.captchaOnOff
-          if (this.captchaOnOff) {
-            this.codeUrl = 'data:image/gif;base64,' + res.img
-            this.loginForm.uuid = res.uuid
-          }
-        })
-      },
-      getCookie() {
-        const username = Cookies.get('username')
-        const password = Cookies.get('password')
-        const rememberMe = Cookies.get('rememberMe')
-        this.loginForm = {
-          username: username === undefined ? this.loginForm.username : username,
-          password: password === undefined ? this.loginForm.password : decrypt(password),
-          rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
-        }
-      },
-      handleLogin() {
-        this.$refs.loginForm.validate(valid => {
-          if (valid) {
-            this.loading = true
-            // if (this.loginForm.rememberMe) {
-            //无论如何我都记-孙一石
-            if (true) {
-              Cookies.set('username', this.loginForm.username, {
-                expires: 30
-              })
-              Cookies.set('password', encrypt(this.loginForm.password), {
-                expires: 30
-              })
-              Cookies.set('rememberMe', this.loginForm.rememberMe, {
-                expires: 30
-              })
-            } else {
-              Cookies.remove('username')
-              Cookies.remove('password')
-              Cookies.remove('rememberMe')
-            }
-            this.$store.dispatch('Login', this.loginForm).then(() => {
-              console.log('!@!@!@', this.redirect)
-              this.$router.push({
-                //path: this.redirect || '/'
-                path: '/'
-              }).catch(() => {
-              })
-            }).catch(() => {
-              this.loading = false
-              if (this.captchaOnOff) {
-                this.getCode()
-              }
-            })
-          }
-        })
-      }
-    }
-  }
+	export default {
+		beforeCreate: function() {
+		    document.getElementsByTagName('body')[0].style.overflow = 'hidden'
+		  },
+		name: 'Login',
+		components:{
+			StarBackground
+		},
+		data() {
+			return {
+				codeUrl: '',
+				loginForm: {
+					username: 'admin',
+					password: 'admin123',
+					rememberMe: false,
+					code: '',
+					uuid: ''
+				},
+				loginRules: {
+					username: [{
+						required: true,
+						trigger: 'blur',
+						message: '请输入您的账号'
+					}],
+					password: [{
+						required: true,
+						trigger: 'blur',
+						message: '请输入您的密码'
+					}],
+					code: [{
+						required: true,
+						trigger: 'change',
+						message: '请输入验证码'
+					}]
+				},
+				loading: false,
+				// 验证码开关
+				captchaOnOff: true,
+				// 注册开关
+				register: false,
+				redirect: undefined
+			}
+		},
+		watch: {
+			$route: {
+				handler: function(route) {
+					this.redirect = route.query && route.query.redirect
+				},
+				immediate: true
+			}
+		},
+		created() {
+			this.getCode()
+			this.getCookie()
+		},
+		methods: {
+			getCode() {
+				getCodeImg().then(res => {
+					this.captchaOnOff = res.captchaOnOff === undefined ? true : res.captchaOnOff
+					if (this.captchaOnOff) {
+						this.codeUrl = 'data:image/gif;base64,' + res.img
+						this.loginForm.uuid = res.uuid
+					}
+				})
+			},
+			getCookie() {
+				const username = Cookies.get('username')
+				const password = Cookies.get('password')
+				const rememberMe = Cookies.get('rememberMe')
+				this.loginForm = {
+					username: username === undefined ? this.loginForm.username : username,
+					password: password === undefined ? this.loginForm.password : decrypt(password),
+					rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
+				}
+			},
+			handleLogin() {
+				this.$refs.loginForm.validate(valid => {
+					if (valid) {
+						this.loading = true
+						// if (this.loginForm.rememberMe) {
+						//无论如何我都记-孙一石
+						if (true) {
+							Cookies.set('username', this.loginForm.username, {
+								expires: 30
+							})
+							Cookies.set('password', encrypt(this.loginForm.password), {
+								expires: 30
+							})
+							Cookies.set('rememberMe', this.loginForm.rememberMe, {
+								expires: 30
+							})
+						} else {
+							Cookies.remove('username')
+							Cookies.remove('password')
+							Cookies.remove('rememberMe')
+						}
+						this.$store.dispatch('Login', this.loginForm).then(() => {
+							console.log('!@!@!@', this.redirect)
+							this.$router.push({
+								//path: this.redirect || '/'
+								path: '/'
+							}).catch(() => {})
+						}).catch(() => {
+							this.loading = false
+							if (this.captchaOnOff) {
+								this.getCode()
+							}
+						})
+					}
+				})
+			}
+		}
+	}
 </script>
 
 <style rel="stylesheet/scss" lang="scss" scoped>
-  @import '@/assets/styles/base.scss';
+	@import '@/assets/styles/base.scss';
 
-  .login {
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    height: 100%;
-    background: url("../../assets/images/login/login.jpg") center;
-    background-size: cover;
-  }
+	.login {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+		background: url("../../assets/images/login/login-ty.jpg") center;
+		background-size: cover;
+	}
 
-  .m-b-15 {
-    margin-bottom: 15px;
-  }
+	.m-b-15 {
+		margin-bottom: 15px;
+	}
 
-  .title {
-    margin: 0px auto 30px auto;
-    text-align: center;
-    color: #fff;
-    font-family: $fontFk;
-    font-size: 38px;
+	.title {
+		margin: 0px auto 30px auto;
+		text-align: center;
+		color: #fff;
+		font-family: $fontFk;
+		font-size: 38px;
 
-  }
+	}
 
-  .login-form {
-    border-radius: 6px;
-    margin-left: 25%;
-    display: flex;
-    flex-direction: column;
-    align-items: center;
+	.login-form {
+		border-radius: 6px;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
 
-    h3 {
-      text-shadow: 0 0 15px rgba($color: #00f6ff, $alpha: .7);
-    }
+		h3 {
+			text-shadow: 0 0 15px rgba($color: #00f6ff, $alpha: .7);
+		}
 
-    .login-container {
-      border-radius: 6px;
-      background: rgba($color: #fff, $alpha: .7);
-      width: 450px;
-      padding: 30px;
-      box-shadow: 0 0 20px rgba($color: #fff, $alpha: .5);
+		.login-container {
+			border-radius: 6px;
+			background: rgba($color: #fff, $alpha: .7);
+			width: 450px;
+			padding: 30px;
+			box-shadow: 0 0 20px rgba($color: #fff, $alpha: .5);
 
-      h4 {
-        border-bottom: #3e6bfb 1px solid;
-        width: fit-content;
-        display: inline-block;
-        margin-top: 0;
-        padding-bottom: 5px;
-        margin-bottom: 20px;
-      }
-    }
+			h4 {
+				border-bottom: #3e6bfb 1px solid;
+				width: fit-content;
+				display: inline-block;
+				margin-top: 0;
+				padding-bottom: 5px;
+				margin-bottom: 20px;
+			}
+		}
 
-    .el-input {
-      height: 38px;
+		.el-input {
+			height: 38px;
 
-      input {
-        height: 38px;
-      }
-    }
+			input {
+				height: 38px;
+			}
+		}
 
-    .input-icon {
-      height: 39px;
-      width: 14px;
-      margin-left: 2px;
-      color: #3e69fb;
-    }
+		.input-icon {
+			height: 39px;
+			width: 14px;
+			margin-left: 2px;
+			color: #3e69fb;
+		}
 
-    .el-button--primary {
-      font-size: 20px;
-      background: #3e69fb;
-      padding: 15px
-    }
-  }
+		.el-button--primary {
+			font-size: 20px;
+			background: #3e69fb;
+			padding: 15px
+		}
+	}
 
-  .login-tip {
-    font-size: 13px;
-    text-align: center;
-    color: #bfbfbf;
-  }
+	.login-tip {
+		font-size: 13px;
+		text-align: center;
+		color: #bfbfbf;
+	}
 
-  .login-code {
-    width: 33%;
-    height: 38px;
-    float: right;
+	.login-code {
+		width: 33%;
+		height: 38px;
+		float: right;
 
-    img {
-      cursor: pointer;
-      vertical-align: middle;
-    }
-  }
+		img {
+			cursor: pointer;
+			vertical-align: middle;
+		}
+	}
 
-  .el-login-footer {
-    height: 40px;
-    line-height: 40px;
-    position: fixed;
-    bottom: 0;
-    width: 100%;
-    text-align: center;
-    color: #fff;
-    font-family: Arial;
-    font-size: 12px;
-    letter-spacing: 1px;
-  }
+	.el-login-footer {
+		height: 40px;
+		line-height: 40px;
+		position: fixed;
+		bottom: 0;
+		width: 100%;
+		text-align: center;
+		color: #fff;
+		font-family: Arial;
+		font-size: 12px;
+		letter-spacing: 1px;
+	}
 
-  .login-code-img {
-    height: 38px;
-  }
+	.login-code-img {
+		height: 38px;
+	}
 </style>

+ 1 - 1
src/views/system/register.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="register">
     <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
-      <h3 class="title">数字四平态势感知监管平台</h3>
+      <h3 class="title">通榆县乡村振兴监管平台</h3>
       <el-form-item prop="username">
         <el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
           <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />

+ 0 - 0
visu_forest/index.html


文件差异内容过多而无法显示
+ 1 - 0
visu_forest/static/js/chunk-176d0dbf.5c34cf17.js


文件差异内容过多而无法显示
+ 1 - 0
visu_forest/static/js/chunk-commons.efc2f5d6.js


+ 7 - 6
vue.config.js

@@ -7,7 +7,7 @@ function resolve(dir) {
 
 const CompressionPlugin = require('compression-webpack-plugin')
 
-const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题
+const name = process.env.VUE_APP_TITLE || '通榆县乡村振兴监管平台' // 网页标题
 
 const port = process.env.port || process.env.npm_config_port || 80 // 端口
 
@@ -34,9 +34,10 @@ module.exports = {
     host: '0.0.0.0',
     port: port,
     open: true,
-    // https: {
-    //   cert: fs.readFileSync(ssl_path.join(__dirname, 'src/ssl/supermap.pem')),
-    //   key: fs.readFileSync(ssl_path.join(__dirname, 'src/ssl/supermap.key'))
+
+    // https:{
+    //   cert : fs.readFileSync(ssl_path.join(__dirname,'src/ssl/supermap.pem')),
+    //   key : fs.readFileSync(ssl_path.join(__dirname,'src/ssl/supermap.key'))
     // },
     /**
      * 昨夜星辰昨夜风
@@ -51,7 +52,7 @@ module.exports = {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
         // target: `http://192.168.1.113:3031`,
-        target: `http://36.49.108.22:3031`,
+        target: `http://117.78.49.164:3031`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''
@@ -63,7 +64,7 @@ module.exports = {
   css: {
     loaderOptions: {
       sass: {
-        sassOptions: {outputStyle: 'expanded'}
+        sassOptions: { outputStyle: 'expanded' }
       }
     }
   },