Bläddra i källkod

环保修改-根据林业事件流程、责任制人员选择、摄像头品牌、切换方式等进行同步更改

wang_xy 2 år sedan
förälder
incheckning
1c0d544af7

+ 1 - 0
src/api/components/supermap.js

@@ -21,6 +21,7 @@ export const iconList = {
   'sj-icon-map-qianshou': require('@/assets/icons/sj-icon-map/sj-icon-map-qianshou.png'),//签收
   'sj-icon-map-qianshou': require('@/assets/icons/sj-icon-map/sj-icon-map-qianshou.png'),//签收
   'sj-icon-map-guidang': require('@/assets/icons/sj-icon-map/sj-icon-map-guidang.png'),//归档
   'sj-icon-map-guidang': require('@/assets/icons/sj-icon-map/sj-icon-map-guidang.png'),//归档
   'sj-icon-map-banjie': require('@/assets/icons/sj-icon-map/sj-icon-map-banjie.png'),//办结
   'sj-icon-map-banjie': require('@/assets/icons/sj-icon-map/sj-icon-map-banjie.png'),//办结
+  'sj-icon-map-queren': require('@/assets/icons/sj-icon-map/sj-icon-map-queren.png'),//确认
 
 
   //数据中心图标
   //数据中心图标
   'sj-icon-map-centerdata-t-environment-prohibition-area': require('@/assets/icons/sj-icon-map/centerdata/sj-icon-map-centerdata-t-environment-prohibition-area.png'),//禁烧区
   'sj-icon-map-centerdata-t-environment-prohibition-area': require('@/assets/icons/sj-icon-map/centerdata/sj-icon-map-centerdata-t-environment-prohibition-area.png'),//禁烧区

+ 5 - 4
src/api/forest.js

@@ -38,7 +38,6 @@ export function getWeather(param) {
   })
   })
 }
 }
 
 
-
 // 右侧获取事件列表
 // 右侧获取事件列表
 export function getEventList(param,loading) {
 export function getEventList(param,loading) {
   return request({
   return request({
@@ -209,6 +208,7 @@ export function uploadBase64(param) {
     data:param
     data:param
   })
   })
 }
 }
+
 // 通过事件code查询事件责任部门
 // 通过事件code查询事件责任部门
 export function centereventtdepteventList(param) {
 export function centereventtdepteventList(param) {
   return request({
   return request({
@@ -243,10 +243,11 @@ export function dutysystemRemove(param) {
   })
   })
 }
 }
 
 
-// 事件短信联系
+// 通过部门id获取责任
 export function userFeginlist(param) {
 export function userFeginlist(param) {
   return request({
   return request({
-    url: '/center-environment/VisuForestCloudMapController/userFeginlist',
-    method: 'post'
+    url: '/system/user/userFeginlist',
+    method: 'post',
+    data: param
   })
   })
 }
 }

BIN
src/assets/icons/sj-icon-map/sj-icon-map-queren.png


+ 65 - 58
src/components/TVWall.vue

@@ -2,28 +2,30 @@
   <div>
   <div>
     <el-dialog title="电视墙" :visible.sync="TVWallVisible" v-if="TVWallVisible" customClass="TVWallCustomWidth"
     <el-dialog title="电视墙" :visible.sync="TVWallVisible" v-if="TVWallVisible" customClass="TVWallCustomWidth"
                @close="cancelEventLocationShow()">
                @close="cancelEventLocationShow()">
-	  <div class="forthis" style="width: 22%; position: absolute;left: 0;z-index: 9999999999999;">
-	  	<!-- <div class="this-title">
-	  		<span>林场</span>
-	  		<span>45</span>
-	  	</div> -->
-	  	<div class="i-list-con" style="height: 46vh; overflow-y: scroll;">
-	  		<span v-for="(item,index) in cameraList" :key="index">
-	  			<div class="d-l-con" @click="playhk(item.channelCode)">
-	  				<div class="d-l-l-text">
-	  					<i class="i-small"></i>
-	  					<h4>{{ item.cameraName }}</h4>
-	  				</div>
-	  			</div>
-	  		</span>
-	  	</div>
-	  </div>
-      <div style="width:70%;height:400px;position:absolute;">
-        <!--视频窗口展示---大华-->
-        <div id="dom1" class="dom1"></div>
-        <!--视频窗口展示---海康-->
-        <div id="playWnd" class="playWnd" style="left: 0px; top: 0px;"></div>
-      </div>
+	  <!--<div class="forthis" style="width: 22%; position: absolute;left: 0;z-index: 9999999999999;">-->
+	  	<!--&lt;!&ndash; <div class="this-title">-->
+	  		<!--<span>林场</span>-->
+	  		<!--<span>45</span>-->
+	  	<!--</div> &ndash;&gt;-->
+	  	<!--<div class="i-list-con" style="height: 46vh; overflow-y: scroll;">-->
+	  		<!--<span v-for="(item,index) in cameraList" :key="index">-->
+	  			<!--<div class="d-l-con" @click="playhk(item.channelCode)">-->
+	  				<!--<div class="d-l-l-text">-->
+	  					<!--<i class="i-small"></i>-->
+	  					<!--<h4>{{ item.cameraName }}</h4>-->
+	  				<!--</div>-->
+	  			<!--</div>-->
+	  		<!--</span>-->
+	  	<!--</div>-->
+	  <!--</div>-->
+      <!--<div style="width:70%;height:400px;position:absolute;">-->
+        <!--&lt;!&ndash;视频窗口展示-&#45;&#45;大华&ndash;&gt;-->
+        <!--<div id="dom1" class="dom1"></div>-->
+        <!--&lt;!&ndash;视频窗口展示-&#45;&#45;海康&ndash;&gt;-->
+        <!--<div id="playWnd" class="playWnd" style="left: 0px; top: 0px;"></div>-->
+      <!--</div>-->
+
+      <div id="dom1" class="dom1"></div>
     </el-dialog>
     </el-dialog>
   </div>
   </div>
 
 
@@ -249,8 +251,8 @@ export default {
         }],
         }],
       crtPosX: 0,
       crtPosX: 0,
       crtPosY: 0,
       crtPosY: 0,
-      crtWidth: 740,
-      crtHeight: 400,
+      crtWidth: 1150,
+      crtHeight: 700,
       domId: 'dom1',
       domId: 'dom1',
       mixedVideoDisplayMode: 2,
       mixedVideoDisplayMode: 2,
       isShowTipe: true,
       isShowTipe: true,
@@ -262,12 +264,14 @@ export default {
     }
     }
   },
   },
   created() {
   created() {
+    const DHWsInstance = DHWs.getInstance()
+    this.ws = DHWsInstance
   },
   },
   methods: {
   methods: {
     cancelEventLocationShow() {
     cancelEventLocationShow() {
       // this.activeName = 'tv'
       // this.activeName = 'tv'
       this.TVWallVisible = false
       this.TVWallVisible = false
-      // this.destroy()
+      this.destroy()
 
 
       if (this.oWebControl != null) {
       if (this.oWebControl != null) {
         this.oWebControl.JS_HideWnd()   // 先让窗口隐藏,规避可能的插件窗口滞后于浏览器消失问题
         this.oWebControl.JS_HideWnd()   // 先让窗口隐藏,规避可能的插件窗口滞后于浏览器消失问题
@@ -278,40 +282,38 @@ export default {
       }
       }
     },
     },
     showTVWall() {
     showTVWall() {
-      let that=this;
+      // let that=this;
       /** ----------------------------------大华摄像头预览开始------------------------------------- */
       /** ----------------------------------大华摄像头预览开始------------------------------------- */
-      // const DHWsInstance = DHWs.getInstance()
-      // this.ws = DHWsInstance
-      // this.ws.addEventListener('connectStateChange', data => {
-      //   if (data) {
-      //     console.log('连接成功')
-      //   } else {
-      //     console.log('连接失败,下载客户端')
-      //     this.alertReinstall()
-      //     // this.isShowTipe && this.$modal.confirm({
-      //     //   title: '下载客户端',
-      //     //   content: '检测到您未安装部分插件,将影响部分功能使用,请下载后使用?',
-      //     //   onOk: () => {
-      //     //     //这里写下载方法
-      //     //     this.isShowTipe = false
-      //     //   },
-      //     //   onCancel: () => {
-      //     //     this.isShowTipe = false
-      //     //   }
-      //     // });
-      //   }
-      // })
-      // this.preview()
+      this.ws.addEventListener('connectStateChange', data => {
+        if (data) {
+          console.log('连接成功')
+        } else {
+          console.log('连接失败,下载客户端')
+          this.alertReinstall()
+          this.isShowTipe && this.$modal.confirm({
+            title: '下载客户端',
+            content: '检测到您未安装部分插件,将影响部分功能使用,请下载后使用?',
+            onOk: () => {
+              //这里写下载方法
+              this.isShowTipe = false
+            },
+            onCancel: () => {
+              this.isShowTipe = false
+            }
+          });
+        }
+      })
+      this.preview()
       /** ----------------------------------大华摄像头预览结束------------------------------------- */
       /** ----------------------------------大华摄像头预览结束------------------------------------- */
       /** ----------------------------------海康摄像头预览开始------------------------------------- */
       /** ----------------------------------海康摄像头预览开始------------------------------------- */
-      tvCameraList().then(response => {
-        this.cameraList=response.data
-      })
-      that.initPlugin()
-      setTimeout(function() {
-        that.playhk();
-      }, 5000)
-      /** ----------------------------------海康摄像头预览结束------------------------------------- */
+      // tvCameraList().then(response => {
+      //   this.cameraList=response.data
+      // })
+      // that.initPlugin()
+      // setTimeout(function() {
+      //   that.playhk();
+      // }, 5000)
+      // /** ----------------------------------海康摄像头预览结束------------------------------------- */
       this.TVWallVisible = true
       this.TVWallVisible = true
     },
     },
     /** ----------------------------------大华摄像头预览开始------------------------------------- */
     /** ----------------------------------大华摄像头预览开始------------------------------------- */
@@ -339,8 +341,12 @@ export default {
                 loginPort: newResponse.loginPort,
                 loginPort: newResponse.loginPort,
                 userName: newResponse.userName,
                 userName: newResponse.userName,
                 userPwd: newResponse.userPwd,
                 userPwd: newResponse.userPwd,
+                // loginIp: '192.168.100.100',
+                // loginPort: 8314,
+                // userName: 'system',
+                // userPwd: 'Admin@123',
                 token: '',
                 token: '',
-                https: 1
+                https: 0
               })
               })
               this.ws.on('loginState', (res) => {
               this.ws.on('loginState', (res) => {
                 this.isLogin = res
                 this.isLogin = res
@@ -362,6 +368,7 @@ export default {
     },
     },
 
 
     create(tvListJson) { // 调用创建控件接口
     create(tvListJson) { // 调用创建控件接口
+      debugger
       let _this = this
       let _this = this
       const params = [
       const params = [
         {
         {
@@ -372,7 +379,7 @@ export default {
             'splitNum': 1,
             'splitNum': 1,
             'channelList': [
             'channelList': [
               {
               {
-                'channelId': '8ORBqXFlA1D77U45SM1ROC'
+                'channelId': ''
               }
               }
             ]
             ]
           },
           },

+ 77 - 33
src/components/supermap.vue

@@ -19,7 +19,7 @@
     </div>
     </div>
 
 
     <div id="toolbar-heat" v-if="isheatPlotting" class="panel panel-primary"
     <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:635px;overflow-y:scroll;background:#040b1f">
+         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">
       <div class="panel-body content">
         <div class="panel">
         <div class="panel">
           <div class="input-group">
           <div class="input-group">
@@ -39,12 +39,45 @@
         <div class="panel">
         <div class="panel">
           <div class="input-group">
           <div class="input-group">
             <span class="input-group-addon">风速</span>
             <span class="input-group-addon">风速</span>
-            <input type="text" class="form-control" id="heatNums1" value="20"/>
+            <input type="text" class="form-control" id="heatNums1" value="6"/>
           </div>
           </div>
         </div>
         </div>
 		<div class="panel">
 		<div class="panel">
-        <el-button type="success" @click="createHeatPoints">标绘</el-button>
-        <el-button type="success" @click="clearHeatPoints">取消标绘</el-button>
+		  <div class="input-group">
+		    <span class="input-group-addon">温度</span>
+		    <input type="text" class="form-control" id="heatNums2" value="10℃"/>
+		  </div>
+		</div>
+		<div class="panel">
+		  <div class="input-group">
+		    <span class="input-group-addon">湿度</span>
+		    <input type="text" class="form-control" id="heatNums3" value="6%RH"/>
+		  </div>
+		</div>
+		<div class="panel">
+		  <div class="input-group">
+		    <span class="input-group-addon">持续时间</span>
+		    <input type="text" class="form-control" id="heatNums4" value="60分钟"/>
+		  </div>
+		</div>
+		<div class="panel">
+		<div class="input-group">
+		  <span class="input-group-addon">植被类型</span>
+		  <select class="form-control" style="width:auto" id="heatNums5">
+		    <option value="1">针叶林</option>
+		    <option value="31">落叶林</option>
+		  </select>
+		</div>
+		</div>
+		<div class="panel">
+		  <div class="input-group">
+		    <span class="input-group-addon">大气压</span>
+		    <input type="text" class="form-control" id="heatNums6" value="101.325kPa"/>
+		  </div>
+		</div>
+		<div class="panel">
+        <el-button type="success" @click="createHeatPoints">分析</el-button>
+        <el-button type="success" @click="clearHeatPoints">重置</el-button>
 		</div>
 		</div>
       </div>
       </div>
     </div>
     </div>
@@ -65,6 +98,7 @@ import {
   getSuperMap,
   getSuperMap,
   iconList
   iconList
 } from '@/api/components/supermap.js'
 } from '@/api/components/supermap.js'
+import { selectConfigKey } from "@/api/system/config";
 // import {setToken} from '../plugins/auth'
 // import {setToken} from '../plugins/auth'
 import modal from '@/plugins/modal'
 import modal from '@/plugins/modal'
 
 
@@ -96,7 +130,8 @@ export default {
       heatMapLayer: [], //火灾蔓延图层Layer
       heatMapLayer: [], //火灾蔓延图层Layer
       isheatPlotting: false,//火灾蔓延
       isheatPlotting: false,//火灾蔓延
       heat_lat: 0, //火灾蔓延经纬度
       heat_lat: 0, //火灾蔓延经纬度
-      heat_lng: 0 //火灾蔓延经纬度
+      heat_lng: 0, //火灾蔓延经纬度
+      host:''
     }
     }
   },
   },
   watch: {
   watch: {
@@ -166,6 +201,7 @@ export default {
     }
     }
   },
   },
   mounted() {
   mounted() {
+    this.getspuerMapHost()
     this.initMap()
     this.initMap()
     //添加画图的提示信息
     //添加画图的提示信息
     window.L.drawLocal.draw.toolbar = {
     window.L.drawLocal.draw.toolbar = {
@@ -563,16 +599,16 @@ export default {
     },
     },
     /** ----------------------------------火势蔓延  结束------------------------------------- */
     /** ----------------------------------火势蔓延  结束------------------------------------- */
     /** ----------------------------------热力图  结束------------------------------------- */
     /** ----------------------------------热力图  结束------------------------------------- */
-    loadHeatMap: async function() {
+    loadHeatMap: async function(points) {
       var heatNumbers = 150, heatRadius = 30
       var heatNumbers = 150, heatRadius = 30
       var num = parseInt(heatNumbers)
       var num = parseInt(heatNumbers)
       num = (num > 0) ? num : 0
       num = (num > 0) ? num : 0
       var radius = parseInt(heatRadius)
       var radius = parseInt(heatRadius)
       radius = (radius > 0) ? radius : 0
       radius = (radius > 0) ? radius : 0
-      var heatPoints = []
-      for (var i = 0; i < num; i++) {
-        heatPoints[i] = [Math.random() * 0.28 + 42, Math.random() * 0.5 + 125, Math.random() * 80]
-      }
+      var heatPoints = points
+      // for (var i = 0; i < num; i++) {
+      //   heatPoints[i] = [Math.random() * 0.28 + 42, Math.random() * 0.5 + 125, Math.random() * 80]
+      // }
       var resultLayer = window.L.heatLayer(heatPoints, {
       var resultLayer = window.L.heatLayer(heatPoints, {
         radius: radius,
         radius: radius,
         minOpacity: 0.5
         minOpacity: 0.5
@@ -669,6 +705,7 @@ export default {
           return
           return
         }
         }
         getSuperMap(this.codes).then(resp => {
         getSuperMap(this.codes).then(resp => {
+
           let mapList = resp.data
           let mapList = resp.data
           if (mapList != null && mapList.length > 0) {
           if (mapList != null && mapList.length > 0) {
             let url = mapList[0].url
             let url = mapList[0].url
@@ -1033,7 +1070,7 @@ export default {
         })
         })
         let markerClick = window.L.marker([markersList[i].lat, markersList[i].lng], {
         let markerClick = window.L.marker([markersList[i].lat, markersList[i].lng], {
           icon: icon
           icon: icon
-        })
+        }).addTo(this.map)
         if (markersList[i].bindPopupHtml != null && markersList[i].bindPopupHtml !== '') {
         if (markersList[i].bindPopupHtml != null && markersList[i].bindPopupHtml !== '') {
           let html = markersList[i].bindPopupHtml
           let html = markersList[i].bindPopupHtml
           if (keepBindPopup) {
           if (keepBindPopup) {
@@ -1187,13 +1224,13 @@ export default {
       }
       }
     },
     },
     dropLocation: function(lat, lng) { //落点定位
     dropLocation: function(lat, lng) { //落点定位
-
-      this.map.flyTo([lat, lng], 14, { duration: 2 })
-
-      // this.controlLevel(12)
-      // setTimeout(() => {
-      //   this.map.panTo([lat, lng])
-      // }, 1000)
+      this.map.flyTo([lat, lng], 13, { duration: 2 })
+    },
+    dropLocation10: function(lat, lng) { //落点定位
+      this.map.flyTo([lat, lng], 10, { duration: 2 })
+    },
+    dropLocation5: function(lat, lng) { //落点定位
+      this.map.flyTo([lat, lng], 5, { duration: 2 })
     },
     },
     controlLevel: function(level) { //控制地图缩放级别
     controlLevel: function(level) { //控制地图缩放级别
       this.map.setZoom(level)
       this.map.setZoom(level)
@@ -1228,24 +1265,29 @@ export default {
     PlottingDrawCancel: function() {
     PlottingDrawCancel: function() {
       this.plottingdrawControl.handler.disable()
       this.plottingdrawControl.handler.disable()
     },
     },
+    getspuerMapHost(){
+      selectConfigKey('superMap.iserver.plot').then(res => {
+        this.host = res.data;
+      })
+    },
     dynamicPlotting: function() {
     dynamicPlotting: function() {
       setTimeout(() => {
       setTimeout(() => {
-        var host = 'https://iserver.supermap.io'
-        var serverUrl = host + '/iserver/services/plot-jingyong/rest/plot/'
+          var host = this.host
+          var serverUrl = host + '/iserver/services/plot-jingyong/rest/plot/'
 
 
-        var me = this
-        this.plottingLayer = window.L.supermap.plotting.plottingLayer('plot',
-          serverUrl)
-        this.plottingLayer.spatialAnalystUrl =
-          host + '/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst'
-        this.plottingLayer.addTo(this.map)
-        this.plottingdrawControl = window.L.supermap.plotting.drawControl(this
-          .plottingLayer)
-        this.plottingdrawControl.addTo(this.map)
-        var editControl = window.L.supermap.plotting.editControl()
-        editControl.addTo(this.map)
-        window.L.supermap.plotting.initPlotPanel('plotPanel', serverUrl, this
-          .plottingdrawControl)
+          var me = this
+          this.plottingLayer = window.L.supermap.plotting.plottingLayer('plot',
+            serverUrl)
+          this.plottingLayer.spatialAnalystUrl =
+            host + '/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst'
+          this.plottingLayer.addTo(this.map)
+          this.plottingdrawControl = window.L.supermap.plotting.drawControl(this
+            .plottingLayer)
+          this.plottingdrawControl.addTo(this.map)
+          var editControl = window.L.supermap.plotting.editControl()
+          editControl.addTo(this.map)
+          window.L.supermap.plotting.initPlotPanel('plotPanel', serverUrl, this
+            .plottingdrawControl)
       }, 2000)
       }, 2000)
     }
     }
     /** ----------------------------------动态绘制结束------------------------------------- */
     /** ----------------------------------动态绘制结束------------------------------------- */
@@ -1266,6 +1308,8 @@ export default {
 		align-items: center;
 		align-items: center;
 		.input-group-addon{
 		.input-group-addon{
 			color: $inBlue;
 			color: $inBlue;
+			width: 3rem;
+			text-align: right;
 
 
 		}
 		}
 		.form-control{
 		.form-control{

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1228 - 1186
src/components/vBottomMenu.vue


+ 367 - 150
src/views/eventdetailsdialog.vue

@@ -28,7 +28,7 @@
                       </el-carousel-item>
                       </el-carousel-item>
                     </el-carousel>
                     </el-carousel>
                   </div>
                   </div>
-                  <el-button size="mini" type="primary" @click="showUpdateYjYuAn">预案调整
+                  <el-button size="mini" type="primary" class="yatz_button" @click="showUpdateYjYuAn">预案调整
                   </el-button>
                   </el-button>
                 </div>
                 </div>
                 <!-- 应急预案end -->
                 <!-- 应急预案end -->
@@ -48,8 +48,10 @@
                           <el-input type="number" v-model="radius" style="width: 80px;" placeholder="请输入搜索半径"/>
                           <el-input type="number" v-model="radius" style="width: 80px;" placeholder="请输入搜索半径"/>
                         </div>
                         </div>
                       </div>
                       </div>
+
                     </dv-border-box-7>
                     </dv-border-box-7>
                   </div>
                   </div>
+
                 </div>
                 </div>
                 <!-- 左侧资源end -->
                 <!-- 左侧资源end -->
                 <!-- 底部工具栏 -->
                 <!-- 底部工具栏 -->
@@ -156,7 +158,7 @@
                                 </el-button>
                                 </el-button>
                               </div>
                               </div>
                               <div class="z-info-btm-grp-right">
                               <div class="z-info-btm-grp-right">
-                                <el-button size="small" icon="el-icon-mic">会议
+                                <el-button size="small" icon="el-icon-mic" @click="joinMeeting()">会议
                                 </el-button>
                                 </el-button>
                               </div>
                               </div>
                             </div>
                             </div>
@@ -168,6 +170,27 @@
                                 <div style="text-align:left">
                                 <div style="text-align:left">
                                   <el-button size="small"
                                   <el-button size="small"
                                              icon="el-icon-s-flag"
                                              icon="el-icon-s-flag"
+                                             @click="updateCentereventTEventcatalogueStatus('qr',true)">
+                                    确认
+                                  </el-button>
+                                  <el-button size="small"
+                                             icon="el-icon-question"
+                                             @click="updateCentereventTEventcatalogueStatus('wb',false)">
+                                    误报
+                                  </el-button>
+                                  <el-button size="small"
+                                             icon="el-icon-warning"
+                                             @click="updateCentereventTEventcatalogueStatus('cf',false)">
+                                    重复
+                                  </el-button>
+                                </div>
+                                <el-button size="small" icon="el-icon-chat-dot-square" @click="sendEventLog()">发送
+                                </el-button>
+                              </div>
+                              <div class="z-info-btm-input-btn" v-else-if="eventStatusValue=='forest_event_status_7'">
+                                <div style="text-align:left">
+                                  <el-button size="small"
+                                             icon="el-icon-s-flag"
                                              @click="updateCentereventTEventcatalogueStatus('qs',false)">
                                              @click="updateCentereventTEventcatalogueStatus('qs',false)">
                                     签收
                                     签收
                                   </el-button>
                                   </el-button>
@@ -296,7 +319,7 @@
             v-model="filterText">
             v-model="filterText">
           </el-input>
           </el-input>
           <el-tree
           <el-tree
-            class="tree-border"
+            class="tree-border tree_scroll"
             style="height: 20vh; overflow-y:scroll"
             style="height: 20vh; overflow-y:scroll"
             :data="deptOptionsLiandong"
             :data="deptOptionsLiandong"
             show-checkbox
             show-checkbox
@@ -320,15 +343,18 @@
             />
             />
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="联系人" v-if="eventStatusButton=='qs'">
-          <el-select multiple collapse-tags v-model='sendUserFegin' placeholder='请选择联系人!' clearable>
-            <el-option
-              v-for="item in userFeginList"
-              :label="item.nickName"
-              :value="item.phonenumber"
-            />
-          </el-select>
-        </el-form-item>
+        <!--<el-form-item label="联系人" v-if="eventStatusButton=='qs'">-->
+          <!--<el-select multiple collapse-tags v-model='sendUserFegin' placeholder='请选择联系人!' clearable filterable>-->
+            <!--<el-option-->
+              <!--v-for="item in userFeginList"-->
+              <!--:label="item.nickName"-->
+              <!--:value="item.phonenumber"-->
+            <!--/>-->
+          <!--</el-select>-->
+        <!--</el-form-item>-->
+        <el-button size="mini" type="primary" v-if="eventStatusButton=='qr'"
+                   @click="updateCentereventTEventcatalogueStatus('qr',false)">确认
+        </el-button>
         <el-button size="mini" type="primary" v-if="eventStatusButton=='qs'"
         <el-button size="mini" type="primary" v-if="eventStatusButton=='qs'"
                    @click="updateCentereventTEventcatalogueStatus('qs',true)">签收
                    @click="updateCentereventTEventcatalogueStatus('qs',true)">签收
         </el-button>
         </el-button>
@@ -344,7 +370,7 @@
       </el-form>
       </el-form>
     </el-dialog>
     </el-dialog>
     <el-dialog title="调整预案" :visible.sync="showGuanLianYuAnConfirm" v-if="showGuanLianYuAnConfirm" width="50%"
     <el-dialog title="调整预案" :visible.sync="showGuanLianYuAnConfirm" v-if="showGuanLianYuAnConfirm" width="50%"
-               class="top-dialog">
+               class="top-dialog tz_tk">
       <el-form label-width="80px">
       <el-form label-width="80px">
         <el-form-item label="关联预案">
         <el-form-item label="关联预案">
           <el-select v-model="sendGuanLianYuAn" placeholder="请选择关联预案!" clearable>
           <el-select v-model="sendGuanLianYuAn" placeholder="请选择关联预案!" clearable>
@@ -356,8 +382,9 @@
             />
             />
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
-        <el-button size="mini" type="primary" @click="updateYjYuAn">确定
+        <el-button size="mini" type="primary" class="fr_button" @click="updateYjYuAn">确定
         </el-button>
         </el-button>
+        <div style="clear: both;"></div>
       </el-form>
       </el-form>
     </el-dialog>
     </el-dialog>
     <el-dialog title="责任制" :visible.sync="showResponsibilityDialog" v-if="showResponsibilityDialog" width="65%"
     <el-dialog title="责任制" :visible.sync="showResponsibilityDialog" v-if="showResponsibilityDialog" width="65%"
@@ -369,7 +396,7 @@
             <div class="leftItem d-l-con padding-box nowrap" v-for="(item,index) in depteventList">
             <div class="leftItem d-l-con padding-box nowrap" v-for="(item,index) in depteventList">
               <div class="bgt-info">
               <div class="bgt-info">
                 <div class="bgt-info-name" :class="{on:iconCurrentIndex==item.deptId}"
                 <div class="bgt-info-name" :class="{on:iconCurrentIndex==item.deptId}"
-                     @click="dutysystemSelect(item.deptId,item.deptName,item.id)">{{item.deptName}}
+                     @click="dutysystemSelect(item.deptId,item.deptName,item.id)">{{ item.deptName }}
                 </div>
                 </div>
               </div>
               </div>
             </div>
             </div>
@@ -382,9 +409,16 @@
               v-if="depteventId!=null&&depteventId!=''"
               v-if="depteventId!=null&&depteventId!=''"
               @click="addLine">添加
               @click="addLine">添加
             </el-button>
             </el-button>
+            <el-button
+              size="mini"
+              type="danger"
+              v-if="depteventId!=null&&depteventId!=''"
+              @click="finUserByDept">选择
+            </el-button>
             <el-table
             <el-table
               :data="dutysystemTableData"
               :data="dutysystemTableData"
-              style="width: 100%">
+              style="width: 100%"
+              :rules="rules">
               <el-table-column prop="id" label="主键" v-if="false">
               <el-table-column prop="id" label="主键" v-if="false">
                 <template slot-scope="scope" hidden>
                 <template slot-scope="scope" hidden>
                   <el-input v-model="scope.row.id" readonly placeholder="主键"></el-input>
                   <el-input v-model="scope.row.id" readonly placeholder="主键"></el-input>
@@ -392,7 +426,7 @@
               </el-table-column>
               </el-table-column>
               <el-table-column prop="name" label="姓名">
               <el-table-column prop="name" label="姓名">
                 <template slot-scope="scope">
                 <template slot-scope="scope">
-                  <el-input v-model="scope.row.name" placeholder="姓名"></el-input>
+                  <el-input v-model="scope.row.name" placeholder="姓名" οninput="value=value.replace(/^[\u4e00-\u9fa5]{2,4}$/,'')"></el-input>
                 </template>
                 </template>
               </el-table-column>
               </el-table-column>
               <el-table-column prop="post" label="岗位">
               <el-table-column prop="post" label="岗位">
@@ -402,7 +436,7 @@
               </el-table-column>
               </el-table-column>
               <el-table-column prop="telphone" label="手机号码">
               <el-table-column prop="telphone" label="手机号码">
                 <template slot-scope="scope">
                 <template slot-scope="scope">
-                  <el-input v-model="scope.row.telphone" placeholder="手机号码"></el-input>
+                  <el-input v-model="scope.row.telphone" placeholder="手机号码" οninput="value=value.replace(/^((13[0-9])|(14[5-9])|(15([0-3]|[5-9]))|(16[6-7])|(17[1-8])|(18[0-9])|(19[1|3])|(19[5|6])|(19[8|9]))\d{8}$/,'')"></el-input>
                 </template>
                 </template>
               </el-table-column>
               </el-table-column>
               <el-table-column prop="bookbuytime" label="操作">
               <el-table-column prop="bookbuytime" label="操作">
@@ -413,18 +447,18 @@
                     icon="el-icon-delete"
                     icon="el-icon-delete"
                     @click="handleDelete(scope.$index, scope.row)">删除
                     @click="handleDelete(scope.$index, scope.row)">删除
                   </el-button>
                   </el-button>
-                  <el-button
-                    size="mini"
-                    type="danger"
-                    icon="el-icon-save"
-                    @click="handleSave(scope.$index, scope.row)">保存
-                  </el-button>
+                  <!--<el-button-->
+                    <!--size="mini"-->
+                    <!--type="danger"-->
+                    <!--icon="el-icon-save"-->
+                    <!--@click="handleSave(scope.$index, scope.row)">保存-->
+                  <!--</el-button>-->
                 </template>
                 </template>
               </el-table-column>
               </el-table-column>
             </el-table>
             </el-table>
           </div>
           </div>
         </div>
         </div>
-        <el-button size="mini" type="primary" class="fr_button" @click="closeResponsibilityDialog">确定
+        <el-button size="mini" type="primary" class="fr_button" @click="addResponsibilityDialog">确定
         </el-button>
         </el-button>
         <div style="clear: both;"></div>
         <div style="clear: both;"></div>
       </el-form>
       </el-form>
@@ -940,6 +974,9 @@
         <div id="playWnd" class="playWnd" style="left: 0px; top: 0px;"></div>
         <div id="playWnd" class="playWnd" style="left: 0px; top: 0px;"></div>
       </div>
       </div>
     </el-dialog>
     </el-dialog>
+    <el-dialog title="人员选择" :visible.sync="showFindUserByDept" width="40%">
+      <findUserByDept v-if="showFindUserByDept" ref="findUserByDept" :deptId="iconCurrentIndex" @addSelection="addSelection"></findUserByDept>
+    </el-dialog>
   </div>
   </div>
 </template>
 </template>
 
 
@@ -951,6 +988,7 @@ import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部
 import eventLogUpload from '@/views/eventLogUpload.vue' //日志上传文件
 import eventLogUpload from '@/views/eventLogUpload.vue' //日志上传文件
 import areaSupermap from '@/components/supermap'//区域标记地图
 import areaSupermap from '@/components/supermap'//区域标记地图
 import TcPlayer from '@/components/TcPlayer' //视频预览
 import TcPlayer from '@/components/TcPlayer' //视频预览
+import findUserByDept from '@/views/findUserByDept' //责任人选择弹框
 import {
 import {
   getEventDetail,
   getEventDetail,
   sendEventLog,
   sendEventLog,
@@ -974,7 +1012,14 @@ import {
 import {
 import {
   getHaiKangVideoServer
   getHaiKangVideoServer
 } from '@/api/haikang/haikang'
 } from '@/api/haikang/haikang'
-
+import {
+  hasConferences,
+  createConferences, getUserInfo
+} from "@/api/meeting"
+import {
+  getDahuaVideoServer
+} from '@/api/dahua/dahua'
+import DHWs from '@/dahua/lib/DHWs'
 export default {
 export default {
   dicts: ['task_source'],
   dicts: ['task_source'],
   watch: {
   watch: {
@@ -988,12 +1033,15 @@ export default {
     supermapDialog,
     supermapDialog,
     eventLogUpload,
     eventLogUpload,
     areaSupermap,
     areaSupermap,
-    TcPlayer
+    TcPlayer,
+    findUserByDept
   },
   },
   data() {
   data() {
     return {
     return {
+      showFindUserByDept: false,//责任人选择框
       //海康
       //海康
       cameraTitle: '',
       cameraTitle: '',
+      cameraCode:'',
       cameraVisible: false,
       cameraVisible: false,
       initCount: 0,
       initCount: 0,
       pubKey: '',
       pubKey: '',
@@ -1013,17 +1061,17 @@ export default {
       sendDeptName: null,//签收部门/发起部门
       sendDeptName: null,//签收部门/发起部门
       sendEventType: null,//事件类型
       sendEventType: null,//事件类型
       sendHuoZaiBanJing: null,//火灾报告
       sendHuoZaiBanJing: null,//火灾报告
-      sendUserFegin: [],//联系人
       sendGuanLianYuAn: null,//关联预案
       sendGuanLianYuAn: null,//关联预案
+      sendUserFegin: [],//联系人
       sendTaskSource: null,//任务来源
       sendTaskSource: null,//任务来源
       sendTaskTitle: null,//联动标题
       sendTaskTitle: null,//联动标题
       sendTaskContent: null,//联动内容
       sendTaskContent: null,//联动内容
       sendLianDongDept: [],//联动部门
       sendLianDongDept: [],//联动部门
       eventTypeList: [],//事件类型列表
       eventTypeList: [],//事件类型列表
       guanLianYuAnList: [],//关联预案列表
       guanLianYuAnList: [],//关联预案列表
+      userFeginList: [],//联系人列表
       deptOptions: [],//签收部门
       deptOptions: [],//签收部门
       deptOptionsLiandong: [],//联动部门
       deptOptionsLiandong: [],//联动部门
-      userFeginList: [],//联系人列表
       eventStatusButton: null,//流程按钮标识
       eventStatusButton: null,//流程按钮标识
       eventConfirmTitle: null,//弹窗标题  ---签收 误报  重复
       eventConfirmTitle: null,//弹窗标题  ---签收 误报  重复
       defaultProps: {
       defaultProps: {
@@ -1129,6 +1177,7 @@ export default {
       dataStatus: null,//事件流程按钮
       dataStatus: null,//事件流程按钮
       deptId: null,//事件流程部门
       deptId: null,//事件流程部门
       eventCode: null,
       eventCode: null,
+      eventName: null,
       longitude: null,
       longitude: null,
       latitude: null,
       latitude: null,
       eventLog: null,
       eventLog: null,
@@ -1144,21 +1193,45 @@ export default {
       radius: 50,//资源搜索半径
       radius: 50,//资源搜索半径
       resourcesList: [
       resourcesList: [
         {
         {
-          resourceName: '重点企业',
-          type: 'zdqygl',
+          resourceName: '取水口',
+          type: 'qsk',
+          count: '1',
+          icon: 'sj-icon-waterintake'
+        },
+        {
+          resourceName: '水鹤',
+          type: 'sh',
+          icon: 'sj-icon-watercrane'
+        },
+        {
+          resourceName: '消防栓',
+          type: 'xfs',
+          count: '1',
+          icon: 'sj-icon-firehydrant'
+        },
+        {
+          resourceName: '起降点',
+          type: 'qjd',
+          count: '1',
+          icon: 'sj-icon-landing'
+        },
+        {
+          resourceName: '检查站',
+          type: 'jcz',
           count: '1',
           count: '1',
-          icon: 'sj-icon-enterprise'
+          icon: 'sj-icon-checkpoint'
         },
         },
         {
         {
-          resourceName: '禁烧区',
-          type: 'jsqgl',
-          icon: 'sj-icon-area'
+          resourceName: '防火队',
+          type: 'fhd',
+          count: '1',
+          icon: 'sj-icon-fireteam'
         },
         },
         {
         {
-          resourceName: '污染源',
-          type: 'wrygl',
+          resourceName: '重点区域',
+          type: 'zdqy',
           count: '1',
           count: '1',
-          icon: 'sj-icon-pollution'
+          icon: 'sj-icon-keyAreas'
         },
         },
         {
         {
           resourceName: '摄像头',
           resourceName: '摄像头',
@@ -1169,13 +1242,19 @@ export default {
       ],
       ],
       resourcesListCheck: [],
       resourcesListCheck: [],
       //文本域
       //文本域
-      feedback: ''
+      feedback: '',
 
 
     }
     }
   },
   },
   props: {
   props: {
     calendarDay: null//首页日历选择
     calendarDay: null//首页日历选择
   },
   },
+  created() {
+    /** ----------------------------------摄像头预览开始------------------------------------- */
+    const DHWsInstance = DHWs.getInstance()
+    this.ws = DHWsInstance
+    /** ----------------------------------摄像头预览结束------------------------------------- */
+  },
   methods: {
   methods: {
     /************************************责任制-开始****************************************/
     /************************************责任制-开始****************************************/
     addLine: function() {//添加负责人行数
     addLine: function() {//添加负责人行数
@@ -1190,6 +1269,20 @@ export default {
       //添加新的行数
       //添加新的行数
       this.dutysystemTableData.push(newValue)
       this.dutysystemTableData.push(newValue)
     },
     },
+    finUserByDept: function(){ //根据部门选择责任人
+      this.showFindUserByDept=true;
+    },
+    addSelection: function(userList){
+      for (let i in this.dutysystemTableData) {
+        for (let j in userList) {
+          if(this.dutysystemTableData[i].name == userList[j].name && this.dutysystemTableData[i].telphone == userList[j].telphone){
+            userList.splice(j, 1);
+          }
+        }
+      }
+      this.dutysystemTableData = this.dutysystemTableData.concat(userList);
+      this.showFindUserByDept=false;
+    },
     handleDelete: function(index, row) {//删除负责人行数
     handleDelete: function(index, row) {//删除负责人行数
       if (row.id != null && row.id != '') {
       if (row.id != null && row.id != '') {
         let param = { ids: row.id }
         let param = { ids: row.id }
@@ -1228,8 +1321,8 @@ export default {
           }]
           }]
         }
         }
       })
       })
-
     },
     },
+
     showResponsibility() {//弹出责任制弹窗
     showResponsibility() {//弹出责任制弹窗
       let param = { eventCode: this.eventCode }
       let param = { eventCode: this.eventCode }
       centereventtdepteventList(param).then(res => {
       centereventtdepteventList(param).then(res => {
@@ -1244,8 +1337,39 @@ export default {
       this.iconCurrentIndex = ''
       this.iconCurrentIndex = ''
       this.showResponsibilityDialog = false
       this.showResponsibilityDialog = false
     },
     },
+    addResponsibilityDialog() {//责任制保存
+      let reg_user = /^[\u4e00-\u9fa5]{2,4}$/;    //2-4个中文字符正则
+      let reg_tel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;    //11位手机号码正则
+      for(let i in this.dutysystemTableData){
+        if(!reg_user.test(this.dutysystemTableData[i].name)){
+          this.$message.error(`请输入正确姓名!`)
+          return;
+        }
+        if(!reg_tel.test(this.dutysystemTableData[i].telphone)){
+          this.$message.error(`请输入正确手机号码!`)
+          return;
+        }
+
+        if(this.dutysystemTableData[i].id==null || this.dutysystemTableData[i].id==''){
+          this.dutysystemTableData[i].dept = this.dutysystemDeptName;
+          this.dutysystemTableData[i].depteventId = this.depteventId;
+        }
+      }
+      const param = {centereventTDutySystemList:this.dutysystemTableData,eventCode:this.eventCode,eventName:this.eventName}
+      dutysystemAdd(param).then(res => {
+        this.$message.success(`保存成功!`)
+        this.dutysystemSelect(this.iconCurrentIndex, this.dutysystemDeptName, this.depteventId);
+        this.closeResponsibilityDialog();
+      })
+    },
     /************************************责任制-结束****************************************/
     /************************************责任制-结束****************************************/
     showheatPlotting() {
     showheatPlotting() {
+      // if (!this.$refs.supermapDialog.isheatPlotting) {
+      //   this.$refs.supermapDialog.showheatPlotting(this.latitude, this.longitude)
+      // } else {
+      //   this.$refs.supermapDialog.isheatPlotting = false
+      // }
+      // this.cancelEventShow();
       this.eventDialog = false;
       this.eventDialog = false;
       this.$emit('getFirespread', this.eventCode);
       this.$emit('getFirespread', this.eventCode);
     },
     },
@@ -1259,16 +1383,21 @@ export default {
       })
       })
     },
     },
     updateYjYuAn() {
     updateYjYuAn() {
-      let param = { eventCode: this.eventCode, reserve: this.sendGuanLianYuAn }
-      updateYjYuAn(param).then(res => {
-        //事件调整关联预案
-        if (res.code == 200) {
-          this.$message.success(`预案调整成功!`)
-          this.refreshEventDialog(this.eventCode)
-          this.sendGuanLianYuAn = null
-          this.showGuanLianYuAnConfirm = false
-        }
-      })
+      if(this.eventStatusValue=='forest_event_status_1'){
+        this.$message.error(`未签收事件无法修改预案信息,请先签收!`)
+        return
+      }else{
+        let param = { eventCode: this.eventCode, reserve: this.sendGuanLianYuAn }
+        updateYjYuAn(param).then(res => {
+          //事件调整关联预案
+          if (res.code == 200) {
+            this.$message.success(`预案调整成功!`)
+            this.refreshEventDialog(this.eventCode)
+            this.sendGuanLianYuAn = null
+            this.showGuanLianYuAnConfirm = false
+          }
+        })
+      }
     },
     },
     listResourceByWz(type) {
     listResourceByWz(type) {
       if (this.resourcesListCheck.indexOf(type) > -1) {
       if (this.resourcesListCheck.indexOf(type) > -1) {
@@ -1297,17 +1426,27 @@ export default {
               if (res.data.length > 50) {
               if (res.data.length > 50) {
                 markersMap.isAggregation = true
                 markersMap.isAggregation = true
               }
               }
-              if (type == 'zdqygl') {
-                markersMap.icon = 'sj-icon-map-centerdata-t-environment-key-enterprise'
-              } else if (type == 'jsqgl') {
-                markersMap.icon = 'sj-icon-map-centerdata-t-environment-prohibition-area'
-              } else if (type == 'wrygl') {
-                markersMap.icon = 'sj-icon-map-centerdata-t-environment-source-pollution'
-              }else if (type == 'sxt') {
+              if (type == 'qsk') {
+                markersMap.icon = 'sj-icon-waterintake'
+              } else if (type == 'sh') {
+                markersMap.icon = 'sj-icon-watercrane'
+              } else if (type == 'xfs') {
+                markersMap.icon = 'sj-icon-firehydrant'
+              } else if (type == 'qjd') {
+                markersMap.icon = 'sj-icon-landing'
+              } else if (type == 'jcz') {
+                markersMap.icon = 'sj-icon-checkpoint'
+              } else if (type == 'fhd') {
+                markersMap.icon = 'sj-icon-fireteam'
+              } else if (type == 'zdqy') {
+                markersMap.icon = 'sj-icon-keyAreas'
+              } else if (type == 'sxt') {
                 markersMap.icon = 'camera'
                 markersMap.icon = 'camera'
                 if (res.data[i].cameraCode != null) {
                 if (res.data[i].cameraCode != null) {
                   markersMap.click = 'preview'
                   markersMap.click = 'preview'
-                  markersMap.parameter = res.data[i].cameraCode
+                  // markersMap.parameter = res.data[i].cameraCode
+                  markersMap.parameter = {code:res.data.data[i].cameraCode,
+                    type:res.data.data[i].cameraFactory}
                 }
                 }
               }
               }
               markersMap.lng = res.data[i].longitude
               markersMap.lng = res.data[i].longitude
@@ -1367,10 +1506,10 @@ export default {
       //关闭事件签收弹窗
       //关闭事件签收弹窗
       this.sendDeptId = null
       this.sendDeptId = null
       this.sendDeptName = null
       this.sendDeptName = null
+      this.sendUserFegin = []
       this.sendEventType = null
       this.sendEventType = null
       this.sendHuoZaiBanJing = null
       this.sendHuoZaiBanJing = null
       this.sendGuanLianYuAn = null
       this.sendGuanLianYuAn = null
-      this.sendUserFegin = []
       this.longitude = null
       this.longitude = null
       this.latitude = null
       this.latitude = null
       this.sendTaskTitle = null
       this.sendTaskTitle = null
@@ -1390,10 +1529,10 @@ export default {
       //清空表单数据
       //清空表单数据
       this.sendDeptId = null
       this.sendDeptId = null
       this.sendDeptName = null
       this.sendDeptName = null
+      this.sendUserFegin = []
       this.sendEventType = null
       this.sendEventType = null
       this.sendHuoZaiBanJing = null
       this.sendHuoZaiBanJing = null
       this.sendGuanLianYuAn = null
       this.sendGuanLianYuAn = null
-      this.sendUserFegin = []
       this.sendTaskTitle = null
       this.sendTaskTitle = null
       this.sendTaskSource = null
       this.sendTaskSource = null
       this.sendTaskContent = null
       this.sendTaskContent = null
@@ -1512,7 +1651,7 @@ export default {
      * */
      * */
     async updateCentereventTEventcatalogueStatus(eventStatus, isSend) {
     async updateCentereventTEventcatalogueStatus(eventStatus, isSend) {
       this.eventStatusButton = eventStatus
       this.eventStatusButton = eventStatus
-      let that = this
+      let that=this
       if (!isSend) {//事件弹窗
       if (!isSend) {//事件弹窗
         if (eventStatus == 'qs') {//签收
         if (eventStatus == 'qs') {//签收
           that.eventConfirmTitle = '事件签收'
           that.eventConfirmTitle = '事件签收'
@@ -1529,12 +1668,6 @@ export default {
               that.guanLianYuAnList = res.data
               that.guanLianYuAnList = res.data
             }
             }
           })
           })
-          await userFeginlist().then(res => {
-            //联系人列表
-            if (res.code == 200) {
-              that.userFeginList = res.data
-            }
-          })
           await selectByeventCode(that.eventCode).then(res => {
           await selectByeventCode(that.eventCode).then(res => {
             //签收部门
             //签收部门
             if (res.code == 200) {
             if (res.code == 200) {
@@ -1543,6 +1676,8 @@ export default {
             }
             }
           })
           })
           that.showEventConfirm = true
           that.showEventConfirm = true
+        } else if (eventStatus == 'qr') {//确认
+          that.eventConfirmTitle = '事件确认'
         } else if (eventStatus == 'wb') {//误报
         } else if (eventStatus == 'wb') {//误报
           that.eventConfirmTitle = '事件误报'
           that.eventConfirmTitle = '事件误报'
           await selectByeventCode(that.eventCode).then(res => {
           await selectByeventCode(that.eventCode).then(res => {
@@ -1630,6 +1765,30 @@ export default {
           })
           })
 
 
         } else if (eventStatus == 'gd') {
         } else if (eventStatus == 'gd') {
+          let double = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;    //数字和两位小数
+          let number = /^[+]{0,1}(\d+)$/g;    //正整数
+
+          if(!double.test(that.table2.areaTotal)){
+            that.$message.error(`面积只能填写到小数后两位!`)
+            return
+          }
+          if(!number.test(that.table2.peopleTotal)){
+            that.$message.error(`人员请填写正整数!`)
+            return
+          }
+          if(that.table2.forestComposition == '' || that.table2.forestComposition==null){
+            that.$message.error(`林木组成不能为空!`)
+            return
+          }
+          if(that.table2.forestToken == '' || that.table2.forestToken==null){
+            that.$message.error(`林令不能为空!`)
+            return
+          }
+            if(that.table2.porosities == '' || that.table2.porosities==null){
+            that.$message.error(`疏密度不能为空!`)
+            return
+          }
+
           //事件处理流程--归档
           //事件处理流程--归档
           let param = {
           let param = {
             deptId: that.deptId,
             deptId: that.deptId,
@@ -1647,8 +1806,8 @@ export default {
               that.refreshEvent(that.eventCode)
               that.refreshEvent(that.eventCode)
               that.cancelEventConfirm_send()
               that.cancelEventConfirm_send()
               that.showEventConfirm_gd = false
               that.showEventConfirm_gd = false
-              that.$emit('getEventList', that.calendarDay)
-              that.$emit('getTodayEvents', that.calendarDay)
+              that.$emit('getEventList', that.calendarDay,10,1)
+              that.$emit('getSupermap', that.calendarDay)
             }
             }
           })
           })
         } else {
         } else {
@@ -1657,12 +1816,22 @@ export default {
               that.$message.error(`请选择部门!`)
               that.$message.error(`请选择部门!`)
               return
               return
             }
             }
+            if (eventStatus == 'qs') {
+              if (that.sendHuoZaiBanJing == '' || that.sendHuoZaiBanJing == null) {
+                that.$message.error(`请输入火灾半径!`)
+                return
+              }
+              if (that.sendEventType == '' || that.sendEventType == null) {
+                that.$message.error(`请选择事件类型!`)
+                return
+              }
+            }
           } else {
           } else {
             that.sendDeptId = that.deptId
             that.sendDeptId = that.deptId
           }
           }
           //事件处理流程
           //事件处理流程
           let param = {
           let param = {
-            phones: that.sendUserFegin,
+            phones:that.sendUserFegin,
             eventCode: that.eventCode,
             eventCode: that.eventCode,
             deptId: that.sendDeptId,
             deptId: that.sendDeptId,
             deptName: that.sendDeptName,
             deptName: that.sendDeptName,
@@ -1670,6 +1839,7 @@ export default {
             eventType: that.sendEventType,
             eventType: that.sendEventType,
             id: that.eventId,
             id: that.eventId,
             czlx: '',
             czlx: '',
+            cameraCode: that.cameraCode,
             fireRadius: that.sendHuoZaiBanJing,
             fireRadius: that.sendHuoZaiBanJing,
             reserve: that.sendGuanLianYuAn
             reserve: that.sendGuanLianYuAn
           }
           }
@@ -1679,8 +1849,8 @@ export default {
               that.refreshEvent(that.eventCode)
               that.refreshEvent(that.eventCode)
               that.cancelEventConfirm_send()
               that.cancelEventConfirm_send()
               that.showEventConfirm = false
               that.showEventConfirm = false
-              that.$emit('getEventList', that.calendarDay)
-              that.$emit('getTodayEvents', that.calendarDay)
+              that.$emit('getEventList', that.calendarDay,10,1)
+              that.$emit('getSupermap', that.calendarDay)
             }
             }
           })
           })
         }
         }
@@ -1693,12 +1863,7 @@ export default {
     },
     },
     sendEventLog() {
     sendEventLog() {
       //日志发送
       //日志发送
-      let param = {
-        eventCode: this.eventCode,
-        logContent: this.eventLog,
-        operation: 'bus_oper_type_2',
-        operationType: 'log_oper_type_1'
-      }
+      let param = { eventCode: this.eventCode, logContent: this.eventLog,operation:"bus_oper_type_2",operationType:"log_oper_type_1"}
       sendEventLog(param).then(res => {
       sendEventLog(param).then(res => {
         if (res.code == 200) {
         if (res.code == 200) {
           this.$message.success(`发送成功!`)
           this.$message.success(`发送成功!`)
@@ -1711,9 +1876,9 @@ export default {
       this.$refs.eventLogUpload.eventLogUpload(this.eventCode)
       this.$refs.eventLogUpload.eventLogUpload(this.eventCode)
     },
     },
     cancelEventShow() {
     cancelEventShow() {
-      console.log('关闭事件弹窗')
       this.dataStatus = null
       this.dataStatus = null
       this.deptId = null
       this.deptId = null
+      console.log('关闭事件弹窗')
       this.eventLogList = []
       this.eventLogList = []
     },
     },
     showEventDialog(eventCode) {
     showEventDialog(eventCode) {
@@ -1721,17 +1886,18 @@ export default {
       let that = this
       let that = this
       //获取事件详情
       //获取事件详情
       getEventDetail({ eventCode: eventCode }).then(res => {
       getEventDetail({ eventCode: eventCode }).then(res => {
-        this.eventDialog = true
-        this.eventLogList = res.data.eventlog//日志列表
-        this.visuForestCloudYuAnBo = res.data.visuForestCloudYuAnBo//应急预案
-        this.address = res.data.catalogue.address
-        this.eventStatusValue = res.data.catalogue.eventStatusValue
-        this.eventType = res.data.catalogue.eventType
-        this.dataStatus = res.data.catalogue.dataStatus
-        this.deptId = res.data.catalogue.deptId
-        this.eventId = res.data.catalogue.id
-        this.longitude = res.data.catalogue.longitude
-        this.latitude = res.data.catalogue.latitude
+        that.eventDialog = true
+        that.eventLogList = res.data.eventlog//日志列表
+        that.visuForestCloudYuAnBo = res.data.visuForestCloudYuAnBo//应急预案
+        that.address = res.data.catalogue.address
+        that.eventStatusValue = res.data.catalogue.eventStatusValue
+        that.eventType = res.data.catalogue.eventType
+        that.dataStatus = res.data.catalogue.dataStatus
+        that.deptId = res.data.catalogue.deptId
+        that.eventId = res.data.catalogue.id
+        that.longitude = res.data.catalogue.longitude
+        that.latitude = res.data.catalogue.latitude
+        that.eventName = res.data.catalogue.eventName
         let markersMap = {
         let markersMap = {
           lng: 124.59,
           lng: 124.59,
           lat: 43.02,
           lat: 43.02,
@@ -1754,6 +1920,8 @@ export default {
           markersMap.icon = 'sj-icon-map-banjie'
           markersMap.icon = 'sj-icon-map-banjie'
         } else if (res.data.catalogue.eventStatusValue == 'forest_event_status_6') {
         } else if (res.data.catalogue.eventStatusValue == 'forest_event_status_6') {
           markersMap.icon = 'sj-icon-map-guidang'
           markersMap.icon = 'sj-icon-map-guidang'
+        } else if (res.data.catalogue.eventStatusValue == 'forest_event_status_7') {
+          markersMap.icon = 'sj-icon-map-queren'
         }
         }
         markersMap.lng = res.data.catalogue.longitude
         markersMap.lng = res.data.catalogue.longitude
         markersMap.lat = res.data.catalogue.latitude
         markersMap.lat = res.data.catalogue.latitude
@@ -1764,16 +1932,17 @@ export default {
           that.$refs.supermapDialog.dynamicPlotting()//弹出动态绘制窗口,防止截图位置改变
           that.$refs.supermapDialog.dynamicPlotting()//弹出动态绘制窗口,防止截图位置改变
           that.$refs.supermapDialog.clearM(false)
           that.$refs.supermapDialog.clearM(false)
           that.$refs.supermapDialog.setMarkersRadius([markersMap])
           that.$refs.supermapDialog.setMarkersRadius([markersMap])
-          that.$refs.supermapDialog.dropLocation(res.data.catalogue.latitude, res.data.catalogue.longitude)
+          that.$refs.supermapDialog.dropLocation10(res.data.catalogue.latitude, res.data.catalogue.longitude)
         }, 2000)
         }, 2000)
         if (res.data.centermonitorTCamera != null) {
         if (res.data.centermonitorTCamera != null) {
+          that.cameraCode = res.data.centermonitorTCamera.cameraCode;
           let markersMap = {
           let markersMap = {
             lng: 124.59,
             lng: 124.59,
             lat: 43.02,
             lat: 43.02,
             icon: 'camera',
             icon: 'camera',
             bindPopupHtml: '',
             bindPopupHtml: '',
             click: 'preview',
             click: 'preview',
-            parameter: res.data.centermonitorTCamera.cameraCode,
+            parameter: {code:res.data.centermonitorTCamera.cameraCode,type:res.data.centermonitorTCamera.cameraFactory},
             keepBindPopup: false,
             keepBindPopup: false,
             isAggregation: false,
             isAggregation: false,
             radius: 0
             radius: 0
@@ -1801,17 +1970,18 @@ export default {
       let that = this
       let that = this
       //刷新--事件详情
       //刷新--事件详情
       getEventDetail({ eventCode: eventCode }).then(res => {
       getEventDetail({ eventCode: eventCode }).then(res => {
-        this.eventDialog = true
-        this.eventLogList = res.data.eventlog
-        this.visuForestCloudYuAnBo = res.data.visuForestCloudYuAnBo//应急预案
-        this.address = res.data.catalogue.address
-        this.eventStatusValue = res.data.catalogue.eventStatusValue
-        this.eventType = res.data.catalogue.eventType
-        this.dataStatus = res.data.catalogue.dataStatus
-        this.deptId = res.data.catalogue.deptId
-        this.eventId = res.data.catalogue.id
-        this.latitude = res.data.catalogue.latitude
-        this.longitude = res.data.catalogue.longitude
+        that.eventDialog = true
+        that.eventLogList = res.data.eventlog
+        that.visuForestCloudYuAnBo = res.data.visuForestCloudYuAnBo//应急预案
+        that.address = res.data.catalogue.address
+        that.eventStatusValue = res.data.catalogue.eventStatusValue
+        that.eventType = res.data.catalogue.eventType
+        that.dataStatus = res.data.catalogue.dataStatus
+        that.deptId = res.data.catalogue.deptId
+        that.eventId = res.data.catalogue.id
+        that.latitude = res.data.catalogue.latitude
+        that.longitude = res.data.catalogue.longitude
+        that.eventName = res.data.catalogue.eventName
         let markersMap = {
         let markersMap = {
           lng: 124.59,
           lng: 124.59,
           lat: 43.02,
           lat: 43.02,
@@ -1834,6 +2004,8 @@ export default {
           markersMap.icon = 'sj-icon-map-banjie'
           markersMap.icon = 'sj-icon-map-banjie'
         } else if (res.data.catalogue.eventStatusValue == 'forest_event_status_6') {
         } else if (res.data.catalogue.eventStatusValue == 'forest_event_status_6') {
           markersMap.icon = 'sj-icon-map-guidang'
           markersMap.icon = 'sj-icon-map-guidang'
+        } else if (res.data.catalogue.eventStatusValue == 'forest_event_status_7') {
+          markersMap.icon = 'sj-icon-map-queren'
         }
         }
         markersMap.lng = res.data.catalogue.longitude
         markersMap.lng = res.data.catalogue.longitude
         markersMap.lat = res.data.catalogue.latitude
         markersMap.lat = res.data.catalogue.latitude
@@ -1847,7 +2019,7 @@ export default {
           } else {
           } else {
             that.$refs.supermapDialog.setMarkers([markersMap])
             that.$refs.supermapDialog.setMarkers([markersMap])
           }
           }
-          that.$refs.supermapDialog.dropLocation(res.data.catalogue.latitude, res.data.catalogue.longitude)
+          that.$refs.supermapDialog.dropLocation10(res.data.catalogue.latitude, res.data.catalogue.longitude)
         }, 2000)
         }, 2000)
         if (res.data.centermonitorTCamera != null) {
         if (res.data.centermonitorTCamera != null) {
           let markersMap = {
           let markersMap = {
@@ -1856,7 +2028,7 @@ export default {
             icon: 'camera',
             icon: 'camera',
             bindPopupHtml: '',
             bindPopupHtml: '',
             click: 'preview',
             click: 'preview',
-            parameter: res.data.centermonitorTCamera.cameraCode,
+            parameter: {code:res.data.centermonitorTCamera.cameraCode,type:res.data.centermonitorTCamera.cameraFactory},
             keepBindPopup: false,
             keepBindPopup: false,
             isAggregation: false,
             isAggregation: false,
             radius: 0
             radius: 0
@@ -1888,6 +2060,7 @@ export default {
     },
     },
     // 页面元素转图片
     // 页面元素转图片
     toImage() {
     toImage() {
+      this.$message.success(`正在上传!请稍后...`)
       // 手动创建一个 canvas 标签
       // 手动创建一个 canvas 标签
       const canvas = document.createElement('canvas')
       const canvas = document.createElement('canvas')
       // 获取父标签,意思是这个标签内的 DOM 元素生成图片
       // 获取父标签,意思是这个标签内的 DOM 元素生成图片
@@ -1915,7 +2088,6 @@ export default {
       html2canvas(canvasBox, options).then((canvas) => {
       html2canvas(canvasBox, options).then((canvas) => {
         // toDataURL 图片格式转成 base64
         // toDataURL 图片格式转成 base64
         let dataBase64 = canvas.toDataURL('image/png')
         let dataBase64 = canvas.toDataURL('image/png')
-        console.log(dataBase64)
         this.uploadBase64(dataBase64)
         this.uploadBase64(dataBase64)
       })
       })
       canvasBox.appendChild(toolbar)
       canvasBox.appendChild(toolbar)
@@ -1934,7 +2106,6 @@ export default {
       this.regionalFlagOpen = true
       this.regionalFlagOpen = true
     },
     },
     showAreaLatLng: function(latlng) {//获取火灾区域经纬度
     showAreaLatLng: function(latlng) {//获取火灾区域经纬度
-      console.log(latlng)
       this.regionalFlagObj.array = latlng
       this.regionalFlagObj.array = latlng
       this.$modal.msgSuccess('获取坐标成功!')
       this.$modal.msgSuccess('获取坐标成功!')
     },
     },
@@ -1961,45 +2132,48 @@ export default {
       }
       }
     },
     },
     /** 预览按钮操作 */
     /** 预览按钮操作 */
-    preview(cameraCode) {
-      let that = this
-      // getDahuaVideoServer().then(newResponse => {
-      //   console.log(newResponse)
-      //   this.ws.detectConnectQt().then(res => {
-      //     if (res) { // 连接客户端成功
-      //       this.alertLogin()
-      //       this.ws.login({
-      //         loginIp: newResponse.loginIp,
-      //         loginPort: newResponse.loginPort,
-      //         userName: newResponse.userName,
-      //         userPwd: newResponse.userPwd,
-      //         token: '',
-      //         https: 1
-      //       })
-      //       this.ws.on('loginState', (res) => {
-      //         this.isLogin = res
-      //         console.log('---res-----', res)
-      //         if (res) {
-      //           this.alertLoginSuccess()
-      //           this.activePanel = 'key2'
-      //           this.realTimeVideoDialog(channelCode)
-      //         } else {
-      //           this.alertLoginFailed()
-      //         }
-      //       })
-      //     } else { // 连接客户端失败
-      //       this.alertReinstall()
-      //     }
-      //   })
-      // })
-      that.cameraVisible = true
-      getHaiKangVideoServer({ cameraCode: cameraCode }).then(newResponse => {
-        that.cameraTitle = '摄像头-' + newResponse.data.cameraName
-        that.initPlugin(newResponse.data.appkey, newResponse.data.loginIp, newResponse.data.secret, newResponse.data.loginPort)
-        setTimeout(function() {
-          that.playhk(newResponse.data.channelCode)
-        }, 5000)
-      })
+    preview(cameraParam) {
+      if(cameraParam.type=='大华'){
+        getDahuaVideoServer().then(newResponse => {
+          console.log(newResponse)
+          this.ws.detectConnectQt().then(res => {
+            if (res) { // 连接客户端成功
+              this.alertLogin()
+              this.ws.login({
+                loginIp: newResponse.loginIp,
+                loginPort: newResponse.loginPort,
+                userName: newResponse.userName,
+                userPwd: newResponse.userPwd,
+                token: '',
+                https: 0
+              })
+              this.ws.on('loginState', (res) => {
+                this.isLogin = res
+                console.log('---res-----', res)
+                if (res) {
+                  this.alertLoginSuccess()
+                  this.activePanel = 'key2'
+                  this.realTimeVideoDialog(cameraParam.code)
+                } else {
+                  this.alertLoginFailed()
+                }
+              })
+            } else { // 连接客户端失败
+              this.alertReinstall()
+            }
+          })
+        })
+      }else if(cameraParam.type=='海康'){
+        let that = this
+        that.cameraVisible = true
+        getHaiKangVideoServer({cameraCode:cameraParam.code}).then(newResponse => {
+          that.cameraTitle = '摄像头-'+newResponse.data.cameraName
+          that.initPlugin(newResponse.data.appkey,newResponse.data.loginIp,newResponse.data.secret,newResponse.data.loginPort)
+          setTimeout(function() {
+            that.playhk(newResponse.data.channelCode)
+          }, 5000)
+        })
+      }
 
 
     },
     },
     realTimeVideoDialog(cameraParams) { // 调用弹窗实时播放接口
     realTimeVideoDialog(cameraParams) { // 调用弹窗实时播放接口
@@ -2039,8 +2213,8 @@ export default {
           that.oWebControl = null
           that.oWebControl = null
           $('#playWnd').html('插件未启动,正在尝试启动,请稍候...<a href="./hk/VideoWebPlugin.exe">点击下载插件</a>')
           $('#playWnd').html('插件未启动,正在尝试启动,请稍候...<a href="./hk/VideoWebPlugin.exe">点击下载插件</a>')
           WebControl.JS_WakeUp('VideoWebPlugin://') // 程序未启动时执行error函数,采用wakeup来启动程序
           WebControl.JS_WakeUp('VideoWebPlugin://') // 程序未启动时执行error函数,采用wakeup来启动程序
-          initCount++
-          if (initCount < 3) {
+          that.initCount++
+          if (that.initCount < 3) {
             setTimeout(function() {
             setTimeout(function() {
               that.initPlugin(newappkey, newloginIp, newsecret, newloginPort)
               that.initPlugin(newappkey, newloginIp, newsecret, newloginPort)
             }, 3000)
             }, 3000)
@@ -2051,7 +2225,6 @@ export default {
         cbConnectClose: function(bNormalClose) {
         cbConnectClose: function(bNormalClose) {
           // 异常断开:bNormalClose = false
           // 异常断开:bNormalClose = false
           // JS_Disconnect正常断开:bNormalClose = true
           // JS_Disconnect正常断开:bNormalClose = true
-          console.log('cbConnectClose')
           that.oWebControl = null
           that.oWebControl = null
         }
         }
       })
       })
@@ -2136,11 +2309,34 @@ export default {
         }
         }
       })
       })
     },
     },
-//RSA加密
+    //RSA加密
     setEncrypt(value) {
     setEncrypt(value) {
       var encrypt = new JSEncrypt()
       var encrypt = new JSEncrypt()
       encrypt.setPublicKey(this.pubKey)
       encrypt.setPublicKey(this.pubKey)
       return encrypt.encrypt(value)
       return encrypt.encrypt(value)
+    },
+    //加入华为视频会议方法
+    joinMeeting(){
+      let eventId = this.eventId;
+      let subject = "视频会议";
+      let nickName;
+      getUserInfo().then(res => {
+        nickName = res.data.nickName;
+      });
+      hasConferences(eventId).then(res => {
+        let data = res.data;
+        /**如果没有正在开启的会议会返回空对象**/
+        if(res.code == 200 && Object.keys(data).length === 0){
+          createConferences(eventId,subject).then(res => {
+            let data = res.data;
+            if(res.code == 200){
+              window.open("/hwMeeting/meeting.html?nickName="+encodeURI(encodeURI(nickName))+"&conferenceID="+data.conferenceID+"&password="+data.password);
+            }
+          });
+        }else{
+          window.open("/hwMeeting/meeting.html?nickName="+encodeURI(encodeURI(nickName))+"&conferenceID="+data.conferenceID+"&password="+data.password);
+        }
+      });
     }
     }
     /** ----------------------------------海康摄像头预览结束------------------------------------- */
     /** ----------------------------------海康摄像头预览结束------------------------------------- */
   }
   }
@@ -2152,6 +2348,7 @@ function cbIntegrationCallBack(oData) {
 }
 }
 </script>
 </script>
 
 
+
 <style lang="scss" scoped>
 <style lang="scss" scoped>
 @import '@/assets/styles/base.scss';
 @import '@/assets/styles/base.scss';
 
 
@@ -2339,6 +2536,26 @@ table tr td input:hover {
   }
   }
 }
 }
 
 
+
+// 20220928
+.yatz_button {
+  padding: 0.5rem 0.5rem;
+  color: #409EFF;
+  background: none;
+  border-color: #409EFF;
+}
+
+.yatz_button:hover {
+  color: #fff;
+  background: #409EFF;
+  border-color: #409EFF;
+}
+
+.fr_button {
+  float: right;
+  padding: 0.5rem 1.5rem;
+}
+
 .bottom {
 .bottom {
   width: 100%;
   width: 100%;
   height: calc(100% - 80px);
   height: calc(100% - 80px);

+ 113 - 0
src/views/findUserByDept.vue

@@ -0,0 +1,113 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="姓名" prop="nickName">
+        <el-input
+          v-model="queryParams.nickName"
+          placeholder="姓名"
+        />
+      </el-form-item>
+      <el-form-item label="手机号" prop="phonenumber">
+        <el-input
+          v-model="queryParams.phonenumber"
+          placeholder="手机号"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="addSelection">确认</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-table v-loading="loading" :data="userList"  @selection-change="handleSelectionChange">
+      <el-table-column align="center" type="selection" width="60"></el-table-column>
+      <el-table-column label="姓名" align="center" prop="nickName"></el-table-column>
+      <el-table-column label="岗位" align="center" prop="name" ></el-table-column>
+      <el-table-column label="手机号" align="center" prop="phonenumber"></el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+  import {userFeginlist} from "@/api/forest";
+
+  export default {
+    name: "findUserByDept",
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: false,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 可视化前端配置表表格数据
+        userList: [],
+        // 弹出层标题
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        // 查询参数
+        queryParams: {
+          deptId: null,
+          nickName:null,
+          phonenumber:null
+        },
+        // 表单参数
+        form: {},
+        resUser:[],
+      };
+    },
+    props: {
+      deptId: {
+        type: String,
+        required: true
+      },
+    },
+    created() {
+      this.queryParams.deptId = this.deptId;
+      this.getList();
+    },
+    methods: {
+      /** 查询可视化前端配置表列表 */
+      getList() {
+        this.loading = true;
+        userFeginlist(this.queryParams).then(response => {
+          this.userList = response.data;
+          this.loading = false;
+        });
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.queryParams.nickName=null;
+        this.queryParams.phonenumber=null;
+        this.getList();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.resUser = [];
+        for (let i in selection){
+          const res = {};
+          res.id = '';
+          res.dept = '';
+          res.depteventId = '';
+          res.name = selection[i].nickName;
+          res.post = '';
+          res.telphone = selection[i].phonenumber;
+          this.resUser.push(res);
+        }
+      },
+      //数据提交到父页
+      addSelection(){
+        this.$emit("addSelection",this.resUser);
+      }
+    }
+  };
+</script>

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1613 - 1492
src/views/firespread.vue


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 941 - 832
src/views/forest.vue


+ 89 - 59
src/views/monitor.vue

@@ -6,9 +6,9 @@
     <!--主体-->
     <!--主体-->
     <div class="visual-body">
     <div class="visual-body">
       <!-- 左侧 -->
       <!-- 左侧 -->
-      <div class="leftbar" ref="left">
+      <div class="leftbar" :class="indentleft" ref="left">
         <div class="forthis">
         <div class="forthis">
-          <dv-border-box-13 :color="['#0e7957', '#0da24c']" backgroundColor="#09140e" style="padding-bottom: 1rem;">
+          <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
             <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
             <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
             <div class="this-title">
             <div class="this-title">
               <span>事态感知</span>
               <span>事态感知</span>
@@ -71,7 +71,7 @@
                 :mapSite="{doubleClickZoom:false}" :codes="['9fa5']" :isSideBySide="false" @preview="preview">
                 :mapSite="{doubleClickZoom:false}" :codes="['9fa5']" :isSideBySide="false" @preview="preview">
       </supermap>
       </supermap>
       <!-- 右侧 -->
       <!-- 右侧 -->
-      <div class="rightbar" ref="right">
+      <div class="rightbar" :class="indentright" ref="right">
         <div class="forthis">
         <div class="forthis">
           <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
           <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
             <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
             <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
@@ -92,7 +92,7 @@
           </dv-border-box-13>
           </dv-border-box-13>
         </div>
         </div>
         <div class="forthis">
         <div class="forthis">
-          <dv-border-box-13 :color="['#0e7957', '#0da24c']" backgroundColor="#09140e" style="padding-bottom: 1rem;">
+          <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
             <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
             <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
             <div class="this-title">
             <div class="this-title">
               <span>重点区域</span>
               <span>重点区域</span>
@@ -110,6 +110,10 @@
         </div>
         </div>
       </div>
       </div>
       <vBottomMenu ref="bottomMenu"></vBottomMenu>
       <vBottomMenu ref="bottomMenu"></vBottomMenu>
+<!--      <el-tooltip :content="indentText" placement="top" :disabled="indentdisabled">-->
+<!--        <div class="mascot" ref="mascot" :class="indentStyle" @click="indent"><img-->
+<!--          src="@/assets/images/mascot.png"/></div>-->
+<!--      </el-tooltip>-->
 
 
     </div>
     </div>
     <eventLocation ref="eventLocation"></eventLocation>
     <eventLocation ref="eventLocation"></eventLocation>
@@ -145,7 +149,7 @@ import {
 import {
 import {
   getHaiKangVideoServer
   getHaiKangVideoServer
 } from '@/api/haikang/haikang'
 } from '@/api/haikang/haikang'
-// import DHWs from '@/dahua/lib/DHWs'
+import DHWs from '@/dahua/lib/DHWs'
 
 
 /** ----------------------------------摄像头预览结束------------------------------------- */
 /** ----------------------------------摄像头预览结束------------------------------------- */
   // import echarts from 'echarts'
   // import echarts from 'echarts'
@@ -161,8 +165,8 @@ export default {
   },
   },
   created() {
   created() {
     /** ----------------------------------摄像头预览开始------------------------------------- */
     /** ----------------------------------摄像头预览开始------------------------------------- */
-    // const DHWsInstance = DHWs.getInstance()
-    // this.ws = DHWsInstance
+    const DHWsInstance = DHWs.getInstance()
+    this.ws = DHWsInstance
     /** ----------------------------------摄像头预览结束------------------------------------- */
     /** ----------------------------------摄像头预览结束------------------------------------- */
 
 
     /** ----------------------------------底部按钮公用组件开始------------------------------------- */
     /** ----------------------------------底部按钮公用组件开始------------------------------------- */
@@ -181,6 +185,7 @@ export default {
       listCurrentIndex1: '-1',
       listCurrentIndex1: '-1',
       listCurrentIndex2: '-1',
       listCurrentIndex2: '-1',
       listCurrentIndex3: '-1',
       listCurrentIndex3: '-1',
+      graphicsList:[],//重点区域
       /** ----------------------------------摄像头预览开始------------------------------------- */
       /** ----------------------------------摄像头预览开始------------------------------------- */
       //大华
       //大华
       activePanel: 'key1',
       activePanel: 'key1',
@@ -205,6 +210,13 @@ export default {
       activeName: 'info',
       activeName: 'info',
       radio: '1',
       radio: '1',
       region: [],
       region: [],
+      //左右缩进
+      indentStyle: '',
+      indentleft: '',
+      indentright: '',
+      indentText: '收起左右栏',
+      indentdisabled: false,
+      domId: 'dom1',
     }
     }
   },
   },
   methods: {
   methods: {
@@ -334,7 +346,8 @@ export default {
         }],
         }],
         xAxis: {
         xAxis: {
           show: false,
           show: false,
-          type: 'value'
+          type: 'value',
+          left:10
         },
         },
         yAxis: {
         yAxis: {
           type: 'category', // 不设置类目轴,抽离的dataset数据展示不出来
           type: 'category', // 不设置类目轴,抽离的dataset数据展示不出来
@@ -443,7 +456,8 @@ export default {
               isAggregation: false
               isAggregation: false
             }
             }
             if (res.data.visuForestCloudCameraBOList[i].channelCode != null) {
             if (res.data.visuForestCloudCameraBOList[i].channelCode != null) {
-              markersMap.parameter = res.data.visuForestCloudCameraBOList[i].cameraCode
+              markersMap.parameter = {code:res.data.visuForestCloudCameraBOList[i].cameraCode,
+                type:res.data.visuForestCloudCameraBOList[i].cameraFactory}
             } else {
             } else {
               markersMap.parameter = []
               markersMap.parameter = []
             }
             }
@@ -451,7 +465,6 @@ export default {
             markersMap.lng = res.data.visuForestCloudCameraBOList[i].longitude
             markersMap.lng = res.data.visuForestCloudCameraBOList[i].longitude
             markersMap.lat = res.data.visuForestCloudCameraBOList[i].latitude
             markersMap.lat = res.data.visuForestCloudCameraBOList[i].latitude
             markersMap.radius = res.data.visuForestCloudCameraBOList[i].cameraRadius
             markersMap.radius = res.data.visuForestCloudCameraBOList[i].cameraRadius
-
             markersMap.bindPopupHtml = '<div class="map-tip">' +
             markersMap.bindPopupHtml = '<div class="map-tip">' +
               '<span>' +
               '<span>' +
               '                  <div class="d-l-con">' +
               '                  <div class="d-l-con">' +
@@ -486,7 +499,7 @@ export default {
               '                </div>' +
               '                </div>' +
               '                </span>' +
               '                </span>' +
               '</div>'
               '</div>'
-            that.cameraMarkersList.push(markersMap)
+            this.cameraMarkersList.push(markersMap)
             //   cameraAccount: "1"
             //   cameraAccount: "1"
             // cameraCode: "1000010"
             // cameraCode: "1000010"
             // cameraFactory: "2"
             // cameraFactory: "2"
@@ -507,7 +520,7 @@ export default {
           setTimeout(() => {
           setTimeout(() => {
             that.$refs.supermap.clearM(true)
             that.$refs.supermap.clearM(true)
             that.$refs.supermap.clearM(false)
             that.$refs.supermap.clearM(false)
-            that.$refs.supermap.setMarkersRadius(that.cameraMarkersList)
+            that.$refs.supermap.setMarkersRadius(this.cameraMarkersList)
           }, 1000)
           }, 1000)
         }
         }
       })
       })
@@ -524,7 +537,6 @@ export default {
       selectCameraByDeptId(depId).then(res => {
       selectCameraByDeptId(depId).then(res => {
         //根据设备类型查看列表
         //根据设备类型查看列表
         that.visuForestCloudCameraBOList = res.data
         that.visuForestCloudCameraBOList = res.data
-
         if (res.data != null && res.data.length > 0) {
         if (res.data != null && res.data.length > 0) {
           for (let i = 0; i < res.data.length; i++) {
           for (let i = 0; i < res.data.length; i++) {
             let markersMap = {
             let markersMap = {
@@ -537,11 +549,9 @@ export default {
               keepBindPopup: false,
               keepBindPopup: false,
               isAggregation: false
               isAggregation: false
             }
             }
-            if (res.data.length > 50) {
-              markersMap.isAggregation = true
-            }
             if (res.data[i].channelCode != null) {
             if (res.data[i].channelCode != null) {
-              markersMap.parameter = res.data[i].cameraCode
+              markersMap.parameter = {code:res.data.data[i].cameraCode,
+                type:res.data.data[i].cameraFactory}
             } else {
             } else {
               markersMap.parameter = []
               markersMap.parameter = []
             }
             }
@@ -582,7 +592,7 @@ export default {
               '                </div>' +
               '                </div>' +
               '                </span>' +
               '                </span>' +
               '</div>'
               '</div>'
-            that.cameraMarkersList.push(markersMap)
+            this.cameraMarkersList.push(markersMap)
             //   cameraAccount: "1"
             //   cameraAccount: "1"
             // cameraCode: "1000010"
             // cameraCode: "1000010"
             // cameraFactory: "2"
             // cameraFactory: "2"
@@ -603,11 +613,27 @@ export default {
           setTimeout(() => {
           setTimeout(() => {
             that.$refs.supermap.clearM(true)
             that.$refs.supermap.clearM(true)
             that.$refs.supermap.clearM(false)
             that.$refs.supermap.clearM(false)
-            that.$refs.supermap.setMarkersRadius(that.cameraMarkersList)
+            that.$refs.supermap.setMarkersRadius(this.cameraMarkersList)
           }, 1000)
           }, 1000)
         }
         }
       })
       })
     },
     },
+    //吉祥物收起左右框
+    indent() {
+      let list = document.getElementsByClassName('el-tooltip__popper')
+      list[list.length - 1].style.display = 'none'
+      if (this.indentStyle == '') {
+        this.indentStyle = 'indent-style'
+        this.indentleft = 'indent-left'
+        this.indentright = 'indent-right'
+        this.indentText = '展开左右栏'
+      } else if (this.indentText == '展开左右栏') {
+        this.indentStyle = ''
+        this.indentleft = ''
+        this.indentright = ''
+        this.indentText = '收起左右栏'
+      }
+    },
     /** ----------------------------------摄像头预览开始------------------------------------- */
     /** ----------------------------------摄像头预览开始------------------------------------- */
     alertLogin: function() {
     alertLogin: function() {
       this.$modal.msg('登录中....')
       this.$modal.msg('登录中....')
@@ -631,45 +657,48 @@ export default {
       }
       }
     },
     },
     /** 预览按钮操作 */
     /** 预览按钮操作 */
-    preview(cameraCode) {
-      let that = this
-      // getDahuaVideoServer().then(newResponse => {
-      //   console.log(newResponse)
-      //   this.ws.detectConnectQt().then(res => {
-      //     if (res) { // 连接客户端成功
-      //       this.alertLogin()
-      //       this.ws.login({
-      //         loginIp: newResponse.loginIp,
-      //         loginPort: newResponse.loginPort,
-      //         userName: newResponse.userName,
-      //         userPwd: newResponse.userPwd,
-      //         token: '',
-      //         https: 1
-      //       })
-      //       this.ws.on('loginState', (res) => {
-      //         this.isLogin = res
-      //         console.log('---res-----', res)
-      //         if (res) {
-      //           this.alertLoginSuccess()
-      //           this.activePanel = 'key2'
-      //           this.realTimeVideoDialog(channelCode)
-      //         } else {
-      //           this.alertLoginFailed()
-      //         }
-      //       })
-      //     } else { // 连接客户端失败
-      //       this.alertReinstall()
-      //     }
-      //   })
-      // })
-      that.cameraVisible = true
-      getHaiKangVideoServer({cameraCode:cameraCode}).then(newResponse => {
-        that.cameraTitle = '摄像头-'+newResponse.data.cameraName
-        that.initPlugin(newResponse.data.appkey,newResponse.data.loginIp,newResponse.data.secret,newResponse.data.loginPort)
-        setTimeout(function() {
-          that.playhk(newResponse.data.channelCode)
-        }, 5000)
-      })
+    preview(cameraParam) {
+      if(cameraParam.type=='大华'){
+        getDahuaVideoServer().then(newResponse => {
+          console.log(newResponse)
+          this.ws.detectConnectQt().then(res => {
+            if (res) { // 连接客户端成功
+              this.alertLogin()
+              this.ws.login({
+                loginIp: newResponse.loginIp,
+                loginPort: newResponse.loginPort,
+                userName: newResponse.userName,
+                userPwd: newResponse.userPwd,
+                token: '',
+                https: 0
+              })
+              this.ws.on('loginState', (res) => {
+                this.isLogin = res
+                console.log('---res-----', res)
+                if (res) {
+                  this.alertLoginSuccess()
+                  this.activePanel = 'key2'
+                  this.realTimeVideoDialog(cameraParam.code)
+                } else {
+                  this.alertLoginFailed()
+                }
+              })
+            } else { // 连接客户端失败
+              this.alertReinstall()
+            }
+          })
+        })
+      }else if(cameraParam.type=='海康'){
+        let that = this
+        that.cameraVisible = true
+        getHaiKangVideoServer({cameraCode:cameraParam.code}).then(newResponse => {
+          that.cameraTitle = '摄像头-'+newResponse.data.cameraName
+          that.initPlugin(newResponse.data.appkey,newResponse.data.loginIp,newResponse.data.secret,newResponse.data.loginPort)
+          setTimeout(function() {
+            that.playhk(newResponse.data.channelCode)
+          }, 5000)
+        })
+      }
 
 
     },
     },
     realTimeVideoDialog(cameraParams) { // 调用弹窗实时播放接口
     realTimeVideoDialog(cameraParams) { // 调用弹窗实时播放接口
@@ -677,7 +706,8 @@ export default {
         this.$Message.info('正在登陆客户端,请稍等......')
         this.$Message.info('正在登陆客户端,请稍等......')
         return false
         return false
       }
       }
-      this.ws.openVideo(cameraParams)
+      const params = [cameraParams];
+      this.ws.openVideo(params)
     },
     },
     /** ----------------------------------摄像头预览结束------------------------------------- */
     /** ----------------------------------摄像头预览结束------------------------------------- */