变电近电作业,受限空间
This commit is contained in:
parent
c5517b019b
commit
1acf302d0b
|
|
@ -166,3 +166,52 @@ export const queryWarnConfigApi = (data) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询有限空间监测设备 - 报警记录
|
||||||
|
export const queryWarnSpaceListApi = (data) => {
|
||||||
|
return request.get(`/base/screen/info/queryInfoWarnSpaceList`, {
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询有限空间当年监测设备 - 报警记录
|
||||||
|
export const queryWarnSpaceMonthApi = (data) => {
|
||||||
|
return request.get(`/base/screen/info/queryInfoWarnSpaceMonth`, {
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询有限空间当年违章类型占比监测设备 - 报警记录
|
||||||
|
export const queryWarnSpaceTypeApi = (data) => {
|
||||||
|
return request.get(`/base/screen/info/queryInfoWarnSpaceType`, {
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除受限空间视频预警
|
||||||
|
export const delWarnSpace = (data) => {
|
||||||
|
return request.post('/base/screen/info/delWarnSpace', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询近电感应设备 - 报警记录
|
||||||
|
export const queryWarnElectListApi = (data) => {
|
||||||
|
return request.get(`/base/screen/info/queryInfoWarnElectList`, {
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除近电感应预警
|
||||||
|
export const delWarnElect = (data) => {
|
||||||
|
return request.post('/base/screen/info/delWarnElect', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询近电感应参数配置数据
|
||||||
|
export const getWarnElectConfigApi = (data) => {
|
||||||
|
return request.get(`/base/screen/info/getWarnElectConfig`, {
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改近电感应参数配置数据
|
||||||
|
export const editConfig = (data) => {
|
||||||
|
return request.post('/base/screen/info/editConfig', data)
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
|
|
@ -344,8 +344,8 @@
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 查看位移历史记录弹窗 -->
|
<!-- 查看位移历史记录弹窗 -->
|
||||||
<el-dialog :title="title" :visible.sync="showShift" width="1000px" height="800px" append-to-body @close="closeShift">
|
<el-dialog :title="title" :visible.sync="showShift" width="1000px" height="800px" append-to-body @close="closeShift">
|
||||||
<el-form :model="queryShift" ref="queryFormShift" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryShift" ref="queryFormShift" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
<el-form-item label="设备名称" prop="deviceName">
|
<el-form-item label="设备名称" prop="deviceName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryShift.deviceName"
|
v-model="queryShift.deviceName"
|
||||||
|
|
@ -479,6 +479,7 @@ export default {
|
||||||
showSearch: true,
|
showSearch: true,
|
||||||
settleLoad: false,
|
settleLoad: false,
|
||||||
shiftLoad: false,
|
shiftLoad: false,
|
||||||
|
tableShiftList: [],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
|
@ -549,31 +550,7 @@ export default {
|
||||||
})
|
})
|
||||||
this.detectShiftList = res.data.data
|
this.detectShiftList = res.data.data
|
||||||
},
|
},
|
||||||
// async getTowerTodayData(proId) {
|
|
||||||
// let res = await queryTowerTodayApi({
|
|
||||||
// proId
|
|
||||||
// })
|
|
||||||
// res.data.forEach(item => {
|
|
||||||
// if(item.devType === '117') {
|
|
||||||
// item.angle = item.jcValue + '°'
|
|
||||||
// } else if(item.dev === '118') {
|
|
||||||
// item.pull = item.jcValue + 'N'
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
// this.detectList = res.data
|
|
||||||
// },
|
|
||||||
// async getEnvironmentData(devId, type) {
|
|
||||||
// let res = await queryEnvironmentInfoByIdApi({
|
|
||||||
// devId
|
|
||||||
// })
|
|
||||||
// if(type === '117') {
|
|
||||||
// this.angleFirst = res.data.data[0].jcValue
|
|
||||||
// this.angleList = res.data.data.filter(item => item.jcUnit === '°')
|
|
||||||
// } else if(type === '118') {
|
|
||||||
// this.pullFirst = res.data.data[0].jcValue
|
|
||||||
// this.pullList = res.data.data.filter(item => item.jcUnit === 'N')
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
selTowerAngle(val) {
|
selTowerAngle(val) {
|
||||||
console.log(val)
|
console.log(val)
|
||||||
this.currentAngleTower = val.devId
|
this.currentAngleTower = val.devId
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,22 @@
|
||||||
<img src="../../assets/img/lef-badge.png" alt="" />
|
<img src="../../assets/img/lef-badge.png" alt="" />
|
||||||
GLL通管监测
|
GLL通管监测
|
||||||
</div>
|
</div>
|
||||||
|
<div style="display: flex; justify-content: right">
|
||||||
|
<el-select
|
||||||
|
v-model="deviceVal"
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
placeholder="请选择"
|
||||||
|
@change="deviceChange"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in deviceRange"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="work-icons">
|
<div class="work-icons">
|
||||||
<!-- <div
|
<!-- <div
|
||||||
|
|
@ -19,7 +35,7 @@
|
||||||
</div>-->
|
</div>-->
|
||||||
<div class="single-icon">
|
<div class="single-icon">
|
||||||
<span style="color: #42c8e3"
|
<span style="color: #42c8e3"
|
||||||
>{{environmentInfoList ? environmentInfoList[8].jcValue : '0'}}°C</span>
|
>{{environmentInfoList ? environmentInfoList[0].jcValue : '0'}}°C</span>
|
||||||
<span>温度</span>
|
<span>温度</span>
|
||||||
<img src="../../assets/img/temp.png" alt="" />
|
<img src="../../assets/img/temp.png" alt="" />
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -38,7 +54,7 @@
|
||||||
<span style="color: #87d674"
|
<span style="color: #87d674"
|
||||||
>{{
|
>{{
|
||||||
environmentInfoList
|
environmentInfoList
|
||||||
? environmentInfoList[9].jcValue
|
? environmentInfoList[1].jcValue
|
||||||
: '0'
|
: '0'
|
||||||
}}%rh</span
|
}}%rh</span
|
||||||
>
|
>
|
||||||
|
|
@ -46,26 +62,15 @@
|
||||||
<img src="../../assets/img/wet.png" alt="" />
|
<img src="../../assets/img/wet.png" alt="" />
|
||||||
</div>
|
</div>
|
||||||
<div class="single-icon">
|
<div class="single-icon">
|
||||||
<span style="color: #f2ad49"
|
<span style="color:cornflowerblue"
|
||||||
>{{
|
>{{
|
||||||
environmentInfoList
|
environmentInfoList
|
||||||
? environmentInfoList[5].jcValue
|
? environmentInfoList[2].jcValue
|
||||||
: '0'
|
|
||||||
}}db</span
|
|
||||||
>
|
|
||||||
<span>噪声</span>
|
|
||||||
<img src="../../assets/img/loud.png" alt="" />
|
|
||||||
</div>
|
|
||||||
<div class="single-icon">
|
|
||||||
<span style="color:blue"
|
|
||||||
>{{
|
|
||||||
environmentInfoList
|
|
||||||
? environmentInfoList[3].jcValue
|
|
||||||
: '0'
|
: '0'
|
||||||
}}/ugm3</span
|
}}/ugm3</span
|
||||||
>
|
>
|
||||||
<span>PM1.0</span>
|
<span>PM1.0</span>
|
||||||
<img src="../../assets/img/pm2.5.png" alt="" />
|
<img src="../../assets/img/pm1.0.png" alt="" />
|
||||||
</div>
|
</div>
|
||||||
<div class="single-icon">
|
<div class="single-icon">
|
||||||
<span style="color: #9634cc"
|
<span style="color: #9634cc"
|
||||||
|
|
@ -238,7 +243,7 @@ export default {
|
||||||
let res = await queryDeviceByProApi({
|
let res = await queryDeviceByProApi({
|
||||||
powerId: this.sendMsg.gtId,
|
powerId: this.sendMsg.gtId,
|
||||||
proId,
|
proId,
|
||||||
devType: 116,
|
devType: 137,
|
||||||
})
|
})
|
||||||
if (res.data.data.length !== 0) {
|
if (res.data.data.length !== 0) {
|
||||||
this.deviceVal = res.data.data[0].devId
|
this.deviceVal = res.data.data[0].devId
|
||||||
|
|
@ -257,7 +262,7 @@ export default {
|
||||||
async getDevTypeCodeDetails(proId) {
|
async getDevTypeCodeDetails(proId) {
|
||||||
let param = {
|
let param = {
|
||||||
proId: proId,
|
proId: proId,
|
||||||
devTypeCode: 116,
|
devTypeCode: 137,
|
||||||
}
|
}
|
||||||
let res = await getDevTypeCodeDetails(param)
|
let res = await getDevTypeCodeDetails(param)
|
||||||
this.tableList = res.data
|
this.tableList = res.data
|
||||||
|
|
@ -284,12 +289,12 @@ export default {
|
||||||
console.log(res)
|
console.log(res)
|
||||||
this.deviceConfig = res.data
|
this.deviceConfig = res.data
|
||||||
},
|
},
|
||||||
// deviceChange(e) {
|
deviceChange(e) {
|
||||||
// console.log(e)
|
console.log(e)
|
||||||
// this.getEnvironmentData(e)
|
this.getEnvironmentData(e)
|
||||||
// this.getChartsData(e)
|
this.getChartsData(e)
|
||||||
// this.getWarnConfig(e)
|
this.getWarnConfig(e)
|
||||||
// },
|
},
|
||||||
generateCharts(list) {
|
generateCharts(list) {
|
||||||
console.log(list)
|
console.log(list)
|
||||||
|
|
||||||
|
|
@ -307,10 +312,10 @@ export default {
|
||||||
return item.xtime
|
return item.xtime
|
||||||
})
|
})
|
||||||
|
|
||||||
let loudArr = list['噪声'].map((item) => {
|
let pm1Arr = list['pm1.0'].map((item) => {
|
||||||
return Number(item.jcValue)
|
return Number(item.jcValue)
|
||||||
})
|
})
|
||||||
let loudXList = list['噪声'].map((item) => {
|
let pm21XList = list['pm1.0'].map((item) => {
|
||||||
return item.xtime
|
return item.xtime
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -324,9 +329,6 @@ export default {
|
||||||
let pm10Arr = list['pm10'].map((item) => {
|
let pm10Arr = list['pm10'].map((item) => {
|
||||||
return Number(item.jcValue)
|
return Number(item.jcValue)
|
||||||
})
|
})
|
||||||
let windSpeedList = list['风速'].map((item) => {
|
|
||||||
return Number(item.jcValue)
|
|
||||||
})
|
|
||||||
// 温度图表
|
// 温度图表
|
||||||
let tempOption = {
|
let tempOption = {
|
||||||
grid: {
|
grid: {
|
||||||
|
|
@ -493,114 +495,6 @@ export default {
|
||||||
let sdChart = echarts.init(document.querySelector('#sd-chart'))
|
let sdChart = echarts.init(document.querySelector('#sd-chart'))
|
||||||
sdChart.setOption(sdOption)
|
sdChart.setOption(sdOption)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// // 风速图表
|
|
||||||
// let wetOption = {
|
|
||||||
// grid: {
|
|
||||||
// width: '80%',
|
|
||||||
// height: '60%',
|
|
||||||
// },
|
|
||||||
// tooltip: {
|
|
||||||
// trigger: 'axis',
|
|
||||||
// axisPointer: {
|
|
||||||
// type: 'shadow',
|
|
||||||
// },
|
|
||||||
// valueFormatter: (value) => {
|
|
||||||
// return value + 'm/s'
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// xAxis: {
|
|
||||||
// type: 'category',
|
|
||||||
// data: wetXList,
|
|
||||||
// },
|
|
||||||
// yAxis: {
|
|
||||||
// type: 'value',
|
|
||||||
// name: 'm/s',
|
|
||||||
// },
|
|
||||||
// series: [
|
|
||||||
// {
|
|
||||||
// name: '风速',
|
|
||||||
// data: windSpeedList,
|
|
||||||
// type: 'line',
|
|
||||||
// smooth: true,
|
|
||||||
// lineStyle: {
|
|
||||||
// color: '#FE8511',
|
|
||||||
// },
|
|
||||||
// itemStyle: {
|
|
||||||
// normal: {
|
|
||||||
// color: '#FE8511',
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// areaStyle: {
|
|
||||||
// color: {
|
|
||||||
// x: 0,
|
|
||||||
// y: 0,
|
|
||||||
// x2: 0,
|
|
||||||
// y2: 1,
|
|
||||||
// type: 'linear',
|
|
||||||
// colorStops: [
|
|
||||||
// { offset: 0, color: '#F5CC91' },
|
|
||||||
// { offset: 1, color: '#F8F6F6' },
|
|
||||||
// ],
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// ],
|
|
||||||
// }
|
|
||||||
// let wetChart = echarts.init(document.querySelector('#wet-chart'))
|
|
||||||
// wetChart.setOption(wetOption)
|
|
||||||
// // 噪声图表
|
|
||||||
// let loudOption = {
|
|
||||||
// grid: {
|
|
||||||
// width: '80%',
|
|
||||||
// height: '60%',
|
|
||||||
// },
|
|
||||||
// tooltip: {
|
|
||||||
// trigger: 'axis',
|
|
||||||
// axisPointer: {
|
|
||||||
// type: 'shadow',
|
|
||||||
// },
|
|
||||||
// valueFormatter: (value) => {
|
|
||||||
// return value + '分贝'
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// xAxis: {
|
|
||||||
// type: 'category',
|
|
||||||
// data: loudXList,
|
|
||||||
// },
|
|
||||||
// yAxis: {
|
|
||||||
// type: 'value',
|
|
||||||
// name: 'db',
|
|
||||||
// },
|
|
||||||
// series: [
|
|
||||||
// {
|
|
||||||
// name: '噪声',
|
|
||||||
// data: loudArr,
|
|
||||||
// type: 'line',
|
|
||||||
// smooth: true,
|
|
||||||
// symbol: 'none',
|
|
||||||
// lineStyle: {
|
|
||||||
// color: '#4781FC',
|
|
||||||
// },
|
|
||||||
// areaStyle: {
|
|
||||||
// color: {
|
|
||||||
// x: 0,
|
|
||||||
// y: 0,
|
|
||||||
// x2: 0,
|
|
||||||
// y2: 1,
|
|
||||||
// type: 'linear',
|
|
||||||
// colorStops: [
|
|
||||||
// { offset: 0, color: '#CCDBFF' },
|
|
||||||
// { offset: 1, color: '#ECF2FF' },
|
|
||||||
// ],
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// ],
|
|
||||||
// }
|
|
||||||
// let loudChart = echarts.init(document.querySelector('#loud-chart'))
|
|
||||||
// loudChart.setOption(loudOption)
|
|
||||||
// 空气质量图表
|
// 空气质量图表
|
||||||
let airOption = {
|
let airOption = {
|
||||||
grid: {
|
grid: {
|
||||||
|
|
@ -625,16 +519,31 @@ export default {
|
||||||
name: 'ugm3',
|
name: 'ugm3',
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
|
{
|
||||||
|
name: 'PM1.0',
|
||||||
|
data: pm1Arr,
|
||||||
|
type: 'line',
|
||||||
|
lineStyle: {
|
||||||
|
color: 'cornflowerblue',
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: 'cornflowerblue',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
symbol: 'none',
|
||||||
|
smooth: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'PM2.5',
|
name: 'PM2.5',
|
||||||
data: pm25Arr,
|
data: pm25Arr,
|
||||||
type: 'line',
|
type: 'line',
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: '#FC8B2D',
|
color: '#9484FC',
|
||||||
},
|
},
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
normal: {
|
normal: {
|
||||||
color: '#FC8B2D',
|
color: '#9484FC',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
|
|
@ -645,11 +554,11 @@ export default {
|
||||||
data: pm10Arr,
|
data: pm10Arr,
|
||||||
type: 'line',
|
type: 'line',
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: '#4B84FC',
|
color: '#1db1c0',
|
||||||
},
|
},
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
normal: {
|
normal: {
|
||||||
color: '#4B84FC',
|
color: '#1db1c0',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
|
|
@ -825,7 +734,6 @@ export default {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 10px 20px;
|
padding: 10px 20px;
|
||||||
background-color: #eff4fe;
|
background-color: #eff4fe;
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
color: #000;
|
color: #000;
|
||||||
|
|
|
||||||
|
|
@ -1,111 +1,113 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="hole-page">
|
<div class="hole-page">
|
||||||
<div class="tower-detect">
|
<div class="tower-detect">
|
||||||
<div class="inner-tit">
|
<div class="inner-tit" style="display: flex; justify-content: space-between; align-items: center;">
|
||||||
<div>
|
<div>
|
||||||
<img src="../../assets/img/lef-badge.png" alt="">
|
<img src="../../assets/img/lef-badge.png" alt="">
|
||||||
近电感应设备
|
近电感应预警
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<el-button type="text" style="font-size: 18px;" @click="handleSignUp">参数配置</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="tower-info">
|
<el-form
|
||||||
<div class="tower-lef">
|
style="width: 100%;"
|
||||||
<div class="lef-spin">
|
:model="queryParams"
|
||||||
<div>
|
ref="queryFormRef"
|
||||||
<h4 style="background-color: #D8D8D8"></h4>
|
size="small"
|
||||||
离线
|
:inline="true"
|
||||||
</div>
|
label-width="80px"
|
||||||
<div>
|
>
|
||||||
<h4 style="background-color: #F31111"></h4>
|
<el-form-item
|
||||||
报警
|
label="设备名称"
|
||||||
</div>
|
prop="devName"
|
||||||
<div>
|
>
|
||||||
<h4 style="background-color: #39CE10"></h4>
|
<el-input
|
||||||
在线
|
v-model="queryParams.devName"
|
||||||
</div>
|
placeholder="请输入设备名称"
|
||||||
</div>
|
clearable maxlength="20"
|
||||||
<div class="lef-tower-pic" >
|
style="width: 200px;"
|
||||||
<div
|
|
||||||
:class="['single-tower', getBorderColorClass(item)]"
|
|
||||||
v-for="item in deviceList"
|
|
||||||
:key="item.devId"
|
|
||||||
:style="{ border: '2px solid', padding: '1px' }"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
v-if="item.devStatus === 0 && item.devWarn === 0"
|
|
||||||
src="../../assets/img/deForm1.png"
|
|
||||||
|
|
||||||
alt=""
|
|
||||||
/>
|
/>
|
||||||
<img
|
</el-form-item>
|
||||||
v-if="item.devWarn === 1"
|
<el-form-item
|
||||||
src="../../assets/img/deForm3.png"
|
label="预警时间"
|
||||||
|
prop="warnTime"
|
||||||
alt=""
|
>
|
||||||
|
<el-date-picker
|
||||||
|
v-model="dateRange"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
style="background-color: #ECF3FE;">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-button
|
||||||
|
style="margin-top: 3px"
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-search"
|
||||||
|
size="mini"
|
||||||
|
@click="handleQuery"
|
||||||
|
>搜索</el-button>
|
||||||
|
</el-form>
|
||||||
|
<el-table
|
||||||
|
:data="tableList"
|
||||||
|
stripe
|
||||||
|
style="width: 100%"
|
||||||
|
:row-style="rowStyle"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
label="序号"
|
||||||
|
align="center"
|
||||||
|
width="80"
|
||||||
|
type="index"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="devName"
|
||||||
|
label="设备名称"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="warnTime"
|
||||||
|
label="预警时间"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="warnContent"
|
||||||
|
label="预警内容"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="操作"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button type="danger" size="mini" @click="handleWarn(scope.row)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<pagination
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getTableList"
|
||||||
|
style="background-color: #f3f7ff;"
|
||||||
/>
|
/>
|
||||||
<img
|
|
||||||
v-if="item.devStatus === 1 && item.devWarn === 0"
|
|
||||||
src="../../assets/img/deForm2.png"
|
|
||||||
|
|
||||||
alt=""
|
|
||||||
/>
|
|
||||||
<div :class="['dev-name']" >{{ item.devName }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="map">
|
|
||||||
<div id="map-container"></div>
|
|
||||||
</div>
|
|
||||||
<div class="key-standby">
|
|
||||||
<div class="inner-tit">
|
|
||||||
<div>
|
|
||||||
<img src="../../assets/img/lef-badge.png" alt="">
|
|
||||||
近电感应预警
|
|
||||||
</div>
|
|
||||||
<span @click="handleSignUp">参数配置</span>
|
|
||||||
</div>
|
|
||||||
<el-table
|
|
||||||
:data="keyPersonTable"
|
|
||||||
stripe
|
|
||||||
style="width: 100%"
|
|
||||||
:row-style="rowStyle"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
prop="postName"
|
|
||||||
label="设备名称"
|
|
||||||
align="center"
|
|
||||||
>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column
|
|
||||||
prop="relName"
|
|
||||||
label="预警时间"
|
|
||||||
align="center"
|
|
||||||
width="80"
|
|
||||||
>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column
|
|
||||||
prop="relPhone"
|
|
||||||
label="预警内容"
|
|
||||||
align="center"
|
|
||||||
>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 查看参数配置弹窗 -->
|
<!-- 查看参数配置弹窗 -->
|
||||||
<el-dialog :title="title" :visible.sync="showConfig" width="800px" height="800px" append-to-body @close="closeConfig">
|
<el-dialog :title="title" :visible.sync="showConfig" width="800px" height="800px" append-to-body @close="closeConfig">
|
||||||
<el-form :model="queryConfig" ref="queryFormConfig" size="small" :inline="true" v-show="showSearch" label-width="120px">
|
<el-form :model="queryConfig" ref="queryFormConfig" size="small" :inline="true" v-show="showSearch" label-width="120px">
|
||||||
<div
|
|
||||||
v-for="(item, index) in configItems"
|
|
||||||
:key="index"
|
|
||||||
class="dynamic-item"
|
|
||||||
>
|
|
||||||
<el-row :gutter="24">
|
<el-row :gutter="24">
|
||||||
<el-col :span="20">
|
<el-col :span="20">
|
||||||
<el-form-item label="线路属性:" prop="attribute">
|
<el-form-item label="线路属性:" prop="attribute">
|
||||||
<el-radio-group v-model="item.attribute">
|
<el-radio-group v-model="queryConfig.attribute">
|
||||||
<el-radio
|
<el-radio
|
||||||
v-for="(radioItem, radioIndex) in radioList"
|
v-for="(radioItem, radioIndex) in radioList"
|
||||||
:key="radioIndex"
|
:key="radioIndex"
|
||||||
|
|
@ -119,7 +121,7 @@
|
||||||
<el-col :span="20">
|
<el-col :span="20">
|
||||||
<el-form-item label="电压等级:" label-width="195px" prop="elecLevel" style="display: flex;margin-bottom: 30px;" >
|
<el-form-item label="电压等级:" label-width="195px" prop="elecLevel" style="display: flex;margin-bottom: 30px;" >
|
||||||
|
|
||||||
<el-radio-group v-model="item.elecLevel" style="display: flex; flex-wrap: wrap; gap: 10px;margin-top: 0px;align-items: center;">
|
<el-radio-group v-model="queryConfig.elecLevel" style="display: flex; flex-wrap: wrap; gap: 10px;margin-top: 0px;align-items: center;">
|
||||||
<el-radio
|
<el-radio
|
||||||
v-for="(radioItem, radioIndex) in radioLevelList"
|
v-for="(radioItem, radioIndex) in radioLevelList"
|
||||||
:key="radioIndex"
|
:key="radioIndex"
|
||||||
|
|
@ -131,28 +133,6 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="24">
|
|
||||||
<el-col :span="17">
|
|
||||||
<el-form-item
|
|
||||||
label="报警距离:"
|
|
||||||
prop="distinct"
|
|
||||||
>
|
|
||||||
<div style="display: flex; align-items: center;">
|
|
||||||
<el-input
|
|
||||||
v-model="item.distinct"
|
|
||||||
placeholder="请输入"
|
|
||||||
style="width: 100%"
|
|
||||||
/>
|
|
||||||
<span style="margin-left: 10px;font-size: 16px;">米</span>
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="5" style="display: flex;justify-content: left;align-items: center;">
|
|
||||||
<el-button size="mini" type="success" @click="addConfigItem" >添加配置</el-button>
|
|
||||||
<el-button size="mini" type="danger" @click="removeConfigItem(index)" v-show="index!=0">删除配置</el-button>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<div
|
<div
|
||||||
style="
|
style="
|
||||||
|
|
@ -180,9 +160,10 @@ import { dialogConfig } from './config-sign'
|
||||||
import { commonMixin } from '@/views/mixins/common'
|
import { commonMixin } from '@/views/mixins/common'
|
||||||
import TableSign from './subComp/table-sign.vue'
|
import TableSign from './subComp/table-sign.vue'
|
||||||
import {
|
import {
|
||||||
queryKeyArriveApi,
|
queryWarnElectListApi,
|
||||||
queryCrewInfoApi,
|
delWarnElect,
|
||||||
queryCrewCoordinateApi
|
getWarnElectConfigApi,
|
||||||
|
editConfig,
|
||||||
} from '@/api/substation/substation'
|
} from '@/api/substation/substation'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
|
|
@ -200,35 +181,10 @@ export default {
|
||||||
return {
|
return {
|
||||||
showSearch: true,
|
showSearch: true,
|
||||||
showConfig: false,
|
showConfig: false,
|
||||||
crewIpt: undefined,
|
|
||||||
crewList: [
|
|
||||||
/* {
|
|
||||||
id: 1,
|
|
||||||
crew: '第一班组',
|
|
||||||
children: [
|
|
||||||
{ name: '张三', phone: 13811111111, lon: 117.13805, lat: 31.8734 },
|
|
||||||
{ name: '李四', phone: 13811111111, lon: 117.13505, lat: 31.8434 },
|
|
||||||
{ name: '王五', phone: 13811111111, lon: 117.13205, lat: 31.8134 },
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
crew: '第二班组',
|
|
||||||
children: [
|
|
||||||
{ name: '胡汉三', phone: 13811111111 },
|
|
||||||
{ name: '尉迟恭', phone: 13811111111 },
|
|
||||||
{ name: '刘寄奴', phone: 13811111111 },
|
|
||||||
]
|
|
||||||
} */
|
|
||||||
],
|
|
||||||
coordList: [],
|
|
||||||
activeCrew: [],
|
|
||||||
crewName: undefined,
|
|
||||||
keyPersonTable: [],
|
|
||||||
sendId: undefined,
|
sendId: undefined,
|
||||||
configItems: [{ attribute: "", elecLevel: "", distinct: "" }],
|
|
||||||
queryConfig: {
|
queryConfig: {
|
||||||
isCharge: '',
|
attribute: "",
|
||||||
|
elecLevel: "",
|
||||||
},
|
},
|
||||||
title: '参数配置',
|
title: '参数配置',
|
||||||
radioList: [
|
radioList: [
|
||||||
|
|
@ -247,68 +203,97 @@ export default {
|
||||||
{ value: 8, label: '1000KV' },
|
{ value: 8, label: '1000KV' },
|
||||||
// 可以添加更多选项
|
// 可以添加更多选项
|
||||||
],
|
],
|
||||||
deviceList: [
|
queryParams: {
|
||||||
{
|
devName: '',
|
||||||
devId: 1,
|
pageNum: 1,
|
||||||
devName: '1号塔',
|
pageSize: 10,
|
||||||
devStatus: 1,
|
startTime: '',
|
||||||
devWarn: 0
|
endTime: '',
|
||||||
},
|
},
|
||||||
{
|
dateRange: [],
|
||||||
devId: 2,
|
tableList: [],
|
||||||
devName: '2号塔',
|
total: 0,
|
||||||
devStatus: 0,
|
|
||||||
devWarn: 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
devId: 3,
|
|
||||||
devName: '3号塔',
|
|
||||||
devStatus: 0,
|
|
||||||
devWarn: 0
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
searchCrew() {
|
|
||||||
if(!this.crewIpt) {
|
|
||||||
return this.crewList
|
|
||||||
} else {
|
|
||||||
return this.crewList.map(item => ({
|
|
||||||
teamId: item.teamId,
|
|
||||||
teamName: item.teamName,
|
|
||||||
peopleList: item.peopleList.filter(child => child.peopleName.includes(this.crewIpt))
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
computed: {},
|
||||||
created() {
|
created() {
|
||||||
|
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.sendId = this.sendMsg.projectId
|
this.sendId = this.sendMsg.projectId
|
||||||
// this.createMap()
|
this.getWarnElectList(this.sendMsg.projectId)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getBorderColorClass(item) {
|
//获取近电感应预警表格
|
||||||
if (item.devStatus === 0 && item.devWarn === 0) {
|
async getWarnElectList(proId) {
|
||||||
return 'gray-border';
|
let res = await queryWarnElectListApi({
|
||||||
} else if (item.devWarn === 1) {
|
proId,
|
||||||
return 'red-border';
|
})
|
||||||
} else if (item.devStatus === 1 && item.devWarn === 0) {
|
this.tableList = res.rows
|
||||||
return 'green-border';
|
this.total = res.total
|
||||||
}
|
|
||||||
return 'default-border';
|
|
||||||
},
|
},
|
||||||
async getCrewData() {
|
|
||||||
let res = await queryCrewInfoApi({
|
async getTableList() {
|
||||||
|
this.queryParams.proId = this.sendMsg.projectId
|
||||||
|
if (this.dateRange!=null&&this.dateRange.length>0) {
|
||||||
|
const dateStart = new Date(this.dateRange[0])
|
||||||
|
const dateEnd = new Date(this.dateRange[1])
|
||||||
|
this.queryParams.startTime = dateStart.toLocaleDateString('en-CA')
|
||||||
|
this.queryParams.endTime = dateEnd.toLocaleDateString('en-CA')
|
||||||
|
} else {
|
||||||
|
this.queryParams.startTime = null
|
||||||
|
this.queryParams.endTime = null
|
||||||
|
}
|
||||||
|
let res = await queryWarnElectListApi(this.queryParams)
|
||||||
|
this.tableList = res.rows
|
||||||
|
this.total = res.total
|
||||||
|
},
|
||||||
|
|
||||||
|
//搜索
|
||||||
|
handleQuery() {
|
||||||
|
this.getTableList()
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
handleWarn(row) {
|
||||||
|
const id = row.id
|
||||||
|
this.$modal.confirm('是否确认删除该条数据').then(function() {
|
||||||
|
return delWarnElect({'id':id});
|
||||||
|
}).then(() => {
|
||||||
|
this.getTableList()
|
||||||
|
this.$modal.msgSuccess("删除成功");
|
||||||
|
}).catch(() => {})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查看参数配置
|
||||||
|
async handleSignUp() {
|
||||||
|
const res = await getWarnElectConfigApi({
|
||||||
proId: this.sendMsg.projectId
|
proId: this.sendMsg.projectId
|
||||||
})
|
})
|
||||||
this.crewList = res.data
|
console.log('2222222', res)
|
||||||
/* this.crewList.forEach((item, index) => {
|
this.queryConfig.attribute = res.data.configElectValue
|
||||||
this.activeCrew.push(index + 1)
|
this.queryConfig.elecLevel = res.data.configLevelValue
|
||||||
}) */
|
this.showConfig = true
|
||||||
},
|
},
|
||||||
|
closeConfig() {
|
||||||
|
this.showConfig = false
|
||||||
|
},
|
||||||
|
saveConfig() {
|
||||||
|
let config = {
|
||||||
|
configElectName: '线路属性',
|
||||||
|
configLevelName: '电压等级',
|
||||||
|
configElectValue: this.queryConfig.attribute,
|
||||||
|
configLevelValue: this.queryConfig.elecLevel,
|
||||||
|
}
|
||||||
|
editConfig(config).then(response => {
|
||||||
|
this.$modal.msgSuccess("修改成功");
|
||||||
|
this.showConfig = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
closeClick() {
|
||||||
|
this.showConfig = false
|
||||||
|
},
|
||||||
|
|
||||||
rowStyle(scope) {
|
rowStyle(scope) {
|
||||||
if(scope.rowIndex % 2 === 0) {
|
if(scope.rowIndex % 2 === 0) {
|
||||||
return {
|
return {
|
||||||
|
|
@ -320,30 +305,6 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleSignUp() {
|
|
||||||
this.showConfig = true
|
|
||||||
},
|
|
||||||
|
|
||||||
addConfigItem() {
|
|
||||||
this.configItems.push({ attribute: "", elecLevel: "", distinct: ""});
|
|
||||||
},
|
|
||||||
removeConfigItem(index) {
|
|
||||||
if (this.configItems.length > 1) {
|
|
||||||
this.configItems.splice(index, 1);
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
closeConfig() {
|
|
||||||
this.configItems=[{ attribute: "", elecLevel: "", distinct: "" }],
|
|
||||||
this.showConfig = false
|
|
||||||
},
|
|
||||||
saveConfig() {
|
|
||||||
|
|
||||||
},
|
|
||||||
closeClick() {
|
|
||||||
this.configItems=[{ attribute: "", elecLevel: "", distinct: "" }],
|
|
||||||
this.showConfig = false
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -375,130 +336,19 @@ export default {
|
||||||
src: url("../../assets/iconfont/YouSheBiaoTiHei.ttf");
|
src: url("../../assets/iconfont/YouSheBiaoTiHei.ttf");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.el-input__inner {
|
||||||
|
background-color: #FFFF;
|
||||||
|
}
|
||||||
|
|
||||||
.hole-page{
|
.hole-page{
|
||||||
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.crew{
|
|
||||||
|
|
||||||
width: 23%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: #F3F7FF;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 20px;
|
|
||||||
border-radius: 5px;
|
|
||||||
border: 1px solid #EFF2FC;
|
|
||||||
box-shadow: 2px 2px 2px #D9E0F3;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.crew-sel{
|
|
||||||
|
|
||||||
flex: 1;
|
|
||||||
border: 1px solid #C6DAF8;
|
|
||||||
background: linear-gradient(180deg, #E8F2FC, #D6E6F7);
|
|
||||||
border-radius: 5px;
|
|
||||||
|
|
||||||
.sel-top{
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 20px 35px;
|
|
||||||
background-color: #D3E4FA;
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #000;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.single-crew{
|
|
||||||
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 15px 30px;
|
|
||||||
border-top: 1px dashed #CFD8E5;
|
|
||||||
background-color: transparent;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.crewActive{
|
|
||||||
|
|
||||||
background-color: #D3E4FA;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.map{
|
|
||||||
|
|
||||||
width: 40%;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
#map-container{
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.key-standby{
|
|
||||||
|
|
||||||
width: 28%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: #F3F7FF;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 20px;
|
|
||||||
border-radius: 5px;
|
|
||||||
border: 1px solid #EFF2FC;
|
|
||||||
box-shadow: 2px 2px 2px #D9E0F3;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.inner-tit{
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 10px 20px;
|
|
||||||
background-color: #EFF4FE;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
color: #000;
|
|
||||||
font-size: 20px;
|
|
||||||
font-family: 'YouShe', sans-serif;
|
|
||||||
box-shadow: -3px -3px 2px #CBDCF6,
|
|
||||||
2px 2px 2px #F8F9FE,
|
|
||||||
-2px -2px 2px #CBDCF6,
|
|
||||||
2px 2px 2px #F8F9FE;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
|
|
||||||
span{
|
|
||||||
|
|
||||||
color: #fff;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 5px 15px;
|
|
||||||
background-color: #0297FC;
|
|
||||||
border-radius: 5px;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.radioLevelType{
|
|
||||||
flex-basis: 25%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tower-detect{
|
.tower-detect{
|
||||||
|
|
||||||
width: 28%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background-color: #F3F7FF;
|
background-color: #F3F7FF;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|
@ -635,21 +485,6 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
.gray-border {
|
|
||||||
border-color: gray !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.red-border {
|
|
||||||
border-color: red !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.green-border {
|
|
||||||
border-color: green !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.default-border {
|
|
||||||
border-color: gray !important;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,9 @@
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="yearValue"
|
v-model="yearValue"
|
||||||
type="year"
|
type="year"
|
||||||
placeholder="选择年">
|
placeholder="选择年"
|
||||||
|
@change="yearChange"
|
||||||
|
>
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -21,7 +23,7 @@
|
||||||
<span>告警统计</span>
|
<span>告警统计</span>
|
||||||
<span v-if="deviceConfig&&deviceConfig.tempThreshold" style="font-size: 14px;font-weight: 400;color: gray;">(温度阈值:{{deviceConfig.tempThreshold}},温度阈值:{{deviceConfig.tempThreshold}})</span>
|
<span v-if="deviceConfig&&deviceConfig.tempThreshold" style="font-size: 14px;font-weight: 400;color: gray;">(温度阈值:{{deviceConfig.tempThreshold}},温度阈值:{{deviceConfig.tempThreshold}})</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="temp-chart"></div>
|
<div id="warn-chart"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="single-chart" style="margin-left: 40px;">
|
<div class="single-chart" style="margin-left: 40px;">
|
||||||
<div class="inner-titWarn">
|
<div class="inner-titWarn">
|
||||||
|
|
@ -45,23 +47,12 @@
|
||||||
:inline="true"
|
:inline="true"
|
||||||
label-width="80px"
|
label-width="80px"
|
||||||
>
|
>
|
||||||
<el-form-item
|
|
||||||
label="工程名称"
|
|
||||||
prop="proName"
|
|
||||||
>
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.proName"
|
|
||||||
placeholder="请输入工程名称"
|
|
||||||
clearable maxlength="20"
|
|
||||||
style="width: 200px;"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="设备名称"
|
label="设备名称"
|
||||||
prop="deviceName"
|
prop="devName"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.deviceName"
|
v-model="queryParams.devName"
|
||||||
placeholder="请输入设备名称"
|
placeholder="请输入设备名称"
|
||||||
clearable maxlength="20"
|
clearable maxlength="20"
|
||||||
style="width: 200px;"
|
style="width: 200px;"
|
||||||
|
|
@ -72,7 +63,7 @@
|
||||||
prop="warnTime"
|
prop="warnTime"
|
||||||
>
|
>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.warnTime"
|
v-model="dateRange"
|
||||||
type="daterange"
|
type="daterange"
|
||||||
range-separator="至"
|
range-separator="至"
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
|
|
@ -106,7 +97,7 @@
|
||||||
>
|
>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="deviceName"
|
prop="devName"
|
||||||
label="预警设备名称"
|
label="预警设备名称"
|
||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
|
|
@ -127,13 +118,16 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="warnTime"
|
prop="warnUrl"
|
||||||
label="违章照片"
|
label="违章照片"
|
||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.warnUrl != null && scope.row.warnUrl !=''" style="color: blue;" @click="showPicture(scope.row)">查看</span>
|
||||||
|
<span v-else>无</span>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="warnType"
|
|
||||||
label="操作"
|
label="操作"
|
||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
|
|
@ -152,17 +146,27 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 图片查看弹窗 -->
|
||||||
|
<el-dialog title="查看" :visible.sync="pictureVisible" width="600px" append-to-body>
|
||||||
|
<img width="100%" height="500px" :src="pictureUrl" alt />
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="saveImg">保存图片</el-button>
|
||||||
|
<el-button type="danger" @click="cancel">关 闭</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
import {
|
import {
|
||||||
|
queryWarnSpaceListApi,
|
||||||
|
queryWarnSpaceMonthApi,
|
||||||
|
queryWarnSpaceTypeApi,
|
||||||
|
delWarnSpace,
|
||||||
queryDeviceByProApi,
|
queryDeviceByProApi,
|
||||||
queryEnvironmentInfoByIdApi,
|
|
||||||
queryChartsInfoByIdApi,
|
queryChartsInfoByIdApi,
|
||||||
queryWarnInfoByIdApi,
|
|
||||||
getDevTypeCodeDetails,
|
|
||||||
queryWarnConfigApi
|
queryWarnConfigApi
|
||||||
} from '@/api/substation/substation'
|
} from '@/api/substation/substation'
|
||||||
export default {
|
export default {
|
||||||
|
|
@ -177,59 +181,137 @@ export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
environmentInfoList: undefined,
|
environmentInfoList: undefined,
|
||||||
yearValue: undefined,
|
yearValue: '', // 设置初始值为当前年份,
|
||||||
deviceRange: [],
|
deviceRange: [],
|
||||||
deviceConfig:{},
|
deviceConfig:{},
|
||||||
tableList: [
|
|
||||||
{
|
|
||||||
date: 'xxx工程',
|
|
||||||
name: '2024.1.1 12:23',
|
|
||||||
address: '明天有大风',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
date: 'xxx工程',
|
|
||||||
name: '2024.1.1 12:23',
|
|
||||||
address: '明天有大风',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
date: 'xxx工程',
|
|
||||||
name: '2024.1.1 12:23',
|
|
||||||
address: '明天有大风',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
date: 'xxx工程',
|
|
||||||
name: '2024.1.1 12:23',
|
|
||||||
address: '明天有大风',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
date: 'xxx工程',
|
|
||||||
name: '2024.1.1 12:23',
|
|
||||||
address: '明天有大风',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
date: 'xxx工程',
|
|
||||||
name: '2024.1.1 12:23',
|
|
||||||
address: '明天有大风',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
queryParams: {
|
queryParams: {
|
||||||
proName: '',
|
devName: '',
|
||||||
deviceName: '',
|
proId: '',
|
||||||
warnTime: [],
|
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
|
startTime: '',
|
||||||
|
endTime: '',
|
||||||
},
|
},
|
||||||
|
dateRange: [],
|
||||||
loading: false,
|
loading: false,
|
||||||
tableListWarn: [],
|
tableListDown: [],
|
||||||
|
total: 0,
|
||||||
|
|
||||||
|
//图片弹窗
|
||||||
|
pictureVisible: false,
|
||||||
|
pictureUrl: '',
|
||||||
|
monthData: [],
|
||||||
|
TypeList: [],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {},
|
created() {
|
||||||
|
this.yearValue = (new Date().getFullYear()).toString()
|
||||||
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
console.log(this.sendMsg)
|
console.log(this.sendMsg)
|
||||||
|
this.getWarnSpaceMonth(this.sendMsg.projectId, this.yearValue)
|
||||||
|
this.getWarnSpaceType(this.sendMsg.projectId, this.yearValue)
|
||||||
this.getDeviceData(this.sendMsg.projectId)
|
this.getDeviceData(this.sendMsg.projectId)
|
||||||
this.getDevTypeCodeDetails(this.sendMsg.projectId)
|
this.getWarnSpaceList(this.sendMsg.projectId)
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
async yearChange(e) {
|
||||||
|
this.yearValue = (e.getFullYear()).toString()
|
||||||
|
|
||||||
|
await this.getWarnSpaceMonth(this.sendMsg.projectId, this.yearValue)
|
||||||
|
await this.getWarnSpaceType(this.sendMsg.projectId, this.yearValue)
|
||||||
|
await this.getChartsData(this.deviceVal)
|
||||||
|
},
|
||||||
|
async getWarnSpaceMonth(proId, year) {
|
||||||
|
queryWarnSpaceMonthApi({
|
||||||
|
proId,
|
||||||
|
year,
|
||||||
|
}).then((res) => {
|
||||||
|
this.monthData=Object.values(res.data)
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
async getWarnSpaceType(proId, year) {
|
||||||
|
this.TypeList = []
|
||||||
|
let res = await queryWarnSpaceTypeApi({
|
||||||
|
proId,
|
||||||
|
year,
|
||||||
|
})
|
||||||
|
if (res.data) {
|
||||||
|
res.data.forEach(item => {
|
||||||
|
this.TypeList.push({
|
||||||
|
value: item.count,
|
||||||
|
name: item.warnType,
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//获取下方预警表格
|
||||||
|
async getWarnSpaceList(proId) {
|
||||||
|
let res = await queryWarnSpaceListApi({
|
||||||
|
proId,
|
||||||
|
})
|
||||||
|
this.tableListDown = res.rows
|
||||||
|
this.total = res.total
|
||||||
|
},
|
||||||
|
async getTableList() {
|
||||||
|
this.queryParams.proId = this.sendMsg.projectId
|
||||||
|
if (this.dateRange!=null&&this.dateRange.length>0) {
|
||||||
|
const dateStart = new Date(this.dateRange[0])
|
||||||
|
const dateEnd = new Date(this.dateRange[1])
|
||||||
|
this.queryParams.startTime = dateStart.toLocaleDateString('en-CA')
|
||||||
|
this.queryParams.endTime = dateEnd.toLocaleDateString('en-CA')
|
||||||
|
} else {
|
||||||
|
this.queryParams.startTime = null
|
||||||
|
this.queryParams.endTime = null
|
||||||
|
}
|
||||||
|
let res = await queryWarnSpaceListApi(this.queryParams)
|
||||||
|
this.tableListDown = res.rows
|
||||||
|
this.total = res.total
|
||||||
|
},
|
||||||
|
//搜索按钮
|
||||||
|
handleQuery() {
|
||||||
|
this.getTableList()
|
||||||
|
},
|
||||||
|
|
||||||
|
//查看图片
|
||||||
|
showPicture(row) {
|
||||||
|
this.pictureUrl = row.warnUrl
|
||||||
|
this.pictureVisible = true
|
||||||
|
},
|
||||||
|
|
||||||
|
//保存图片
|
||||||
|
async saveImg() {
|
||||||
|
try {
|
||||||
|
const response = await fetch(this.pictureUrl);
|
||||||
|
const blob = await response.blob();
|
||||||
|
const link = document.createElement('a');
|
||||||
|
link.href = URL.createObjectURL(blob);
|
||||||
|
link.download = '违章图片.jpg'; // 你可以设置下载的文件名
|
||||||
|
link.click();
|
||||||
|
URL.revokeObjectURL(link.href); // 释放 URL 对象
|
||||||
|
} catch (error) {
|
||||||
|
console.error('下载图片失败', error);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
//关闭
|
||||||
|
cancel() {
|
||||||
|
this.pictureVisible = false
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
handleWarn(row) {
|
||||||
|
const id = row.id
|
||||||
|
this.$modal.confirm('是否确认删除该条数据').then(function() {
|
||||||
|
return delWarnSpace({'id':id});
|
||||||
|
}).then(() => {
|
||||||
|
this.getTableList()
|
||||||
|
this.$modal.msgSuccess("删除成功");
|
||||||
|
}).catch(() => {})
|
||||||
|
},
|
||||||
|
|
||||||
async getDeviceData(proId) {
|
async getDeviceData(proId) {
|
||||||
let res = await queryDeviceByProApi({
|
let res = await queryDeviceByProApi({
|
||||||
powerId: this.sendMsg.gtId,
|
powerId: this.sendMsg.gtId,
|
||||||
|
|
@ -244,26 +326,9 @@ export default {
|
||||||
value: item.devId,
|
value: item.devId,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
await this.getEnvironmentData(this.deviceVal)
|
|
||||||
await this.getChartsData(this.deviceVal)
|
await this.getChartsData(this.deviceVal)
|
||||||
await this.getWarnConfig(this.deviceVal)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//预警信息
|
|
||||||
async getDevTypeCodeDetails(proId) {
|
|
||||||
let param = {
|
|
||||||
proId: proId,
|
|
||||||
devTypeCode: 116,
|
|
||||||
}
|
|
||||||
let res = await getDevTypeCodeDetails(param)
|
|
||||||
this.tableList = res.data
|
|
||||||
},
|
|
||||||
async getEnvironmentData(devId) {
|
|
||||||
let res = await queryEnvironmentInfoByIdApi({
|
|
||||||
devId,
|
|
||||||
})
|
|
||||||
this.environmentInfoList = res.data.data
|
|
||||||
},
|
|
||||||
async getChartsData(devId) {
|
async getChartsData(devId) {
|
||||||
let res = await queryChartsInfoByIdApi({
|
let res = await queryChartsInfoByIdApi({
|
||||||
devId,
|
devId,
|
||||||
|
|
@ -288,42 +353,24 @@ export default {
|
||||||
// },
|
// },
|
||||||
generateCharts(list) {
|
generateCharts(list) {
|
||||||
console.log(list)
|
console.log(list)
|
||||||
|
let tempArr = this.monthData
|
||||||
|
let tempXList = [
|
||||||
|
'1月',
|
||||||
|
'2月',
|
||||||
|
'3月',
|
||||||
|
'4月',
|
||||||
|
'5月',
|
||||||
|
'6月',
|
||||||
|
'7月',
|
||||||
|
'8月',
|
||||||
|
'9月',
|
||||||
|
'10月',
|
||||||
|
'11月',
|
||||||
|
'12月',
|
||||||
|
]
|
||||||
|
|
||||||
let tempArr = list['温度'].map((item) => {
|
|
||||||
return Number(item.jcValue)
|
|
||||||
})
|
|
||||||
let tempXList = list['温度'].map((item) => {
|
|
||||||
return item.xtime
|
|
||||||
})
|
|
||||||
|
|
||||||
let wetArr = list['湿度'].map((item) => {
|
// 告警统计图表
|
||||||
return Number(item.jcValue)
|
|
||||||
})
|
|
||||||
let wetXList = list['湿度'].map((item) => {
|
|
||||||
return item.xtime
|
|
||||||
})
|
|
||||||
|
|
||||||
let loudArr = list['噪声'].map((item) => {
|
|
||||||
return Number(item.jcValue)
|
|
||||||
})
|
|
||||||
let loudXList = list['噪声'].map((item) => {
|
|
||||||
return item.xtime
|
|
||||||
})
|
|
||||||
|
|
||||||
let pm25Arr = list['pm25'].map((item) => {
|
|
||||||
return Number(item.jcValue)
|
|
||||||
})
|
|
||||||
let pm25XList = list['pm25'].map((item) => {
|
|
||||||
return item.xtime
|
|
||||||
})
|
|
||||||
|
|
||||||
let pm10Arr = list['pm10'].map((item) => {
|
|
||||||
return Number(item.jcValue)
|
|
||||||
})
|
|
||||||
let windSpeedList = list['风速'].map((item) => {
|
|
||||||
return Number(item.jcValue)
|
|
||||||
})
|
|
||||||
// 温度图表
|
|
||||||
let tempOption = {
|
let tempOption = {
|
||||||
grid: {
|
grid: {
|
||||||
left: '3%',
|
left: '3%',
|
||||||
|
|
@ -349,16 +396,17 @@ export default {
|
||||||
yAxis: [
|
yAxis: [
|
||||||
{
|
{
|
||||||
type: 'value',
|
type: 'value',
|
||||||
name: '°C',
|
name: '次',
|
||||||
},
|
minInterval:1,
|
||||||
{
|
|
||||||
type: 'value',
|
|
||||||
name: '%rh',
|
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// type: 'value',
|
||||||
|
// name: '%rh',
|
||||||
|
// },
|
||||||
],
|
],
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
name: '温度',
|
name: '告警次数',
|
||||||
type: 'bar',
|
type: 'bar',
|
||||||
barWidth: '40%',
|
barWidth: '40%',
|
||||||
data: tempArr,
|
data: tempArr,
|
||||||
|
|
@ -388,16 +436,17 @@ export default {
|
||||||
type: 'shadow',
|
type: 'shadow',
|
||||||
},
|
},
|
||||||
valueFormatter: (value) => {
|
valueFormatter: (value) => {
|
||||||
return value + '°C'
|
return value + '次'
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
let tempChart = echarts.init(document.querySelector('#temp-chart'))
|
let tempChart = echarts.init(document.querySelector('#warn-chart'))
|
||||||
tempChart.setOption(tempOption)
|
tempChart.setOption(tempOption)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//饼状图
|
//饼状图
|
||||||
let gatheringSourceOption = {
|
let gatheringSourceOption = {
|
||||||
tooltip: {
|
tooltip: {
|
||||||
|
|
@ -425,7 +474,7 @@ export default {
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
name: '违章类型',
|
name: '',
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
radius: '70%',
|
radius: '70%',
|
||||||
center: ['45%', '40%'], // 将饼状图的中心位置上移
|
center: ['45%', '40%'], // 将饼状图的中心位置上移
|
||||||
|
|
@ -458,13 +507,7 @@ export default {
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
gatheringSourceOption.series[0].data = [
|
gatheringSourceOption.series[0].data = this.TypeList
|
||||||
{ value: 1048, name: '违章类型1' },
|
|
||||||
{ value: 735, name: '违章类型2' },
|
|
||||||
{ value: 580, name: '违章类型3' },
|
|
||||||
{ value: 484, name: '违章类型4' },
|
|
||||||
{ value: 300, name: '违章类型5' },
|
|
||||||
]
|
|
||||||
let gatheringSourceChart = echarts.init(document.querySelector('#violation-chart'))
|
let gatheringSourceChart = echarts.init(document.querySelector('#violation-chart'))
|
||||||
gatheringSourceChart.setOption(gatheringSourceOption);
|
gatheringSourceChart.setOption(gatheringSourceOption);
|
||||||
|
|
||||||
|
|
@ -490,9 +533,6 @@ export default {
|
||||||
font-family: 'YouShe';
|
font-family: 'YouShe';
|
||||||
src: url('../../assets/iconfont/YouSheBiaoTiHei.ttf');
|
src: url('../../assets/iconfont/YouSheBiaoTiHei.ttf');
|
||||||
}
|
}
|
||||||
.el-input__inner {
|
|
||||||
background-color: #FFFF;
|
|
||||||
}
|
|
||||||
.hole-page {
|
.hole-page {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
@ -565,7 +605,7 @@ export default {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#temp-chart,
|
#warn-chart,
|
||||||
#violation-chart,
|
#violation-chart,
|
||||||
#loud-chart {
|
#loud-chart {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|
|
||||||
|
|
@ -172,8 +172,8 @@ export default {
|
||||||
{ title: '基坑检测类', id: 4 },
|
{ title: '基坑检测类', id: 4 },
|
||||||
{ title: '形变监测类', id: 5 },
|
{ title: '形变监测类', id: 5 },
|
||||||
{ title: 'GLL通管监测类', id: 6 },
|
{ title: 'GLL通管监测类', id: 6 },
|
||||||
{ title: '受限空间视频', id: 7 },
|
{ title: '受限空间视频预警', id: 7 },
|
||||||
{ title: '近电作业监控', id: 8 },
|
{ title: '近电作业检测', id: 8 },
|
||||||
],
|
],
|
||||||
sendMsg: undefined,
|
sendMsg: undefined,
|
||||||
sendGeo: undefined
|
sendGeo: undefined
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue