|
|
@ -39,20 +39,21 @@ |
|
|
|
:before-close="drawerHandleClose" |
|
|
|
append-to-body |
|
|
|
:modal="false" |
|
|
|
style="left:26%;"> |
|
|
|
style="left: 26%" |
|
|
|
> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-timeline :reverse="reverse"> |
|
|
|
<el-timeline-item |
|
|
|
v-for="(activity, index) in disposalRecord" |
|
|
|
:key="index" |
|
|
|
:timestamp="activity.flowTime" |
|
|
|
style="color: #fff;" |
|
|
|
style="color: #fff" |
|
|
|
placement="top" |
|
|
|
type="primary" |
|
|
|
> |
|
|
|
<el-card> |
|
|
|
<h4 style="color: #fff;"> {{activity.flowDescription}}</h4> |
|
|
|
<p style="color: #fff;">用户:{{activity.nickName}}</p> |
|
|
|
<h4 style="color: #fff">{{ activity.flowDescription }}</h4> |
|
|
|
<p style="color: #fff">用户:{{ activity.nickName }}</p> |
|
|
|
</el-card> |
|
|
|
</el-timeline-item> |
|
|
|
</el-timeline> |
|
|
@ -62,7 +63,7 @@ |
|
|
|
<div class="dispatchLeft"> |
|
|
|
<div class="video"> |
|
|
|
<div class="title"> |
|
|
|
<i class="el-icon-video-camera" style="margin-right:15px;"></i> |
|
|
|
<i class="el-icon-video-camera" style="margin-right: 15px"></i> |
|
|
|
实时视频 |
|
|
|
<span>VIDEO MONITORING</span> |
|
|
|
<div class="touping" @click="handleTouping">投屏</div> |
|
|
@ -121,7 +122,7 @@ |
|
|
|
</div> |
|
|
|
<div class="evtMessage"> |
|
|
|
<div class="title"> |
|
|
|
<i class="el-icon-notebook-2" style="margin-right:15px;"></i> |
|
|
|
<i class="el-icon-notebook-2" style="margin-right: 15px"></i> |
|
|
|
事件信息 |
|
|
|
<span>EVENT INFORMATION</span> |
|
|
|
</div> |
|
|
@ -144,8 +145,16 @@ |
|
|
|
<div>{{ getDirection(eventForm.direction, eventForm) }}</div> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<div style="display: flex;justify-content: left;align-items: center;">影响车道:</div> |
|
|
|
<div style="width: 45%;">{{ eventForm.laneNoName }}</div> |
|
|
|
<div |
|
|
|
style=" |
|
|
|
display: flex; |
|
|
|
justify-content: left; |
|
|
|
align-items: center; |
|
|
|
" |
|
|
|
> |
|
|
|
影响车道: |
|
|
|
</div> |
|
|
|
<div style="width: 45%">{{ eventForm.laneNoName }}</div> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<div>桩号:</div> |
|
|
@ -162,7 +171,10 @@ |
|
|
|
fluid |
|
|
|
></video> |
|
|
|
</div> |
|
|
|
<div class="evtMessImg" v-if="eventForm.iconUrlList && eventForm.iconUrlList.length > 0"> |
|
|
|
<div |
|
|
|
class="evtMessImg" |
|
|
|
v-if="eventForm.iconUrlList && eventForm.iconUrlList.length > 0" |
|
|
|
> |
|
|
|
<el-image |
|
|
|
v-for="(item, index) of eventForm.iconUrlList" |
|
|
|
:key="index" |
|
|
@ -175,14 +187,18 @@ |
|
|
|
</div> |
|
|
|
<div class="plan"> |
|
|
|
<div class="title"> |
|
|
|
<i class="el-icon-phone-outline" style="margin-right:15px;"></i> |
|
|
|
<i class="el-icon-phone-outline" style="margin-right: 15px"></i> |
|
|
|
调度联络 |
|
|
|
<span>DISPATCHING LIAISON</span> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<el-tabs v-model="activeName" @tab-click="handleClick" type="card"> |
|
|
|
<el-tab-pane v-for="(item,index) in emergencyList" :key="index" |
|
|
|
:label="item.dictLabel" :name="item.dictValue"> |
|
|
|
<el-tab-pane |
|
|
|
v-for="(item, index) in emergencyList" |
|
|
|
:key="index" |
|
|
|
:label="item.dictLabel" |
|
|
|
:name="item.dictValue" |
|
|
|
> |
|
|
|
<el-table |
|
|
|
:data="implementList" |
|
|
|
stripe |
|
|
@ -196,12 +212,22 @@ |
|
|
|
prop="userName" |
|
|
|
width="100" |
|
|
|
/> |
|
|
|
<el-table-column label="联系方式" align="center" prop="phone" width="150"> |
|
|
|
<el-table-column |
|
|
|
label="联系方式" |
|
|
|
align="center" |
|
|
|
prop="phone" |
|
|
|
width="150" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span>{{ scope.row.phone }}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="岗位" align="center" prop="groupName" width="150"/> |
|
|
|
<el-table-column |
|
|
|
label="岗位" |
|
|
|
align="center" |
|
|
|
prop="groupName" |
|
|
|
width="150" |
|
|
|
/> |
|
|
|
</el-table> |
|
|
|
</el-tab-pane> |
|
|
|
</el-tabs> |
|
|
@ -210,10 +236,10 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="disLeftBox"> |
|
|
|
<div style="height:100%;"> |
|
|
|
<div style="height: 100%"> |
|
|
|
<div class="IncHand"> |
|
|
|
<div class="title"> |
|
|
|
<i class="el-icon-document" style="margin-right:15px;"></i> |
|
|
|
<i class="el-icon-document" style="margin-right: 15px"></i> |
|
|
|
事件处置 |
|
|
|
<span class="small">EVENT HANDLING</span> |
|
|
|
</div> |
|
|
@ -228,24 +254,40 @@ |
|
|
|
<p>{{ deadline4 }}</p> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="dieBox" style="height: 75%;overflow-y: auto;"> |
|
|
|
<div class="heightBox" style="height:100%;"> |
|
|
|
<div class="dieBox" style="height: 75%; overflow-y: auto"> |
|
|
|
<div class="heightBox" style="height: 100%"> |
|
|
|
<div |
|
|
|
v-for="(item, index) of incHandList" |
|
|
|
:key="index" |
|
|
|
:class="item.reserveId?'incHandContent incHandContentBox':'incHandContent'" |
|
|
|
:class=" |
|
|
|
item.reserveId |
|
|
|
? 'incHandContent incHandContentBox' |
|
|
|
: 'incHandContent' |
|
|
|
" |
|
|
|
:ref="'incHandContent' + index" |
|
|
|
> |
|
|
|
<div :class="item.reserveId?'classification classificationBox':'classification'"> |
|
|
|
<div class="topDashed" v-show="index != 0" |
|
|
|
:style="{'top':item.circlePosition}"> |
|
|
|
<p |
|
|
|
:style="{'height':item.lineHeight+'px'}"> |
|
|
|
</p> |
|
|
|
<div |
|
|
|
:class=" |
|
|
|
item.reserveId |
|
|
|
? 'classification classificationBox' |
|
|
|
: 'classification' |
|
|
|
" |
|
|
|
> |
|
|
|
<div |
|
|
|
class="topDashed" |
|
|
|
v-show="index != 0" |
|
|
|
:style="{ top: item.circlePosition }" |
|
|
|
> |
|
|
|
<p :style="{ height: item.lineHeight + 'px' }"></p> |
|
|
|
<span class="topCircle"></span> |
|
|
|
</div> |
|
|
|
<div class="menuBox"> |
|
|
|
<el-tooltip class="item" effect="dark" :content="item.flowContent" placement="right"> |
|
|
|
<el-tooltip |
|
|
|
class="item" |
|
|
|
effect="dark" |
|
|
|
:content="item.flowContent" |
|
|
|
placement="right" |
|
|
|
> |
|
|
|
<div |
|
|
|
class="type" |
|
|
|
:style="{ |
|
|
@ -262,23 +304,34 @@ |
|
|
|
</el-tooltip> |
|
|
|
<div |
|
|
|
v-show="getShow(item, index) == false && index != '0'" |
|
|
|
class="yijian" @click="getYiJian(item)" |
|
|
|
style="cursor: pointer"> |
|
|
|
class="yijian" |
|
|
|
@click="getYiJian(item)" |
|
|
|
style="cursor: pointer" |
|
|
|
> |
|
|
|
一键 |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="yijian" |
|
|
|
<div |
|
|
|
class="yijian" |
|
|
|
v-show="getShow(item, index) == true && index != '0'" |
|
|
|
@click="getYiJian(item)" |
|
|
|
style="cursor: pointer;"> |
|
|
|
style="cursor: pointer" |
|
|
|
> |
|
|
|
详情 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="dashed" |
|
|
|
<div |
|
|
|
class="dashed" |
|
|
|
:style="{ top: index == 0 ? '55px' : '76px' }" |
|
|
|
v-show="index != incHandList.length - 1"> |
|
|
|
v-show="index != incHandList.length - 1" |
|
|
|
> |
|
|
|
<span class="circle"></span> |
|
|
|
<p :style="{height:index == 0?'50px':item.lineHeight + 12 + 'px'}"></p> |
|
|
|
<p |
|
|
|
:style="{ |
|
|
|
height: |
|
|
|
index == 0 ? '50px' : item.lineHeight + 12 + 'px', |
|
|
|
}" |
|
|
|
></p> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
@ -297,40 +350,58 @@ |
|
|
|
: '', |
|
|
|
}" |
|
|
|
></div> |
|
|
|
<div style="width:100%;"> |
|
|
|
<div style="width: 100%"> |
|
|
|
<div |
|
|
|
v-for="(itm, inx) of item.children" |
|
|
|
:key="inx" |
|
|
|
class="contentList" |
|
|
|
style="width:100%;" |
|
|
|
style="width: 100%" |
|
|
|
> |
|
|
|
<div style="float: left;padding-right: 20px;line-height: 20px;">{{ itm.flowContent }}</div> |
|
|
|
<div |
|
|
|
style=" |
|
|
|
float: left; |
|
|
|
padding-right: 20px; |
|
|
|
line-height: 20px; |
|
|
|
" |
|
|
|
> |
|
|
|
{{ itm.flowContent }} |
|
|
|
</div> |
|
|
|
<!-- 预警完成按钮 --> |
|
|
|
<el-button type="success" |
|
|
|
<el-button |
|
|
|
type="success" |
|
|
|
plain |
|
|
|
size="mini" |
|
|
|
style="float: right; " |
|
|
|
style="float: right" |
|
|
|
icon="el-icon-check" |
|
|
|
v-show="itm.eventState != '0' && !itm.processId"> |
|
|
|
v-show="itm.eventState != '0' && !itm.processId" |
|
|
|
> |
|
|
|
完成 |
|
|
|
</el-button> |
|
|
|
<!-- 预案完成按钮 --> |
|
|
|
<el-button type="success" |
|
|
|
<el-button |
|
|
|
type="success" |
|
|
|
plain |
|
|
|
size="mini" |
|
|
|
style="float: right; " |
|
|
|
style="float: right" |
|
|
|
icon="el-icon-check" |
|
|
|
v-show="itm.eventState != '0' && itm.processId && itm.eqTypeId != '29'" |
|
|
|
@click="getManagementDevice(itm)"> |
|
|
|
v-show=" |
|
|
|
itm.eventState != '0' && |
|
|
|
itm.processId && |
|
|
|
itm.eqTypeId != '29' |
|
|
|
" |
|
|
|
@click="getManagementDevice(itm)" |
|
|
|
> |
|
|
|
完成 |
|
|
|
</el-button> |
|
|
|
<el-button type="success" |
|
|
|
<el-button |
|
|
|
type="success" |
|
|
|
plain |
|
|
|
size="mini" |
|
|
|
style="float: right; " |
|
|
|
style="float: right" |
|
|
|
icon="el-icon-check" |
|
|
|
v-show="itm.eventState != '0' && itm.eqTypeId == '29'" |
|
|
|
@click="getManagementDevice(itm)"> |
|
|
|
@click="getManagementDevice(itm)" |
|
|
|
> |
|
|
|
打开 |
|
|
|
</el-button> |
|
|
|
<!-- <img |
|
|
@ -339,8 +410,17 @@ |
|
|
|
v-show="itm.eventState != '0'" |
|
|
|
/> --> |
|
|
|
<!-- 下发 --> |
|
|
|
<div class="sendMsg" v-show="itm.eventState == '0'" @click="getManagementDevice(itm)"> |
|
|
|
<el-button type="primary" size="mini" icon="el-icon-pie-chart">处置</el-button> |
|
|
|
<div |
|
|
|
class="sendMsg" |
|
|
|
v-show="itm.eventState == '0'" |
|
|
|
@click="getManagementDevice(itm)" |
|
|
|
> |
|
|
|
<el-button |
|
|
|
type="primary" |
|
|
|
size="mini" |
|
|
|
icon="el-icon-pie-chart" |
|
|
|
>处置</el-button |
|
|
|
> |
|
|
|
<!-- <img |
|
|
|
:src="incHand1" |
|
|
|
style="float: right; " |
|
|
@ -358,7 +438,9 @@ |
|
|
|
<!-- <el-divider></el-divider> --> |
|
|
|
<div class="rightButton"> |
|
|
|
<el-button round type="primary" @click="over">立即完结</el-button> |
|
|
|
<el-button round type="warning" @click="levelTop">警情升级</el-button> |
|
|
|
<el-button round type="warning" @click="levelTop" |
|
|
|
>警情升级</el-button |
|
|
|
> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -603,7 +685,11 @@ |
|
|
|
:brandList="this.brandList" |
|
|
|
:directionList="this.directionList" |
|
|
|
:eqTypeDialogList="this.eqTypeDialogList" |
|
|
|
v-if="[14, 21, 32, 33, 15, 35,40,39,48,45].includes(this.eqInfo.clickEqType)" |
|
|
|
v-if=" |
|
|
|
[14, 21, 32, 33, 15, 35, 40, 39, 48, 45].includes( |
|
|
|
this.eqInfo.clickEqType |
|
|
|
) |
|
|
|
" |
|
|
|
:eqInfo="this.eqInfo" |
|
|
|
@dialogClose="dialogClose" |
|
|
|
></com-data> |
|
|
@ -686,52 +772,61 @@ |
|
|
|
:visible.sync="dialogVisible" |
|
|
|
width="30%" |
|
|
|
:before-close="handleClose" |
|
|
|
:close-on-click-modal="false"> |
|
|
|
:close-on-click-modal="false" |
|
|
|
> |
|
|
|
<div class="dialogStyleBox"> |
|
|
|
<div class="dialogLine"></div> |
|
|
|
<div class="dialogCloseButton"></div> |
|
|
|
</div> |
|
|
|
<el-form ref="levelForm" :model="levelForm" :rules="rules" label-width="80px"> |
|
|
|
<el-form |
|
|
|
ref="levelForm" |
|
|
|
:model="levelForm" |
|
|
|
:rules="rules" |
|
|
|
label-width="80px" |
|
|
|
> |
|
|
|
<el-row> |
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item label="当前类型" prop="typeName"> |
|
|
|
<el-input |
|
|
|
v-model="levelForm.typeName" |
|
|
|
:disabled="true"> |
|
|
|
<el-input v-model="levelForm.typeName" :disabled="true"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item label="当前等级" prop="dengji"> |
|
|
|
<el-input |
|
|
|
v-model="levelForm.dengji" |
|
|
|
:disabled="true"> |
|
|
|
</el-input> |
|
|
|
<el-input v-model="levelForm.dengji" :disabled="true"> </el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-form-item label="当前预案" prop="yaName"> |
|
|
|
<el-input |
|
|
|
v-model="levelForm.yaName" |
|
|
|
:disabled="true"> |
|
|
|
</el-input> |
|
|
|
<el-input v-model="levelForm.yaName" :disabled="true"> </el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item label="更改等级" prop="eventGrade"> |
|
|
|
<el-select v-model="levelForm.eventGrade" placeholder="请选择等级" @change="levelChange(levelForm.eventGrade)"> |
|
|
|
<el-option v-for="dict in eventGradeList" |
|
|
|
<el-select |
|
|
|
v-model="levelForm.eventGrade" |
|
|
|
placeholder="请选择等级" |
|
|
|
@change="levelChange(levelForm.eventGrade)" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="dict in eventGradeList" |
|
|
|
:key="dict.dictValue" |
|
|
|
:label="dict.dictLabel" |
|
|
|
:value="dict.dictValue"> |
|
|
|
:value="dict.dictValue" |
|
|
|
> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item label="更改预案" prop="currencyId"> |
|
|
|
<el-select v-model="levelForm.currencyId" placeholder="请选择预案"> |
|
|
|
<el-option label="区域一" v-for="(item,index) in ReservePlanList" |
|
|
|
<el-select |
|
|
|
v-model="levelForm.currencyId" |
|
|
|
placeholder="请选择预案" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
label="区域一" |
|
|
|
v-for="(item, index) in ReservePlanList" |
|
|
|
:key="item.id" |
|
|
|
:label="item.planName" |
|
|
|
:value="item.id" |
|
|
@ -746,14 +841,17 @@ |
|
|
|
type="textarea" |
|
|
|
:rows="5" |
|
|
|
placeholder="请输入升级原因" |
|
|
|
v-model="levelForm.remark"> |
|
|
|
v-model="levelForm.remark" |
|
|
|
> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-form> |
|
|
|
<span slot="footer" class="dialog-footer"> |
|
|
|
<el-button type="primary" @click="changeLevel" class="submitButton">确 定</el-button> |
|
|
|
<el-button type="primary" @click="changeLevel" class="submitButton" |
|
|
|
>确 定</el-button |
|
|
|
> |
|
|
|
<el-button @click="closeDialog()" class="closeButton">取 消</el-button> |
|
|
|
</span> |
|
|
|
</el-dialog> |
|
|
@ -774,7 +872,7 @@ |
|
|
|
<div class="GDeviceBox"> |
|
|
|
<el-row> |
|
|
|
<el-col :span="24"> |
|
|
|
<p style="padding:15px;">设备控制</p> |
|
|
|
<p style="padding: 15px">设备控制</p> |
|
|
|
<!-- <el-card shadow="always"> --> |
|
|
|
<el-table |
|
|
|
:data="GDeviceData.deviceList" |
|
|
@ -783,16 +881,8 @@ |
|
|
|
:fit="true" |
|
|
|
empty-text="该桩号下暂无匹配设备" |
|
|
|
> |
|
|
|
<el-table-column |
|
|
|
label="设备名称" |
|
|
|
align="center" |
|
|
|
prop="eqName" |
|
|
|
/> |
|
|
|
<el-table-column |
|
|
|
label="桩号" |
|
|
|
align="center" |
|
|
|
prop="eqPile" |
|
|
|
/> |
|
|
|
<el-table-column label="设备名称" align="center" prop="eqName" /> |
|
|
|
<el-table-column label="桩号" align="center" prop="eqPile" /> |
|
|
|
<el-table-column label="执行状态" align="center"> |
|
|
|
<template> |
|
|
|
<span>{{ deviceStateName }}</span> |
|
|
@ -802,49 +892,78 @@ |
|
|
|
<!-- </el-card> --> |
|
|
|
</el-col> |
|
|
|
<el-col :span="24" v-if="GDeviceData.vmsData"> |
|
|
|
<p style="padding:15px;">{{boxName}}:</p> |
|
|
|
<p style="padding: 15px">{{ boxName }}:</p> |
|
|
|
<el-card shadow="always"> |
|
|
|
<div style="display: flex;justify-content: flex-start;align-items: center;"> |
|
|
|
<div :style="{ |
|
|
|
'width':GDeviceData.vmsData['width'] + 'px', |
|
|
|
'height':GDeviceData.vmsData['height'] + 'px', |
|
|
|
'color':GDeviceData.vmsData['font_color'], |
|
|
|
<div |
|
|
|
style=" |
|
|
|
display: flex; |
|
|
|
justify-content: flex-start; |
|
|
|
align-items: center; |
|
|
|
" |
|
|
|
> |
|
|
|
<div |
|
|
|
:style="{ |
|
|
|
width: GDeviceData.vmsData['width'] + 'px', |
|
|
|
height: GDeviceData.vmsData['height'] + 'px', |
|
|
|
color: GDeviceData.vmsData['font_color'], |
|
|
|
'font-size': GDeviceData.vmsData['font_size'] + 'px', |
|
|
|
'font-family': GDeviceData.vmsData['font_type'], |
|
|
|
'background-color': '#000', |
|
|
|
'position':'relative', |
|
|
|
}"> |
|
|
|
<span :style="{ |
|
|
|
'position':'absolute', |
|
|
|
'top':GDeviceData.vmsData['top'] + 'px', |
|
|
|
'left':GDeviceData.vmsData['left'] + 'px', |
|
|
|
position: 'relative', |
|
|
|
}" |
|
|
|
> |
|
|
|
<span |
|
|
|
:style="{ |
|
|
|
position: 'absolute', |
|
|
|
top: GDeviceData.vmsData['top'] + 'px', |
|
|
|
left: GDeviceData.vmsData['left'] + 'px', |
|
|
|
}" |
|
|
|
style="line-height: 1" |
|
|
|
v-html="GDeviceData.vmsData['content'].replace( |
|
|
|
/\n|\r\n/g, |
|
|
|
'<br>' |
|
|
|
).replace(/ /g, '  ')"> |
|
|
|
v-html=" |
|
|
|
GDeviceData.vmsData['content'] |
|
|
|
.replace(/\n|\r\n/g, '<br>') |
|
|
|
.replace(/ /g, '  ') |
|
|
|
" |
|
|
|
> |
|
|
|
</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-card> |
|
|
|
</el-col> |
|
|
|
<el-col :span="24" v-if="boxName == '下发指令' || boxName == '执行文件' && GDeviceData.deviceList != undefined"> |
|
|
|
<p style="padding:15px;">{{boxName}}:</p> |
|
|
|
<el-card v-show="GDeviceData && !GDeviceData.vmsData" shadow="always"> |
|
|
|
<div style="display: flex;align-items: center;"> |
|
|
|
<img v-for="(items,idx) in GDeviceData.deviceIconUrl" :key="idx" |
|
|
|
<el-col |
|
|
|
:span="24" |
|
|
|
v-if=" |
|
|
|
boxName == '下发指令' || |
|
|
|
(boxName == '执行文件' && GDeviceData.deviceList != undefined) |
|
|
|
" |
|
|
|
> |
|
|
|
<p style="padding: 15px">{{ boxName }}:</p> |
|
|
|
<el-card |
|
|
|
v-show="GDeviceData && !GDeviceData.vmsData" |
|
|
|
shadow="always" |
|
|
|
> |
|
|
|
<div style="display: flex; align-items: center"> |
|
|
|
<img |
|
|
|
v-for="(items, idx) in GDeviceData.deviceIconUrl" |
|
|
|
:key="idx" |
|
|
|
:src="items" |
|
|
|
/> |
|
|
|
<p style="padding-left: 15px;">{{ GDeviceData.deviceState }}</p> |
|
|
|
<p style="padding-left: 15px">{{ GDeviceData.deviceState }}</p> |
|
|
|
</div> |
|
|
|
</el-card> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</div> |
|
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
<el-button v-show="buttonDisable" @click="changeIncHand" class="submitButton">执 行</el-button> |
|
|
|
<el-button @click="cancelIssuedDialog" class="closeButton">取 消</el-button> |
|
|
|
<el-button |
|
|
|
v-show="buttonDisable" |
|
|
|
@click="changeIncHand" |
|
|
|
class="submitButton" |
|
|
|
>执 行</el-button |
|
|
|
> |
|
|
|
<el-button @click="cancelIssuedDialog" class="closeButton" |
|
|
|
>取 消</el-button |
|
|
|
> |
|
|
|
</div> |
|
|
|
</el-dialog> |
|
|
|
<!-- 一键详情弹窗 --> |
|
|
@ -863,73 +982,107 @@ |
|
|
|
</div> |
|
|
|
<div class="GDeviceBox" style="overflow-y: auto; max-height: 60vh"> |
|
|
|
<p class="empty-text" v-show="oneKeyList.length < 1">暂无匹配设备</p> |
|
|
|
<div v-for="(item,index) in oneKeyList" :key="index" class="GDeviceCard"> |
|
|
|
<div |
|
|
|
v-for="(item, index) in oneKeyList" |
|
|
|
:key="index" |
|
|
|
class="GDeviceCard" |
|
|
|
> |
|
|
|
<el-card> |
|
|
|
<p style="padding-bottom:15px;">{{item.processName}}</p> |
|
|
|
<p style="padding-bottom: 15px">{{ item.processName }}</p> |
|
|
|
<el-table |
|
|
|
v-show="oneKeyList.length >= 1" |
|
|
|
:data="item.deviceList" |
|
|
|
style="width: 100%" |
|
|
|
class="phoneTable"> |
|
|
|
class="phoneTable" |
|
|
|
> |
|
|
|
<el-table-column prop="eqName" label="设备名称" align="center"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="eqPile" label="设备桩号" align="center"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
prop="eqName" |
|
|
|
label="设备名称" |
|
|
|
label="模板内容" |
|
|
|
align="center" |
|
|
|
v-if="item.deviceType == '16' || item.deviceType == '36'" |
|
|
|
> |
|
|
|
{{ item.vmsData["content"] }} |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
prop="eqPile" |
|
|
|
label="设备桩号" |
|
|
|
label="下发指令" |
|
|
|
align="center" |
|
|
|
v-if=" |
|
|
|
item.deviceType != '22' && |
|
|
|
item.deviceType != '16' && |
|
|
|
item.deviceType != '36' |
|
|
|
" |
|
|
|
> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="模板内容" align="center" v-if="item.deviceType == '16' || item.deviceType == '36'"> |
|
|
|
{{item.vmsData['content']}} |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="下发指令" align="center" v-if="item.deviceType != '22' && item.deviceType != '16' && item.deviceType != '36'"> |
|
|
|
{{ item.deviceState }} |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="执行文件" align="center" v-if="item.deviceType == '22'"> |
|
|
|
<el-table-column |
|
|
|
label="执行文件" |
|
|
|
align="center" |
|
|
|
v-if="item.deviceType == '22'" |
|
|
|
> |
|
|
|
{{ item.lsData }} |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="执行状态" align="center"> |
|
|
|
{{item.handleState == '0' ? '未执行':'已执行'}} |
|
|
|
{{ item.handleState == "0" ? "未执行" : "已执行" }} |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</el-card> |
|
|
|
<el-card> |
|
|
|
<!-- 情报板 --> |
|
|
|
<p v-if="item.deviceType == '16' || item.deviceType == '36'" style="padding-bottom:15px;">执行模板:</p> |
|
|
|
<div class="templateImg" v-if="item.deviceType == '16' || item.deviceType == '36'"> |
|
|
|
<p |
|
|
|
v-if="item.deviceType == '16' || item.deviceType == '36'" |
|
|
|
style="padding-bottom: 15px" |
|
|
|
> |
|
|
|
执行模板: |
|
|
|
</p> |
|
|
|
<div |
|
|
|
class="templateImg" |
|
|
|
v-if="item.deviceType == '16' || item.deviceType == '36'" |
|
|
|
> |
|
|
|
<!-- <p>情报板执行模板</p> --> |
|
|
|
<el-card shadow="always"> |
|
|
|
<div style="display: flex;justify-content: flex-start;align-items: center;"> |
|
|
|
<div :style="{ |
|
|
|
'width':item.vmsData['width'] + 'px', |
|
|
|
'height':item.vmsData['height'] + 'px', |
|
|
|
'color':item.vmsData['font_color'], |
|
|
|
<div |
|
|
|
style=" |
|
|
|
display: flex; |
|
|
|
justify-content: flex-start; |
|
|
|
align-items: center; |
|
|
|
" |
|
|
|
> |
|
|
|
<div |
|
|
|
:style="{ |
|
|
|
width: item.vmsData['width'] + 'px', |
|
|
|
height: item.vmsData['height'] + 'px', |
|
|
|
color: item.vmsData['font_color'], |
|
|
|
'font-size': item.vmsData['font_size'] + 'px', |
|
|
|
'font-family': item.vmsData['font_type'], |
|
|
|
'background-color': '#000', |
|
|
|
'position':'relative', |
|
|
|
}"> |
|
|
|
<span :style="{ |
|
|
|
'position':'absolute', |
|
|
|
'top':item.vmsData['top'] + 'px', |
|
|
|
'left':item.vmsData['left'] + 'px', |
|
|
|
position: 'relative', |
|
|
|
}" |
|
|
|
> |
|
|
|
<span |
|
|
|
:style="{ |
|
|
|
position: 'absolute', |
|
|
|
top: item.vmsData['top'] + 'px', |
|
|
|
left: item.vmsData['left'] + 'px', |
|
|
|
}" |
|
|
|
style="line-height: 1" |
|
|
|
v-html="item.vmsData['content'].replace( |
|
|
|
/\n|\r\n/g, |
|
|
|
'<br>' |
|
|
|
).replace(/ /g, '  ')"> |
|
|
|
v-html=" |
|
|
|
item.vmsData['content'] |
|
|
|
.replace(/\n|\r\n/g, '<br>') |
|
|
|
.replace(/ /g, '  ') |
|
|
|
" |
|
|
|
> |
|
|
|
</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-card> |
|
|
|
</div> |
|
|
|
<!-- 广播 --> |
|
|
|
<p v-if="item.deviceType == '22'" style="padding-bottom:15px;">执行文件:</p> |
|
|
|
<p v-if="item.deviceType == '22'" style="padding-bottom: 15px"> |
|
|
|
执行文件: |
|
|
|
</p> |
|
|
|
<div class="templateImg" v-if="item.deviceType == '22'"> |
|
|
|
<el-card shadow="always" class="otherBox"> |
|
|
|
<img :src="item.deviceIconUrl" /> |
|
|
@ -937,10 +1090,28 @@ |
|
|
|
</el-card> |
|
|
|
</div> |
|
|
|
<!-- 其他设备 --> |
|
|
|
<p v-if="item.deviceType != '16' && item.deviceType != '36' && item.deviceType != '22'" style="padding-bottom:15px;">执行状态:</p> |
|
|
|
<div class="templateImg" v-if="item.deviceType != '16' && item.deviceType != '36' && item.deviceType != '22'"> |
|
|
|
<p |
|
|
|
v-if=" |
|
|
|
item.deviceType != '16' && |
|
|
|
item.deviceType != '36' && |
|
|
|
item.deviceType != '22' |
|
|
|
" |
|
|
|
style="padding-bottom: 15px" |
|
|
|
> |
|
|
|
执行状态: |
|
|
|
</p> |
|
|
|
<div |
|
|
|
class="templateImg" |
|
|
|
v-if=" |
|
|
|
item.deviceType != '16' && |
|
|
|
item.deviceType != '36' && |
|
|
|
item.deviceType != '22' |
|
|
|
" |
|
|
|
> |
|
|
|
<el-card shadow="always" class="otherBox"> |
|
|
|
<img v-for="(items,idx) in item.deviceIconUrl" :key="idx" |
|
|
|
<img |
|
|
|
v-for="(items, idx) in item.deviceIconUrl" |
|
|
|
:key="idx" |
|
|
|
:src="items" |
|
|
|
/> |
|
|
|
<p>{{ item.deviceState }}</p> |
|
|
@ -953,10 +1124,13 @@ |
|
|
|
<el-button |
|
|
|
class="submitButton" |
|
|
|
v-show="yjShow == false" |
|
|
|
@click="oneKeyExecute()"> |
|
|
|
@click="oneKeyExecute()" |
|
|
|
> |
|
|
|
执 行 |
|
|
|
</el-button> |
|
|
|
<el-button @click="oneKeyDialogVisible = false" class="closeButton">取 消</el-button> |
|
|
|
<el-button @click="oneKeyDialogVisible = false" class="closeButton" |
|
|
|
>取 消</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
</el-dialog> |
|
|
|
<!-- 巡检机器人 --> |
|
|
@ -974,8 +1148,16 @@ |
|
|
|
/> |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
<jointControl ref = "jointControl" :show="visibleSync" :eqIdList="eqIdList"></jointControl> |
|
|
|
<workBench class="workBenchBox" ref="workBenchRef" :robotPositon="robotPositon"/> |
|
|
|
<jointControl |
|
|
|
ref="jointControl" |
|
|
|
:show="visibleSync" |
|
|
|
:eqIdList="eqIdList" |
|
|
|
></jointControl> |
|
|
|
<workBench |
|
|
|
class="workBenchBox" |
|
|
|
ref="workBenchRef" |
|
|
|
:robotPositon="robotPositon" |
|
|
|
/> |
|
|
|
|
|
|
|
<!-- </el-dialog> --> |
|
|
|
</div> |
|
|
@ -984,7 +1166,11 @@ |
|
|
|
import robot from "@/views/workbench/config/components/robotManagement"; |
|
|
|
import { intervalTime } from "../../../utils/index.js"; |
|
|
|
import { mapState } from "vuex"; |
|
|
|
import { getTunnels,getWorkStagingRobot,listTunnels1 } from "@/api/equipment/tunnel/api.js"; |
|
|
|
import { |
|
|
|
getTunnels, |
|
|
|
getWorkStagingRobot, |
|
|
|
listTunnels1, |
|
|
|
} from "@/api/equipment/tunnel/api.js"; |
|
|
|
import { laneImage, laneImage2 } from "../../../utils/configData.js"; |
|
|
|
import { listType } from "@/api/equipment/type/api.js"; |
|
|
|
import { getDeviceData } from "@/api/workbench/config.js"; |
|
|
@ -1123,7 +1309,8 @@ export default { |
|
|
|
directionList: [], |
|
|
|
eventForm: {}, |
|
|
|
timer: null, |
|
|
|
laneUrlList: this.$cache.local.get("navigationBar") == '0'?laneImage:laneImage2, |
|
|
|
laneUrlList: |
|
|
|
this.$cache.local.get("navigationBar") == "0" ? laneImage : laneImage2, |
|
|
|
eqTypeStateList: null, |
|
|
|
// selectedIconList: [], |
|
|
|
backImg: "", |
|
|
@ -1241,7 +1428,7 @@ export default { |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
openWorkBench() { |
|
|
|
this.$refs.workBenchRef.init(this.workBenchProp) |
|
|
|
this.$refs.workBenchRef.init(this.workBenchProp); |
|
|
|
}, |
|
|
|
handleTouping() { |
|
|
|
this.$confirm("即将投屏, 是否继续?", "提示", { |
|
|
@ -1340,13 +1527,13 @@ export default { |
|
|
|
}, |
|
|
|
getManagementDevice(item) { |
|
|
|
console.log(item); |
|
|
|
console.log(this.$route.query.id,"aaaaa") |
|
|
|
console.log(this.$route.query.id, "aaaaa"); |
|
|
|
if (item.eqTypeId == 29) { |
|
|
|
this.robotDialogVisible = true; |
|
|
|
if (item.eventState == "0") { |
|
|
|
roBotDong(this.$route.query.id, item.id).then((res) => { |
|
|
|
this.evtHandle(); |
|
|
|
}) |
|
|
|
}); |
|
|
|
} |
|
|
|
return; |
|
|
|
} |
|
|
@ -1719,15 +1906,15 @@ export default { |
|
|
|
}); |
|
|
|
this.$nextTick(() => { |
|
|
|
let heightBox = document.querySelectorAll(".heightBox > *"); |
|
|
|
let arr = [] |
|
|
|
let arr = []; |
|
|
|
|
|
|
|
for (let i = 0; i < heightBox.length; i++) { |
|
|
|
let obj = {} |
|
|
|
obj.incHandContentBox = 0 |
|
|
|
obj.classificationBox = 0 |
|
|
|
let obj = {}; |
|
|
|
obj.incHandContentBox = 0; |
|
|
|
obj.classificationBox = 0; |
|
|
|
obj.incHandContentBox = heightBox[i].offsetHeight; |
|
|
|
obj.classificationBox = heightBox[i].firstChild.offsetHeight |
|
|
|
arr.push(obj) |
|
|
|
obj.classificationBox = heightBox[i].firstChild.offsetHeight; |
|
|
|
arr.push(obj); |
|
|
|
} |
|
|
|
for (let i = 0; i < this.incHandList.length; i++) { |
|
|
|
for (let itm of this.incHandList[i].children) { |
|
|
@ -1739,8 +1926,10 @@ export default { |
|
|
|
} |
|
|
|
for (let j = 0; j < arr.length; j++) { |
|
|
|
if (i == j) { |
|
|
|
this.incHandList[i].lineHeight = (arr[j].incHandContentBox - arr[j].classificationBox) / 2 |
|
|
|
this.incHandList[i].circlePosition = "-" + (this.incHandList[i].lineHeight + 10) + "px" |
|
|
|
this.incHandList[i].lineHeight = |
|
|
|
(arr[j].incHandContentBox - arr[j].classificationBox) / 2; |
|
|
|
this.incHandList[i].circlePosition = |
|
|
|
"-" + (this.incHandList[i].lineHeight + 10) + "px"; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -1763,18 +1952,17 @@ export default { |
|
|
|
}, |
|
|
|
// 事件详情 |
|
|
|
async getListEvent() { |
|
|
|
|
|
|
|
if (this.$route.query.id) { |
|
|
|
const param = { |
|
|
|
id: this.$route.query.id, |
|
|
|
}; |
|
|
|
await listEvent(param).then((response) => { |
|
|
|
console.log(response.rows,"事件详情") |
|
|
|
console.log(response.rows, "事件详情"); |
|
|
|
this.workBenchProp = { |
|
|
|
tunnelStationName: response.rows[0].tunnelStationName, |
|
|
|
tunnelName: response.rows[0].tunnelName, |
|
|
|
tunnelId:response.rows[0].tunnelId |
|
|
|
} |
|
|
|
tunnelId: response.rows[0].tunnelId, |
|
|
|
}; |
|
|
|
if (response.rows[0].tunnelId == "JQ-JiNan-WenZuBei-MJY") { |
|
|
|
listTunnels1().then((res) => { |
|
|
|
for (let item of res.rows) { |
|
|
@ -1783,7 +1971,7 @@ export default { |
|
|
|
Number(item.endPileNum) - Number(item.startPileNum) + 10; |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}); |
|
|
|
this.robotTimer = setInterval(() => { |
|
|
|
setTimeout(this.getRobot, 0); |
|
|
|
}, 1000 * 5); |
|
|
@ -1812,10 +2000,8 @@ export default { |
|
|
|
}; |
|
|
|
await getWorkStagingRobot(param).then((res) => { |
|
|
|
// console.log(res, "机器人"); |
|
|
|
this.robotPositon = ( |
|
|
|
(Number(res.data.position) / this.tunnelLang) * |
|
|
|
100 |
|
|
|
).toFixed(2) - 1; |
|
|
|
this.robotPositon = |
|
|
|
((Number(res.data.position) / this.tunnelLang) * 100).toFixed(2) - 1; |
|
|
|
}); |
|
|
|
}, |
|
|
|
// 左上角视频 |
|
|
|