设备数据检测
This commit is contained in:
parent
347c33bd95
commit
d394b565e2
34
riis-web/src/api/datasurvey/index.ts
Normal file
34
riis-web/src/api/datasurvey/index.ts
Normal file
@ -0,0 +1,34 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
//异常点位查询
|
||||
export function getDeviceSignalTree(params:any){
|
||||
return request({
|
||||
url: '/basedata/substation-maindevice/getDeviceSignalTree' ,
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//查询信号信息{}
|
||||
export function querySignalDataById(params:any){
|
||||
return request({
|
||||
url: '/auxcontrol/device-signal/querySignalDataById' ,
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//分页查询变电站辅控设备告警记录
|
||||
export function workpage(params:any){
|
||||
return request({
|
||||
url: '/auxcontrol/device-work-data/page' ,
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//查询历史曲线
|
||||
export function getHistoricalCurve(params:any){
|
||||
return request({
|
||||
url: '/auxcontrol/device-work-data/getHistoricalCurve' ,
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
}
|
@ -240,4 +240,12 @@ export function deleteDictItems(ids: string) {
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
||||
// 查询字典项
|
||||
export function getDictItemByCode(params:any) {
|
||||
return request({
|
||||
url: '/system/dictionaryItems/list',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
|
||||
|
99
riis-web/src/api/equipmentsignal/index.ts
Normal file
99
riis-web/src/api/equipmentsignal/index.ts
Normal file
@ -0,0 +1,99 @@
|
||||
import request from '@/utils/request';
|
||||
//新增变电站辅控设备信号
|
||||
export function addDeviceSignal(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceSignal/addDeviceSignal',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//分页查询变电站辅控设备信号
|
||||
export function queryDeviceSignal(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceSignal/page',
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
|
||||
}
|
||||
//通过辅控设备ID查询所有变电站辅控设备信号
|
||||
export function listDeviceSignal(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceSignal/list',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//修改变电站辅控设备信号
|
||||
export function updateDeviceSignal(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceSignal/updateDeviceSignal',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//根据ID删除变电站辅控设备信号
|
||||
export function deleteDeviceSignalById(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceSignal/deleteDeviceSignalById',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//批量删除变电站辅控设备信号
|
||||
export function deleteDeviceByIds(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceSignal/deleteDeviceSignalByIds',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//查询所有变电站辅控设备
|
||||
export function getDeviceTree(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/Device/getDeviceTree',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
|
||||
// 新增变电站辅控设备告警参数设置
|
||||
export function addDeviceAlarmParameter(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceAlarmParameter/addDeviceAlarmParameter',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//根据ID删除变电站辅控设备告警参数设置
|
||||
export function deleteDeviceAlarmParameterById(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceAlarmParameter/deleteDeviceAlarmParameterById',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//批量删除变电站辅控设备告警参数设置
|
||||
export function deleteDeviceAlarmParameterByIds(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceAlarmParameter/deleteDeviceAlarmParameterByIds',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//分页查询变电站辅控设备告警参数设置
|
||||
export function DeviceAlarmParameter(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceAlarmParameter/page',
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//修改变电站辅控设备告警参数设置
|
||||
export function updateDeviceAlarmParameter(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceAlarmParameter/updateDeviceAlarmParameter',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
115
riis-web/src/api/linkageplan/index.ts
Normal file
115
riis-web/src/api/linkageplan/index.ts
Normal file
@ -0,0 +1,115 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
//查询变电站辅控设备联动方案设置
|
||||
export function listDeviceLinkagePlan(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceLinkage/listDeviceLinkagePlan' ,
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//新增变电站辅控设备联动方案设置
|
||||
export function addDeviceLinkagePlan(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceLinkage/addDeviceLinkagePlan' ,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//修改变电站辅控设备联动方案设置
|
||||
export function updateDeviceLinkagePlan(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceLinkage/updateDeviceLinkagePlan' ,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//根据ID删除变电站辅控设备
|
||||
export function deleteDeviceLinkagePlanById(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceLinkage/deleteDeviceLinkagePlanById' ,
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//查询所有变电站辅控设备联动方案设置(联动操作列表)
|
||||
export function listDeviceLinkageOperate(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceLinkage/listDeviceLinkageOperate' ,
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//新增变电站辅控设备联动方案设置--联动操作列表
|
||||
export function addDeviceLinkageOperate(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceLinkage/addDeviceLinkageOperate' ,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//修改变电站辅控设备联动方案设置--联动操作列表
|
||||
export function updateDeviceLinkageOperate(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceLinkage/updateDeviceLinkageOperate' ,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//删除变电站辅控设备联动方案设置--联动操作列表
|
||||
export function deleteDeviceLinkageOperate(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceLinkage/deleteDeviceLinkageOperate' ,
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//修改变电站辅控设备联动方案设置--联动顺序号
|
||||
export function updateOrderno(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceLinkage/updateOrderno' ,
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
|
||||
//根据所属系统查询配置了联动任务的设备信号(运行监控)
|
||||
export function listDeviceIdBySystemcode(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceLinkage/listSignalIdBySystemcode' ,
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//根据设备信号查询所有的联动任务(运行监控)
|
||||
export function listDeviceLinkageBySignalId(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceLinkage/listDeviceLinkageBySignalId' ,
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
//根据设备信号查询所有的联动任务(运行监控)
|
||||
export function sendTestData(params){
|
||||
return request({
|
||||
url: '/test/data/'+ params.name,
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
|
||||
//关闭WebSocket
|
||||
export function closeWebSocket(params:any){
|
||||
return request({
|
||||
url: '/test/data/closeWebSocket',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
@ -4,8 +4,8 @@ import request from '@/utils/request';
|
||||
export function getdata(params:any){
|
||||
return request({
|
||||
url: '/basedata/substation-patroldevice/getPatrolDeviceList' ,
|
||||
method: 'get',
|
||||
params:params
|
||||
method: 'post',
|
||||
data:params
|
||||
});
|
||||
}
|
||||
//新增设备
|
||||
|
6
riis-web/src/assets/sytlechange/u157.svg
Normal file
6
riis-web/src/assets/sytlechange/u157.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="14px" height="14px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -1871 -339 )">
|
||||
<path d="M 2.00199999999995 4.49400000000003 C 2.00199999999995 4.16500000000002 2.17000000000007 3.99700000000001 2.49900000000002 3.99700000000001 L 6.49600000000009 3.99700000000001 C 6.83199999999988 3.99700000000001 6.99299999999994 4.16500000000002 6.99299999999994 4.49400000000003 C 6.99299999999994 4.82999999999998 6.82500000000005 4.99099999999999 6.49600000000009 4.99099999999999 L 2.49900000000002 4.99099999999999 C 2.16300000000001 4.99099999999999 2.00199999999995 4.82299999999998 2.00199999999995 4.49400000000003 Z M 2.00199999999995 6.49599999999998 C 2.00199999999995 6.16700000000003 2.17000000000007 5.99900000000002 2.49900000000002 5.99900000000002 L 5.50199999999995 5.99900000000002 C 5.83799999999997 5.99900000000002 5.99900000000002 6.16700000000003 5.99900000000002 6.49599999999998 C 5.99900000000002 6.83199999999999 5.8309999999999 6.993 5.50199999999995 6.993 L 2.49900000000002 6.993 C 2.16300000000001 6.993 2.00199999999995 6.82499999999999 2.00199999999995 6.49599999999998 Z M 2.00199999999995 8.49799999999999 C 2.00199999999995 8.16899999999998 2.17000000000007 8.00099999999998 2.49900000000002 8.00099999999998 L 4.50099999999998 8.00099999999998 C 4.83699999999999 8.00099999999998 4.99800000000005 8.16899999999998 4.99800000000005 8.49799999999999 C 4.99800000000005 8.834 4.82999999999993 8.995 4.50099999999998 8.995 L 2.49900000000002 8.995 C 2.16300000000001 8.995 2.00199999999995 8.827 2.00199999999995 8.49799999999999 Z M 9.49900000000002 12.992 L 9.49900000000002 14 L 1.49800000000005 14 C 0.672000000000025 14 0 13.328 0 12.502 L 0 1.49799999999999 C 0 0.672000000000025 0.672000000000025 0 1.49800000000005 0 L 9.99600000000009 0 C 10.8219999999999 0 11.4939999999999 0.672000000000025 11.4939999999999 1.49799999999999 L 11.4939999999999 5.99900000000002 L 10.5 5.99900000000002 L 10.5 1.49799999999999 C 10.5 1.22500000000002 10.2760000000001 1.00099999999998 10.0029999999999 1.00099999999998 L 1.49800000000005 1.00099999999998 C 1.22499999999991 1.00099999999998 1.00099999999998 1.22500000000002 1.00099999999998 1.49799999999999 L 1 12.495 C 1.00099999999998 12.768 1.22499999999991 12.992 1.49800000000005 12.992 L 9.49900000000002 12.992 Z M 9.75099999999998 14 C 7.40599999999995 14 5.50199999999995 12.096 5.50199999999995 9.75099999999998 C 5.50199999999995 7.40600000000001 7.40599999999995 5.50200000000001 9.75099999999998 5.50200000000001 C 12.096 5.50200000000001 14 7.40600000000001 14 9.75099999999998 C 14 12.096 12.096 14 9.75099999999998 14 Z M 12.999 9.75099999999998 C 12.999 7.959 11.5430000000001 6.50299999999999 9.75099999999998 6.50299999999999 C 7.95900000000006 6.50299999999999 6.50299999999993 7.959 6.50299999999993 9.75099999999998 C 6.50299999999993 11.543 7.95900000000006 12.999 9.75099999999998 12.999 C 11.5430000000001 12.999 12.999 11.543 12.999 9.75099999999998 Z M 11.501 10.5 L 9.00199999999995 10.5 L 9.00199999999995 7.49700000000001 C 9.00199999999995 7.22399999999999 9.22599999999989 7 9.49900000000002 7 C 9.77199999999993 7 9.99600000000009 7.22399999999999 9.99600000000009 7.49700000000001 L 9.99600000000009 9.49900000000002 L 11.4939999999999 9.49900000000002 C 11.7670000000001 9.49900000000002 11.991 9.72300000000001 11.991 9.99599999999998 C 11.998 10.276 11.7740000000001 10.5 11.501 10.5 Z " fill-rule="nonzero" fill="#00ffff" stroke="none" transform="matrix(1 0 0 1 1871 339 )" />
|
||||
</g>
|
||||
</svg>
|
@ -397,6 +397,7 @@ watch(() => props.CloseNav, (newValue, oldValue) => {
|
||||
background-size: 100% 100%;
|
||||
width: 100%;
|
||||
height: 62px;
|
||||
z-index:99999 !important;
|
||||
|
||||
.times {
|
||||
font-family: '微软雅黑';
|
||||
|
@ -10,3 +10,33 @@ export function isExternal(path: string) {
|
||||
const isExternal = /^(https?:|http?:|mailto:|tel:)/.test(path);
|
||||
return isExternal;
|
||||
}
|
||||
export function publicTree(equiptrees:any,equipname:any) {
|
||||
let arr:any = []
|
||||
let newequiptree = JSON.parse(JSON.stringify(equiptrees))
|
||||
if(equipname !=''&& equipname !=null){
|
||||
newequiptree.forEach((item:any) => {
|
||||
if(item.name.toLowerCase().indexOf(equipname.toLowerCase()) !== -1){
|
||||
arr.push(item)
|
||||
}
|
||||
})
|
||||
}else{
|
||||
// debugger
|
||||
arr = newequiptree
|
||||
}
|
||||
if(!Array.isArray(arr) || !arr.length) return;
|
||||
let map:any = {};
|
||||
arr.forEach(item => {//建立每个数组元素id和该对象的关系
|
||||
map[item.id] = item //这里可以理解为浅拷贝,共享引用
|
||||
})
|
||||
let roots:any = [];
|
||||
arr.forEach(item => {
|
||||
const parent = map[item.parentid];
|
||||
if(parent){
|
||||
(parent.children || (parent.children=[])).push(item);
|
||||
}
|
||||
else{
|
||||
roots.push(item);
|
||||
}
|
||||
})
|
||||
return roots
|
||||
}
|
@ -479,7 +479,7 @@
|
||||
<el-table v-if="selType == '01'" :data="tableData" :row-class-name="tableRowClassName" class="PatrolMonitoring"
|
||||
v-loading="loading" highlight-current-row
|
||||
style="width: 100%;margin:auto;position: relative;height:570px;overflow: auto;margin:10px 0"
|
||||
:header-cell-style="{ background: '#253b51', color: '#B5D7FF', height: '43px' }" @row-click="rowClick">
|
||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }" @row-click="rowClick">
|
||||
<el-table-column type="index" align="center" label="序号" width="60" />
|
||||
<el-table-column prop="areaName" label="区域" align="center" width="100" />
|
||||
<el-table-column prop="patroldeviceCode" label="设备编码" align="center" width="200" />
|
||||
@ -547,7 +547,7 @@
|
||||
<el-table v-if="selType == '02' || lineDrapStart == true || isUAVdropLine == true" class="PatrolMonitoring"
|
||||
:data="daviceData" :row-class-name="tableRowClassName" v-loading="loading" highlight-current-row
|
||||
style="width: 100%;margin:auto;position: relative;height:570px;overflow: auto;margin:10px 0"
|
||||
:header-cell-style="{ background: '#253b51', color: '#B5D7FF', height: '43px' }" @row-click="rowClick">
|
||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }" @row-click="rowClick">
|
||||
<el-table-column type="index" align="center" label="序号" width="60" />
|
||||
<el-table-column prop="deviceName" label="点位名称" width="140" />
|
||||
<el-table-column prop="mainDeviceName" label="所属主设备" width="160" />
|
||||
@ -596,7 +596,7 @@
|
||||
<el-table v-if="selType == '04' || selType == '06'" :data="robotData" :row-class-name="tableRowClassName"
|
||||
class="PatrolMonitoring" v-loading="loading" highlight-current-row
|
||||
style="width: 100%;margin:auto;position: relative;height:570px;overflow: auto;margin:10px 0"
|
||||
:header-cell-style="{ background: '#253b51', color: '#B5D7FF', height: '43px' }" @row-click="rowClick">
|
||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }" @row-click="rowClick">
|
||||
<el-table-column type="index" align="center" label="序号" width="60" />
|
||||
<el-table-column prop="patroldeviceCode" label="设备编码" width="140" />
|
||||
<el-table-column prop="patroldeviceName" label="设备名称" width="160" />
|
||||
@ -610,7 +610,7 @@
|
||||
<el-table v-if="selType == '05' && associationTitle == '关联部件'" :data="componentData" class="PatrolMonitoring"
|
||||
:row-class-name="tableRowClassName" v-loading="loading" highlight-current-row
|
||||
style="width: 100%;margin:auto;position: relative;height:570px;overflow: auto;margin:10px 0"
|
||||
:header-cell-style="{ background: '#253b51', color: '#B5D7FF', height: '43px' }" @row-click="rowClick">
|
||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }" @row-click="rowClick">
|
||||
<el-table-column type="index" align="center" label="序号" width="60" />
|
||||
<el-table-column prop="areaName" label="所属区域" width="140" />
|
||||
<el-table-column prop="bayName" label="所属间隔" width="160" />
|
||||
@ -654,7 +654,7 @@
|
||||
<el-table v-if="selType == '05' && associationTitle == '关联设备'" :data="mainDeviceData" class="PatrolMonitoring"
|
||||
:row-class-name="tableRowClassName" v-loading="loading" highlight-current-row
|
||||
style="width: 100%;margin:auto;position: relative;height:570px;overflow: auto;margin:10px 0"
|
||||
:header-cell-style="{ background: '#253b51', color: '#B5D7FF', height: '43px' }" @row-click="rowClick">
|
||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }" @row-click="rowClick">
|
||||
<el-table-column type="index" align="center" label="序号" width="60" />
|
||||
<el-table-column prop="areaName" label="所属区域" width="140" />
|
||||
<el-table-column prop="bayName" label="所属间隔" width="160" />
|
||||
@ -731,7 +731,7 @@
|
||||
<el-table ref="multipleTable" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" row-key="id"
|
||||
:data="associationLineData" class="PatrolMonitoring" :row-class-name="tableRowClassName" highlight-current-row
|
||||
style="width: 100%;margin:auto;position: relative;height:400px;overflow: auto;margin:10px 0"
|
||||
:header-cell-style="{ background: '#253b51', color: '#B5D7FF', height: '43px' }"
|
||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }"
|
||||
@selection-change="associationTableChange">
|
||||
<el-table-column type="selection" align="center" width="60" />
|
||||
<el-table-column type="index" align="center" label="序号" width="60" />
|
||||
@ -4848,6 +4848,7 @@ function getData() {
|
||||
areaIdType.value = res.data
|
||||
})
|
||||
getdata(params).then((res) => {
|
||||
console.log(res)
|
||||
tableData.value = res.data.records
|
||||
getinfo.value.size = res.data.size
|
||||
getinfo.value.current = res.data.current
|
||||
|
545
riis-web/src/views/collectmonitor/datasurvey/index.vue
Normal file
545
riis-web/src/views/collectmonitor/datasurvey/index.vue
Normal file
@ -0,0 +1,545 @@
|
||||
<script lang="ts">
|
||||
export default {
|
||||
name: "equipment",
|
||||
};
|
||||
</script>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, nextTick } from "vue";
|
||||
import { Search } from '@element-plus/icons-vue';
|
||||
import { getDeviceSignalTree, querySignalDataById, workpage, getHistoricalCurve } from "@/api/datasurvey/index";
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import Page from '@/components/Pagination/page.vue'
|
||||
import * as echarts from 'echarts'
|
||||
const userStore = useUserStore();
|
||||
//左侧树形控件
|
||||
interface Tree {
|
||||
[x: string]: any;
|
||||
label: string;
|
||||
children?: Tree[];
|
||||
}
|
||||
const signaform = ref({
|
||||
signalName: '',
|
||||
stationCode: userStore.stationCode,
|
||||
|
||||
})
|
||||
const defaultProps = {
|
||||
children: "children",
|
||||
label: "name"
|
||||
};
|
||||
const treedata: any = ref([]);
|
||||
const treeRef = ref();
|
||||
const treeloading = ref(true)
|
||||
const currentNodeKey = ref("")
|
||||
const signaId = ref('')
|
||||
//获取左侧树
|
||||
const signName = ref('')
|
||||
function getTreeData() {
|
||||
treeloading.value = true
|
||||
getDeviceSignalTree(signaform.value).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
treedata.value = res.data
|
||||
signaId.value = res.data[0].children[0].children[0].children[0].children[0].id
|
||||
signName.value = res.data[0].children[0].children[0].children[0].children[0].name
|
||||
nextTick(() => {
|
||||
treeRef.value?.setCurrentKey(signaId.value);
|
||||
});
|
||||
getsignadata()
|
||||
gettabledata()
|
||||
getechartdata()
|
||||
}
|
||||
treeloading.value = false
|
||||
})
|
||||
}
|
||||
function handleNodeClick(data: any, node: any) {
|
||||
if (data.children.length > 0) {
|
||||
node.isCurrent = false
|
||||
currentNodeKey.value = ""
|
||||
nextTick(() => {
|
||||
currentNodeKey.value = signaId.value
|
||||
})
|
||||
} else {
|
||||
console.log(data)
|
||||
signaId.value = data.id
|
||||
signName.value = data.name
|
||||
getsignadata()
|
||||
gettabledata()
|
||||
getechartdata()
|
||||
}
|
||||
}
|
||||
const loading = ref(false)
|
||||
const tableData = ref([])
|
||||
const total = ref(0)
|
||||
const detaall: any = ref([])
|
||||
const tableform = ref({
|
||||
size: 10,
|
||||
current: 1,
|
||||
startDate: '',
|
||||
endDate: '',
|
||||
signalId: '',
|
||||
})
|
||||
const tableRowClassName = ({
|
||||
row,
|
||||
rowIndex,
|
||||
}: {
|
||||
row: any
|
||||
rowIndex: number
|
||||
}) => {
|
||||
if (rowIndex % 2 === 0) {
|
||||
return 'warning-row'
|
||||
} else if (rowIndex % 2 === 1) {
|
||||
return 'success-row'
|
||||
}
|
||||
return ''
|
||||
}
|
||||
const signaldata: any = ref({})
|
||||
const dignaloading = ref(false)
|
||||
function getsignadata() {
|
||||
dignaloading.value = true
|
||||
querySignalDataById({ signalId: signaId.value }).then((res: any) => {
|
||||
if (res.data) {
|
||||
signaldata.value = res.data
|
||||
} else {
|
||||
signaldata.value = {}
|
||||
}
|
||||
dignaloading.value = false
|
||||
})
|
||||
}
|
||||
function gettabledata() {
|
||||
if (detaall.value.length > 0) {
|
||||
tableform.value.startDate = formatDate(detaall.value[0])
|
||||
tableform.value.endDate = formatDate(detaall.value[1])
|
||||
} else {
|
||||
tableform.value.startDate = ''
|
||||
tableform.value.endDate = ''
|
||||
}
|
||||
tableform.value.signalId = signaId.value
|
||||
loading.value = true
|
||||
workpage(tableform.value).then((res: any) => {
|
||||
tableData.value = res.data.records
|
||||
tableform.value.size = res.data.size
|
||||
tableform.value.current = res.data.current
|
||||
total.value = res.data.total
|
||||
loading.value = false
|
||||
|
||||
})
|
||||
}
|
||||
function formatDate(isoString: any) {
|
||||
const date = new Date(isoString);
|
||||
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(date.getDate()).padStart(2, '0');
|
||||
const hours = String(date.getHours()).padStart(2, '0');
|
||||
const minutes = String(date.getMinutes()).padStart(2, '0');
|
||||
const seconds = String(date.getSeconds()).padStart(2, '0');
|
||||
|
||||
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
||||
}
|
||||
//折线图数据
|
||||
const echartdata: any = ref({})
|
||||
function getechartdata() {
|
||||
getHistoricalCurve({ signalId: signaId.value }).then((res: any) => {
|
||||
echartdata.value = res.data
|
||||
drawEchart()
|
||||
})
|
||||
}
|
||||
//绘制折线图
|
||||
function drawEchart() {
|
||||
let myChart = echarts.init(document.getElementById("deviceEachers") as HTMLDivElement);
|
||||
myChart.setOption({
|
||||
title: {
|
||||
text: ''
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['Step Start', 'Step Middle', 'Step End']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: echartdata.value.xAxis,
|
||||
yAxis: echartdata.value.yAxis,
|
||||
series: echartdata.value.series
|
||||
})
|
||||
}
|
||||
onMounted(() => {
|
||||
getTreeData()
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="faulttemplate-box">
|
||||
<aside id="silderLeft">
|
||||
<div class="displayflex" style="margin: 10px 0px 5px 0px;padding-left: 8px;height: 30px;">
|
||||
<img src="@/assets/navigation/ty_bq.png" />
|
||||
<div class="title">数据列表</div>
|
||||
</div>
|
||||
<el-input v-model="signaform.signalName" style="width: 240px" placeholder="请输入信号名称" :suffix-icon="Search"
|
||||
@change="getTreeData()" />
|
||||
<el-scrollbar height="calc(80vh)" style="width:99%;">
|
||||
<el-tree-v2 v-loading="treeloading" style="width: 100%;" :data="treedata" :props="defaultProps"
|
||||
:height="800" ref="treeRef" node-key="id" :current-node-key="currentNodeKey"
|
||||
:highlight-current="true" @node-click="handleNodeClick" />
|
||||
</el-scrollbar>
|
||||
</aside>
|
||||
<section class="silderRight1">
|
||||
<div class="right_top">
|
||||
<div class="top_left">
|
||||
<div class="title_right">
|
||||
<img src="@/assets/navigation/ty_bq.png" alt="">
|
||||
<div>信号信息</div>
|
||||
</div>
|
||||
<div class="text_top">
|
||||
<div class="text_top_title">
|
||||
<div></div>所属网关机信息
|
||||
</div>
|
||||
<div class="text_top_content" v-loading="dignaloading">
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">设备类型</div>
|
||||
<div class="content_one_text">{{ signaldata.deviceType }}</div>
|
||||
</div>
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">设备名称</div>
|
||||
<div class="content_one_text">{{ signaldata.deviceName }}</div>
|
||||
</div>
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">设备型号</div>
|
||||
<div class="content_one_text">{{ signaldata.deviceModel }}</div>
|
||||
</div>
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">ip地址</div>
|
||||
<div class="content_one_text">{{ signaldata.ipAddr }}</div>
|
||||
</div>
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">协议类型</div>
|
||||
<div class="content_one_text">{{ signaldata.protocol }}</div>
|
||||
</div>
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">采集频率</div>
|
||||
<div class="content_one_text">{{ signaldata.frequency }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text_top">
|
||||
<div class="text_top_title">
|
||||
<div></div>型号信息
|
||||
</div>
|
||||
<div class="text_top_content" v-loading="dignaloading">
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">信号编号</div>
|
||||
<div class="content_one_text">{{ signaldata.signalCode }}</div>
|
||||
</div>
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">信号名称</div>
|
||||
<div class="content_one_text">{{ signaldata.signalName }}</div>
|
||||
</div>
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">信号类型</div>
|
||||
<div class="content_one_text">{{ signaldata.signalType }}</div>
|
||||
</div>
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">信号单位</div>
|
||||
<div class="content_one_text">{{ signaldata.signalUnit }}</div>
|
||||
</div>
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">正常范围</div>
|
||||
<div class="content_one_text">{{ signaldata.normalRange }}</div>
|
||||
</div>
|
||||
<div class="content_one">
|
||||
<div class="content_one_title">遥控遥调类型</div>
|
||||
<div class="content_one_text">{{ signaldata.ykytType }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="top_left">
|
||||
<div class="title_right">
|
||||
<img src="@/assets/navigation/ty_bq.png" alt="">
|
||||
<div>监测数据</div>
|
||||
</div>
|
||||
<div class="cont_top">
|
||||
<div class="cont_top_left">
|
||||
<el-date-picker v-model="detaall" type="datetimerange" start-placeholder="开始时间"
|
||||
end-placeholder="结束时间" @change="gettabledata" />
|
||||
<el-button style="margin-left: 10px;" @click="gettabledata"
|
||||
value-format="YYYY-MM-DD HH:mm:ss" class="searchButton">搜索</el-button>
|
||||
</div>
|
||||
<div class="cont_top_right"> <el-button class="searchButton">导出</el-button></div>
|
||||
</div>
|
||||
<div class="cont_bottom">
|
||||
<el-table v-loading="loading" :data="tableData" style="width: 100%;height: calc(30vh);
|
||||
overflow: auto;;margin-bottom: 15px;" row-key="id" default-expand-all
|
||||
:row-class-name="tableRowClassName"
|
||||
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
||||
<el-table-column type="index" label="序号" width="50px" align="center" />
|
||||
<el-table-column label="监测数值" prop="value"></el-table-column>
|
||||
<el-table-column label="单位" prop="unit"></el-table-column>
|
||||
<el-table-column label="采集时间" prop="startTime" width="120"></el-table-column>
|
||||
</el-table>
|
||||
<Page :total="total" v-model:size="tableform.size" v-model:current="tableform.current"
|
||||
@pagination="gettabledata()">
|
||||
</Page>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right_bottom">
|
||||
<div class="title_right">
|
||||
<img src="@/assets/navigation/ty_bq.png" alt="">
|
||||
<div>历史曲线</div>
|
||||
</div>
|
||||
<div id="deviceEachers" :style="{ width: '100%', height: '90%' }"></div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.faulttemplate-box {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
display: -webkit-flex;
|
||||
padding: 5px 20px;
|
||||
|
||||
// background-color: #f2f4f9;
|
||||
.silderRight1 {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
height: calc(90vh);
|
||||
overflow: auto;
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
border-radius: 3px;
|
||||
padding: 0px 15px 15px 15px;
|
||||
padding-bottom: 0px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
|
||||
|
||||
// margin-left: 15px;
|
||||
// background: #17212e;
|
||||
.right_top {
|
||||
width: 100%;
|
||||
height: 487px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.top_left {
|
||||
width: 787px;
|
||||
height: 488px;
|
||||
background: url(@/assets/navigation/sbjc_488.png);
|
||||
background-size: 100% 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
|
||||
.text_top {
|
||||
width: 100%;
|
||||
|
||||
.text_top_title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: #00CCFF;
|
||||
padding: 20px 0px;
|
||||
|
||||
div {
|
||||
width: 3px;
|
||||
height: 12px;
|
||||
background: #00ffff;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.text_top_content {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
border-bottom: 1px solid #00397c;
|
||||
border-right: 1px solid #00397c;
|
||||
|
||||
.content_one {
|
||||
width: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.content_one_title {
|
||||
width: 114px;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
line-height: 50px;
|
||||
border-top: 1px solid #00397c;
|
||||
border-left: 1px solid #00397c;
|
||||
background-color: #002562;
|
||||
font-size: 14px;
|
||||
color: #B5D7FF;
|
||||
}
|
||||
|
||||
.content_one_text {
|
||||
width: 267px;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
line-height: 50px;
|
||||
border-top: 1px solid #00397c;
|
||||
border-left: 1px solid #00397c;
|
||||
font-size: 14px;
|
||||
color: #B5D7FF;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cont_top {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin: 20px 0px;
|
||||
|
||||
.cont_top_left {
|
||||
width: 60%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
.right_bottom {
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
margin-top: 15px;
|
||||
width: 100%;
|
||||
height: calc(36vh);
|
||||
background: url(@/assets/navigation/sbjc_485.png);
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.title_right {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
// padding-bottom: 10px;
|
||||
div {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
:deep(.el-tree-node.is-current>.el-tree-node__content) {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
// color: #fff !important;
|
||||
}
|
||||
|
||||
:deep(.el-tree-node__content) {
|
||||
width: 100% !important;
|
||||
height: 40px !important;
|
||||
margin: auto !important;
|
||||
}
|
||||
|
||||
.el-message-box {
|
||||
width: 300px !important;
|
||||
}
|
||||
|
||||
:deep(.el-form-item__label) {
|
||||
width: 105px !important;
|
||||
}
|
||||
|
||||
:deep(.el-tooltip__trigger) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.displayflex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
// margin-top:15px;
|
||||
|
||||
.title {
|
||||
margin-left: 5px;
|
||||
text-decoration: none !important;
|
||||
font-family: "阿里妈妈数黑体 Bold";
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-size: 16px !important;
|
||||
color: rgb(255, 255, 255);
|
||||
line-height: 12px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
:deep(.el-tree) {
|
||||
background-color: #ffffff00 !important;
|
||||
--el-tree-node-hover-bg-color: #0099ff09;
|
||||
}
|
||||
|
||||
#silderLeft {
|
||||
width: 260px;
|
||||
box-sizing: border-box;
|
||||
// background: #ffffff00;
|
||||
border-radius: 3px;
|
||||
position: relative;
|
||||
background: url(@/assets/navigation/ty_260x988.png);
|
||||
background-size: 100% 100%;
|
||||
padding: 0px 10px;
|
||||
|
||||
&:hover {
|
||||
.moveBtn {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.el-table__inner-wrapper::before) {
|
||||
background-color: #0099ff00;
|
||||
}
|
||||
|
||||
:deep(.el-table:not(.el-table--border) .el-table__cell) {
|
||||
border: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
:deep(.el-input__wrapper) {
|
||||
background-color: rgba(19, 26, 37, 0);
|
||||
}
|
||||
|
||||
:deep(.el-select:hover:not(.el-select--disabled) .el-input__wrapper) {
|
||||
box-shadow: 0 0 0 1px #009bff inset;
|
||||
}
|
||||
|
||||
:deep(.el-select) {
|
||||
--el-select-input-focus-border-color: #009bff !important;
|
||||
}
|
||||
|
||||
:deep(.el-tree-node__label) {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
@ -382,7 +382,7 @@ function currency(list: any, itemcode: any) {
|
||||
<el-table v-if="selectedId == '1'" :data="tableData1" :row-class-name="tableRowClassName" class="PatrolMonitoring"
|
||||
v-loading="loading" highlight-current-row
|
||||
style="width: 100%;margin:auto;position: relative;margin-top: 15px; height:calc(100% - 79px); overflow: auto "
|
||||
:header-cell-style="{ background: '#253b51', color: '#B5D7FF', height: '43px' }">
|
||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }">
|
||||
<el-table-column type="index" align="center" label="序号" width="60" />
|
||||
<el-table-column prop="patroldeviceName" label="摄像机名称" align="center" min-width="130" />
|
||||
<el-table-column prop="nvrname" label="所属NVR" align="center" min-width="130" />
|
||||
@ -427,7 +427,7 @@ function currency(list: any, itemcode: any) {
|
||||
<el-table v-if="selectedId == '2'" :data="tableData2" :row-class-name="tableRowClassName" class="PatrolMonitoring"
|
||||
v-loading="loading" highlight-current-row
|
||||
style="width: 100%;margin:auto;position: relative;margin-top: 15px; height:calc(100% - 79px); overflow: auto "
|
||||
:header-cell-style="{ background: '#253b51', color: '#B5D7FF', height: '43px' }">
|
||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }">
|
||||
<el-table-column type="index" align="center" label="序号" width="60" />
|
||||
<el-table-column prop="patroldeviceCode" label="设备编号" align="center" min-width="130" />
|
||||
<el-table-column prop="patroldeviceName" label="设备名称" align="center" min-width="130" />
|
||||
@ -466,7 +466,7 @@ function currency(list: any, itemcode: any) {
|
||||
<el-table v-if="selectedId == '3'" :data="tableData3" :row-class-name="tableRowClassName" class="PatrolMonitoring"
|
||||
v-loading="loading" highlight-current-row
|
||||
style="width: 100%;margin:auto;position: relative;margin-top: 15px; height:calc(100% - 79px); overflow: auto "
|
||||
:header-cell-style="{ background: '#253b51', color: '#B5D7FF', height: '43px' }">
|
||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }">
|
||||
<el-table-column type="index" align="center" label="序号" width="60" />
|
||||
<el-table-column prop="patroldeviceCode" label="设备编号" align="center" min-width="130" />
|
||||
<el-table-column prop="patroldeviceName" label="设备名称" align="center" min-width="130" />
|
||||
@ -497,7 +497,7 @@ function currency(list: any, itemcode: any) {
|
||||
<el-table v-if="selectedId == '4'" :data="tableData4" :row-class-name="tableRowClassName" class="PatrolMonitoring"
|
||||
v-loading="loading" highlight-current-row
|
||||
style="width: 100%;margin:auto;position: relative;margin-top: 15px; height:calc(100% - 79px); overflow: auto "
|
||||
:header-cell-style="{ background: '#253b51', color: '#B5D7FF', height: '43px' }">
|
||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }">
|
||||
<el-table-column type="index" align="center" label="序号" width="60" />
|
||||
<el-table-column prop="patroldeviceCode" label="设备编号" align="center" min-width="130" />
|
||||
<el-table-column prop="patroldeviceName" label="设备名称" align="center" min-width="130" />
|
||||
@ -533,7 +533,7 @@ function currency(list: any, itemcode: any) {
|
||||
<el-table v-if="selectedId == '5'" :data="tableData5" :row-class-name="tableRowClassName" class="PatrolMonitoring"
|
||||
v-loading="loading" highlight-current-row
|
||||
style="width: 100%;margin:auto;position: relative;margin-top: 15px; height:calc(100% - 79px); overflow: auto "
|
||||
:header-cell-style="{ background: '#253b51', color: '#B5D7FF', height: '43px' }">
|
||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }">
|
||||
<el-table-column type="index" align="center" label="序号" width="60" />
|
||||
<el-table-column prop="date" label="时间" align="center" min-width="150" />
|
||||
<el-table-column prop="count1" label="巡视点位漏检率" align="center" min-width="150">
|
||||
|
@ -71,7 +71,6 @@ function handleNodeClick(data: Tree, node: any) {
|
||||
orgId.value = data.id;
|
||||
dialog.value = true
|
||||
getdata();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,9 @@
|
||||
export default class PointBean{
|
||||
x:number;
|
||||
y:number;
|
||||
|
||||
constructor(x:number,y:number){
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
}
|
7902
riis-web/src/views/threevisitation/3DModelSet/index.json
Normal file
7902
riis-web/src/views/threevisitation/3DModelSet/index.json
Normal file
File diff suppressed because it is too large
Load Diff
6083
riis-web/src/views/threevisitation/3DModelSet/index.vue
Normal file
6083
riis-web/src/views/threevisitation/3DModelSet/index.vue
Normal file
File diff suppressed because it is too large
Load Diff
@ -15,13 +15,14 @@
|
||||
? '开始' : '结束' }}测距</el-button>
|
||||
<el-button v-show="!isroam" :style="{ right: isRightList ? '490px' : '150px' }" @click="reset"
|
||||
class="THREE-button">恢复初始态</el-button>
|
||||
<el-button class="THREE-button" :style="{ right: isRightList ? '350px' : '10px' }" @click.stop="roamClick">{{ !isroam
|
||||
? '开始' : '结束' }}漫游</el-button>
|
||||
<el-button class="THREE-button" :style="{ right: isRightList ? '350px' : '10px' }" @click.stop="roamClick">{{
|
||||
!isroam
|
||||
? '开始' : '结束' }}漫游</el-button>
|
||||
<div v-show="isRightList" class="THREE-right-list" @click.stop>
|
||||
<div class="THREE-right-list-title">
|
||||
<span>
|
||||
<span v-show="selType == '01'">摄像机列表</span>
|
||||
<span v-show="selType == '04'">无人车列表</span>
|
||||
<span v-show="selType == '02'">点位列表</span>
|
||||
<span v-show="selType == '05'">设备列表</span></span>
|
||||
<img src="@/assets/3d/u523.png" style="cursor: pointer;margin:0" alt="" @click.stop="isRightList = false">
|
||||
</div>
|
||||
@ -34,9 +35,12 @@
|
||||
</el-input>
|
||||
|
||||
<div v-if="selType == '01'" class="THREE-right-list-main-tab">
|
||||
<div :class="isOnLine == '01' ? 'THREE-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('01')">全部</div>
|
||||
<div :class="isOnLine == '02' ? 'THREE-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('02')">在线</div>
|
||||
<div :class="isOnLine == '03' ? 'THREE-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('03')">离线</div>
|
||||
<div :class="isOnLine == '01' ? 'THREE-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('01')">全部
|
||||
</div>
|
||||
<div :class="isOnLine == '02' ? 'THREE-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('02')">在线
|
||||
</div>
|
||||
<div :class="isOnLine == '03' ? 'THREE-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('03')">离线
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ul v-show="selType != '04'" :style="{ height: selType == '01' ? 'calc(100vh - 260px)' : 'calc(100vh - 220px)' }">
|
||||
@ -84,15 +88,26 @@
|
||||
src="@/assets/3d/sc_dis.png" title="实时视频" alt="实时视频">
|
||||
<img v-if="i.objinfo != undefined && i.objinfo.channelList != undefined && i.objinfo.online == 1"
|
||||
src="@/assets/3d/ks.png" title="实时视频-1" alt="实时视频-1" @click.stop="realTimeVideo(i, 0)">
|
||||
<img v-if="i.objinfo != undefined && i.objinfo.channelList != undefined && i.objinfo.channelList.length == 2"
|
||||
<img
|
||||
v-if="i.objinfo != undefined && i.objinfo.channelList != undefined && i.objinfo.channelList.length == 2"
|
||||
src="@/assets/3d/ks.png" title="实时视频-2" alt="实时视频-2" @click.stop="realTimeVideo(i, 1)">
|
||||
<img v-show="i.type == 'Camera' && !i.start" src="@/assets/3d/ange.png" title="摄像机范围" alt="摄像机范围"
|
||||
@click.stop="listange(i)">
|
||||
<img v-show="i.type == 'Camera' && i.start" src="@/assets/3d/ange1.png" title="摄像机范围" alt="摄像机范围"
|
||||
@click.stop="listange(i)">
|
||||
</div>
|
||||
<div v-show="selType == '02'" class="three-right-list-main-icon">
|
||||
<img v-show="i.objinfo != undefined" src="@/assets/3d/xq.png" title="巡视点位信息" alt="巡视点位信息"
|
||||
@click.stop="informationClick(i), listClick(i, index)">
|
||||
<img v-if="!i.objinfo && !i.objinfo.patroldeviceJson" src="@/assets/3d/sc_dis.png" title="实时视频" alt="实时视频">
|
||||
<img v-else src="@/assets/3d/ks.png" title="实时视频-1" alt="实时视频-1" @click.stop="getDeviceVideo(i, 0)">
|
||||
<img v-show="i.objinfo == undefined" @click.stop src="@/assets/3d/xq_dis.png" title="巡视点位信息" alt="巡视点位信息">
|
||||
<img src="@/assets/sytlechange/u157.svg" alt="" title="历史记录"
|
||||
@click.stop="historicalRecords(i), listClick(i, index)">
|
||||
</div>
|
||||
<div v-show="selType == '05'" class="THREE-right-list-main-icon">
|
||||
<img src="@/assets/3d/xq.png" @click.stop="informationClick(i), listClick(i, index)" title="部件信息" alt="部件信息">
|
||||
<img src="@/assets/3d/xq.png" @click.stop="informationClick(i), listClick(i, index)" title="部件信息"
|
||||
alt="部件信息">
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
@ -111,7 +126,8 @@
|
||||
<span class="THREE-right-list-main-icon" style="display:flex;margin-right:10px">
|
||||
<img v-show="data.objinfo != undefined" src="@/assets/3d/xq.png" title="无人车信息" alt="无人车信息"
|
||||
@click.stop="informationClick(data), handleNodeClick(data, node)">
|
||||
<img v-show="data.objinfo == undefined" @click.stop src="@/assets/3d/xq_dis.png" title="无人车信息" alt="无人车信息">
|
||||
<img v-show="data.objinfo == undefined" @click.stop src="@/assets/3d/xq_dis.png" title="无人车信息"
|
||||
alt="无人车信息">
|
||||
<img v-if="data.objinfo == undefined || data.objinfo.channelList == undefined || data.objinfo.online == 0"
|
||||
src="@/assets/3d/sc_dis.png" title="实时视频" alt="实时视频">
|
||||
<img v-if="data.objinfo != undefined && data.objinfo.channelList != undefined" src="@/assets/3d/ks.png"
|
||||
@ -131,20 +147,21 @@
|
||||
</div>
|
||||
<div v-show="isSelType" id="context-operate" @click.stop>
|
||||
<div :class="selType == '05' ? 'context-operate-hov' : ''" @click="selTypeChange('05')">
|
||||
<span v-show="selType == '05'"><img src="@/assets/3d/sb1.png" alt=""></span>
|
||||
<span v-show="selType != '05'"><img src="@/assets/3d/sb.png" alt=""></span>
|
||||
<span v-show="selType == '05'"><img src="@/assets/navigation/swxs_sz_sb1.png" alt=""></span>
|
||||
<span v-show="selType != '05'"><img src="@/assets/navigation/swxs_sz_sb.png" alt=""></span>
|
||||
<span>设备</span>
|
||||
</div>
|
||||
<div :class="selType == '01' ? 'context-operate-hov' : ''" @click="selTypeChange('01')">
|
||||
<span v-show="selType == '01'"><img src="@/assets/3d/sxj1.png" alt=""></span>
|
||||
<span v-show="selType != '01'"><img src="@/assets/3d/sxj.png" alt=""></span>
|
||||
<span v-show="selType == '01'"><img src="@/assets/navigation/swxs_sz_sxt1.png" alt=""></span>
|
||||
<span v-show="selType != '01'"><img src="@/assets/navigation/swxs_sz_sxt.png" alt=""></span>
|
||||
<span>摄像机</span>
|
||||
</div>
|
||||
<div :class="selType == '04' ? 'context-operate-hov' : ''" @click="selTypeChange('04')">
|
||||
<span v-show="selType == '04'"><img src="@/assets/3d/wrc1.png" alt=""></span>
|
||||
<span v-show="selType != '04'"><img src="@/assets/3d/wrc.png" alt=""></span>
|
||||
<span>无人车</span>
|
||||
<div :class="selType == '02' ? 'context-operate-hov' : ''" @click="selTypeChange('02')">
|
||||
<span v-show="selType == '02'"><img src="@/assets/navigation/swxs_sz_sj1.png" alt=""></span>
|
||||
<span v-show="selType != '02'"><img src="@/assets/navigation/swxs_sz_sj.png" alt=""></span>
|
||||
<span>点位</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- 详细信息弹窗 -->
|
||||
<div class="detailed-information" v-if="information">
|
||||
@ -169,6 +186,46 @@
|
||||
<div class="examination-contont-text">生产厂家:{{ objRow.userData.objinfo.manufacturer }}</div>
|
||||
<div class="examination-contont-text">安装位置:{{ objRow.userData.objinfo.place }}</div>
|
||||
</div>
|
||||
<div class="examination-contont" v-if="selType == '02'">
|
||||
<div class="examination-contont-text">点位名称:{{ objRow.userData.objinfo.deviceName }}</div>
|
||||
<div class="examination-contont-text">所属主设备:{{ objRow.userData.objinfo.mainDeviceName }}</div>
|
||||
<div class="examination-contont-text">所属部件:{{ objRow.userData.objinfo.componentName }}</div>
|
||||
<div class="examination-contont-text">关联摄像机/预置位:
|
||||
<!-- {{ objRow.userData.objinfo.patroldeviceJson.device_code }}/ {{ objRow.userData.objinfo.patroldeviceJson.device_pos }} -->
|
||||
</div>
|
||||
<div class="examination-contont-text">识别类型:
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 1">表计读取</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 2">位置状态识别</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 3">设备外观查看</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 4">红外测温</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 5">声音检测</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 6">闪烁检测</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 13">局放特高频检测</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 12">局放地电压检测</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 11">局放超声波检测</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 101">环境温度检测</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 102">环境湿度检测</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 103">氧气浓度检测</span>
|
||||
<span v-if="objRow.userData.objinfo.recognitionTypeList == 104">SF6浓度检测</span>
|
||||
</div>
|
||||
<div class="examination-contont-text">表计类型:{{ objRow.userData.objinfo.meterType }}</div>
|
||||
<div class="examination-contont-text">分析类型:{{ objRow.userData.objinfo.manufacturer }}
|
||||
<span
|
||||
v-if="objRow.userData.objinfo.pictureAnalysisTypeList && objRow.userData.objinfo.pictureAnalysisTypeList.PictureAnalysisType == 'isolator'">刀闸状态</span>
|
||||
<span
|
||||
v-if="objRow.userData.objinfo.pictureAnalysisTypeList && objRow.userData.objinfo.pictureAnalysisTypeList.PictureAnalysisType == 'switch'">开关/压板状态</span>
|
||||
<span
|
||||
v-if="objRow.userData.objinfo.pictureAnalysisTypeList && objRow.userData.objinfo.pictureAnalysisTypeList.PictureAnalysisType == 'meter'">仪表读数</span>
|
||||
<span
|
||||
v-if="objRow.userData.objinfo.pictureAnalysisTypeList && objRow.userData.objinfo.pictureAnalysisTypeList.PictureAnalysisType == 'infrared'">红外温度</span>
|
||||
<span
|
||||
v-if="objRow.userData.objinfo.pictureAnalysisTypeList && objRow.userData.objinfo.pictureAnalysisTypeList.PictureAnalysisType == 'sound'">声音</span>
|
||||
<span
|
||||
v-if="objRow.userData.objinfo.pictureAnalysisTypeList && objRow.userData.objinfo.pictureAnalysisTypeList.PictureAnalysisType == 'light'">指示灯</span>
|
||||
<span
|
||||
v-if="objRow.userData.objinfo.pictureAnalysisTypeList && objRow.userData.objinfo.pictureAnalysisTypeList.PictureAnalysisType == 'qrcode'">实物ID</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="examination-contont" v-if="selType == '04'">
|
||||
<div class="examination-contont-text">设备编码:{{ objRow.userData.objinfo.patroldeviceCode }}</div>
|
||||
<div class="examination-contont-text">设备名称:{{ objRow.userData.objinfo.patroldeviceName }}</div>
|
||||
@ -294,6 +351,97 @@
|
||||
</div>
|
||||
</template>
|
||||
</Eldialog>
|
||||
<!-- 历史点位信息 -->
|
||||
<Eldialog v-if="history" title="历史巡视记录" :zIndex="2000" :width="'1540px'" @before-close="history = false">
|
||||
<template v-slot:PopFrameContent>
|
||||
<div>
|
||||
<el-date-picker v-model="timeSlot" type="daterange" range-separator="至" start-placeholder="开始时间"
|
||||
end-placeholder="结束时间" style="margin-right: 10px;" value-format="YYYY-MM-DD" />
|
||||
<el-button class="searchButton" @click="historicalRecords(deviceIdone)">搜索</el-button>
|
||||
<el-button class="searchButton" @click="hisreset()">重置</el-button>
|
||||
</div>
|
||||
<el-table v-loading="hisloading" :data="historydata" style="width: 100%;height: calc(70vh);
|
||||
overflow: auto;;margin: 15px 0px;" row-key="id" default-expand-all :row-class-name="tableRowClassName"
|
||||
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
||||
<el-table-column type="index" align="center" label="序号" width="60px" />
|
||||
<el-table-column prop="mainDeviceName" label="设备名称" />
|
||||
<el-table-column prop="componentName" label="部件名称" />
|
||||
<el-table-column prop="deviceName" label="点位名称" />
|
||||
<el-table-column prop="meterType" label="表计类型" align="center">
|
||||
<template #default="scope">
|
||||
<span
|
||||
v-if="currency(MeterTypeList, scope.row.meterType) != undefined && currency(MeterTypeList, scope.row.meterType) != ''">{{
|
||||
currency(MeterTypeList, scope.row.meterType) }}</span>
|
||||
<span v-else>--</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="time" label="巡视时间" width="110px" align="center" />
|
||||
<el-table-column prop="flag" label="状态" width="100px" align="center">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.flag == '0'">未巡视</span>
|
||||
<span v-if="scope.row.flag == '1'">已巡视</span>
|
||||
<span v-if="scope.row.flag == '2'">已完成</span>
|
||||
<span v-if="scope.row.flag == '3'">设备检修中</span>
|
||||
<span v-if="scope.row.flag == '4'">巡视失败</span>
|
||||
<span v-if="scope.row.flag == '5'">已修正</span>
|
||||
<span v-if="scope.row.flag == '6'">采集失败</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="materialId" label="实物id" align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="desc" label="识别类型" width="140px">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.desc != null && scope.row.desc != ''">{{ scope.row.desc
|
||||
}}</span>
|
||||
<span v-else>--</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="识别值" width="100px">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.valueType == 'meter' || scope.row.valueType == 'infrared'">
|
||||
<span v-if="scope.row.analysisResult == '异常'" style="color: red;font-size: 16px;font-weight: bold;">
|
||||
{{
|
||||
scope.row.value }}
|
||||
{{ scope.row.unit }}</span>
|
||||
<span v-else> {{ scope.row.value }} {{ scope.row.unit }}</span>
|
||||
</span>
|
||||
<span v-else>
|
||||
<span v-if="scope.row.conf != null && scope.row.conf != ''">{{ scope.row.conf
|
||||
}}</span>
|
||||
<span v-else>--</span>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="analysisResult" label="巡视结论" align="center" width="80px">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.analysisResult == '正常'" style="color: rgb(0, 249, 162)">正常</span>
|
||||
<span v-if="scope.row.analysisResult == '异常'"
|
||||
style="color: rgb(255, 51, 0);color: red;font-size: 16px;font-weight: bold;">异常</span>
|
||||
<span v-if="scope.row.analysisResult == '设备检修'" style="color: rgb(0, 153, 255)">设备检修</span>
|
||||
<span v-if="scope.row.analysisResult == '失败'" style="color: rgb(255, 189, 0)">失败</span>
|
||||
<span v-if="scope.row.analysisResult == '成功'" style="color: rgb(0, 249, 162)">成功</span>
|
||||
<span v-if="scope.row.analysisResult == '' || scope.row.analysisResult == null">--</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="reviseValue" label="修正值" align="center">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.reviseValid == null">--</span>
|
||||
<span v-else> {{ scope.row.reviseValue }} {{ scope.row.unit }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="reviseValid" label="修正结论" align="center">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.reviseValid == 0">正常</span>
|
||||
<span v-if="scope.row.reviseValid == 1">异常</span>
|
||||
<span v-if="scope.row.reviseValid == null">--</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<Page :total="histotal" v-model:size="historParams.size" v-model:current="historParams.current"
|
||||
@pagination="historicalRecords(deviceIdone)">
|
||||
</Page>
|
||||
</template>
|
||||
</Eldialog>
|
||||
<div id="contextimg">
|
||||
<img src="@/assets/3d/luminescence.svg" alt="">
|
||||
</div>
|
||||
@ -310,6 +458,9 @@
|
||||
v-if="isVideo && dataSel.userData != undefined && dataSel.userData.objinfo != undefined && dataSel.userData.objinfo.channelList != undefined && dataSel.userData.objinfo.channelList.length == 2 && dataSel.userData.objinfo.online == 1"
|
||||
@click.stop="realTimeVideo(1, 1)">实时视频-2</li>
|
||||
</ul>
|
||||
<ul v-show="selType == '02'">
|
||||
<li @click.stop="CameraInformation">巡视点位信息</li>
|
||||
</ul>
|
||||
<ul v-show="selType == '04'">
|
||||
<li @click.stop="CameraInformation">无人车信息</li>
|
||||
<li
|
||||
@ -343,24 +494,24 @@ import { getDeviceByType } from "@/api/device";
|
||||
import JessibucaPlayer from '@/components/jessibuca/index1.vue' // 视频
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import axios from 'axios'
|
||||
import { getSubstationById } from '@/api/substation'
|
||||
import { getSubstationById, getHistoryDevice } from '@/api/substation'
|
||||
import { setAlarmLogStatus } from "@/api/alarmInfo";//告警信息获取
|
||||
import { getNotCheckAlarmCount } from '@/api/home';
|
||||
import { onMounted, ref, reactive, onBeforeUnmount, nextTick, watch } from 'vue'
|
||||
import * as THREE from 'THREE'
|
||||
import * as THREE from 'three'
|
||||
import TWEEN from 'tween'
|
||||
import { OrbitControls } from 'THREE/examples/jsm/controls/OrbitControls' // 控制器
|
||||
import { GLTFLoader } from 'THREE/examples/jsm/loaders/GLTFLoader.js' // 控制器
|
||||
import { DRACOLoader } from 'THREE/examples/jsm/loaders/DRACOLoader.js' // 控制器
|
||||
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' // 控制器
|
||||
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js' // 控制器
|
||||
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js' // 控制器
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { EffectComposer } from "THREE/examples/jsm/postprocessing/EffectComposer"
|
||||
import { RenderPass } from "THREE/examples/jsm/postprocessing/RenderPass"
|
||||
import { OutlinePass } from "THREE/examples/jsm/postprocessing/OutlinePass"
|
||||
import { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer"
|
||||
import { RenderPass } from "three/examples/jsm/postprocessing/RenderPass"
|
||||
import { OutlinePass } from "three/examples/jsm/postprocessing/OutlinePass"
|
||||
// 伽玛校正后处理Shader
|
||||
import { GammaCorrectionShader } from 'THREE/examples/jsm/shaders/GammaCorrectionShader'
|
||||
import { ShaderPass } from "THREE/examples/jsm/postprocessing/ShaderPass"
|
||||
import { GammaCorrectionShader } from 'three/examples/jsm/shaders/GammaCorrectionShader'
|
||||
import { ShaderPass } from "three/examples/jsm/postprocessing/ShaderPass"
|
||||
// SMAA抗锯齿通道
|
||||
import { SMAAPass } from 'THREE/examples/jsm/postprocessing/SMAAPass'
|
||||
import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass'
|
||||
import jt from '@/assets/3d/jt.png'
|
||||
import gaojing from '@/assets/3d/gaojing.png'
|
||||
import gaojing1 from '@/assets/3d/gaojing1.png'
|
||||
@ -369,6 +520,7 @@ import { PathPointList } from '@/utils/PathPointList.js'
|
||||
import { PathGeometry } from '@/utils/PathGeometry.js'
|
||||
import position from '../3DModelSet/index.json'
|
||||
import Eldialog from '@/components/seccmsdialog/eldialog.vue'
|
||||
import Page from '@/components/Pagination/page.vue'
|
||||
const userStore = useUserStore()
|
||||
const taskName = ref()
|
||||
const tableData = ref([])
|
||||
@ -1339,6 +1491,15 @@ function initData() {
|
||||
}
|
||||
loadModel('UV', dataJson.value.UV, is)
|
||||
}
|
||||
if (dataJson.value.DevicePoint != '') {
|
||||
let is = false
|
||||
if (selType.value == '02') {
|
||||
data.value = dataJson.value.DevicePoint
|
||||
searchdata.value = JSON.parse(JSON.stringify(data.value))
|
||||
is = true
|
||||
}
|
||||
loadModel('DevicePoint', dataJson.value.DevicePoint, is)
|
||||
}
|
||||
if (dataJson.value.EquipmentComponentSettings != '') {
|
||||
if (selType.value == '05') {
|
||||
data.value = dataJson.value.EquipmentComponentSettings
|
||||
@ -1512,12 +1673,12 @@ function render1() {
|
||||
// 不太放心,try-catch一下,保证出现意外也能继续执行后面的内容
|
||||
renderFunc[funcName](delta);
|
||||
} catch (e) {
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2012,6 +2173,18 @@ function selTypeChange(str) {
|
||||
})
|
||||
}
|
||||
}
|
||||
} else if (str == '02') {
|
||||
if (dataJson.value.DevicePoint) data.value = dataJson.value.DevicePoint
|
||||
searchdata.value = JSON.parse(JSON.stringify(data.value))
|
||||
for (let i = 0; i < scene.children.length; i++) {
|
||||
if (scene.children[i].userData.type == 'DevicePoint') {
|
||||
scene.children[i].traverse(function (obj) {
|
||||
if (obj.type === 'Mesh') {
|
||||
obj.material.visible = true
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
} else if (str == '04') {
|
||||
if (dataJson.value.UV) data.value = dataJson.value.UV
|
||||
searchdata.value = JSON.parse(JSON.stringify(data.value))
|
||||
@ -2227,20 +2400,39 @@ const channelId = ref('')
|
||||
const videofmp4 = ref('')
|
||||
// 播放视频
|
||||
function getVideoUrl(row, index) {
|
||||
deviceId.value = row.channelList[index].deviceid
|
||||
channelId.value = row.channelList[index].channelid
|
||||
if (row.channelList[index].deviceid == undefined) {
|
||||
deviceId.value = row.channelList[index].deviceId
|
||||
channelId.value = row.channelList[index].channelId
|
||||
if (index == 'camera') {
|
||||
deviceId.value = row.patroldevice_code
|
||||
channelId.value = row.patroldevice_channelcode
|
||||
} else {
|
||||
deviceId.value = row.channelList[index].deviceid
|
||||
channelId.value = row.channelList[index].channelid
|
||||
if (row.channelList[index].deviceid == undefined) {
|
||||
deviceId.value = row.channelList[index].deviceId
|
||||
channelId.value = row.channelList[index].channelId
|
||||
}
|
||||
}
|
||||
|
||||
axios.get(userStore.webApiMonitorUrl + '/api/play/start/' + deviceId.value + '/' + channelId.value, {}).then((res) => {
|
||||
if (res.data.data != undefined) {
|
||||
videoUrl.value = res.data.data.ws_flv
|
||||
videofmp4.value = res.data.data.fmp4
|
||||
if (index == 'camera') {
|
||||
presetPosition(130,row.patroldevice_pos)
|
||||
}
|
||||
|
||||
}
|
||||
}).catch(function (error) {
|
||||
})
|
||||
}
|
||||
function presetPosition(cmdCode,presetPos) { // 预置位操作 ---设置、删除、调用
|
||||
|
||||
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((resize) => {
|
||||
if (res.data.data == "0") {
|
||||
console.log("预置位")
|
||||
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode + '¶meter1=0¶meter2=' + presetPos + '&combindCode2=0', {}).then((res) => { })
|
||||
}
|
||||
})
|
||||
}
|
||||
//摄像机-摄像机-视频播放
|
||||
const videoChannelList = ref([])
|
||||
function realTimeVideo(row, index) {
|
||||
@ -2277,6 +2469,12 @@ function realTimeVideo(row, index) {
|
||||
}
|
||||
// }
|
||||
}
|
||||
function getDeviceVideo(row) {
|
||||
let camera = JSON.parse(row.objinfo.patroldeviceJson)
|
||||
console.log(camera)
|
||||
getVideoUrl(camera[0], 'camera')
|
||||
videoShow.value = true
|
||||
}
|
||||
//列表点击-查看详细信息
|
||||
function informationClick(row) {
|
||||
information.value = true
|
||||
@ -2290,6 +2488,79 @@ function informationClick(row) {
|
||||
})
|
||||
clearDiv()
|
||||
}
|
||||
//点位历史记录
|
||||
const history = ref(false)
|
||||
const histotal = ref(0)
|
||||
const historParams = ref({
|
||||
size: 10,
|
||||
current: 1,
|
||||
deviceId: '',
|
||||
startDate: '',
|
||||
endDate: ''
|
||||
})
|
||||
const historydata = ref([])
|
||||
const hisloading = ref(false)
|
||||
const timeSlot = ref([])
|
||||
const deviceIdone = ref('')
|
||||
function historicalRecords(row) {
|
||||
console.log(row)
|
||||
getType()
|
||||
deviceIdone.value = row
|
||||
historParams.value.deviceId = row.objinfo.deviceId
|
||||
console.log(timeSlot.value)
|
||||
if (timeSlot.value.length > 0) {
|
||||
historParams.value.startDate = timeSlot.value[0]
|
||||
historParams.value.endDate = timeSlot.value[1]
|
||||
} else {
|
||||
historParams.value.startDate = ''
|
||||
historParams.value.endDate = ''
|
||||
}
|
||||
hisloading.value = true
|
||||
history.value = true
|
||||
getHistoryDevice(historParams.value).then(res => {
|
||||
if (res.code == 0) {
|
||||
historydata.value = res.data.records
|
||||
historParams.value.size = res.data.records
|
||||
historParams.value.current = res.data.current
|
||||
histotal.value = res.data.total
|
||||
hisloading.value = false
|
||||
// history.value = false
|
||||
}
|
||||
})
|
||||
}
|
||||
function hisreset() {
|
||||
timeSlot.value.length = 0
|
||||
historicalRecords(deviceIdone.value)
|
||||
}
|
||||
const tableRowClassName = ({
|
||||
row,
|
||||
rowIndex,
|
||||
}) => {
|
||||
if (rowIndex % 2 === 0) {
|
||||
return 'warning-row'
|
||||
} else if (rowIndex % 2 === 1) {
|
||||
return 'success-row'
|
||||
}
|
||||
return ''
|
||||
}
|
||||
function currency(list, itemcode) {
|
||||
let dictname = ''
|
||||
list.forEach((element) => {
|
||||
if (element.itemcode == itemcode) {
|
||||
dictname = element.dictname
|
||||
}
|
||||
})
|
||||
return dictname
|
||||
}
|
||||
const MeterTypeList = ref([])
|
||||
function getType() {
|
||||
const paramstypes = {
|
||||
dictcode: 'MeterType'
|
||||
}
|
||||
getDeviceByType(paramstypes).then((res) => {
|
||||
MeterTypeList.value = res.data
|
||||
})
|
||||
}
|
||||
// 视角切换
|
||||
function animateCamera(current1, target1, current2, target2) {
|
||||
// current1 相机当前的位置
|
||||
@ -2574,7 +2845,7 @@ function nextPage() {
|
||||
AlarmMapOne.value = AlarmMap.value[Index.value]
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<style lang="scss" scoped>
|
||||
#THREE_div {
|
||||
width: 100%;
|
||||
@ -2717,9 +2988,9 @@ function nextPage() {
|
||||
}
|
||||
|
||||
.context-operate-hov {
|
||||
color: #009bff !important;
|
||||
box-shadow: 0 0 4px #009bff;
|
||||
border: 1px solid #009bff !important;
|
||||
color: #00ffff !important;
|
||||
box-shadow: 0 0 4px #00ffff;
|
||||
border: 1px solid #00ffff !important;
|
||||
}
|
||||
|
||||
#context-operate {
|
||||
|
Loading…
Reference in New Issue
Block a user