|
@@ -59,6 +59,7 @@
|
|
|
</div> -->
|
|
|
<!-- 底部工具栏end -->
|
|
|
<div class="fire-m">
|
|
|
+ <el-button size="small" icon="el-icon-s-grid" @click="showTVWallDiaLog()">火点联动</el-button>
|
|
|
<el-button size="small" icon="el-icon-upload" @click="showheatPlotting()">火灾蔓延
|
|
|
</el-button>
|
|
|
</div>
|
|
@@ -161,7 +162,7 @@
|
|
|
</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>
|
|
@@ -240,10 +241,15 @@
|
|
|
<div class="z-info-btm-input-btn"
|
|
|
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>
|
|
@@ -272,7 +278,7 @@
|
|
|
class="top-dialog"
|
|
|
@close="cancelEventConfirm()">
|
|
|
<el-form label-width="80px">
|
|
|
- <el-form-item label="火灾半径" v-if="eventStatusButton=='qs'&&eventTypeXl==null">
|
|
|
+ <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">
|
|
@@ -288,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"
|
|
@@ -466,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()">
|
|
@@ -980,6 +1064,7 @@
|
|
|
<el-dialog title="人员选择" :visible.sync="showFindUserByDept" width="40%">
|
|
|
<findUserByDept v-if="showFindUserByDept" ref="findUserByDept" :deptId="iconCurrentIndex" @addSelection="addSelection"></findUserByDept>
|
|
|
</el-dialog>
|
|
|
+ <TVWall ref="TVWall"></TVWall>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -991,6 +1076,7 @@ import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部
|
|
|
import eventLogUpload from '@/views/eventLogUpload.vue' //日志上传文件
|
|
|
import areaSupermap from '@/components/supermap'//区域标记地图
|
|
|
import TcPlayer from '@/components/TcPlayer' //视频预览
|
|
|
+import TVWall from '@/components/TVWall.vue' //电视墙弹窗
|
|
|
import findUserByDept from '@/views/findUserByDept' //责任人选择弹框
|
|
|
import {
|
|
|
getEventDetail,
|
|
@@ -1007,8 +1093,11 @@ import {
|
|
|
dutysystemList,
|
|
|
dutysystemAdd,
|
|
|
dutysystemRemove,
|
|
|
+ sendMessage,
|
|
|
userFeginlist,
|
|
|
- eventHandling
|
|
|
+ eventHandling,
|
|
|
+ initByCameras,
|
|
|
+ userFeginlist
|
|
|
} from '@/api/forest'
|
|
|
import {
|
|
|
treeselectAll as deptTreeselect
|
|
@@ -1039,11 +1128,54 @@ export default {
|
|
|
supermapDialog,
|
|
|
eventLogUpload,
|
|
|
areaSupermap,
|
|
|
+ TVWall,
|
|
|
TcPlayer,
|
|
|
findUserByDept
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ aa:[
|
|
|
+ {
|
|
|
+ "switchTab":"2",
|
|
|
+ "treeLabels":[
|
|
|
+ {
|
|
|
+ "id":null,
|
|
|
+ "labelCode":"999",
|
|
|
+ "labelName":"电视墙",
|
|
|
+ "parentLabelCode":""
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "id":"spcamera00288",
|
|
|
+ "labelCode":"22030300001321100289",
|
|
|
+ "labelName":"四平市伊通县西苇椽子沟村",
|
|
|
+ "parentLabelCode":"999"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "labelChannels":[
|
|
|
+ {
|
|
|
+ "labelCode":"22030300001321100289",
|
|
|
+ "channelDates":[
|
|
|
+ {
|
|
|
+ "channelCode":"22030300001321100289",
|
|
|
+ "channelName":"四平市伊通县西苇椽子沟村可见光",
|
|
|
+ "channelSn":null,
|
|
|
+ "cameraType":null,
|
|
|
+ "online":"1",
|
|
|
+ "cameraCode":null
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "channelCode":"22030300001321100290",
|
|
|
+ "channelName":"四平市伊通县西苇椽子沟村热成像",
|
|
|
+ "channelSn":null,
|
|
|
+ "cameraType":null,
|
|
|
+ "online":"1",
|
|
|
+ "cameraCode":null
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
showFindUserByDept: false,//责任人选择框
|
|
|
//海康
|
|
|
cameraTitle: '',
|
|
@@ -1193,6 +1325,7 @@ export default {
|
|
|
visuForestCloudYuAnBo: null,
|
|
|
eventDialog: false,
|
|
|
showResponsibilityDialog: false,//责任制弹窗
|
|
|
+ showMeetingMsgDialog: false,//发送会议短信弹窗
|
|
|
depteventList: [],//责任制部门列表
|
|
|
iconCurrentIndex: '',
|
|
|
dutysystemDeptName: '',
|
|
@@ -1265,6 +1398,10 @@ export default {
|
|
|
},
|
|
|
methods: {
|
|
|
/************************************责任制-开始****************************************/
|
|
|
+ //初始化责任制数据列表
|
|
|
+ initDutysystemTableData(){
|
|
|
+ this.dutysystemTableData = [];
|
|
|
+ },
|
|
|
addLine: function() {//添加负责人行数
|
|
|
var newValue = {
|
|
|
id: '',//主键
|
|
@@ -1345,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位手机号码正则
|
|
@@ -1381,6 +1525,27 @@ export default {
|
|
|
this.eventDialog = false;
|
|
|
this.$emit('getFirespread', this.eventCode);
|
|
|
},
|
|
|
+ showTVWallDiaLog() {
|
|
|
+ this.initByCameras()
|
|
|
+ // this.$refs.TVWall.showTVWall();
|
|
|
+
|
|
|
+ },
|
|
|
+ initByCameras()
|
|
|
+ {
|
|
|
+ const params=Object.assign({})
|
|
|
+ params.longitude=this.longitude;
|
|
|
+ params.latitude=this.latitude;
|
|
|
+ params.type='7'
|
|
|
+ initByCameras(params).then(res=>
|
|
|
+ {
|
|
|
+ this.$refs.TVWall.showTVWall1(this.longitude,this.latitude,res.data);
|
|
|
+ this.$refs.supermap.isEditableLayers = false
|
|
|
+ this.$refs.bottomMenu.showChild = false
|
|
|
+ this.$refs.bottomMenu.showBanChild = false
|
|
|
+ this.$refs.bottomMenu.showChangChild = false
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
showUpdateYjYuAn() {
|
|
|
listYuAn().then(res => {
|
|
|
//关联预案列表
|
|
@@ -1429,7 +1594,7 @@ export default {
|
|
|
click: '',
|
|
|
parameter: '',
|
|
|
keepBindPopup: false,
|
|
|
- isAggregation: false
|
|
|
+ isAggregation: true
|
|
|
}
|
|
|
if (res.data.length > 50) {
|
|
|
markersMap.isAggregation = true
|
|
@@ -1516,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
|
|
@@ -1539,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
|
|
@@ -1777,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,
|
|
@@ -1838,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
|
|
@@ -1930,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) {
|
|
@@ -1968,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">' +
|
|
@@ -2016,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) {
|
|
@@ -2056,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">' +
|
|
@@ -2344,13 +2508,47 @@ export default {
|
|
|
},
|
|
|
/** ----------------------------------海康摄像头预览结束------------------------------------- */
|
|
|
/** ----------------------------------视频会议开始------------------------------------- */
|
|
|
+ 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();
|
|
|
+ })
|
|
|
+ },
|
|
|
/** ----------------------------------视频会议结束------------------------------------- */
|
|
|
}
|
|
|
}
|