浏览代码

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

# Conflicts:
#	src/views/eventdetailsdialog.vue
JX.LI 2 年之前
父节点
当前提交
9db2e10dbc

+ 17 - 0
src/api/forest.js

@@ -296,3 +296,20 @@ export function selectMessageById(messageId) {
     method: 'get'
   })
 }
+// 事件处置
+export function eventHandling(id,eventCode) {
+  return request({
+    url: '/center-resources/VisuForestEventCenterController/eventHandling',
+    method: 'post',
+    data: {id:id,eventCode:eventCode,dataStatus:"1"}
+  })
+}
+
+// 会议添加联系人并发送短信
+export function sendMessage(param) {
+  return request({
+    url: '/center-resources/VisuForestCloudMapController/sendMeetingMsgResources',
+    method: 'post',
+    data:param
+  })
+}

+ 1 - 1
src/assets/iconfont/iconfont.css

@@ -102,7 +102,7 @@
 .sj-icon-construction:before {
   content: "\e73f";
 }
-/* 矿资源 */
+/* 矿资源 */
 .sj-icon-deposit:before {
   content: "\e633";
 }

+ 4 - 12
src/components/TVWall.vue

@@ -500,7 +500,6 @@ export default {
     },
 
     create(tvListJson) { // 调用创建控件接口
-      debugger
       let _this = this
       const params = [
         {
@@ -520,17 +519,10 @@ export default {
         }
       ]
       this.setPos()
-      _this.ws.createCtrl(params).then(res => {
-        this.customizeTree(tvListJson)
-      }).catch(e => {
-        console.log(e)
-      })
-      _this.ws.on('createCtrlResult', (res) => {
-        this.customizeTree(tvListJson)
-        _this.ws.on('createCtrlResult', (res) => {
-          this.customizeTree(tvListJson)
-        })
-      })
+      this.customizeTree(tvListJson);
+      setTimeout(function () {
+        _this.ws.createCtrl(params);
+      }, 3000);
     },
     setPos() {
       let target = document.getElementById(this.domId)

+ 5 - 0
src/components/supermap.vue

@@ -1250,6 +1250,11 @@ export default {
     dropLocation: function(lat, lng) { //落点定位
       this.map.flyTo([lat, lng], 13, { duration: 2 })
     },
+    dropLocation: function(lat, lng,leve) { //落点定位
+      this.map.flyTo([lat, lng], leve, {
+        duration: 2
+      })
+    },
     dropLocation10: function(lat, lng) { //落点定位
       this.map.flyTo([lat, lng], 10, { duration: 2 })
     },

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

@@ -83,6 +83,7 @@ import Cookies from 'js-cookie';
           this.phonenumber=response.data.phonenumber
           this.userId=response.data.userId
           Cookies.set('userId',response.data.userId);
+          Cookies.set('nickName',response.data.nickName);
         });
       },
       resetPwd(){

+ 11 - 11
src/components/vBottomMenu.vue

@@ -434,17 +434,17 @@ export default {
           icon: 'iconfont sj-icon-clgj',
           click: 'editableLayers'
         },
-        {
-          name: '林班',
-          icon: 'iconfont sj-icon-lbzy',
-          click: 'forestban'
-        },
-
-        {
-          name: '林场',
-          icon: 'iconfont sj-icon-lczy',
-          click: 'forestchang'
-        },
+        // {
+        //   name: '林班',
+        //   icon: 'iconfont sj-icon-lbzy',
+        //   click: 'forestban'
+        // },
+        //
+        // {
+        //   name: '林场',
+        //   icon: 'iconfont sj-icon-lczy',
+        //   click: 'forestchang'
+        // },
         {
           name: '电视墙',
           icon: 'el-icon-s-grid',

+ 1 - 1
src/utils/request.js

@@ -20,7 +20,7 @@ const service = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
   baseURL: process.env.VUE_APP_BASE_API,
   // 超时
-  timeout: 10000
+  timeout: 20000
 })
 
 // request拦截器

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

@@ -30,7 +30,7 @@
         <div class="b-con mg-b-20">
           <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
             <!--<span>林场分布统计</span>-->
-            <span>矿资源</span>
+            <span>矿资源</span>
           </div>
           <!--<chartForestFarm></chartForestFarm>-->
           <chartAncientTree></chartAncientTree>
@@ -75,7 +75,7 @@
         <!--<div class="b-con mg-b-20">-->
           <!--<div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">-->
             <!--<span>森林资源年统计</span>-->
-            <!--&lt;!&ndash;<span>矿资源</span>&ndash;&gt;-->
+            <!--&lt;!&ndash;<span>矿资源</span>&ndash;&gt;-->
           <!--</div>-->
           <!--<chartPitG2></chartPitG2>-->
           <!--&lt;!&ndash;<chartAncientTree></chartAncientTree>&ndash;&gt;-->

+ 1 - 1
src/views/datacenter.vue

@@ -374,7 +374,7 @@ export default {
                 '                </div>' +
                 '                </div>' +
                 '                </span></div>'
-            } else if (resourceTable == 'centerdata_t_resources_deposit') { //矿资源
+            } else if (resourceTable == 'centerdata_t_resources_deposit') { //矿资源
               markersMap.icon = 'sj-icon-map-centerdata-t-forest-farm'
               markersMap.lng = res.data.resourceList[i].longitude
               markersMap.lat = res.data.resourceList[i].latitude

+ 199 - 64
src/views/eventdetailsdialog.vue

@@ -157,9 +157,12 @@
                                 </el-button>
                                 <el-button size="small" icon="el-icon-download" @click="showResponsibility()">责任制
                                 </el-button>
+                                <el-button v-if="eventStatusValue=='forest_event_status_2' && statusFlag=='1' && dataStatus=='0'"
+                                           size="small" icon="el-icon-download" @click="updateCentereventTEventcatalogueStatus('cz',true)">处置
+                                </el-button>
                               </div>
                               <div class="z-info-btm-grp-right">
-                                <el-button size="small" icon="el-icon-mic" @click="joinMeeting()">会议
+                                <el-button size="small" icon="el-icon-mic" @click="Meeting()">会议
                                 </el-button>
                               </div>
                             </div>
@@ -226,7 +229,7 @@
                                              @click="updateCentereventTEventcatalogueStatus('ld',false)">
                                     联动
                                   </el-button>
-                                  <el-button size="small" v-if="dataStatus=='1'"
+                                  <el-button size="small" v-if="statusFlag=='1'"
                                              icon="el-icon-success" style="text-align:left"
                                              @click="updateCentereventTEventcatalogueStatus('bj',true)">
                                     办结
@@ -236,12 +239,17 @@
                                 </el-button>
                               </div>
                               <div class="z-info-btm-input-btn"
-                                   v-else-if="eventStatusValue=='forest_event_status_5'&&dataStatus=='1'">
+                                   v-else-if="eventStatusValue=='forest_event_status_5'&&statusFlag=='1'">
                                 <el-button size="small"
-                                           icon="el-icon-success" style="text-align:left"
+                                           icon="el-icon-success" style="text-align:left" v-if="eventType == 1"
                                            @click="updateCentereventTEventcatalogueStatus('gd',false)">
                                   填报
                                 </el-button>
+                                <el-button size="small"
+                                           icon="el-icon-success" style="text-align:left" v-if="eventType != 1"
+                                           @click="updateCentereventTEventcatalogueStatus('gd',true)">
+                                  归档
+                                </el-button>
                                 <el-button size="small" icon="el-icon-chat-dot-square" @click="sendEventLog()">发送
                                 </el-button>
                               </div>
@@ -270,7 +278,7 @@
                class="top-dialog"
                @close="cancelEventConfirm()">
       <el-form label-width="80px">
-        <el-form-item label="火灾半径" v-if="eventStatusButton=='qs'">
+        <el-form-item label="火灾半径" v-if="eventStatusButton=='qs' && eventTypeXl==null">
           <el-input type="number" v-model="sendHuoZaiBanJing" placeholder="请输入火灾半径"/>
         </el-form-item>
         <el-form-item :label="deptNameitem">
@@ -286,7 +294,7 @@
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="事件类型" v-if="eventStatusButton=='qs'&& eventTypeXl == null">
+        <el-form-item label="事件类型" v-if="eventStatusButton=='qs' && eventTypeXl == null">
           <el-select v-model="sendEventType" placeholder="请选择事件类型!" clearable>
             <el-option
               v-for="item in eventTypeList"
@@ -464,6 +472,84 @@
         <div style="clear: both;"></div>
       </el-form>
     </el-dialog>
+    <!--    会议弹窗  start -->
+    <el-dialog title="视频会议" :visible.sync="showMeetingMsgDialog" v-if="showMeetingMsgDialog" width="65%"
+               @close="closeMeetingMsgDialog()">
+      <el-form label-width="1500px">
+        <div class="bottom">
+          <!-- 左侧菜单栏 -->
+          <div class="bottomLeft">
+            <div class="leftItem d-l-con padding-box nowrap" v-for="(item,index) in depteventList">
+              <div class="bgt-info">
+                <div class="bgt-info-name" :class="{on:iconCurrentIndex==item.deptId}"
+                     @click="dutysystemSelect(item.deptId,item.deptName,item.id)">{{ item.deptName }}
+                </div>
+              </div>
+            </div>
+          </div>
+          <!-- 左侧菜单栏对应的右侧的内容 -->
+          <div class="bottomRight" ref="wrapper">
+            <el-button
+              size="mini"
+              type="danger"
+              v-if="depteventId!=null&&depteventId!=''"
+              @click="addLine">添加
+            </el-button>
+            <el-button
+              size="mini"
+              type="danger"
+              v-if="depteventId!=null&&depteventId!=''"
+              @click="finUserByDept">选择
+            </el-button>
+            <el-table
+              :data="dutysystemTableData"
+              style="width: 100%"
+              :rules="rules">
+              <el-table-column prop="id" label="主键" v-if="false">
+                <template slot-scope="scope" hidden>
+                  <el-input v-model="scope.row.id" readonly placeholder="主键"></el-input>
+                </template>
+              </el-table-column>
+              <el-table-column prop="name" label="姓名">
+                <template slot-scope="scope">
+                  <el-input v-model="scope.row.name" placeholder="姓名" οninput="value=value.replace(/^[\u4e00-\u9fa5]{2,4}$/,'')"></el-input>
+                </template>
+              </el-table-column>
+              <el-table-column prop="post" label="岗位">
+                <template slot-scope="scope">
+                  <el-input v-model="scope.row.post" placeholder="岗位"></el-input>
+                </template>
+              </el-table-column>
+              <el-table-column prop="telphone" label="手机号码">
+                <template slot-scope="scope">
+                  <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>
+              </el-table-column>
+              <el-table-column prop="bookbuytime" label="操作">
+                <template slot-scope="scope">
+                  <el-button
+                    size="mini"
+                    type="danger"
+                    icon="el-icon-delete"
+                    @click="handleDelete(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>
+              </el-table-column>
+            </el-table>
+          </div>
+        </div>
+        <el-button size="mini" type="primary" class="fr_button" @click="sendMsg">发送短信
+        </el-button>
+        <div style="clear: both;"></div>
+      </el-form>
+    </el-dialog>
+    <!--    会议弹窗  end   -->
     <el-dialog title="火险报告" :visible.sync="showEventConfirm_gd" v-if="showEventConfirm_gd" width="100%"
                class="top-dialog"
                @close="cancelEventConfirm_gd()">
@@ -1007,6 +1093,9 @@ import {
   dutysystemList,
   dutysystemAdd,
   dutysystemRemove,
+  sendMessage,
+  userFeginlist,
+  eventHandling,
   initByCameras,
   userFeginlist
 } from '@/api/forest'
@@ -1024,6 +1113,8 @@ import {
   getDahuaVideoServer
 } from '@/api/dahua/dahua'
 import DHWs from '@/dahua/lib/DHWs'
+import { selectConfigKey } from "@/api/system/config";
+import Cookies from 'js-cookie';
 export default {
   dicts: ['task_source'],
   watch: {
@@ -1107,7 +1198,7 @@ export default {
       sendDeptId: null,//签收部门/发起部门
       sendDeptName: null,//签收部门/发起部门
       sendEventType: null,//事件类型
-      sendHuoZaiBanJing: null,//火灾报告
+      sendHuoZaiBanJing: 0,//火灾报告
       sendGuanLianYuAn: null,//关联预案
       sendUserFegin: [],//联系人
       sendTaskSource: null,//任务来源
@@ -1222,7 +1313,8 @@ export default {
       eventId: null,//事件ID
       eventType: null,//事件类型-大类
       eventTypeXl: null,//事件类型-小类
-      dataStatus: null,//事件流程按钮
+      statusFlag: null,//事件流程按钮
+      dataStatus: null,//事件处置按钮
       deptId: null,//事件流程部门
       eventCode: null,
       eventName: null,
@@ -1233,6 +1325,7 @@ export default {
       visuForestCloudYuAnBo: null,
       eventDialog: false,
       showResponsibilityDialog: false,//责任制弹窗
+      showMeetingMsgDialog: false,//发送会议短信弹窗
       depteventList: [],//责任制部门列表
       iconCurrentIndex: '',
       dutysystemDeptName: '',
@@ -1305,6 +1398,10 @@ export default {
   },
   methods: {
     /************************************责任制-开始****************************************/
+    //初始化责任制数据列表
+    initDutysystemTableData(){
+      this.dutysystemTableData = [];
+    },
     addLine: function() {//添加负责人行数
       var newValue = {
         id: '',//主键
@@ -1385,6 +1482,13 @@ export default {
       this.iconCurrentIndex = ''
       this.showResponsibilityDialog = false
     },
+    closeMeetingMsgDialog() {//会议弹窗关闭
+      this.dutysystemTableData = []
+      this.dutysystemDeptName = ''
+      this.depteventId = ''
+      this.iconCurrentIndex = ''
+      this.showMeetingMsgDialog = 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位手机号码正则
@@ -1490,7 +1594,7 @@ export default {
                 click: '',
                 parameter: '',
                 keepBindPopup: false,
-                isAggregation: false
+                isAggregation: true
               }
               if (res.data.length > 50) {
                 markersMap.isAggregation = true
@@ -1577,7 +1681,7 @@ export default {
       this.sendDeptName = null
       this.sendUserFegin = []
       this.sendEventType = null
-      this.sendHuoZaiBanJing = null
+      this.sendHuoZaiBanJing = 0
       this.sendGuanLianYuAn = null
       this.longitude = null
       this.latitude = null
@@ -1600,7 +1704,7 @@ export default {
       this.sendDeptName = null
       this.sendUserFegin = []
       this.sendEventType = null
-      this.sendHuoZaiBanJing = null
+      this.sendHuoZaiBanJing = 0
       this.sendGuanLianYuAn = null
       this.sendTaskTitle = null
       this.sendTaskSource = null
@@ -1838,30 +1942,33 @@ export default {
           })
 
         } 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(that.eventType == 1){
+            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(!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
+              that.$message.error(`疏密度不能为空!`)
+              return
+            }
           }
 
+
           //事件处理流程--归档
           let param = {
             deptId: that.deptId,
@@ -1883,6 +1990,15 @@ export default {
               that.$emit('getSupermap', that.calendarDay)
             }
           })
+        } else if(eventStatus == 'cz'){
+          eventHandling(that.eventId,that.eventCode).then(res => {
+            if (res.code == 200) {
+              that.$message.success(`处理成功!`)
+              that.refreshEvent(that.eventCode)
+              that.cancelEventConfirm_send()
+              that.showEventConfirm = false
+            }
+          })
         } else {
           if (eventStatus == 'qs' || eventStatus == 'wb' || eventStatus == 'cf') {
             if (that.sendDeptId == '' || that.sendDeptId == null || that.sendDeptName == '' || that.sendDeptName == null) {
@@ -1890,10 +2006,6 @@ export default {
               return
             }
             if (eventStatus == 'qs') {
-              if (that.sendHuoZaiBanJing == '' || that.sendHuoZaiBanJing == null) {
-                that.$message.error(`请输入火灾半径!`)
-                return
-              }
               if (that.sendEventType == '' || that.sendEventType == null) {
                 that.$message.error(`请选择事件类型!`)
                 return
@@ -1950,7 +2062,7 @@ export default {
       this.$refs.eventLogUpload.eventLogUpload(this.eventCode)
     },
     cancelEventShow() {
-      this.dataStatus = null
+      this.statusFlag = null
       this.deptId = null
       console.log('关闭事件弹窗')
       this.eventLogList = []
@@ -1966,6 +2078,7 @@ export default {
         that.address = res.data.catalogue.address
         that.eventStatusValue = res.data.catalogue.eventStatusValue
         that.eventType = res.data.catalogue.eventType
+        that.statusFlag = res.data.catalogue.statusFlag
         that.dataStatus = res.data.catalogue.dataStatus
         that.deptId = res.data.catalogue.deptId
         that.eventId = res.data.catalogue.id
@@ -1981,7 +2094,7 @@ export default {
           click: '',
           parameter: '',
           keepBindPopup: false,
-          isAggregation: false,
+          isAggregation: true,
           radius: 0
         }
         if (res.data.catalogue.eventStatusValue == 'forest_event_status_1' && res.data.catalogue.urgeCount == 0) {
@@ -2019,7 +2132,7 @@ export default {
             click: 'preview',
             parameter: {code:res.data.centermonitorTCamera.cameraCode,type:res.data.centermonitorTCamera.cameraFactory},
             keepBindPopup: false,
-            isAggregation: false,
+            isAggregation: true,
             radius: 0
           }
           markersMap.bindPopupHtml = '<div class="map-tip">' +
@@ -2051,6 +2164,7 @@ export default {
         that.address = res.data.catalogue.address
         that.eventStatusValue = res.data.catalogue.eventStatusValue
         that.eventType = res.data.catalogue.eventType
+        that.statusFlag = res.data.catalogue.statusFlag
         that.dataStatus = res.data.catalogue.dataStatus
         that.deptId = res.data.catalogue.deptId
         that.eventId = res.data.catalogue.id
@@ -2066,7 +2180,7 @@ export default {
           click: '',
           parameter: '',
           keepBindPopup: false,
-          isAggregation: false,
+          isAggregation: true,
           radius: 0
         }
         if (res.data.catalogue.eventStatusValue == 'forest_event_status_1' && res.data.catalogue.urgeCount == 0) {
@@ -2106,7 +2220,7 @@ export default {
             click: 'preview',
             parameter: {code:res.data.centermonitorTCamera.cameraCode,type:res.data.centermonitorTCamera.cameraFactory},
             keepBindPopup: false,
-            isAggregation: false,
+            isAggregation: true,
             radius: 0
           }
           markersMap.bindPopupHtml = '<div class="map-tip">' +
@@ -2257,7 +2371,8 @@ export default {
         this.$Message.info('正在登陆客户端,请稍等......')
         return false
       }
-      this.ws.openVideo(cameraParams)
+      const param = [cameraParams]
+      this.ws.openVideo(param)
     },
     /** ----------------------------------摄像头预览结束------------------------------------- */
 
@@ -2391,30 +2506,50 @@ export default {
       encrypt.setPublicKey(this.pubKey)
       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);
-        }
-      });
-    }
     /** ----------------------------------海康摄像头预览结束------------------------------------- */
+    /** ----------------------------------视频会议开始------------------------------------- */
+    sendMsg() {// 视频会议发送短信
+      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,eventId:this.eventId}
+      sendMessage(param).then(res => {
+        this.$message.success(res.msg);
+        this.dutysystemSelect(this.iconCurrentIndex, this.dutysystemDeptName, this.depteventId);
+        this.showMeetingMsgDialog = false;
+        this.joinMeeting();
+      })
+    },
+    joinMeeting(){
+      let hwMeetingUrl;
+      selectConfigKey('hwMeetingUrl').then(res => {
+        hwMeetingUrl = res.data
+        window.open(hwMeetingUrl+"/joinConferences/"+this.eventId+"/"+this.eventName+"的会议"+"/"+Cookies.get("nickName"));
+      })
+    },
+    Meeting() {//弹出发送会议短信弹窗
+      let param = { eventCode: this.eventCode }
+      centereventtdepteventList(param).then(res => {
+        this.depteventList = res.data
+        this.showMeetingMsgDialog = true
+        this.initDutysystemTableData();
+      })
+    },
+    /** ----------------------------------视频会议结束------------------------------------- */
   }
 }
 

+ 3 - 7
src/views/firespread.vue

@@ -1021,7 +1021,7 @@
         sendDeptId: null,//签收部门/发起部门
         sendDeptName: null,//签收部门/发起部门
         sendEventType: null,//事件类型
-        sendHuoZaiBanJing: null,//火灾报告
+        sendHuoZaiBanJing: 0,//火灾报告
         sendGuanLianYuAn: null,//关联预案
         sendUserFegin: [],//联系人
         sendTaskSource: null,//任务来源
@@ -1456,7 +1456,7 @@
         this.sendDeptName = null
         this.sendUserFegin = []
         this.sendEventType = null
-        this.sendHuoZaiBanJing = null
+        this.sendHuoZaiBanJing = 0
         this.sendGuanLianYuAn = null
         this.longitude = null
         this.latitude = null
@@ -1479,7 +1479,7 @@
         this.sendDeptName = null
         this.sendUserFegin = []
         this.sendEventType = null
-        this.sendHuoZaiBanJing = null
+        this.sendHuoZaiBanJing = 0
         this.sendGuanLianYuAn = null
         this.sendTaskTitle = null
         this.sendTaskSource = null
@@ -1765,10 +1765,6 @@
                 return
               }
               if (eventStatus == 'qs') {
-                if (that.sendHuoZaiBanJing == '' || that.sendHuoZaiBanJing == null) {
-                  that.$message.error(`请输入火灾半径!`)
-                  return
-                }
                 if (that.sendEventType == '' || that.sendEventType == null) {
                   that.$message.error(`请选择事件类型!`)
                   return

+ 5 - 4
src/views/forest.vue

@@ -252,7 +252,7 @@
                         <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;" />
                             <div class="this-title">
-                                <span>曝光台</span>
+                                <span>超期事件</span>
                                 <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;" />
                             </div>
                             <div class="i-list-con small-bottom-margin h-18">
@@ -289,7 +289,7 @@
                                     </el-input>
                                 </div>
                                 <div class="d-l-con padding-box nowrap" v-for="(item, index) in eventList"
-                                    @click="dropLocation(item.latitude, item.longitude)" data-html2canvas-ignore>
+                                    @click="dropLocation(item.latitude, item.longitude,item.eventCode)" data-html2canvas-ignore>
                                     <div class="bgt-img">
                                         <img v-if="item.picturePath != null && item.picturePath != '' && item.pictureType == 'image'"
                                             :src="item.picturePath" style="width: 93px;height: 64px" loading="lazy" />
@@ -639,8 +639,9 @@ export default {
         //     }
         //   })
         // },
-        dropLocation(lat, lng) {
-            this.$refs.supermap.dropLocation(lat, lng)
+        dropLocation(lat, lng,eventCode) {
+          this.$refs.supermap.dropLocation(lat, lng,18)
+          this.showEventDialog(eventCode)
         },
         showEventDialog(eventCode) {
             //事件信息弹出

+ 32 - 6
src/views/leader.vue

@@ -77,7 +77,7 @@
                   <el-collapse-item v-for="(item,index) in xunLinListOne">
                     <template slot="title">
                       <div class="d-l-con sj-collapse"
-                           @click="getRecordList(item.id)">
+                           @click="getRecordList(item.id, item.patrolTrajectory)">
                         <div class="d-l-l-text">
                           <el-tooltip class="item" effect="dark" placement="left"
                                       style="width:10rem ;" :disabled="(item.taskName.length <= 20)">
@@ -288,25 +288,34 @@
           this.peopleList = res.data
         })
         this.connectList = []
+        this.personId = null;
+        this.xunLinListOne = [];
+        this.patrolTrajectory = null;
         this.$refs.supermap.clearC()
       },
       //点击左侧人员列表获取 巡林计划
       getPlanList(personId) {
+        if(this.personId == personId){//当前人员已经被点击一次 不再重复加载
+          return;
+        }
+        this.personId = personId;
         this.showNothing = false;
         this.recordList = [];
         getPlanList(personId).then(res => {
           this.xunLinListOne = res.data;
         })
-        this.$refs.supermap.clearC()
+        this.patrolTrajectory = null;
+        this.$refs.supermap.clearC();
       },
       //点击右侧巡林计划获取 巡查记录
-      getRecordList(id) {
+      getRecordList(id, patrolTrajectory) {
         this.showNothing = false;
         this.recordList = [];
         getRecordList(id).then(res => {
           this.recordList = res.data;
         })
-        this.$refs.supermap.clearC()
+        this.$refs.supermap.clearC();
+        this.setTaskPointList(patrolTrajectory);
       },
       //点击右侧巡查记录获取 巡查轨迹
       getPointList(id) {
@@ -315,6 +324,23 @@
           this.setPointList(res);
         })
       },
+      //点击巡查人员 巡查任务落点
+      setTaskPointList(patrolTrajectory) {
+        console.log("巡查任务落点", typeof JSON.parse(patrolTrajectory));
+        if(this.patrolTrajectory == patrolTrajectory){
+          this.patrolTrajectory = null;
+        }else {
+          this.patrolTrajectory = patrolTrajectory;
+          this.drawTaskPoint(this.patrolTrajectory);
+        }
+      },
+      // 巡查任务落点
+      drawTaskPoint(patrolTrajectory) {
+        setTimeout(() => {
+          this.$refs.supermap.clearC();
+          this.$refs.supermap.setConnectList(JSON.parse(patrolTrajectory), '#04f');
+        }, 1000)
+      },
       //点击巡查轨迹时段 巡查轨迹落点
       setPointList(res) {
         let that = this;
@@ -329,8 +355,8 @@
             this.connectList.push(latlng)
           }
           setTimeout(() => {
-            that.$refs.supermap.clearC()
-            that.$refs.supermap.setConnectList(this.connectList, 'red')
+            // that.$refs.supermap.clearC()
+            that.$refs.supermap.setConnectList(this.connectList, '#f40')
           }, 1000)
         } else {
           that.$refs.supermap.clearC()

+ 21 - 1
src/views/monitor.vue

@@ -106,7 +106,15 @@
               <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;"/>
             </div>
             <div class="i-list-con h-43">
-              <div class="d-l-con" v-for="(item,index) in visuForestCloudCameraBOList"
+              <el-input
+                v-model="rightDeptName"
+                placeholder="请输入摄像头名称"
+                clearable
+                size="small"
+                prefix-icon="el-icon-search"
+                style="margin-bottom: 20px"
+              />
+              <div class="d-l-con" v-for="(item,index) in visuForestCloudCameraBOListSearch"
                    :class="{on:listCurrentIndex2 == index}"
                    v-on:click="dropLocation(item.latitude,item.longitude,index)">
                 <div class="d-l-l-text">
@@ -253,12 +261,22 @@ export default {
       indentText: '收起左右栏',
       indentdisabled: false,
       domId: 'dom1',
+      rightDeptName: undefined,
+      visuForestCloudCameraBOListSearch:[]
     }
   },
   watch: {
     // 根据名称筛选部门树
     deptName(val) {
       this.$refs.tree.filter(val)
+    },
+    rightDeptName(val){
+      this.visuForestCloudCameraBOListSearch=[];
+      for (let i in this.visuForestCloudCameraBOList) {
+        if(this.visuForestCloudCameraBOList[i].cameraName.indexOf(val) != -1){
+          this.visuForestCloudCameraBOListSearch.push(this.visuForestCloudCameraBOList[i]);
+        }
+      }
     }
   },
   methods: {
@@ -399,6 +417,7 @@ export default {
         }
 
         that.visuForestCloudCameraBOList = res.data.visuForestCloudCameraBOList
+        that.visuForestCloudCameraBOListSearch = res.data.visuForestCloudCameraBOList
         if (res.data.visuForestCloudCameraBOList != null && res.data.visuForestCloudCameraBOList
           .length > 0) {
           for (let i = 0; i < res.data.visuForestCloudCameraBOList.length; i++) {
@@ -493,6 +512,7 @@ export default {
       selectCameraByDeptId(depId).then(res => {
         //根据设备类型查看列表
         that.visuForestCloudCameraBOList = res.data
+        that.visuForestCloudCameraBOListSearch = res.data
         if (res.data != null && res.data.length > 0) {
           for (let i = 0; i < res.data.length; i++) {
             let markersMap = {

+ 6 - 4
vue.config.js

@@ -9,7 +9,7 @@ const CompressionPlugin = require('compression-webpack-plugin')
 
 const name = process.env.VUE_APP_TITLE || '四平市态势感知平台' // 网页标题
 
-const port = process.env.port || process.env.npm_config_port || 80 // 端口
+const port = process.env.port || process.env.npm_config_port || 81 // 端口
 
 const ssl_path = require('path')
 const fs = require('fs')
@@ -18,7 +18,7 @@ const fs = require('fs')
 // 这里只列一部分,具体配置参考文档
 module.exports = {
   // 部署生产环境和开发环境下的URL。
-  // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上datacenter
+  // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
   // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
   publicPath: process.env.NODE_ENV === 'production' ? '/' : '/',
   // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
@@ -48,11 +48,13 @@ module.exports = {
      * 寻找附件-有缘人@阿弥陀佛
      * @param attach_ids
      */
+
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        // target: `http://127.0.0.1:3031`,
-        target: `http://121.36.228.66:3031`,
+        target: `http://127.0.0.1:3031`,
+        // target: `http://192.168.2.118:3031`,
+        // target: `http://121.36.228.66:3031`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''