Compare commits
2 Commits
17c349c5e7
...
ef033aa4bb
Author | SHA1 | Date | |
---|---|---|---|
ef033aa4bb | |||
2511b18167 |
@ -3,7 +3,7 @@
|
|||||||
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
|
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
|
||||||
NODE_ENV='development'
|
NODE_ENV='development'
|
||||||
|
|
||||||
VITE_APP_TITLE = '变电站远程智能巡视系统'
|
VITE_APP_TITLE = '配电网人工智能平台'
|
||||||
VITE_APP_PORT = 3000
|
VITE_APP_PORT = 3000
|
||||||
VITE_APP_BASE_API = '/dev-api'
|
VITE_APP_BASE_API = '/dev-api'
|
||||||
VITE_APP_BASE_URL = 'http://192.168.1.20:18080'
|
VITE_APP_BASE_URL = 'http://192.168.1.20:18080'
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
## 生产环境
|
## 生产环境
|
||||||
NODE_ENV='production'
|
NODE_ENV='production'
|
||||||
|
|
||||||
VITE_APP_TITLE = '变电站远程智能巡视系统'
|
VITE_APP_TITLE = '配电网人工智能平台'
|
||||||
VITE_APP_PORT = 3000
|
VITE_APP_PORT = 3000
|
||||||
VITE_APP_BASE_API = '/prod-api'
|
VITE_APP_BASE_API = '/prod-api'
|
||||||
VITE_APP_BASE_URL = 'http://192.168.1.20:18080'
|
VITE_APP_BASE_URL = 'http://192.168.1.20:18080'
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
## 模拟环境
|
## 模拟环境
|
||||||
NODE_ENV='staging'
|
NODE_ENV='staging'
|
||||||
|
|
||||||
VITE_APP_TITLE = '变电站远程智能巡视系统'
|
VITE_APP_TITLE = '配电网人工智能平台'
|
||||||
VITE_APP_PORT = 3000
|
VITE_APP_PORT = 3000
|
||||||
VITE_APP_BASE_API = '/prod--api'
|
VITE_APP_BASE_API = '/prod--api'
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<link rel="stylesheet" type="text/css" href="./static/css/iconfont.css">
|
<link rel="stylesheet" type="text/css" href="./static/css/iconfont.css">
|
||||||
<script type="text/javascript" type="module" src="./static/js/jessibuca.js"></script>
|
<script type="text/javascript" type="module" src="./static/js/jessibuca.js"></script>
|
||||||
<script type="text/javascript" type="module" src="./webconfig.js"></script>
|
<script type="text/javascript" type="module" src="./webconfig.js"></script>
|
||||||
<title>变电站远程智能巡视系统</title>
|
<title>配电网人工智能平台</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
@ -2,5 +2,6 @@ window.webConfig = {
|
|||||||
"webApiBaseUrl": "http://192.168.1.20:8090/",
|
"webApiBaseUrl": "http://192.168.1.20:8090/",
|
||||||
"wsApiBaseUrl": "ws://192.168.1.20:8090/",
|
"wsApiBaseUrl": "ws://192.168.1.20:8090/",
|
||||||
"webApiMonitorUrl": "http://192.168.1.20:18080",
|
"webApiMonitorUrl": "http://192.168.1.20:18080",
|
||||||
|
"answeringUrl":"http://121.37.111.42:8083/ui/chat/431e83302d0bbfbe",
|
||||||
"webSystemTitle":"标题"
|
"webSystemTitle":"标题"
|
||||||
}
|
}
|
@ -19,6 +19,14 @@ export function getAlarmLogPage(params:any){
|
|||||||
data:params
|
data:params
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
//辅控告警信息核查
|
||||||
|
export function setAlarmRecordStatus(params:any){
|
||||||
|
return request({
|
||||||
|
url: '/auxcontrol/device-alarm-record/setAlarmRecordStatus' ,
|
||||||
|
method: 'post',
|
||||||
|
data:params
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
//告警信息批量核查
|
//告警信息批量核查
|
||||||
export function setBatchAlarmLogStatus(params:any){
|
export function setBatchAlarmLogStatus(params:any){
|
||||||
|
@ -15,10 +15,19 @@ export function getSubstation (){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
//批量修改警告阈值
|
//批量修改警告阈值
|
||||||
export function updateAlarm(params:any){
|
export function setAlgorithmModel(params:any){
|
||||||
return request({
|
return request({
|
||||||
url: 'basedata/substation-device/updateAlarmThreshold' ,
|
url: '/basedata/alarm-threshold/setAlgorithmModel' ,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data:params
|
data:params
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//批量修改警告阈值
|
||||||
|
export function getAlgorithmModelById(params:any){
|
||||||
|
return request({
|
||||||
|
url: '/basedata/alarm-threshold/getAlgorithmModelById' ,
|
||||||
|
method: 'get',
|
||||||
|
params:params
|
||||||
|
});
|
||||||
|
}
|
@ -129,20 +129,29 @@ export function getDeviceByType(params: any) {
|
|||||||
params: params
|
params: params
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
export function getDictionaryItems(params: any) {
|
||||||
|
return request({
|
||||||
|
url: '/system/dictionaryItems/getDictionaryItems',
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
});
|
||||||
|
}
|
||||||
//根据条件获取部件(分页)
|
//根据条件获取部件(分页)
|
||||||
export function getComponentByBayPage(params: any) {
|
export function getComponentByBayPage(params: any) {
|
||||||
return request({
|
return request({
|
||||||
url: '/basedata/substation-maindevice/getComponentByBayPage',
|
url: '/basedata/substation-maindevice/getComponentByBayPage',
|
||||||
method: 'get',
|
method: 'post',
|
||||||
params: params
|
data: params
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//根据条件获取主设备(分页)
|
//根据条件获取主设备(分页)
|
||||||
export function getMainDevicePage(params: any) {
|
export function getMainDevicePage(params: any) {
|
||||||
return request({
|
return request({
|
||||||
url: '/basedata/substation-maindevice/getMainDevicePage',
|
url: '/basedata/substation-maindevice/getMainDevicePage',
|
||||||
method: 'get',
|
method: 'post',
|
||||||
params: params
|
data: params
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 保存模板图片
|
// 保存模板图片
|
||||||
|
@ -7,6 +7,13 @@ export function getWeatherLogPage(params:any){
|
|||||||
params:params
|
params:params
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
export function getdeviceworkdata(params:any){
|
||||||
|
return request({
|
||||||
|
url: '/auxcontrol/device-work-data/page' ,
|
||||||
|
method: 'get',
|
||||||
|
params:params
|
||||||
|
});
|
||||||
|
}
|
||||||
//分页查看主辅设备监控数据
|
//分页查看主辅设备监控数据
|
||||||
export function getMainassistDeviceLogPage(params:any){
|
export function getMainassistDeviceLogPage(params:any){
|
||||||
return request({
|
return request({
|
||||||
|
@ -24,6 +24,13 @@ export function getWeatherLogList(params:any){
|
|||||||
params:params
|
params:params
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
export function getDeviceWorkData(params:any){
|
||||||
|
return request({
|
||||||
|
url: '/auxcontrol/device-work-data/getDeviceWorkData' ,
|
||||||
|
method: 'get',
|
||||||
|
params:params
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// 查询报警信息
|
// 查询报警信息
|
||||||
export function getAlarmLogList(params:any){
|
export function getAlarmLogList(params:any){
|
||||||
|
@ -74,7 +74,7 @@ export function getTreelist(params: any) {
|
|||||||
//获取变电站信息
|
//获取变电站信息
|
||||||
export function getTreeList(params:any){
|
export function getTreeList(params:any){
|
||||||
return request({
|
return request({
|
||||||
url: '/basedata/substation/getSubstationAreaNaviTree' ,
|
url: '/basedata/substation/getSubstationAreaTree' ,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params:params
|
params:params
|
||||||
});
|
});
|
||||||
|
@ -10,7 +10,7 @@ export function getdata(params: any) {
|
|||||||
//根据任务执行情况ID查询点位查询
|
//根据任务执行情况ID查询点位查询
|
||||||
export function getTableData(params: any) {
|
export function getTableData(params: any) {
|
||||||
return request({
|
return request({
|
||||||
url: '/patroltasks/task-todo/getTaskDevicePage',
|
url: '/patroltasks/task-todo/getTaskDeviceList',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: params
|
params: params
|
||||||
});
|
});
|
||||||
|
@ -29,7 +29,7 @@ export function getTaskToDo(params:any){
|
|||||||
//分页查询检修计划
|
//分页查询检修计划
|
||||||
export function getTaskList(params:any){
|
export function getTaskList(params:any){
|
||||||
return request({
|
return request({
|
||||||
url: '/patroltasks/examine-plan/getExaminePlanPage' ,
|
url: '/patroltasks/examine-plan/getTaskList' ,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params:params
|
params:params
|
||||||
});
|
});
|
||||||
@ -81,7 +81,7 @@ export function setExaminePlanStatus(params:any){
|
|||||||
//获取区域下所有间隔
|
//获取区域下所有间隔
|
||||||
export function getSubstationBayByArea(params: any) {
|
export function getSubstationBayByArea(params: any) {
|
||||||
return request({
|
return request({
|
||||||
url: '/basedata/substation/getSubstationBay',
|
url: '/basedata/substation/getSubstationBayByArea',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: params
|
params: params
|
||||||
});
|
});
|
||||||
|
BIN
riis-web/src/assets/navigation/humidity.png
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
riis-web/src/assets/navigation/oxygen.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
riis-web/src/assets/navigation/pressure.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
riis-web/src/assets/navigation/rainfall.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
riis-web/src/assets/navigation/sf6.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
riis-web/src/assets/navigation/temperature.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
riis-web/src/assets/navigation/windDirection.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
riis-web/src/assets/navigation/windSpeed.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="audio-spectrum">
|
<div class="audio-spectrum">
|
||||||
<el-scrollbar height="700px">
|
<el-scrollbar height="680px">
|
||||||
<!-- 分贝图表容器 -->
|
<!-- 分贝图表容器 -->
|
||||||
<div ref="dbChartContainer" class="spectrum-chart-db"></div>
|
<div ref="dbChartContainer" class="spectrum-chart-db"></div>
|
||||||
<!-- 频率图表容器 -->
|
<!-- 频率图表容器 -->
|
||||||
@ -452,7 +452,7 @@ watch(() => props.fileUrl, async () => {
|
|||||||
.spectrum-chart,
|
.spectrum-chart,
|
||||||
.spectrum-chart-db {
|
.spectrum-chart-db {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 500px;
|
height: 320px;
|
||||||
background: rgba(255, 255, 255, 0.144);
|
background: rgba(255, 255, 255, 0.144);
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
@ -6,7 +6,7 @@ export default {
|
|||||||
},
|
},
|
||||||
// 登录页面国际化
|
// 登录页面国际化
|
||||||
login: {
|
login: {
|
||||||
title: '变电站远程智能巡视系统',
|
title: '配电网人工智能平台',
|
||||||
username: '用户名',
|
username: '用户名',
|
||||||
rulesUsername: '请输入用户名',
|
rulesUsername: '请输入用户名',
|
||||||
password: '密码',
|
password: '密码',
|
||||||
|
@ -10,7 +10,7 @@ interface DefaultSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const defaultSettings: DefaultSettings = {
|
const defaultSettings: DefaultSettings = {
|
||||||
title: '变电站远程智能巡视系统',
|
title: '配电网人工智能平台',
|
||||||
showSettings: false,
|
showSettings: false,
|
||||||
tagsView: true,
|
tagsView: true,
|
||||||
fixedHeader: true,
|
fixedHeader: true,
|
||||||
|
@ -41,6 +41,7 @@ export const useUserStore = defineStore('user', () => {
|
|||||||
const webApiMonitorUrl:any = process.env.NODE_ENV=='development'? import.meta.env.VITE_APP_BASE_URL:window.webConfig.webApiMonitorUrl
|
const webApiMonitorUrl:any = process.env.NODE_ENV=='development'? import.meta.env.VITE_APP_BASE_URL:window.webConfig.webApiMonitorUrl
|
||||||
const webApiBaseUrl:any = process.env.NODE_ENV=='development'? import.meta.env.VITE_APP_BASE_API:window.webConfig.webApiBaseUrl
|
const webApiBaseUrl:any = process.env.NODE_ENV=='development'? import.meta.env.VITE_APP_BASE_API:window.webConfig.webApiBaseUrl
|
||||||
const wsApiBaseUrl:any = process.env.NODE_ENV=='development'? import.meta.env.VITE_APP_BASE_WS:window.webConfig.wsApiBaseUrl
|
const wsApiBaseUrl:any = process.env.NODE_ENV=='development'? import.meta.env.VITE_APP_BASE_WS:window.webConfig.wsApiBaseUrl
|
||||||
|
const answeringUrl:any = window.webConfig.answeringUrl
|
||||||
const promptTitle:any = ref('')
|
const promptTitle:any = ref('')
|
||||||
// actions
|
// actions
|
||||||
|
|
||||||
@ -250,6 +251,7 @@ export const useUserStore = defineStore('user', () => {
|
|||||||
webApiMonitorUrl,
|
webApiMonitorUrl,
|
||||||
webApiBaseUrl,
|
webApiBaseUrl,
|
||||||
wsApiBaseUrl,
|
wsApiBaseUrl,
|
||||||
|
answeringUrl
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -655,10 +655,7 @@ input {
|
|||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-table .el-table__row.el-table__row--striped {
|
|
||||||
background: #17212e !important;
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell {
|
.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell {
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
|
@ -4981,7 +4981,7 @@ function getComponentPage() {
|
|||||||
bayId: pageInfo.value.bayId,
|
bayId: pageInfo.value.bayId,
|
||||||
componentName: componentName.value
|
componentName: componentName.value
|
||||||
}
|
}
|
||||||
getComponentByBayPage(params).then(res => {
|
getComponentByBayPage(JSON.stringify(params)).then(res => {
|
||||||
componentData.value = res.data.records
|
componentData.value = res.data.records
|
||||||
pageInfo.value.size = res.data.size
|
pageInfo.value.size = res.data.size
|
||||||
pageInfo.value.current = res.data.current
|
pageInfo.value.current = res.data.current
|
||||||
@ -5012,7 +5012,7 @@ function getmainDevicePage() {
|
|||||||
getSubstationBayByArea({ stationCode: userStore.stationCode }).then((res) => {
|
getSubstationBayByArea({ stationCode: userStore.stationCode }).then((res) => {
|
||||||
bayIdType.value = res.data
|
bayIdType.value = res.data
|
||||||
})
|
})
|
||||||
getMainDevicePage(params).then(res => {
|
getMainDevicePage(JSON.stringify(params)).then(res => {
|
||||||
mainDeviceData.value = res.data.records
|
mainDeviceData.value = res.data.records
|
||||||
pageInfo.value.size = res.data.size
|
pageInfo.value.size = res.data.size
|
||||||
pageInfo.value.current = res.data.current
|
pageInfo.value.current = res.data.current
|
||||||
|
@ -3,23 +3,19 @@ export default {
|
|||||||
name: "alarminterval",
|
name: "alarminterval",
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, nextTick } from "vue";
|
import { ref, onMounted } from "vue";
|
||||||
import { getAlarm, getSubstation, updateAlarm } from "@/api/alarminterval";
|
import { getAlarm, getSubstation, setAlgorithmModel, getAlgorithmModelById } from "@/api/alarminterval";
|
||||||
|
|
||||||
import { getDeviceByType, getaccType, getMainEquipment } from "@/api/device";
|
import { getDeviceByType, getaccType, getMainEquipment } from "@/api/device";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import Page from '@/components/Pagination/page.vue'
|
|
||||||
import Eldialog from '@/components/seccmsdialog/eldialog.vue';
|
import Eldialog from '@/components/seccmsdialog/eldialog.vue';
|
||||||
|
import Page from '@/components/Pagination/page.vue'
|
||||||
// 右侧表格
|
// 右侧表格
|
||||||
const tableData: any = ref()
|
const tableData: any = ref()
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const deviceName = ref()
|
const deviceName = ref()
|
||||||
const params = ref({
|
const params = ref({
|
||||||
size: 20,
|
size: 10,
|
||||||
current: 1,
|
current: 1,
|
||||||
stationId: '',
|
stationId: '',
|
||||||
areaId: '',
|
areaId: '',
|
||||||
@ -45,7 +41,7 @@ function getData() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
//获取变电站树
|
//获取变电站树
|
||||||
const treeAll = ref()
|
const treeAll = ref([])
|
||||||
function notification() {
|
function notification() {
|
||||||
getSubstation().then((res: any) => {
|
getSubstation().then((res: any) => {
|
||||||
treeAll.value = res.data
|
treeAll.value = res.data
|
||||||
@ -103,6 +99,7 @@ function getCompont() {
|
|||||||
//识别类型&&表计类型
|
//识别类型&&表计类型
|
||||||
const recognitionTypeList: any = ref([])
|
const recognitionTypeList: any = ref([])
|
||||||
const meterType: any = ref([])
|
const meterType: any = ref([])
|
||||||
|
const EquipmentType: any = ref([])
|
||||||
function getType() {
|
function getType() {
|
||||||
const paramsall = {
|
const paramsall = {
|
||||||
dictcode: 'recognition_type'
|
dictcode: 'recognition_type'
|
||||||
@ -116,6 +113,9 @@ function getType() {
|
|||||||
getDeviceByType(paramsid).then((res: any) => {
|
getDeviceByType(paramsid).then((res: any) => {
|
||||||
meterType.value = res.data
|
meterType.value = res.data
|
||||||
})
|
})
|
||||||
|
getDeviceByType({ dictcode: 'EquipmentType' }).then((res: any) => {
|
||||||
|
EquipmentType.value = res.data
|
||||||
|
})
|
||||||
}
|
}
|
||||||
//重置
|
//重置
|
||||||
function resetting() {
|
function resetting() {
|
||||||
@ -143,19 +143,22 @@ function handleSelectionChange(val: any) {
|
|||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
//表单数据
|
//表单数据
|
||||||
const info: any = ref({
|
const info: any = ref({
|
||||||
earlyMin: '',
|
commonLower: '',
|
||||||
earlyMax: '',
|
commonUpper: '',
|
||||||
sameMin: '',
|
seriousLower: '',
|
||||||
sameMax: '',
|
seriousUpper: '',
|
||||||
seriousMin: '',
|
dangerLower: '',
|
||||||
seriousMax: '',
|
dangerUpper: '',
|
||||||
criticalMin: '',
|
alarmClass: '1',
|
||||||
criticalMax: ''
|
isLastContrast: '1',
|
||||||
|
baseValue: '',
|
||||||
|
isenable: '1',
|
||||||
|
alarmType: '',
|
||||||
})
|
})
|
||||||
function isAllEqual(array: any) {
|
function isAllEqual(array: any) {
|
||||||
let is = true
|
let is = true
|
||||||
for (let i = 0; i < array.length; i++) {
|
for (let i = 0; i < array.length; i++) {
|
||||||
if (array.every((item: any) => item.unit === array[i].unit) === false) {
|
if (array.every((item: any) => item.recognitionTypeList === array[i].recognitionTypeList) === false) {
|
||||||
is = false
|
is = false
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -163,22 +166,33 @@ function isAllEqual(array: any) {
|
|||||||
}
|
}
|
||||||
return is
|
return is
|
||||||
}
|
}
|
||||||
|
const alarmTypeList: any = ref([])
|
||||||
function setClick() {
|
function setClick() {
|
||||||
if (deviceInfos.value.length == 1) {
|
if (deviceInfos.value.length == 1) {
|
||||||
info.value = JSON.parse(JSON.stringify(deviceInfos.value[0]))
|
getAlgorithmModelById({ id: deviceInfos.value[0].deviceId }).then((res: any) => {
|
||||||
if (info.value.earlyMin == undefined || info.value.earlyMax == undefined || info.value.sameMin == undefined || info.value.sameMax == undefined || info.value.seriousMin == undefined || info.value.seriousMax == undefined || info.value.criticalMin == undefined || info.value.criticalMax == undefined) {
|
if (res.data) {
|
||||||
|
info.value = res.data
|
||||||
|
|
||||||
|
} else {
|
||||||
info.value = {
|
info.value = {
|
||||||
earlyMin: '',
|
commonLower: '',
|
||||||
earlyMax: '',
|
commonUpper: '',
|
||||||
sameMin: '',
|
seriousLower: '',
|
||||||
sameMax: '',
|
seriousUpper: '',
|
||||||
seriousMin: '',
|
dangerLower: '',
|
||||||
seriousMax: '',
|
dangerUpper: '',
|
||||||
criticalMin: '',
|
alarmClass: '1',
|
||||||
criticalMax: '',
|
isLastContrast: '1',
|
||||||
|
baseValue: '',
|
||||||
|
isenable: '1',
|
||||||
|
alarmType: '',
|
||||||
unit: deviceInfos.value[0].unit
|
unit: deviceInfos.value[0].unit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (isAllEqual(deviceInfos.value) == false) {
|
if (isAllEqual(deviceInfos.value) == false) {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
@ -188,62 +202,237 @@ function setClick() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
info.value = {
|
info.value = {
|
||||||
earlyMin: '',
|
commonLower: '',
|
||||||
earlyMax: '',
|
commonUpper: '',
|
||||||
sameMin: '',
|
seriousLower: '',
|
||||||
sameMax: '',
|
seriousUpper: '',
|
||||||
seriousMin: '',
|
dangerLower: '',
|
||||||
seriousMax: '',
|
dangerUpper: '',
|
||||||
criticalMin: '',
|
unit: '',
|
||||||
criticalMax: '',
|
alarmClass: '1',
|
||||||
unit: ''
|
isLastContrast: '1',
|
||||||
|
baseValue: '',
|
||||||
|
isenable: '1',
|
||||||
|
alarmType: '',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const paramsall = {
|
||||||
|
dictcode: 'AlarmType'
|
||||||
|
}
|
||||||
|
getDeviceByType(paramsall).then((res: any) => {
|
||||||
|
alarmTypeList.value = res.data
|
||||||
|
})
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
}
|
}
|
||||||
//弹窗
|
//弹窗
|
||||||
function confirmClick() {
|
function confirmClick() {
|
||||||
if (info.value.earlyMin === 0) {
|
|
||||||
info.value.earlyMin = '0'
|
if (((info.value.commonLower && info.value.commonUpper == '') || (info.value.commonUpper && info.value.commonLower == ''))) {
|
||||||
}
|
|
||||||
if (info.value.earlyMin == '' || info.value.earlyMax == '' || info.value.sameMin == '' || info.value.sameMax == '' || info.value.seriousMin == '' || info.value.seriousMax == ''
|
|
||||||
|| info.value.criticalMin == '' || info.value.criticalMax == '') {
|
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: "warning",
|
type: "warning",
|
||||||
message: "区间数值不能为空",
|
message: "一般阈值下限和上限不能有一方为空!",
|
||||||
});
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (((info.value.seriousLower && info.value.seriousUpper == '') || (info.value.seriousUpper && info.value.seriousLower == ''))) {
|
||||||
|
ElMessage({
|
||||||
|
type: "warning",
|
||||||
|
message: "严重阈值下限和上限不能有一方为空!",
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (((info.value.dangerLower && info.value.dangerUpper == '') || (info.value.dangerUpper && info.value.dangerLower == ''))) {
|
||||||
|
ElMessage({
|
||||||
|
type: "warning",
|
||||||
|
message: "危急阈值下限和上限不能有一方为空!",
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (info.value.commonLower) {
|
||||||
|
if (Number(info.value.commonLower) > Number(info.value.commonUpper)) {
|
||||||
|
ElMessage({
|
||||||
|
type: "warning",
|
||||||
|
message: "一般阈值下限不能大于上限!",
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (info.value.seriousLower) {
|
||||||
|
if (Number(info.value.seriousLower) > Number(info.value.seriousUpper)) {
|
||||||
|
ElMessage({
|
||||||
|
type: "warning",
|
||||||
|
message: "严重阈值下限不能大于上限!",
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (info.value.dangerLower) {
|
||||||
|
if (Number(info.value.dangerLower) > Number(info.value.dangerUpper)) {
|
||||||
|
ElMessage({
|
||||||
|
type: "warning",
|
||||||
|
message: "危急阈值下限不能大于上限!",
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (info.value.seriousLower && info.value.dangerLower) {
|
||||||
|
if (isRangeNotInOtherRange([Number(info.value.seriousLower), Number(info.value.seriousUpper)], [Number(info.value.dangerLower), Number(info.value.dangerUpper)]) == false) {
|
||||||
|
ElMessage({
|
||||||
|
type: "warning",
|
||||||
|
message: "阈值不能有交叉!",
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (info.value.commonLower && info.value.dangerLower) {
|
||||||
|
if (isRangeNotInOtherRange([Number(info.value.commonLower), Number(info.value.commonUpper)], [Number(info.value.dangerLower), Number(info.value.dangerUpper)]) == false) {
|
||||||
|
ElMessage({
|
||||||
|
type: "warning",
|
||||||
|
message: "阈值不能有交叉!",
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (info.value.commonLower && info.value.seriousLower) {
|
||||||
|
if (isRangeNotInOtherRange([Number(info.value.commonLower), Number(info.value.commonUpper)], [Number(info.value.seriousLower), Number(info.value.seriousUpper)]) == false) {
|
||||||
|
ElMessage({
|
||||||
|
type: "warning",
|
||||||
|
message: "阈值不能有交叉!",
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (isNaN(Number(info.value.earlyMin)) || isNaN(Number(info.value.earlyMax)) || isNaN(Number(info.value.sameMin)) ||
|
|
||||||
isNaN(Number(info.value.sameMax)) || isNaN(Number(info.value.seriousMin)) || isNaN(Number(info.value.seriousMax)) ||
|
|
||||||
isNaN(Number(info.value.criticalMin)) || isNaN(Number(info.value.criticalMax))) {
|
|
||||||
ElMessage({
|
|
||||||
type: "warning",
|
|
||||||
message: "只能输入数字和浮点数",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else if (Number(info.value.sameMin) < Number(info.value.earlyMax) || Number(info.value.seriousMin) < Number(info.value.sameMax) || Number(info.value.criticalMin) < Number(info.value.seriousMax)) {
|
|
||||||
ElMessage({
|
|
||||||
type: "warning",
|
|
||||||
message: "不得小于上一项的最大值",
|
|
||||||
});
|
|
||||||
} else if (Number(info.value.earlyMax) > Number(info.value.earlyMin) && Number(info.value.sameMax) > Number(info.value.sameMin) && Number(info.value.seriousMax) > Number(info.value.seriousMin) && Number(info.value.criticalMax) > Number(info.value.criticalMin)) {
|
|
||||||
const infoAll: any = ref({})
|
const infoAll: any = ref({})
|
||||||
|
const infoAllList: any = ref([])
|
||||||
infoAll.value = JSON.parse(JSON.stringify(info.value))
|
infoAll.value = JSON.parse(JSON.stringify(info.value))
|
||||||
infoAll.value.earlyMin = Number(infoAll.value.earlyMin).toFixed(2);
|
if (infoAll.value.commonLower) infoAll.value.commonLower = Number(infoAll.value.commonLower).toFixed(2);
|
||||||
infoAll.value.earlyMax = Number(infoAll.value.earlyMax).toFixed(2);
|
if (infoAll.value.commonUpper) infoAll.value.commonUpper = Number(infoAll.value.commonUpper).toFixed(2);
|
||||||
infoAll.value.sameMin = Number(infoAll.value.sameMin).toFixed(2);
|
if (infoAll.value.seriousLower) infoAll.value.seriousLower = Number(infoAll.value.seriousLower).toFixed(2);
|
||||||
infoAll.value.sameMax = Number(infoAll.value.sameMax).toFixed(2);
|
if (infoAll.value.seriousUpper) infoAll.value.seriousUpper = Number(infoAll.value.seriousUpper).toFixed(2);
|
||||||
infoAll.value.seriousMin = Number(infoAll.value.seriousMin).toFixed(2);
|
if (infoAll.value.dangerLower) infoAll.value.dangerLower = Number(infoAll.value.dangerLower).toFixed(2);
|
||||||
infoAll.value.seriousMax = Number(infoAll.value.seriousMax).toFixed(2);
|
if (infoAll.value.dangerUpper) infoAll.value.dangerUpper = Number(infoAll.value.dangerUpper).toFixed(2);
|
||||||
infoAll.value.criticalMin = Number(infoAll.value.criticalMin).toFixed(2);
|
|
||||||
infoAll.value.criticalMax = Number(infoAll.value.criticalMax).toFixed(2);
|
|
||||||
const deviceId: any = ref([])
|
|
||||||
deviceInfos.value.forEach((element: any) => {
|
deviceInfos.value.forEach((element: any) => {
|
||||||
deviceId.value.push(element.deviceId)
|
const infoAllOne:any = ref({})
|
||||||
|
infoAllOne.value = JSON.parse(JSON.stringify(infoAll.value))
|
||||||
|
infoAllOne.value['stationName'] = element.stationName
|
||||||
|
infoAllOne.value['deviceName'] = element.deviceName
|
||||||
|
infoAllOne.value['stationCode'] = element.stationCode
|
||||||
|
infoAllOne.value.deviceId = element.deviceId
|
||||||
|
infoAllOne.value.alarmThresholdId = element.stationId + element.deviceId + JSON.parse(element.pictureAnalysisTypeList).PictureDefectAnalysisType + infoAll.value.alarmType
|
||||||
|
if (JSON.parse(element.pictureAnalysisTypeList).PictureDefectAnalysisType) {
|
||||||
|
infoAllOne.value['defectType'] = JSON.parse(element.pictureAnalysisTypeList).PictureDefectAnalysisType
|
||||||
|
}
|
||||||
|
|
||||||
|
infoAllList.value.push(infoAllOne.value)
|
||||||
|
|
||||||
});
|
});
|
||||||
infoAll.value['deviceId'] = deviceId.value.toString()
|
const infoList: any = ref([])
|
||||||
updateAlarm(infoAll.value).then((res: any) => {
|
const newinfo: any = ref({
|
||||||
|
deviceId: '',
|
||||||
|
deviceName: '',
|
||||||
|
defectType: '',
|
||||||
|
stationCode: '',
|
||||||
|
stationName: '',
|
||||||
|
decideRule: '',
|
||||||
|
decisionValueClass: '',
|
||||||
|
alarmDesc: '',
|
||||||
|
alarmType: '',
|
||||||
|
baseValue: '',
|
||||||
|
alarmLevel: '',
|
||||||
|
alarmClass: '',
|
||||||
|
isenable: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
infoAllList.value.forEach((element: any) => {
|
||||||
|
newinfo.value.alarmClass = element.alarmClass
|
||||||
|
newinfo.value.isenable = element.isenable
|
||||||
|
newinfo.value.defectType = element.defectType
|
||||||
|
newinfo.value.stationCode = element.stationCode
|
||||||
|
newinfo.value.stationName = element.stationName
|
||||||
|
newinfo.value.alarmType = element.alarmType
|
||||||
|
newinfo.value.isLastContrast = element.isLastContrast
|
||||||
|
newinfo.value.baseValue = element.baseValue
|
||||||
|
if (element.alarmClass == 2) {
|
||||||
|
const inallList = JSON.parse(JSON.stringify(newinfo.value))
|
||||||
|
inallList.deviceId = element.deviceId
|
||||||
|
inallList.deviceName = element.deviceName
|
||||||
|
infoList.value.push(inallList)
|
||||||
|
} else {
|
||||||
|
if (element.commonLower) {
|
||||||
|
const inallList = JSON.parse(JSON.stringify(newinfo.value))
|
||||||
|
inallList.deviceId = element.deviceId
|
||||||
|
inallList.deviceName = element.deviceName
|
||||||
|
inallList.decideRule = '6'//判定规则
|
||||||
|
inallList.decisionValueClass = '1'
|
||||||
|
inallList.alarmDesc = ''//告警描述
|
||||||
|
inallList.baseLineValue = element.commonLower
|
||||||
|
inallList.alarmLevel = '2'
|
||||||
|
infoList.value.push(inallList)
|
||||||
|
}
|
||||||
|
if (element.commonUpper) {
|
||||||
|
const inallList = JSON.parse(JSON.stringify(newinfo.value))
|
||||||
|
inallList.deviceId = element.deviceId
|
||||||
|
inallList.deviceName = element.deviceName
|
||||||
|
inallList.decideRule = '7'//判定规则
|
||||||
|
inallList.decisionValueClass = '1'
|
||||||
|
inallList.alarmDesc = ''//告警描述
|
||||||
|
inallList.baseLineValue = element.commonUpper
|
||||||
|
inallList.alarmLevel = '2'
|
||||||
|
infoList.value.push(inallList)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (element.seriousLower) {
|
||||||
|
const inallList = JSON.parse(JSON.stringify(newinfo.value))
|
||||||
|
inallList.deviceId = element.deviceId
|
||||||
|
inallList.deviceName = element.deviceName
|
||||||
|
inallList.decideRule = '6'//判定规则
|
||||||
|
inallList.decisionValueClass = '1'
|
||||||
|
inallList.alarmDesc = ''//告警描述
|
||||||
|
inallList.baseLineValue = element.seriousLower
|
||||||
|
inallList.alarmLevel = '3'
|
||||||
|
infoList.value.push(inallList)
|
||||||
|
}
|
||||||
|
if (element.seriousUpper) {
|
||||||
|
const inallList = JSON.parse(JSON.stringify(newinfo.value))
|
||||||
|
inallList.deviceId = element.deviceId
|
||||||
|
inallList.deviceName = element.deviceName
|
||||||
|
inallList.decideRule = '7'//判定规则
|
||||||
|
inallList.decisionValueClass = '1'
|
||||||
|
inallList.alarmDesc = ''//告警描述
|
||||||
|
inallList.baseLineValue = element.seriousUpper
|
||||||
|
inallList.alarmLevel = '3'
|
||||||
|
infoList.value.push(inallList)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (element.dangerLower) {
|
||||||
|
const inallList = JSON.parse(JSON.stringify(newinfo.value))
|
||||||
|
inallList.deviceId = element.deviceId
|
||||||
|
inallList.deviceName = element.deviceName
|
||||||
|
inallList.decideRule = '6'//判定规则
|
||||||
|
inallList.decisionValueClass = '1'
|
||||||
|
inallList.alarmDesc = ''//告警描述
|
||||||
|
inallList.baseLineValue = element.dangerLower
|
||||||
|
inallList.alarmLevel = '4'
|
||||||
|
infoList.value.push(inallList)
|
||||||
|
}
|
||||||
|
if (element.dangerUpper) {
|
||||||
|
const inallList = JSON.parse(JSON.stringify(newinfo.value))
|
||||||
|
inallList.deviceId = element.deviceId
|
||||||
|
inallList.deviceName = element.deviceName
|
||||||
|
inallList.decideRule = '7'//判定规则
|
||||||
|
inallList.decisionValueClass = '1'
|
||||||
|
inallList.alarmDesc = ''//告警描述
|
||||||
|
inallList.baseLineValue = element.dangerUpper
|
||||||
|
inallList.alarmLevel = '4'
|
||||||
|
infoList.value.push(inallList)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
setAlgorithmModel(JSON.stringify(infoList.value)).then((res: any) => {
|
||||||
if (res.code != 1) {
|
if (res.code != 1) {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: "success",
|
type: "success",
|
||||||
@ -253,13 +442,16 @@ function confirmClick() {
|
|||||||
getData()
|
getData()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
|
||||||
ElMessage({
|
|
||||||
type: "warning",
|
|
||||||
message: "区间最大值不能小于等于最小值",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// 判断1-2不在3-9内
|
||||||
|
function isRangeNotInOtherRange([start1, end1]: any, [start2, end2]: any) {
|
||||||
|
// 解析两个范围
|
||||||
|
// 检查范围1是否完全在范围2之外
|
||||||
|
// 即,范围1的结束数字小于范围2的开始数字,或者范围1的开始数字大于范围2的结束数字
|
||||||
|
return end1 <= start2 || start1 >= end2;
|
||||||
|
}
|
||||||
|
// 判断1-2不在3-9和9-12内
|
||||||
//关闭弹窗
|
//关闭弹窗
|
||||||
function handleClose() {
|
function handleClose() {
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
@ -270,6 +462,7 @@ function handleClose() {
|
|||||||
//获取用户列表信息
|
//获取用户列表信息
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getData()
|
getData()
|
||||||
|
getType()
|
||||||
});
|
});
|
||||||
|
|
||||||
//表格多选样式
|
//表格多选样式
|
||||||
@ -288,19 +481,24 @@ const tableRowClassName = ({
|
|||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function currency(list: any, itemcode: any) {
|
||||||
|
let dictname = ''
|
||||||
|
list.forEach((element: any) => {
|
||||||
|
if (element.itemcode == itemcode) {
|
||||||
|
dictname = element.dictname
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return dictname
|
||||||
|
}
|
||||||
|
function radiochange(row: any) {
|
||||||
|
if(row == 1){
|
||||||
|
info.value.baseValue = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div style="height: 10px;padding:0px 15px;"></div>
|
|
||||||
<div class="faulttemplate-box">
|
<div class="faulttemplate-box">
|
||||||
<!-- 设置阈值弹窗 -->
|
|
||||||
<!-- <div class="custom2" v-if="dialogVisible == true">
|
|
||||||
<div class="custom2-back" v-drag>
|
|
||||||
<div class="custom2-close" @click="handleClose">x</div>
|
|
||||||
<div class="custom2-title">设置阈值</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
<section class="silderRight">
|
<section class="silderRight">
|
||||||
<div
|
<div
|
||||||
style="display: flex;display: -webkit-flex; justify-content: space-between; -webkit-justify-content: space-between; margin:15px 0px">
|
style="display: flex;display: -webkit-flex; justify-content: space-between; -webkit-justify-content: space-between; margin:15px 0px">
|
||||||
@ -315,14 +513,16 @@ const tableRowClassName = ({
|
|||||||
</el-select>
|
</el-select>
|
||||||
<el-select :disabled="params.stationId == ''" clearable v-model="params.areaId" placeholder="所属区域"
|
<el-select :disabled="params.stationId == ''" clearable v-model="params.areaId" placeholder="所属区域"
|
||||||
style="margin-right:5px ;width: 25%;" @visible-change="getStation" @change="getData()">
|
style="margin-right:5px ;width: 25%;" @visible-change="getStation" @change="getData()">
|
||||||
<el-option v-for="item in areaAll" :key="item.areaId" :label="item.areaName" :value="item.areaId" />
|
<el-option v-for="item in areaAll" :key="item.areaId" :label="item.areaName"
|
||||||
|
:value="item.areaId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select :disabled="params.areaId == ''" clearable v-model="params.bayId" placeholder="所属间隔"
|
<el-select :disabled="params.areaId == ''" clearable v-model="params.bayId" placeholder="所属间隔"
|
||||||
style="margin-right:5px ;width: 25%;" @visible-change="getStation" @change="getData()">
|
style="margin-right:5px ;width: 25%;" @visible-change="getStation" @change="getData()">
|
||||||
<el-option v-for="item in bayAll" :key="item.bayId" :label="item.bayName" :value="item.bayId" />
|
<el-option v-for="item in bayAll" :key="item.bayId" :label="item.bayName" :value="item.bayId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select :disabled="params.bayId == ''" clearable v-model="params.mainDeviceId" placeholder="所属主设备"
|
<el-select :disabled="params.bayId == ''" clearable v-model="params.mainDeviceId"
|
||||||
style="margin-right:5px ;width: 25%;" @visible-change="gatMain" @change="getData()">
|
placeholder="所属主设备" style="margin-right:5px ;width: 25%;" @visible-change="gatMain"
|
||||||
|
@change="getData()">
|
||||||
<el-option v-for="item in Masterdata" :key="item.mainDeviceId" :label="item.mainDeviceName"
|
<el-option v-for="item in Masterdata" :key="item.mainDeviceId" :label="item.mainDeviceName"
|
||||||
:value="item.mainDeviceId" />
|
:value="item.mainDeviceId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@ -342,204 +542,159 @@ const tableRowClassName = ({
|
|||||||
<el-option v-for="item in meterType" :key="item.itemcode" :label="item.dictname"
|
<el-option v-for="item in meterType" :key="item.itemcode" :label="item.dictname"
|
||||||
:value="item.itemcode" />
|
:value="item.itemcode" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button class="searchButton" type="primary" @click="getData()">搜索</el-button>
|
<el-button type="primary" @click="getData()">搜索</el-button>
|
||||||
<el-button class="searchButton" @click="resetting()">重置</el-button>
|
<el-button @click="resetting()">重置</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-button class="searchButton" @click="setClick" :disabled="deviceInfos.length == 0"
|
<el-button @click="setClick" :disabled="deviceInfos.length == 0" v-hasPerm="['update:alarminterval']"
|
||||||
:type="deviceInfos.length > 0 ? 'primary' : ''">
|
:type="deviceInfos.length > 0 ? 'primary' : ''">
|
||||||
|
<img v-show="deviceInfos.length != 0" src="@/assets/MenuIcon/yvzhi1.png"
|
||||||
|
style="margin-right:5px;" alt="">
|
||||||
|
<img v-show="deviceInfos.length == 0" src="@/assets/MenuIcon/yvzhi2.png"
|
||||||
|
style="margin-right:5px;" alt="">
|
||||||
设置阈值</el-button>
|
设置阈值</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="draggable">
|
<div class="draggable">
|
||||||
<el-table v-loading="loading" :data="tableData" style="width: 100%;height: calc(75vh);
|
|
||||||
overflow: auto;margin-bottom: 15px;" row-key="deviceId" @selection-change="handleSelectionChange"
|
|
||||||
default-expand-all :row-class-name="tableRowClassName"
|
|
||||||
|
|
||||||
|
<el-table v-loading="loading" :data="tableData" style="width: 100%;height: calc(100vh - 255px);
|
||||||
|
overflow: auto;margin-bottom: 15px;" row-key="deviceId" border
|
||||||
|
@selection-change="handleSelectionChange" default-expand-all :row-class-name="tableRowClassName"
|
||||||
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px'}">
|
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px'}">
|
||||||
<el-table-column type="selection" width="30" align="center" />
|
<el-table-column type="selection" width="50" align="center" />
|
||||||
<el-table-column type="index" label="序号" width="50px" align="center" />
|
<el-table-column type="index" label="序号" width="80px" align="center" />
|
||||||
<el-table-column label="巡视点位名称" prop="deviceName" width="140" show-overflow-tooltip></el-table-column>
|
<el-table-column label="巡视点位名称" prop="deviceName" width="140"
|
||||||
<el-table-column label="所属变电站" prop="stationName" width="140" show-overflow-tooltip></el-table-column>
|
show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column label="所属变电站" prop="stationName" width="140"
|
||||||
|
show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="所属区域" prop="areaName" width="100" show-overflow-tooltip></el-table-column>
|
<el-table-column label="所属区域" prop="areaName" width="100" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="所属间隔" prop="bayName" width="110" show-overflow-tooltip></el-table-column>
|
<el-table-column label="所属间隔" prop="bayName" width="110" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="所属主机设备" prop="mainDeviceName" width="140"
|
<el-table-column label="所属主机设备" prop="mainDeviceName" width="140"
|
||||||
show-overflow-tooltip></el-table-column>
|
show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="主设备类型" prop="mainDeviceType" width="120"
|
<el-table-column label="主设备类型" prop="deviceType" width="120" show-overflow-tooltip>
|
||||||
show-overflow-tooltip></el-table-column>
|
<template #default="scope">
|
||||||
|
<span>{{ currency(EquipmentType, scope.row.deviceType) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="所属部件" prop="componentName" show-overflow-tooltip></el-table-column>
|
<el-table-column label="所属部件" prop="componentName" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="表计类型" prop="meterType" show-overflow-tooltip></el-table-column>
|
<el-table-column label="表计类型" prop="meterType" show-overflow-tooltip>
|
||||||
<el-table-column label="识别类型" prop="recognitionTypeNameList" show-overflow-tooltip></el-table-column>
|
|
||||||
<el-table-column label="预警区间" width="110px">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.sameMin != undefined">{{ scope.row.earlyMin + '~' +
|
<span>{{ currency(meterType, scope.row.meterType) }}</span>
|
||||||
scope.row.earlyMax }}</span>
|
|
||||||
<span v-else>--</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="一般区间" width="110px">
|
|
||||||
<template #default="scope">
|
|
||||||
<span v-if="scope.row.sameMin != undefined">{{ scope.row.sameMin + '~' +
|
|
||||||
scope.row.sameMax }}</span>
|
|
||||||
<span v-else>--</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="严重区间" width="110px">
|
|
||||||
<template #default="scope">
|
|
||||||
<span v-if="scope.row.seriousMin != undefined">{{ scope.row.seriousMin + '~' +
|
|
||||||
scope.row.seriousMax }}</span>
|
|
||||||
<span v-else>--</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="危急区间" width="110px">
|
|
||||||
<template #default="scope">
|
|
||||||
<span v-if="scope.row.criticalMin != undefined">{{ scope.row.criticalMin + '~' +
|
|
||||||
scope.row.criticalMax }}</span>
|
|
||||||
<span v-else>--</span>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="识别类型" prop="recognitionTypeNameList"
|
||||||
|
show-overflow-tooltip></el-table-column>
|
||||||
|
|
||||||
<el-table-column label="单位" prop="unit" show-overflow-tooltip></el-table-column>
|
<el-table-column label="单位" prop="unit" show-overflow-tooltip></el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<Page :total="total" v-model:size="params.size" v-model:current="params.current" @pagination="getData()">
|
<Page :total="total" v-model:size="params.size" v-model:current="params.current"
|
||||||
|
@pagination="getData()">
|
||||||
</Page>
|
</Page>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<Eldialog v-if="dialogVisible" :title="'设置阈值'" :zIndex="2000" :width="'600px'" :height="'600px'"
|
<Eldialog v-if="dialogVisible" :title="'设置阈值'" class="AngleBox" :zIndex="2000" :width="'800px'"
|
||||||
@before-close="handleClose">
|
@before-close="handleClose">
|
||||||
<template v-slot:PopFrameContent>
|
<template v-slot:PopFrameContent>
|
||||||
<div class="inputDiv" style="margin-top:15px;">
|
<div style="height:400px;" v-if="info">
|
||||||
<span>预警区间</span>
|
<div>
|
||||||
<el-input class="input" v-model="info.earlyMin" placeholder="预警区间最小值" />
|
<span>规则类型:</span>
|
||||||
<span>~</span>
|
<el-radio-group v-model="info.alarmClass">
|
||||||
<el-input class="input" v-model="info.earlyMax" placeholder="预警区间最大值" />
|
<el-radio :value="'1'" :label="'1'">阈值类</el-radio>
|
||||||
<span>{{ info.unit }}</span>
|
<el-radio :value="'2'" :label="'2'">状态类</el-radio>
|
||||||
|
<el-radio :value="'3'" :label="'3'">趋势类</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div style="margin-top: 10px;">
|
||||||
|
<span>告警类型:</span>
|
||||||
|
<el-select clearable v-model="info.alarmType" placeholder="请选择"
|
||||||
|
style="margin-right:5px ;width:335px;">
|
||||||
|
<el-option v-for="item in alarmTypeList" :key="item.itemcode" :label="item.dictname"
|
||||||
|
:value="item.itemcode" />
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
<div v-if="info.alarmClass == 2 || info.alarmClass == 3">
|
||||||
|
<span>上次点位比较:</span>
|
||||||
|
<el-radio-group v-model="info.isLastContrast" @change="radiochange">
|
||||||
|
<el-radio value="1" :label="'1'" size="large">是</el-radio>
|
||||||
|
<el-radio value="0" :label="'0'" size="large">否</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top: 10px;" v-if="info.alarmClass == 2 || info.alarmClass == 3">
|
||||||
|
<span v-if="info.alarmClass == 3">基准值A0:</span>
|
||||||
|
<span v-if="info.alarmClass == 2">基准值:</span>
|
||||||
|
<el-input v-model="info.baseValue" clearable placeholder="请输入基准值A0"
|
||||||
|
:disabled="info.isLastContrast == '1'" style="margin-right:5px ;width: 335px;" />
|
||||||
|
<span style="color: red;" v-if="info.alarmClass == 3">偏差率 = (A1-A0)/A0*100%</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="info.alarmClass == 1 || info.alarmClass == 3" style="margin-top: 10px;">
|
||||||
|
<span>阈值范围:</span>
|
||||||
<div class="inputDiv">
|
<div class="inputDiv">
|
||||||
<span>一般区间</span>
|
<span>一般区间</span>
|
||||||
<el-input class="input" v-model="info.sameMin" placeholder="一般区间最小值" />
|
<el-input class="input" v-model="info.commonLower" placeholder="一般区间最小值" />
|
||||||
<span>~</span> <el-input class="input" v-model="info.sameMax" placeholder="一般区间最大值" />
|
<span>~</span> <el-input class="input" v-model="info.commonUpper" placeholder="一般区间最大值" />
|
||||||
<span>{{ info.unit }}</span>
|
<span>{{ info.unit }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="inputDiv">
|
<div class="inputDiv">
|
||||||
<span>严重区间</span>
|
<span>严重区间</span>
|
||||||
<el-input class="input" v-model="info.seriousMin" placeholder="严重区间最小值" />
|
<el-input class="input" v-model="info.seriousLower" placeholder="严重区间最小值" />
|
||||||
<span>~</span>
|
<span>~</span>
|
||||||
<el-input class="input" v-model="info.seriousMax" placeholder="严重区间最大值" />
|
<el-input class="input" v-model="info.seriousUpper" placeholder="严重区间最大值" />
|
||||||
<span>{{ info.unit }}</span>
|
<span>{{ info.unit }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="inputDiv">
|
<div class="inputDiv">
|
||||||
<span>危急区间</span>
|
<span>危急区间</span>
|
||||||
<el-input class="input" v-model="info.criticalMin" placeholder="危急区间最小值" />
|
<el-input class="input" v-model="info.dangerLower" placeholder="危急区间最小值" />
|
||||||
<span>~</span>
|
<span>~</span>
|
||||||
<el-input class="input" v-model="info.criticalMax" placeholder="危急区间最大值" />
|
<el-input class="input" v-model="info.dangerUpper" placeholder="危急区间最大值" />
|
||||||
<span>{{ info.unit }}</span>
|
<span>{{ info.unit }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>是否启用:</span>
|
||||||
|
<el-radio-group v-model="info.isenable">
|
||||||
|
<el-radio value="1" :label="'1'" size="large">启用</el-radio>
|
||||||
|
<el-radio value="0" :label="'0'" size="large">禁用</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<span class="dialog-footer"
|
<span class="dialog-footer"
|
||||||
style="width: 100%;margin: auto; display: flex;display: -webkit-flex; justify-content: center;-webkit-justify-content: center;margin: 10px 0px;">
|
style="width: 100%;margin: auto; display: flex;display: -webkit-flex; justify-content: flex-end;-webkit-justify-content: flex-end;margin-top: 20px;">
|
||||||
<!-- <el-button @click="handleClose">取 消</el-button>
|
<el-button @click="handleClose">取 消</el-button>
|
||||||
<el-button type="primary" @click="confirmClick">保存</el-button> -->
|
<el-button type="primary" @click="confirmClick">保存</el-button>
|
||||||
<div class="details-button" @click="handleClose">取消</div>
|
|
||||||
<div class="details-button" @click="confirmClick">确定</div>
|
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</Eldialog>
|
</Eldialog>
|
||||||
<!-- <el-dialog v-model="dialogVisible" :close-on-click-modal="false" :before-close="handleClose" title="设置阈值"
|
|
||||||
append-to-body width="600px" draggable>
|
|
||||||
|
|
||||||
</el-dialog> -->
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.custom2 {
|
|
||||||
color: #fff;
|
|
||||||
|
|
||||||
.custom2-back {
|
|
||||||
width: 600px;
|
|
||||||
max-height: 360px;
|
|
||||||
background: url(@/assets/newimg/jcpz_xz.png);
|
|
||||||
background-size: 100% 100%;
|
|
||||||
position: absolute;
|
|
||||||
z-index: 2023;
|
|
||||||
top: 0px;
|
|
||||||
left: 0px;
|
|
||||||
bottom: 0px;
|
|
||||||
right: 0px;
|
|
||||||
margin: auto;
|
|
||||||
padding: 70px 20px 0px 0px;
|
|
||||||
|
|
||||||
.custom2-title {
|
|
||||||
position: absolute;
|
|
||||||
color: #fff;
|
|
||||||
top: 3px;
|
|
||||||
left: 265px;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom2-close {
|
|
||||||
position: absolute;
|
|
||||||
color: #fff;
|
|
||||||
top: 30px;
|
|
||||||
right: 20px;
|
|
||||||
font-size: 18px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.faulttemplate-box {
|
|
||||||
padding: 5px 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.silderRight {
|
.silderRight {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100vh - 160px);
|
height: calc(100vh - 135px);
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
background-color: #17212e;
|
background-color: rgba(255, 255, 255, 1);
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
padding: 0px 15px 15px 15px;
|
padding: 0px 15px 15px 15px;
|
||||||
padding-bottom: 0px;
|
padding-bottom: 0px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
background: url(@/assets/newimg/cjrw_1890.png);
|
|
||||||
background-size: 100% 100%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.inputDiv {
|
.inputDiv {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
margin-left: 40px;
|
||||||
|
|
||||||
.input {
|
.input {
|
||||||
width: 35%;
|
width: 35%;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-table:not(.el-table--border) .el-table__cell) {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
// :deep(.el-tree-node.is-current > .el-tree-node__content) {
|
|
||||||
// background:none !important;
|
|
||||||
// background-image: url(@/assets/images/u324.png) !important;
|
|
||||||
// background-size: 100% 100%;
|
|
||||||
// color: #009bff !important;
|
|
||||||
// background-repeat: no-repeat !important;
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
: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;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@ import Measurement_2 from '@/components/Measurement_2/index.vue'
|
|||||||
import { useUserStore } from '@/store/modules/user';
|
import { useUserStore } from '@/store/modules/user';
|
||||||
import { downloadFile } from '@/utils/index';
|
import { downloadFile } from '@/utils/index';
|
||||||
import Eldialog from '@/components/seccmsdialog/eldialog.vue';
|
import Eldialog from '@/components/seccmsdialog/eldialog.vue';
|
||||||
|
import { getdata } from "@/api/voiceprint";
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const url = userStore.webApiBaseUrl;
|
const url = userStore.webApiBaseUrl;
|
||||||
//左侧树形控件
|
//左侧树形控件
|
||||||
@ -268,7 +269,7 @@ function delClick() {
|
|||||||
}
|
}
|
||||||
//表格多选
|
//表格多选
|
||||||
const deviceInfos: any = ref([])
|
const deviceInfos: any = ref([])
|
||||||
function handleSelectionChange(val: any) {
|
function handleSelectionChange1(val: any) {
|
||||||
deviceInfos.value = val
|
deviceInfos.value = val
|
||||||
}
|
}
|
||||||
const tableRowClassName = ({
|
const tableRowClassName = ({
|
||||||
@ -456,6 +457,7 @@ function addClick() {
|
|||||||
isAlarm: '0',
|
isAlarm: '0',
|
||||||
deviceInfo: '',
|
deviceInfo: '',
|
||||||
identifyMaterialId: '0',
|
identifyMaterialId: '0',
|
||||||
|
labelAttri: '0',
|
||||||
lowerValue: '',
|
lowerValue: '',
|
||||||
upperValue: '',
|
upperValue: '',
|
||||||
phase: '',
|
phase: '',
|
||||||
@ -474,9 +476,10 @@ function addClick() {
|
|||||||
pictureAnalysisTypeList: '',
|
pictureAnalysisTypeList: '',
|
||||||
PictureAnalysisType: '',
|
PictureAnalysisType: '',
|
||||||
PictureDefectAnalysisType: '',
|
PictureDefectAnalysisType: '',
|
||||||
|
voiceAnalysisTypeList: [],
|
||||||
PictureDiscriminateAnalysisType: '',
|
PictureDiscriminateAnalysisType: '',
|
||||||
outsideFeature: '',
|
outsideFeature: '',
|
||||||
deviceClass: '',
|
pointType: '',
|
||||||
patroldeviceJson: {
|
patroldeviceJson: {
|
||||||
device_name: '',
|
device_name: '',
|
||||||
device_code: '',
|
device_code: '',
|
||||||
@ -496,10 +499,16 @@ function addClick() {
|
|||||||
alertvalue: '',
|
alertvalue: '',
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
vicode.value = [{
|
||||||
|
patroldevice_name: '',
|
||||||
|
patroldevice_code: '',
|
||||||
|
}]
|
||||||
|
duration.value = ''
|
||||||
|
|
||||||
imgUrl.value = ''
|
imgUrl.value = ''
|
||||||
deviceIdText.value = ''
|
deviceIdText.value = ''
|
||||||
device.value = ''
|
device.value = ''
|
||||||
|
arrdata.value.length = 0
|
||||||
title.value = "新增巡视点位";
|
title.value = "新增巡视点位";
|
||||||
dialogVisible.value = true;
|
dialogVisible.value = true;
|
||||||
beforehandPosition.value = 1
|
beforehandPosition.value = 1
|
||||||
@ -651,12 +660,13 @@ function mainChange(row: any) {
|
|||||||
const deviceIdText = ref()
|
const deviceIdText = ref()
|
||||||
const miannDeviceId = ref()
|
const miannDeviceId = ref()
|
||||||
function handleEdit(row: any) {
|
function handleEdit(row: any) {
|
||||||
|
duration.value = row.duration
|
||||||
threshold.value = ''
|
threshold.value = ''
|
||||||
beforName.value = ''
|
beforName.value = ''
|
||||||
tabs.value = 1
|
tabs.value = 1
|
||||||
miannDeviceId.value = row.mainDeviceId
|
miannDeviceId.value = row.mainDeviceId
|
||||||
deviceIdText.value = row.deviceId
|
deviceIdText.value = row.deviceId
|
||||||
|
arrdata.value.length = 0
|
||||||
device.value = ''
|
device.value = ''
|
||||||
title.value = "修改巡视点位";
|
title.value = "修改巡视点位";
|
||||||
dialogVisible.value = true;
|
dialogVisible.value = true;
|
||||||
@ -672,6 +682,30 @@ function handleEdit(row: any) {
|
|||||||
effective_region: ''
|
effective_region: ''
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
vicode.value = [{
|
||||||
|
patroldevice_name: '',
|
||||||
|
patroldevice_code: '',
|
||||||
|
}]
|
||||||
|
if (row.recognitionTypeList == "5") {
|
||||||
|
if (row.patroldeviceJson) {
|
||||||
|
if (typeof row.patroldeviceJson != 'object') {
|
||||||
|
row.patroldeviceJson = JSON.parse(row.patroldeviceJson)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (row.patroldeviceJson[0].patroldevice_name && row.patroldeviceJson[0].patroldevice_code) {
|
||||||
|
vicode.value = row.patroldeviceJson
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
vicode.value = [{
|
||||||
|
patroldevice_name: '',
|
||||||
|
patroldevice_code: '',
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (row.patroldeviceJson) {
|
if (row.patroldeviceJson) {
|
||||||
if (typeof row.patroldeviceJson != 'object') {
|
if (typeof row.patroldeviceJson != 'object') {
|
||||||
row.patroldeviceJson = JSON.parse(row.patroldeviceJson)
|
row.patroldeviceJson = JSON.parse(row.patroldeviceJson)
|
||||||
@ -692,30 +726,26 @@ function handleEdit(row: any) {
|
|||||||
]
|
]
|
||||||
} else {
|
} else {
|
||||||
index.value = row.patroldeviceJson
|
index.value = row.patroldeviceJson
|
||||||
|
|
||||||
// channelId.value
|
|
||||||
getCamera()
|
getCamera()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const infoall = JSON.parse(JSON.stringify(row))
|
const infoall = JSON.parse(JSON.stringify(row))
|
||||||
if (infoall.outsideAngle) {
|
if (infoall.outsideAngle) {
|
||||||
|
// debugger
|
||||||
if (infoall.recognitionTypeList == "4") {
|
if (infoall.recognitionTypeList == "4") {
|
||||||
droPoint.value = JSON.parse(infoall.outsideAngle)
|
droPoint.value = JSON.parse(infoall.outsideAngle)
|
||||||
|
} else if (infoall.recognitionTypeList == "5") {
|
||||||
|
infoall.decibel = JSON.parse(infoall.outsideAngle).decibel
|
||||||
|
infoall.frequency = JSON.parse(infoall.outsideAngle).frequency
|
||||||
} else {
|
} else {
|
||||||
arrdata.value = JSON.parse(infoall.outsideAngle)
|
arrdata.value = JSON.parse(infoall.outsideAngle)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (infoall.videoPos) {
|
|
||||||
infoall.videoPos = JSON.parse(infoall.videoPos)
|
|
||||||
infoall.device_code = infoall.videoPos.device_code
|
|
||||||
infoall.device_pos = infoall.videoPos.device_pos
|
|
||||||
infoall.robot_code = infoall.videoPos.robot_code
|
|
||||||
infoall.robot_pos = infoall.videoPos.robot_pos
|
|
||||||
infoall.uav_code = infoall.videoPos.uav_code
|
|
||||||
}
|
|
||||||
if (infoall.pictureAnalysisTypeList) {
|
if (infoall.pictureAnalysisTypeList) {
|
||||||
infoall.pictureAnalysisTypeList = JSON.parse(infoall.pictureAnalysisTypeList)
|
infoall.pictureAnalysisTypeList = JSON.parse(infoall.pictureAnalysisTypeList)
|
||||||
infoall.PictureAnalysisType = infoall.pictureAnalysisTypeList.PictureAnalysisType
|
infoall.PictureAnalysisType = infoall.pictureAnalysisTypeList.PictureAnalysisType
|
||||||
@ -727,16 +757,20 @@ function handleEdit(row: any) {
|
|||||||
if (infoall.PictureDefectAnalysisType == undefined || infoall.PictureDefectAnalysisType[0] == '') {
|
if (infoall.PictureDefectAnalysisType == undefined || infoall.PictureDefectAnalysisType[0] == '') {
|
||||||
infoall.PictureDefectAnalysisType = []
|
infoall.PictureDefectAnalysisType = []
|
||||||
}
|
}
|
||||||
|
if (infoall.voiceAnalysisTypeList) {
|
||||||
|
infoall.voiceAnalysisTypeList = infoall.voiceAnalysisTypeList.split(",")
|
||||||
|
}
|
||||||
|
|
||||||
info.value = infoall
|
info.value = infoall
|
||||||
|
|
||||||
// info.value.componentId = infoall.componentName
|
|
||||||
|
|
||||||
// beforehandPosition.value = info.value.device_pos
|
|
||||||
notification()
|
notification()
|
||||||
|
|
||||||
}
|
}
|
||||||
//新增弹窗-基本信息-确定
|
//新增弹窗-基本信息-确定
|
||||||
function confirmClick(formEl: any) {
|
function confirmClick(formEl: any) {
|
||||||
|
if (info.value.PictureAnalysisType == undefined && info.value.PictureDefectAnalysisType.length == 0 && info.value.PictureDiscriminateAnalysisType == undefined) {
|
||||||
|
ElMessage.error('请在状态分析类型, 缺陷分析类型,判别分析类型中最少选择一项')
|
||||||
|
return
|
||||||
|
}
|
||||||
tabs.value = 1
|
tabs.value = 1
|
||||||
formEl.validate((valid: any) => {
|
formEl.validate((valid: any) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
@ -749,13 +783,7 @@ function confirmClick(formEl: any) {
|
|||||||
newObjOne.appearanceType = newObjOne.appearanceType.toString()
|
newObjOne.appearanceType = newObjOne.appearanceType.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
let newObjThree = {
|
|
||||||
device_code: info.value.device_code,
|
|
||||||
device_pos: info.value.device_pos,
|
|
||||||
robot_code: info.value.robot_code,
|
|
||||||
robot_pos: info.value.robot_pos,
|
|
||||||
uav_code: info.value.uav_code,
|
|
||||||
}
|
|
||||||
let newObjFour: any = {
|
let newObjFour: any = {
|
||||||
PictureAnalysisType: info.value.PictureAnalysisType,
|
PictureAnalysisType: info.value.PictureAnalysisType,
|
||||||
PictureDefectAnalysisType: info.value.PictureDefectAnalysisType.toString(),
|
PictureDefectAnalysisType: info.value.PictureDefectAnalysisType.toString(),
|
||||||
@ -770,22 +798,41 @@ function confirmClick(formEl: any) {
|
|||||||
newObjOne.PictureDefectAnalysisType = newObjOne.PictureDefectAnalysisType.toString()
|
newObjOne.PictureDefectAnalysisType = newObjOne.PictureDefectAnalysisType.toString()
|
||||||
if (info.value.recognitionTypeList == "4") {
|
if (info.value.recognitionTypeList == "4") {
|
||||||
newObjOne.outsideAngle = JSON.stringify(droPoint.value)
|
newObjOne.outsideAngle = JSON.stringify(droPoint.value)
|
||||||
|
} else if (info.value.recognitionTypeList == "5") {
|
||||||
|
let pinyv = {
|
||||||
|
decibel: info.value.decibel,//分贝
|
||||||
|
frequency: info.value.frequency,//频率
|
||||||
|
}
|
||||||
|
newObjOne.outsideAngle = JSON.stringify(pinyv)
|
||||||
} else {
|
} else {
|
||||||
newObjOne.outsideAngle = JSON.stringify(arrdata.value)
|
newObjOne.outsideAngle = JSON.stringify(arrdata.value)
|
||||||
}
|
}
|
||||||
if (newObjThree.device_code != undefined) {
|
if (index.value.length > 0) {
|
||||||
newObjOne.videoPos = JSON.stringify(newObjThree)
|
const videoposlist: any = []
|
||||||
} else {
|
index.value.forEach((res: any) => {
|
||||||
newObjOne.videoPos = null
|
videoposlist.push({ device_code: res.patroldevice_code, device_pos: res.patroldevice_pos })
|
||||||
|
})
|
||||||
|
newObjOne.videoPos = JSON.stringify(videoposlist)
|
||||||
|
}
|
||||||
|
newObjOne.pictureAnalysisTypeList = JSON.stringify(tempObjFour)
|
||||||
|
newObjOne.duration = duration.value
|
||||||
|
if (newObjOne.voiceAnalysisTypeList) {
|
||||||
|
newObjOne.voiceAnalysisTypeList = newObjOne.voiceAnalysisTypeList.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
newObjOne.pictureAnalysisTypeList = JSON.stringify(tempObjFour)
|
if (info.value.recognitionTypeList == 5) {
|
||||||
|
if (typeof index.value == 'object') {
|
||||||
|
newObjOne.patroldeviceJson = JSON.stringify(vicode.value)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (index.value.length > 0) {
|
if (index.value.length > 0) {
|
||||||
if (typeof index.value == 'object') {
|
if (typeof index.value == 'object') {
|
||||||
newObjOne.patroldeviceJson = JSON.stringify(index.value)
|
newObjOne.patroldeviceJson = JSON.stringify(index.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (info.value.deviceId) {
|
if (info.value.deviceId) {
|
||||||
editPosition(newObjOne).then((res: any) => {
|
editPosition(newObjOne).then((res: any) => {
|
||||||
@ -816,6 +863,7 @@ function confirmClick(formEl: any) {
|
|||||||
const allCamera = ref([])
|
const allCamera = ref([])
|
||||||
//获取摄像头数据
|
//获取摄像头数据
|
||||||
const patroldeviceName = ref()
|
const patroldeviceName = ref()
|
||||||
|
const manufacturerList: any = ref([])
|
||||||
//获取用户列表信息
|
//获取用户列表信息
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getSelect();
|
getSelect();
|
||||||
@ -823,6 +871,11 @@ onMounted(() => {
|
|||||||
getDeviceByType({ dictcode: 'DeviceClass' }).then((res: any) => {
|
getDeviceByType({ dictcode: 'DeviceClass' }).then((res: any) => {
|
||||||
DeviceClass.value = res.data
|
DeviceClass.value = res.data
|
||||||
})
|
})
|
||||||
|
getDeviceByType({ dictcode: 'ManuFacturer' }).then((res: any) => {
|
||||||
|
if (res.data != undefined) {
|
||||||
|
manufacturerList.value = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
});
|
});
|
||||||
// function checkSelectable(row: any) {
|
// function checkSelectable(row: any) {
|
||||||
// return row.datastatus == 0
|
// return row.datastatus == 0
|
||||||
@ -1291,10 +1344,64 @@ const vMove = {
|
|||||||
}
|
}
|
||||||
const activeName = ref('first')
|
const activeName = ref('first')
|
||||||
const handleClick1 = (tab: TabsPaneContext, event: Event) => {
|
const handleClick1 = (tab: TabsPaneContext, event: Event) => {
|
||||||
|
console.log(tab.props.name, event);
|
||||||
|
if(tab.props.name == 'three'){
|
||||||
|
getData1()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const isGaoliang: any = ref("")
|
const isGaoliang: any = ref("")
|
||||||
|
// 声纹数据获取
|
||||||
|
const duration: any = ref('')
|
||||||
|
const paramstable1: any = ref({
|
||||||
|
size: 10,
|
||||||
|
current: 1,
|
||||||
|
stationId: '',
|
||||||
|
type: 14,
|
||||||
|
patrolDeviceName: '',
|
||||||
|
deviceModel: '',
|
||||||
|
manufacturer: '',
|
||||||
|
})
|
||||||
|
const vicode = ref([{
|
||||||
|
patroldevice_name: '',
|
||||||
|
patroldevice_code: '',
|
||||||
|
}])
|
||||||
|
const total1 = ref()
|
||||||
|
const tableData1: any = ref()
|
||||||
|
function getData1() {
|
||||||
|
loading.value = true
|
||||||
|
paramstable1.value.stationId = value.value
|
||||||
|
getdata(JSON.stringify(paramstable1.value)).then((res: any) => {
|
||||||
|
loading.value = false
|
||||||
|
tableData1.value = res.data.records
|
||||||
|
total1.value = res.data.total
|
||||||
|
paramstable1.value.size = res.data.size
|
||||||
|
paramstable1.value.current = res.data.current
|
||||||
|
loading.value = false
|
||||||
|
tableData1.value.forEach((item: any) => {
|
||||||
|
|
||||||
|
if (item.patroldeviceCode == vicode.value[0].patroldevice_code) {
|
||||||
|
setTimeout(() => {
|
||||||
|
multipleTableRef.value!.toggleRowSelection(item, undefined)
|
||||||
|
}, 1000); // 延迟1秒
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const multipleTableRef = ref()
|
||||||
|
function handleSelectionChange(val: any) {
|
||||||
|
if (val.length > 1) {
|
||||||
|
val.pop()
|
||||||
|
multipleTableRef.value!.toggleRowSelection(val[0], undefined)
|
||||||
|
}
|
||||||
|
if (val[0]) {
|
||||||
|
vicode.value[0].patroldevice_name = val[0].patroldeviceName
|
||||||
|
vicode.value[0].patroldevice_code = val[0].patroldeviceCode
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@ -1316,8 +1423,8 @@ const isGaoliang: any = ref("")
|
|||||||
placeholder="请输入巡视点位名称"></el-input>
|
placeholder="请输入巡视点位名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="点位分类" style="width:50%" prop="deviceClass">
|
<el-form-item label="点位分类" style="width:50%" prop="deviceClass">
|
||||||
<el-select v-model="info.deviceClass" placeholder="请选择" style="width: 90%;margin-left: 8px;"
|
<el-select v-model="info.deviceClass" placeholder="请选择"
|
||||||
@visible-change="notification">
|
style="width: 90%;margin-left: 8px;" @visible-change="notification">
|
||||||
<el-option v-for="item in DeviceClass" :key="item.id" :label="item.dictname"
|
<el-option v-for="item in DeviceClass" :key="item.id" :label="item.dictname"
|
||||||
:value="item.itemcode" />
|
:value="item.itemcode" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@ -1334,8 +1441,9 @@ const isGaoliang: any = ref("")
|
|||||||
placeholder="请输入主设备类型"></el-input>
|
placeholder="请输入主设备类型"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="所属部件" style="width:50%" prop="componentId">
|
<el-form-item label="所属部件" style="width:50%" prop="componentId">
|
||||||
<el-select :disabled="info.mainDeviceId == ''" v-model="info.componentId" placeholder="请选择"
|
<el-select :disabled="info.mainDeviceId == ''" v-model="info.componentId"
|
||||||
style="width: 90%;margin-left: 8px;" @visible-change="notification">
|
placeholder="请选择" style="width: 90%;margin-left: 8px;"
|
||||||
|
@visible-change="notification">
|
||||||
<el-option v-for="item in getacaType" :key="item.componentId"
|
<el-option v-for="item in getacaType" :key="item.componentId"
|
||||||
:label="item.componentName" :value="item.componentId" />
|
:label="item.componentName" :value="item.componentId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@ -1348,8 +1456,8 @@ const isGaoliang: any = ref("")
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="数据来源" style="width:50%">
|
<el-form-item label="数据来源" style="width:50%">
|
||||||
<el-select v-model="info.dataType" placeholder="请选择" style="width: 90%;margin-left: 8px;"
|
<el-select v-model="info.dataType" placeholder="请选择"
|
||||||
clearable>
|
style="width: 90%;margin-left: 8px;" clearable>
|
||||||
<el-option v-for="item in dataType" :key="item.id" :label="item.dictname"
|
<el-option v-for="item in dataType" :key="item.id" :label="item.dictname"
|
||||||
:value="item.itemcode" />
|
:value="item.itemcode" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@ -1419,16 +1527,21 @@ const isGaoliang: any = ref("")
|
|||||||
<el-input v-model="info.upperValue" style="width: 90%;;margin-left: 8px;"
|
<el-input v-model="info.upperValue" style="width: 90%;;margin-left: 8px;"
|
||||||
placeholder="请输入正常范围上限"></el-input>
|
placeholder="请输入正常范围上限"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item v-if="info.recognitionTypeList == 5" label="频域范围" prop="frequency"
|
||||||
|
style="width:50%">
|
||||||
|
<el-input v-model="info.frequency" style="width: 90%;margin-left: 8px;"
|
||||||
|
placeholder="例如:20@20000"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="info.recognitionTypeList == 5" label="分贝区间" prop="decibel"
|
||||||
|
style="width:50%">
|
||||||
|
<el-input v-model="info.decibel" style="width: 90%;;margin-left: 8px;"
|
||||||
|
placeholder="例如:40@70"></el-input>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="计量单位" style="width:50%" prop="unit">
|
<el-form-item label="计量单位" style="width:50%" prop="unit">
|
||||||
<el-input v-model="info.unit" style="width: 90%;;margin-left: 8px;"
|
<el-input v-model="info.unit" style="width: 90%;;margin-left: 8px;"
|
||||||
placeholder=""></el-input>
|
placeholder=""></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="相位" style="width:50%;">
|
|
||||||
<el-select v-model="info.phase" style="width:90%;margin-left: 7px" clearable>
|
|
||||||
<el-option v-for="item in DevicePhase" :key="item.id" :label="item.dictname"
|
|
||||||
:value="item.itemcode" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="是否告警" style="width:50%">
|
<el-form-item label="是否告警" style="width:50%">
|
||||||
<el-radio-group v-model="info.isAlarm" style="margin-left: 10px;">
|
<el-radio-group v-model="info.isAlarm" style="margin-left: 10px;">
|
||||||
<el-radio :label="'1'">是</el-radio>
|
<el-radio :label="'1'">是</el-radio>
|
||||||
@ -1441,10 +1554,17 @@ const isGaoliang: any = ref("")
|
|||||||
<el-radio :label="'0'">否</el-radio>
|
<el-radio :label="'0'">否</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="人工关注" style="width:50%">
|
||||||
|
<el-radio-group v-model="info.labelAttri" style="margin-left: 10px;">
|
||||||
|
<el-radio :label="'1'">是</el-radio>
|
||||||
|
<el-radio :label="'0'">否</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="备注信息" prop="deviceInfo"
|
<el-form-item label="备注信息" prop="deviceInfo"
|
||||||
style="width:100%;margin-left: 8px;display:flex;align-items:flex-start !important;">
|
style="width:100%;margin-left: 8px;display:flex;align-items:flex-start !important;">
|
||||||
<el-input type="textarea" v-model="info.deviceInfo" :autosize="{ minRows: 2, maxRows: 8 }"
|
<el-input type="textarea" v-model="info.deviceInfo"
|
||||||
style="width: 96% ;" placeholder="请输入备注信息"></el-input>
|
:autosize="{ minRows: 2, maxRows: 8 }" style="width: 96% ;"
|
||||||
|
placeholder="请输入备注信息"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div style="width:90%;display:flex;">
|
<div style="width:90%;display:flex;">
|
||||||
|
|
||||||
@ -1460,7 +1580,8 @@ const isGaoliang: any = ref("")
|
|||||||
<div class="details-button" @click="confirmClick(infoForm)">确定</div>
|
<div class="details-button" @click="confirmClick(infoForm)">确定</div>
|
||||||
</span>
|
</span>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="摄像机设置" name="second">
|
|
||||||
|
<el-tab-pane label="摄像机设置" name="second" v-if="info.recognitionTypeList != 5">
|
||||||
<el-scrollbar height="645px">
|
<el-scrollbar height="645px">
|
||||||
<div style="display: flex;align-items: center;margin-top: 20px;">
|
<div style="display: flex;align-items: center;margin-top: 20px;">
|
||||||
<div style="width: 5px;height: 15px;background: #409eff;"></div>
|
<div style="width: 5px;height: 15px;background: #409eff;"></div>
|
||||||
@ -1499,7 +1620,8 @@ const isGaoliang: any = ref("")
|
|||||||
</div>
|
</div>
|
||||||
<div style="margin-top:10px;">
|
<div style="margin-top:10px;">
|
||||||
|
|
||||||
<el-table :data="arrdata" style="width: 100%;margin-top:10px;height: 418px; overflow: auto;"
|
<el-table :data="arrdata"
|
||||||
|
style="width: 100%;margin-top:10px;height: 418px; overflow: auto;"
|
||||||
v-if="info.recognitionTypeList == 1"
|
v-if="info.recognitionTypeList == 1"
|
||||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }">
|
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }">
|
||||||
<el-table-column prop="index" label="序号" width="100" align="center" />
|
<el-table-column prop="index" label="序号" width="100" align="center" />
|
||||||
@ -1535,6 +1657,48 @@ const isGaoliang: any = ref("")
|
|||||||
</div>
|
</div>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="声纹设置" name="three" v-if="info.recognitionTypeList == 5">
|
||||||
|
<div style="display:flex;align-items:center;"><span>录制时长:</span> <el-input v-model="duration"
|
||||||
|
placeholder=" " clearable style="width:250px;margin-left:15px;">
|
||||||
|
<template #append>秒</template>
|
||||||
|
</el-input></div>
|
||||||
|
<el-table v-loading="loading" :data="tableData1" style="width: 100%;height: calc(40vh);margin-top:15px;
|
||||||
|
overflow: auto;;margin-bottom: 15px;" row-key="id" border
|
||||||
|
@selection-change="handleSelectionChange" default-expand-all
|
||||||
|
:row-class-name="tableRowClassName" ref="multipleTableRef"
|
||||||
|
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
||||||
|
<el-table-column type="selection" width="50" align="center" />
|
||||||
|
<el-table-column type="index" label="序号" width="70px" align="center" />
|
||||||
|
<el-table-column label="设备编码" prop="patroldeviceCode"></el-table-column>
|
||||||
|
<el-table-column label="设备名称" prop="patroldeviceName"></el-table-column>
|
||||||
|
<el-table-column label="设备型号" prop="deviceModel" width="100"></el-table-column>
|
||||||
|
<el-table-column label="设备来源" prop="deviceSource" width="110"></el-table-column>
|
||||||
|
<el-table-column label="生产厂家" prop="manufacturer" width="110">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ currency(manufacturerList, scope.row.manufacturer) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="安装位置" prop="place"></el-table-column>
|
||||||
|
<el-table-column label="实时状态" width="100" prop="datastatus">
|
||||||
|
<template #default="scope">
|
||||||
|
<span v-if="scope.row.datastatus == 1" style="color:#409F84"><img
|
||||||
|
src="@/assets/MenuIcon/u495.png" alt=""
|
||||||
|
style="display: inline-block; margin: 0px 5px; "> 在线</span>
|
||||||
|
<span v-else style="color:#F24444"> <img src="@/assets/MenuIcon/u499.png" alt=""
|
||||||
|
style="display: inline-block; margin: 0px 5px; ">离线</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
<Page :total="total1" v-model:size="paramstable1.size" v-model:current="paramstable1.current"
|
||||||
|
@pagination="getData1()"></Page>
|
||||||
|
<span class="dialog-footer"
|
||||||
|
style="width: 100%;margin: auto; display: flex;display: -webkit-flex; justify-content: flex-end;-webkit-justify-content: flex-end;margin-top: 20px;">
|
||||||
|
<el-button @click="handleClose">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="confirmClick(infoForm)"
|
||||||
|
style="margin-right: 15px;">保存</el-button>
|
||||||
|
</span>
|
||||||
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</template>
|
</template>
|
||||||
</Eldialog>
|
</Eldialog>
|
||||||
@ -1550,7 +1714,8 @@ const isGaoliang: any = ref("")
|
|||||||
:value="item.stationId" style="width:100%" />
|
:value="item.stationId" style="width:100%" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-scrollbar height="calc(78vh)" style="width:99%">
|
<el-scrollbar height="calc(78vh)" style="width:99%">
|
||||||
<el-tree ref="treeRef" :class="useAppStore().size === 'default' ? 'silderLeft-large' : 'silderLeft-default'"
|
<el-tree ref="treeRef"
|
||||||
|
:class="useAppStore().size === 'default' ? 'silderLeft-large' : 'silderLeft-default'"
|
||||||
node-key="bayId" :data="treedata" :current-node-key="currentNodeKey" :highlight-current="true"
|
node-key="bayId" :data="treedata" :current-node-key="currentNodeKey" :highlight-current="true"
|
||||||
:props="defaultProps" v-loading="treeloading" @node-click="handleNodeClick">
|
:props="defaultProps" v-loading="treeloading" @node-click="handleNodeClick">
|
||||||
<template #default="{ node }">
|
<template #default="{ node }">
|
||||||
@ -1571,13 +1736,13 @@ const isGaoliang: any = ref("")
|
|||||||
|
|
||||||
<el-input v-model="deviceName" placeholder="请输入巡视点位名称" @clear="getData()" @keyup.enter="getData()"
|
<el-input v-model="deviceName" placeholder="请输入巡视点位名称" @clear="getData()" @keyup.enter="getData()"
|
||||||
style="margin-right:15px ;width: 185px;" clearable />
|
style="margin-right:15px ;width: 185px;" clearable />
|
||||||
<el-select clearable v-model="paramstable.mainDeviceId" placeholder="所属主设备" style="margin-right:15px ;"
|
<el-select clearable v-model="paramstable.mainDeviceId" placeholder="所属主设备"
|
||||||
@visible-change="notification" @change="getData()">
|
style="margin-right:15px ;" @visible-change="notification" @change="getData()">
|
||||||
<el-option v-for="item in mainEquipment" :key="item.mainDeviceId" :label="item.mainDeviceName"
|
<el-option v-for="item in mainEquipment" :key="item.mainDeviceId" :label="item.mainDeviceName"
|
||||||
:value="item.mainDeviceId" />
|
:value="item.mainDeviceId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select clearable v-model="paramstable.componentId" placeholder="所属部件" style="margin-right:15px ;"
|
<el-select clearable v-model="paramstable.componentId" placeholder="所属部件"
|
||||||
@visible-change="notification" @change="getData()">
|
style="margin-right:15px ;" @visible-change="notification" @change="getData()">
|
||||||
<el-option v-for="item in getacaTypeBayId" :key="item.componentId" :label="item.componentName"
|
<el-option v-for="item in getacaTypeBayId" :key="item.componentId" :label="item.componentName"
|
||||||
:value="item.componentId" />
|
:value="item.componentId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@ -1593,14 +1758,15 @@ const isGaoliang: any = ref("")
|
|||||||
<el-button class="searchButton" v-hasPerm="['add:device']" type="primary" @click="addClick"
|
<el-button class="searchButton" v-hasPerm="['add:device']" type="primary" @click="addClick"
|
||||||
:disabled="treedata.length == 0"> 新增</el-button>
|
:disabled="treedata.length == 0"> 新增</el-button>
|
||||||
<el-button class="searchButton" v-hasPerm="['del:device']" @click="delClick"
|
<el-button class="searchButton" v-hasPerm="['del:device']" @click="delClick"
|
||||||
:disabled="deviceInfos.length == 0" :type="deviceInfos.length > 0 ? 'primary' : ''"> 删除</el-button>
|
:disabled="deviceInfos.length == 0" :type="deviceInfos.length > 0 ? 'primary' : ''">
|
||||||
|
删除</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="draggable">
|
<div class="draggable">
|
||||||
<el-table v-loading="loading" :data="tableData" style="width: 100%;height: calc(78vh);
|
<el-table v-loading="loading" :data="tableData" style="width: 100%;height: calc(78vh);
|
||||||
overflow: auto;;margin-bottom: 15px;" row-key="id" @selection-change="handleSelectionChange"
|
overflow: auto;;margin-bottom: 15px;" row-key="id" @selection-change="handleSelectionChange1"
|
||||||
default-expand-all :row-class-name="tableRowClassName"
|
default-expand-all :row-class-name="tableRowClassName"
|
||||||
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px'}">
|
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
||||||
<el-table-column type="selection" width="30" align="center" />
|
<el-table-column type="selection" width="30" align="center" />
|
||||||
<el-table-column type="index" label="序号" width="50px" align="center" />
|
<el-table-column type="index" label="序号" width="50px" align="center" />
|
||||||
<el-table-column label="巡视点位编号" prop="deviceCode" width="140"></el-table-column>
|
<el-table-column label="巡视点位编号" prop="deviceCode" width="140"></el-table-column>
|
||||||
@ -1641,8 +1807,8 @@ const isGaoliang: any = ref("")
|
|||||||
<img v-hasPerm="['del:device']" src="@/assets/newimg/ht_sc.png" alt=""
|
<img v-hasPerm="['del:device']" src="@/assets/newimg/ht_sc.png" alt=""
|
||||||
v-if="scope.row.datastatus == 0" title="删除" @click="handleDelete(scope.row)"
|
v-if="scope.row.datastatus == 0" title="删除" @click="handleDelete(scope.row)"
|
||||||
style="cursor: pointer; ">
|
style="cursor: pointer; ">
|
||||||
<img v-hasPerm="['del:device']" src="@/assets/newimg/ht_sc1.png" alt="" v-else title="删除"
|
<img v-hasPerm="['del:device']" src="@/assets/newimg/ht_sc1.png" alt="" v-else
|
||||||
style="cursor: pointer; ">
|
title="删除" style="cursor: pointer; ">
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -1695,8 +1861,9 @@ const isGaoliang: any = ref("")
|
|||||||
<span v-if="node.level == 1"
|
<span v-if="node.level == 1"
|
||||||
:style="{ color: node.data.online == '1' ? '#409eff' : 'red' }">
|
:style="{ color: node.data.online == '1' ? '#409eff' : 'red' }">
|
||||||
<svg t="1686725618148" class="icon" viewBox="0 0 1024 1024" version="1.1"
|
<svg t="1686725618148" class="icon" viewBox="0 0 1024 1024" version="1.1"
|
||||||
style="margin-right: 5px;" xmlns="http://www.w3.org/2000/svg" p-id="2814"
|
style="margin-right: 5px;" xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink" width="18" height="18">
|
p-id="2814" xmlns:xlink="http://www.w3.org/1999/xlink" width="18"
|
||||||
|
height="18">
|
||||||
<path fill="currentColor"
|
<path fill="currentColor"
|
||||||
d="M954.88 590.72a432.64 432.64 0 0 0-409.6-457.6V0H151.04v64h263.04v76.8c-201.6 38.4-344.96 203.52-344.96 448-1.28 0.64 887.04 4.48 885.76 1.92zM197.76 661.12C198.4 860.16 311.68 1024 512 1024s314.24-161.92 314.24-360.96H197.76zM512 912A85.76 85.76 0 0 1 420.48 832 86.4 86.4 0 0 1 512 752.64 86.4 86.4 0 0 1 603.52 832 85.76 85.76 0 0 1 512 912z"
|
d="M954.88 590.72a432.64 432.64 0 0 0-409.6-457.6V0H151.04v64h263.04v76.8c-201.6 38.4-344.96 203.52-344.96 448-1.28 0.64 887.04 4.48 885.76 1.92zM197.76 661.12C198.4 860.16 311.68 1024 512 1024s314.24-161.92 314.24-360.96H197.76zM512 912A85.76 85.76 0 0 1 420.48 832 86.4 86.4 0 0 1 512 752.64 86.4 86.4 0 0 1 603.52 832 85.76 85.76 0 0 1 512 912z"
|
||||||
p-id="2815"></path>
|
p-id="2815"></path>
|
||||||
@ -1715,29 +1882,34 @@ const isGaoliang: any = ref("")
|
|||||||
<div class="Camera-left">
|
<div class="Camera-left">
|
||||||
<div class="Camera-img">
|
<div class="Camera-img">
|
||||||
<JessibucaPlayer v-if="dialogMonitor" :_uid="33" ref="jessibuca" :visible.sync="true"
|
<JessibucaPlayer v-if="dialogMonitor" :_uid="33" ref="jessibuca" :visible.sync="true"
|
||||||
:videoUrl="urls" :videofmp4="videofmp4" height="100px" :hasAudio="true" fluent autoplay
|
:videoUrl="urls" :videofmp4="videofmp4" height="100px" :hasAudio="true" fluent
|
||||||
live></JessibucaPlayer>
|
autoplay live></JessibucaPlayer>
|
||||||
</div>
|
</div>
|
||||||
<div class="Camera-left-bottom">
|
<div class="Camera-left-bottom">
|
||||||
<div class="Camera-buttons-box">
|
<div class="Camera-buttons-box">
|
||||||
<div class="Camera-left-button1" @mousedown="ptzCamera('up')"
|
<div class="Camera-left-button1" @mousedown="ptzCamera('up')"
|
||||||
@mouseup="ptzCamera('stop')"></div>
|
@mouseup="ptzCamera('stop')"></div>
|
||||||
<div class="Camera-left-button2" @mousedown="ptzCamera('upright')"
|
<div class="Camera-left-button2" @mousedown="ptzCamera('upright')"
|
||||||
@mouseup="ptzCamera('stop')"></div>
|
@mouseup="ptzCamera('stop')">
|
||||||
|
</div>
|
||||||
<div class="Camera-left-button3" @mousedown="ptzCamera('right')"
|
<div class="Camera-left-button3" @mousedown="ptzCamera('right')"
|
||||||
@mouseup="ptzCamera('stop')"></div>
|
@mouseup="ptzCamera('stop')"></div>
|
||||||
<div class="Camera-left-button4" @mousedown="ptzCamera('downright')"
|
<div class="Camera-left-button4" @mousedown="ptzCamera('downright')"
|
||||||
@mouseup="ptzCamera('stop')"></div>
|
@mouseup="ptzCamera('stop')">
|
||||||
|
</div>
|
||||||
<div class="Camera-left-button5" @mousedown="ptzCamera('down')"
|
<div class="Camera-left-button5" @mousedown="ptzCamera('down')"
|
||||||
@mouseup="ptzCamera('stop')"></div>
|
@mouseup="ptzCamera('stop')"></div>
|
||||||
<div class="Camera-left-button6" @mousedown="ptzCamera('downleft')"
|
<div class="Camera-left-button6" @mousedown="ptzCamera('downleft')"
|
||||||
@mouseup="ptzCamera('stop')"></div>
|
@mouseup="ptzCamera('stop')">
|
||||||
|
</div>
|
||||||
<div class="Camera-left-button7" @mousedown="ptzCamera('left')"
|
<div class="Camera-left-button7" @mousedown="ptzCamera('left')"
|
||||||
@mouseup="ptzCamera('stop')"></div>
|
@mouseup="ptzCamera('stop')"></div>
|
||||||
<div class="Camera-left-button8" @mousedown="ptzCamera('upleft')"
|
<div class="Camera-left-button8" @mousedown="ptzCamera('upleft')"
|
||||||
@mouseup="ptzCamera('stop')"></div>
|
@mouseup="ptzCamera('stop')">
|
||||||
|
</div>
|
||||||
<div class="Camera-left-button9" @click="presetPosition(130, beforehandPosition)"
|
<div class="Camera-left-button9" @click="presetPosition(130, beforehandPosition)"
|
||||||
title="回到初始位置"></div>
|
title="回到初始位置">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="Camera-left-buttons">
|
<div class="Camera-left-buttons">
|
||||||
@ -1750,24 +1922,27 @@ const isGaoliang: any = ref("")
|
|||||||
</div>
|
</div>
|
||||||
<div class="videoOperationstext">缩放</div>
|
<div class="videoOperationstext">缩放</div>
|
||||||
<div class="videoOperations" style="border-radius:0 4px 4px 0;"
|
<div class="videoOperations" style="border-radius:0 4px 4px 0;"
|
||||||
:class="{ 'gaolaing': isGaoliang == 'zoomin' }" @mousedown="ptzCamera('zoomin')"
|
:class="{ 'gaolaing': isGaoliang == 'zoomin' }"
|
||||||
@mouseup="ptzCamera('stop')"><el-icon>
|
@mousedown="ptzCamera('zoomin')" @mouseup="ptzCamera('stop')"><el-icon>
|
||||||
<Plus />
|
<Plus />
|
||||||
</el-icon></div>
|
</el-icon></div>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex;margin-top:15px;">
|
<div style="display: flex;margin-top:15px;">
|
||||||
<div class="videoOperations" @mouseup="quxiao"
|
<div class="videoOperations" @mouseup="quxiao"
|
||||||
:class="{ 'gaolaing': isGaoliang == '66' }" @mousedown="condensationChang('减')">
|
:class="{ 'gaolaing': isGaoliang == '66' }"
|
||||||
|
@mousedown="condensationChang('减')">
|
||||||
<el-icon>
|
<el-icon>
|
||||||
<Minus />
|
<Minus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="videoOperationstext">光聚</div>
|
<div class="videoOperationstext">光聚</div>
|
||||||
<div class="videoOperations" @mouseup="quxiao"
|
<div class="videoOperations" @mouseup="quxiao"
|
||||||
:class="{ 'gaolaing': isGaoliang == '65' }" style="border-radius:0 4px 4px 0;"
|
:class="{ 'gaolaing': isGaoliang == '65' }"
|
||||||
@mousedown="condensationChang('加')"><el-icon>
|
style="border-radius:0 4px 4px 0;" @mousedown="condensationChang('加')">
|
||||||
|
<el-icon>
|
||||||
<Plus />
|
<Plus />
|
||||||
</el-icon></div>
|
</el-icon>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex;margin-top:15px;">
|
<div style="display: flex;margin-top:15px;">
|
||||||
<div class="videoOperations" @mouseup="quxiao"
|
<div class="videoOperations" @mouseup="quxiao"
|
||||||
@ -1778,8 +1953,8 @@ const isGaoliang: any = ref("")
|
|||||||
</div>
|
</div>
|
||||||
<div class="videoOperationstext">光圈</div>
|
<div class="videoOperationstext">光圈</div>
|
||||||
<div class="videoOperations" @mouseup="quxiao"
|
<div class="videoOperations" @mouseup="quxiao"
|
||||||
:class="{ 'gaolaing': isGaoliang == '70' }" style="border-radius:0 4px 4px 0;"
|
:class="{ 'gaolaing': isGaoliang == '70' }"
|
||||||
@mousedown="apertureChang('加')">
|
style="border-radius:0 4px 4px 0;" @mousedown="apertureChang('加')">
|
||||||
<el-icon>
|
<el-icon>
|
||||||
<Plus />
|
<Plus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
@ -1803,9 +1978,9 @@ const isGaoliang: any = ref("")
|
|||||||
</div>
|
</div>
|
||||||
<div style="display: flex;"><span
|
<div style="display: flex;"><span
|
||||||
style="display: block;;padding-left:15px;display: inline-block;width: 50px;">雨刷</span>
|
style="display: block;;padding-left:15px;display: inline-block;width: 50px;">雨刷</span>
|
||||||
<el-switch class="nei" style="display: block;margin-left:0px" v-model="isWiper"
|
<el-switch class="nei" style="display: block;margin-left:0px"
|
||||||
inline-prompt active-text="开" inactive-text="关" @change="WiperClick"
|
v-model="isWiper" inline-prompt active-text="开" inactive-text="关"
|
||||||
active-value="1" inactive-value="0" />
|
@change="WiperClick" active-value="1" inactive-value="0" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -1833,7 +2008,8 @@ const isGaoliang: any = ref("")
|
|||||||
<div v-if="indexRow % 2 == 1" style="width: 60px;margin-left: 20px;"><el-input
|
<div v-if="indexRow % 2 == 1" style="width: 60px;margin-left: 20px;"><el-input
|
||||||
v-model="threshold"></el-input></div>
|
v-model="threshold"></el-input></div>
|
||||||
<div v-if="indexRow % 2 == 0" style="margin-left: 100px;"></div>
|
<div v-if="indexRow % 2 == 0" style="margin-left: 100px;"></div>
|
||||||
<el-button class="searchButton" type="primary" style="width:90px;margin-left: 15px;"
|
<el-button class="searchButton" type="primary"
|
||||||
|
style="width:90px;margin-left: 15px;"
|
||||||
@click="maintenanceArea">有效区域设置</el-button>
|
@click="maintenanceArea">有效区域设置</el-button>
|
||||||
<el-button class="searchButton" type="primary" style="width:90px;"
|
<el-button class="searchButton" type="primary" style="width:90px;"
|
||||||
@click="importclick()">保存基准图</el-button>
|
@click="importclick()">保存基准图</el-button>
|
||||||
@ -1886,12 +2062,12 @@ const isGaoliang: any = ref("")
|
|||||||
<Eldialog v-if="isMaintenanceArea" class="AngleBox" :title="'维护生效区域'" :zIndex="2000" :width="'1280px'"
|
<Eldialog v-if="isMaintenanceArea" class="AngleBox" :title="'维护生效区域'" :zIndex="2000" :width="'1280px'"
|
||||||
:height="'600px'" @before-close="closeMaintenanceArea">
|
:height="'600px'" @before-close="closeMaintenanceArea">
|
||||||
<template v-slot:PopFrameContent>
|
<template v-slot:PopFrameContent>
|
||||||
<MaintenanceArea v-if="isMaintenanceArea" :AngleUrl="AngleUrl" :Custom3="Custom3" style="margin-top: 15px;"
|
<MaintenanceArea v-if="isMaintenanceArea" :AngleUrl="AngleUrl" :Custom3="Custom3"
|
||||||
@closeMaintenanceArea="closeMaintenanceArea" />
|
style="margin-top: 15px;" @closeMaintenanceArea="closeMaintenanceArea" />
|
||||||
</template>
|
</template>
|
||||||
</Eldialog>
|
</Eldialog>
|
||||||
<Eldialog v-if="isMeasurement" class="AngleBox" :title="'测温设置'" :zIndex="2000" :width="'1320px'" :height="'600px'"
|
<Eldialog v-if="isMeasurement" class="AngleBox" :title="'测温设置'" :zIndex="2000" :width="'1320px'"
|
||||||
@before-close="closeMeasurement">
|
:height="'600px'" @before-close="closeMeasurement">
|
||||||
<template v-slot:PopFrameContent>
|
<template v-slot:PopFrameContent>
|
||||||
<!-- <el-scrollbar height="720px"> -->
|
<!-- <el-scrollbar height="720px"> -->
|
||||||
<!-- <el-scrollbar> -->
|
<!-- <el-scrollbar> -->
|
||||||
@ -2502,6 +2678,5 @@ const isGaoliang: any = ref("")
|
|||||||
|
|
||||||
.gaolaing {
|
.gaolaing {
|
||||||
background: rgba(50, 177, 245, 0.4)
|
background: rgba(50, 177, 245, 0.4)
|
||||||
}</style>
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import {
|
|||||||
getComponentByBayId,
|
getComponentByBayId,
|
||||||
getBindExamineDevice
|
getBindExamineDevice
|
||||||
} from '@/api/task';
|
} from '@/api/task';
|
||||||
import { getRobotAndUavList, getSubstationNaviTree } from '@/api/makeTask';
|
import { getRobotAndUavList, getBayTree } from '@/api/makeTask';
|
||||||
import { getdevicedata } from '@/api/device';
|
import { getdevicedata } from '@/api/device';
|
||||||
import { getTreeList } from '@/api/linksignal';
|
import { getTreeList } from '@/api/linksignal';
|
||||||
import { getDeviceByType, getaccType, getMainEquipment } from '@/api/device';
|
import { getDeviceByType, getaccType, getMainEquipment } from '@/api/device';
|
||||||
@ -574,7 +574,7 @@ function getTree(val: any) {
|
|||||||
stationId: val
|
stationId: val
|
||||||
};
|
};
|
||||||
publicRelevanceData.value = [];
|
publicRelevanceData.value = [];
|
||||||
getSubstationNaviTree(params)
|
getBayTree(params)
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
|
|
||||||
treedata.value = res.data;
|
treedata.value = res.data;
|
||||||
@ -1056,19 +1056,18 @@ function currency(list: any, itemcode: any) {
|
|||||||
}
|
}
|
||||||
const tableRowClassName = ({
|
const tableRowClassName = ({
|
||||||
row,
|
row,
|
||||||
rowIndex
|
rowIndex,
|
||||||
}: {
|
}: {
|
||||||
row: any;
|
row: any
|
||||||
rowIndex: number;
|
rowIndex: number
|
||||||
}) => {
|
}) => {
|
||||||
row.row_index = rowIndex;
|
if (rowIndex % 2 === 0) {
|
||||||
for (let i = 0; i < deviceInfos.value.length; i++) {
|
return 'warning-row'
|
||||||
if (deviceInfos.value[i].row_index === rowIndex) {
|
} else if (rowIndex % 2 === 1) {
|
||||||
return 'success-row';
|
return 'success-row'
|
||||||
}
|
}
|
||||||
}
|
return ''
|
||||||
return '';
|
}
|
||||||
};
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getData();
|
getData();
|
||||||
getDict();
|
getDict();
|
||||||
@ -1138,7 +1137,7 @@ function getrobotUAV() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="draggable">
|
<div class="draggable">
|
||||||
<el-table stripe :header-cell-style="tableBg" v-loading="planLoading" :data="tableData" style="
|
<el-table stripe :header-cell-style="tableBg" v-loading="planLoading" :data="tableData" :row-class-name="tableRowClassName" style="
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(75vh);
|
height: calc(75vh);
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
@ -1284,7 +1283,7 @@ function getrobotUAV() {
|
|||||||
<div class="publicline"></div>
|
<div class="publicline"></div>
|
||||||
<div class="publictitle" style="color:#ffffff;">关联结果</div>
|
<div class="publictitle" style="color:#ffffff;">关联结果</div>
|
||||||
</div>
|
</div>
|
||||||
<el-table v-if="resultData.length != 0" :data="resultData" style="width: 100%" row-key="id"
|
<el-table v-if="resultData.length != 0" :data="resultData" style="width: 100%" row-key="id" :row-class-name="tableRowClassName"
|
||||||
:header-cell-style="tableBg" stripe :height="'calc(100vh - 400px)'">
|
:header-cell-style="tableBg" stripe :height="'calc(100vh - 400px)'">
|
||||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||||
<el-table-column v-if="examineInfo.deviceLevel == '' ||
|
<el-table-column v-if="examineInfo.deviceLevel == '' ||
|
||||||
@ -1397,7 +1396,7 @@ function getrobotUAV() {
|
|||||||
<el-button class="searchButton" type="primary" @click="addPublic()">添加</el-button>
|
<el-button class="searchButton" type="primary" @click="addPublic()">添加</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="draggable">
|
<div class="draggable">
|
||||||
<el-table :header-cell-style="tableBg" stripe :row-key="rowRelevanceKey" ref="multipleTableRef"
|
<el-table :header-cell-style="tableBg" stripe :row-key="rowRelevanceKey" ref="multipleTableRef" :row-class-name="tableRowClassName"
|
||||||
v-loading="loading3" :data="publicRelevanceData" style="width: 100%"
|
v-loading="loading3" :data="publicRelevanceData" style="width: 100%"
|
||||||
@selection-change="publicSelectionChange" :height="'calc(100vh - 360px)'">
|
@selection-change="publicSelectionChange" :height="'calc(100vh - 360px)'">
|
||||||
<el-table-column type="selection" width="50" align="center" />
|
<el-table-column type="selection" width="50" align="center" />
|
||||||
@ -1430,7 +1429,7 @@ function getrobotUAV() {
|
|||||||
<Eldialog v-model="noneShow" :close-on-click-modal="false" @before-close="deviceClose" :title="'屏蔽的巡视点位'"
|
<Eldialog v-model="noneShow" :close-on-click-modal="false" @before-close="deviceClose" :title="'屏蔽的巡视点位'"
|
||||||
append-to-body width="1100px" draggable>
|
append-to-body width="1100px" draggable>
|
||||||
<template v-slot:PopFrameContent>
|
<template v-slot:PopFrameContent>
|
||||||
<el-table :header-cell-style="tableBg" stripe :row-key="rowRelevanceKey" ref="multipleTableRef"
|
<el-table :header-cell-style="tableBg" stripe :row-key="rowRelevanceKey" ref="multipleTableRef" :row-class-name="tableRowClassName"
|
||||||
v-loading="loading4" :data="deviceData" style="width: 100%;margin-top:10px"
|
v-loading="loading4" :data="deviceData" style="width: 100%;margin-top:10px"
|
||||||
@selection-change="publicSelectionChange" :height="'calc(100vh - 260px)'">
|
@selection-change="publicSelectionChange" :height="'calc(100vh - 260px)'">
|
||||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||||
@ -1463,7 +1462,7 @@ function getrobotUAV() {
|
|||||||
padding: 5px 0px 10px;
|
padding: 5px 0px 10px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
// background: #fff;
|
// background: #fff;
|
||||||
background-image: url(@/assets/newimg/jcpz_260.png);
|
background-image: url(@/assets/navigation/sanwei.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -1474,7 +1473,7 @@ function getrobotUAV() {
|
|||||||
.silderBox {
|
.silderBox {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(89vh);
|
height: calc(89vh);
|
||||||
background-color: #131a25;
|
// background-color: #131a25;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
padding: 5px 20px 0px;
|
padding: 5px 20px 0px;
|
||||||
@ -1487,9 +1486,8 @@ function getrobotUAV() {
|
|||||||
.silderRight {
|
.silderRight {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100vh - 290px);
|
height: calc(100vh - 290px) !important;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
// background-color: rgba(255, 255, 255, 1);
|
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
padding-bottom: 0px;
|
padding-bottom: 0px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
@ -857,7 +857,7 @@ const tableRowClassName = ({
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(89vh);
|
height: calc(89vh);
|
||||||
// overflow: auto;
|
// overflow: auto;
|
||||||
background-color: #131a25;
|
// background-color: #131a25;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
padding: 5px 20px 0px;
|
padding: 5px 20px 0px;
|
||||||
|
@ -283,9 +283,9 @@ onMounted(() => {
|
|||||||
:row-class-name="tableRowClassName"
|
:row-class-name="tableRowClassName"
|
||||||
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
||||||
<el-table-column type="index" label="序号" width="50px" align="center" />
|
<el-table-column type="index" label="序号" width="50px" align="center" />
|
||||||
|
<el-table-column label="采集时间" prop="startTime" width="120"></el-table-column>
|
||||||
<el-table-column label="监测数值" prop="value"></el-table-column>
|
<el-table-column label="监测数值" prop="value"></el-table-column>
|
||||||
<el-table-column label="单位" prop="unit"></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>
|
</el-table>
|
||||||
<Page :total="total" v-model:size="tableform.size" v-model:current="tableform.current"
|
<Page :total="total" v-model:size="tableform.size" v-model:current="tableform.current"
|
||||||
@pagination="gettabledata()">
|
@pagination="gettabledata()">
|
||||||
|
@ -8,8 +8,8 @@ export default {
|
|||||||
import { ref, onMounted, onBeforeUnmount, } from 'vue'
|
import { ref, onMounted, onBeforeUnmount, } from 'vue'
|
||||||
import Page from '@/components/Pagination/page.vue'
|
import Page from '@/components/Pagination/page.vue'
|
||||||
import { useUserStore } from '@/store/modules/user';
|
import { useUserStore } from '@/store/modules/user';
|
||||||
import { getWeatherLogList } from "@/api/home";
|
import { getWeatherLogList,getDeviceWorkData } from "@/api/home";
|
||||||
import { getWeatherLogPage} from "@/api/environmentalMonitoring";
|
import { getWeatherLogPage,getdeviceworkdata} from "@/api/environmentalMonitoring";
|
||||||
import { getDeviceByType } from "@/api/device";
|
import { getDeviceByType } from "@/api/device";
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
@ -52,7 +52,7 @@ function getEnvironment() {
|
|||||||
environment_params.value.startDate = ''
|
environment_params.value.startDate = ''
|
||||||
environment_params.value.endDate = ''
|
environment_params.value.endDate = ''
|
||||||
}
|
}
|
||||||
getWeatherLogPage(environment_params.value).then((res: any) => {
|
getdeviceworkdata(environment_params.value).then((res: any) => {
|
||||||
environment_data.value = res.data.records
|
environment_data.value = res.data.records
|
||||||
environment_params.value.size = res.data.size
|
environment_params.value.size = res.data.size
|
||||||
environment_params.value.current = res.data.current
|
environment_params.value.current = res.data.current
|
||||||
@ -69,101 +69,70 @@ function environmentReset(){
|
|||||||
|
|
||||||
// 环境WebSocket
|
// 环境WebSocket
|
||||||
const environment = ref()
|
const environment = ref()
|
||||||
const environmentInfo:any = ref({
|
const environmentInfo:any = ref([])
|
||||||
temperature: "",
|
// const ws1 = new WebSocket(userStore.wsApiBaseUrl + '/websocket/vibe_run_data_' + userStore.userId);
|
||||||
humidity: "",
|
// function setupWebSocket() {
|
||||||
rainfall: "",
|
|
||||||
windSpeed: "",
|
|
||||||
windDirection: "",
|
|
||||||
pressure: ""
|
|
||||||
})
|
|
||||||
const ws1 = new WebSocket(userStore.wsApiBaseUrl + '/websocket/vibe_run_data_' + userStore.userId);
|
|
||||||
function setupWebSocket() {
|
|
||||||
|
|
||||||
ws1.onopen = () => {
|
// ws1.onopen = () => {
|
||||||
|
|
||||||
};
|
// };
|
||||||
ws1.onerror = (error: any) => {
|
// ws1.onerror = (error: any) => {
|
||||||
};
|
// };
|
||||||
ws1.onmessage = (e: any) => {
|
// ws1.onmessage = (e: any) => {
|
||||||
|
|
||||||
if (e.data != 0) {
|
// if (e.data != 0) {
|
||||||
environment.value = JSON.parse(e.data)
|
// environment.value = JSON.parse(e.data)
|
||||||
if (environment.value.type == 1) {
|
// if (environment.value.type == 1) {
|
||||||
environmentInfo.value.temperature = environment.value.value
|
// environmentInfo.value.temperature = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 2) {
|
// if (environment.value.type == 2) {
|
||||||
environmentInfo.value.humidity = environment.value.value
|
// environmentInfo.value.humidity = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 3) {
|
// if (environment.value.type == 3) {
|
||||||
environmentInfo.value.windSpeed = environment.value.value
|
// environmentInfo.value.windSpeed = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 4) {
|
// if (environment.value.type == 4) {
|
||||||
environmentInfo.value.rainfall = environment.value.value
|
// environmentInfo.value.rainfall = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 5) {
|
// if (environment.value.type == 5) {
|
||||||
environmentInfo.value.windDirection = environment.value.value
|
// environmentInfo.value.windDirection = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 6) {
|
// if (environment.value.type == 6) {
|
||||||
environmentInfo.value.pressure = environment.value.value
|
// environmentInfo.value.pressure = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 7) {
|
// if (environment.value.type == 7) {
|
||||||
environmentInfo.value.oxygen = environment.value.value
|
// environmentInfo.value.oxygen = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 8) {
|
// if (environment.value.type == 8) {
|
||||||
environmentInfo.value.sf6 = environment.value.value
|
// environmentInfo.value.sf6 = environment.value.value
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
ws1.onclose = () => {
|
// ws1.onclose = () => {
|
||||||
};
|
// };
|
||||||
|
|
||||||
}
|
// }
|
||||||
function getInit() {
|
function getInit() {
|
||||||
let params = {
|
let params = {
|
||||||
stationId: userStore.stationId
|
stationId: userStore.stationId
|
||||||
}
|
}
|
||||||
getWeatherLogList(params).then((res: any) => {
|
getDeviceWorkData(params).then((res: any) => {
|
||||||
|
|
||||||
environmentInfo.value = res.data
|
environmentInfo.value = res.data
|
||||||
if (!res.data.temperature ) {
|
|
||||||
environmentInfo.value.temperature = "无"
|
|
||||||
}
|
|
||||||
if (!res.data.humidity ) {
|
|
||||||
environmentInfo.value.humidity = "无"
|
|
||||||
}
|
|
||||||
if (!res.data.rainfall ) {
|
|
||||||
environmentInfo.value.rainfall = "无"
|
|
||||||
}
|
|
||||||
if (!res.data.windSpeed ) {
|
|
||||||
environmentInfo.value.windSpeed = "无"
|
|
||||||
}
|
|
||||||
if (!res.data.windDirection ) {
|
|
||||||
environmentInfo.value.windDirection = "无"
|
|
||||||
}
|
|
||||||
if (!res.data.pressure) {
|
|
||||||
environmentInfo.value.pressure = "无"
|
|
||||||
}
|
|
||||||
if (!res.data.oxygen) {
|
|
||||||
environmentInfo.value.oxygen = "无"
|
|
||||||
}
|
|
||||||
if (!res.data.sf6) {
|
|
||||||
environmentInfo.value.sf6 = "无"
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getInit()
|
getInit()
|
||||||
setupWebSocket()
|
//setupWebSocket()
|
||||||
getEnvironment()
|
getEnvironment()
|
||||||
gettype()
|
gettype()
|
||||||
});
|
});
|
||||||
onBeforeUnmount(() => {
|
// onBeforeUnmount(() => {
|
||||||
if (ws1 != null) {
|
// if (ws1 != null) {
|
||||||
ws1.close()
|
// ws1.close()
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
function currency(list: any, itemcode: any) {
|
function currency(list: any, itemcode: any) {
|
||||||
let dictname = ''
|
let dictname = ''
|
||||||
list.forEach((element: any) => {
|
list.forEach((element: any) => {
|
||||||
@ -173,75 +142,25 @@ function currency(list: any, itemcode: any) {
|
|||||||
})
|
})
|
||||||
return dictname
|
return dictname
|
||||||
}
|
}
|
||||||
const EquipmentType= ref([])
|
const EquipmentType:any= ref([])
|
||||||
function gettype(){
|
function gettype(){
|
||||||
getDeviceByType({ dictcode: 'EnvironmentType' }).then((res: any) => {
|
getDeviceByType({ dictcode: 'system' }).then((res: any) => {
|
||||||
EquipmentType.value = res.data
|
EquipmentType.value = res.data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="all_box">
|
<div class="all_box">
|
||||||
<div class="img_box">
|
<div class="img_box">
|
||||||
<div class="img_box_one">
|
<div class="img_box_one" v-for="(item,index) in environmentInfo">
|
||||||
<div><img src="@/assets/navigation/hjjc_sj1.png" alt=""></div>
|
<div><img :src="`/environment/${item.itemcode}.png`" alt=""></div>
|
||||||
<div class="img_box_nei">
|
<div class="img_box_nei">
|
||||||
<div class="img_text1">空气温度</div>
|
<div class="img_text1">{{ item.dictname }}</div>
|
||||||
<div class="img_text2">{{ environmentInfo.temperature }}<span class="img_unit"> ℃</span></div>
|
<div v-if="item.value != '无'" class="img_text2">{{item.dictname == '风向'? item.value: Number(item.value).toFixed(2)}}<span class="img_unit"> {{ item.unit }}</span></div>
|
||||||
|
<div v-else class="img_text2">{{item.value}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="img_box_one">
|
|
||||||
<div><img src="@/assets/navigation/hjjc_sj2.png" alt=""></div>
|
|
||||||
<div class="img_box_nei">
|
|
||||||
<div class="img_text1">空气湿度</div>
|
|
||||||
<div class="img_text2">{{ environmentInfo.humidity }} <span class="img_unit"> RH</span></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="img_box_one">
|
|
||||||
<div><img src="@/assets/navigation/hjjc_sj3.png" alt=""></div>
|
|
||||||
<div class="img_box_nei">
|
|
||||||
<div class="img_text1">降雨量</div>
|
|
||||||
<div class="img_text2">{{ environmentInfo.rainfall }} <span class="img_unit"> mm</span></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="img_box_one">
|
|
||||||
<div><img src="@/assets/navigation/hjjc_sj4.png" alt=""></div>
|
|
||||||
<div class="img_box_nei">
|
|
||||||
<div class="img_text1">风速</div>
|
|
||||||
<div class="img_text2">{{ environmentInfo.windSpeed }} <span class="img_unit"> 级</span></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="img_box_one">
|
|
||||||
<div><img src="@/assets/navigation/hjjc_sj5.png" alt=""></div>
|
|
||||||
<div class="img_box_nei">
|
|
||||||
<div class="img_text1">风向</div>
|
|
||||||
<div class="img_text2">{{ environmentInfo.windDirection }} </div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="img_box_one">
|
|
||||||
<div><img src="@/assets/navigation/hjjc_sj6.png" alt=""></div>
|
|
||||||
<div class="img_box_nei">
|
|
||||||
<div class="img_text1">气压</div>
|
|
||||||
<div class="img_text2">{{ environmentInfo.pressure }} <span class="img_unit"> hpa</span></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="img_box_one">
|
|
||||||
<div><img src="@/assets/navigation/hjjc_sj7.png" alt=""></div>
|
|
||||||
<div class="img_box_nei">
|
|
||||||
<div class="img_text1">氧气</div>
|
|
||||||
<div class="img_text2">{{ environmentInfo.oxygen }} <span class="img_unit"> %</span></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="img_box_one">
|
|
||||||
<div><img src="@/assets/navigation/hjjc_sj8.png" alt=""></div>
|
|
||||||
<div class="img_box_nei">
|
|
||||||
<div class="img_text1">SF6</div>
|
|
||||||
<div class="img_text2">{{ environmentInfo.sf6 }} <span class="img_unit"> %</span></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="environment_table">
|
<div class="environment_table">
|
||||||
<div class="table-title">
|
<div class="table-title">
|
||||||
@ -263,19 +182,19 @@ function gettype(){
|
|||||||
style="width: 100%;margin:auto;position: relative;margin-top: 15px; height:calc(56vh); overflow: auto "
|
style="width: 100%;margin:auto;position: relative;margin-top: 15px; height:calc(56vh); overflow: auto "
|
||||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }">
|
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }">
|
||||||
<el-table-column type="index" label="序号" width="80px" align="center" />
|
<el-table-column type="index" label="序号" width="80px" align="center" />
|
||||||
<el-table-column property="patroldeviceCode" label="设备编号" align="center" />
|
<el-table-column property="deviceName" label="监控设备名称" align="center" />
|
||||||
<el-table-column property="patroldeviceName" label="设备名称" align="center" />
|
<el-table-column property="signalName" label="监控信号名称" align="center" />
|
||||||
<el-table-column property="type" label="环境 类型" align="center">
|
<el-table-column property="systemcode" label="所属系统" align="center" width="100px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ currency(EquipmentType, scope.row.type) }}</span>
|
<span>{{ currency(EquipmentType, scope.row.systemcode) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column property="taskName" label="监测数值" align="center">
|
<el-table-column property="taskName" label="监测数值" align="center" width="100px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div v-if="scope.row.value">{{ scope.row.value }}{{scope.row.unit}}</div>
|
<div v-if="scope.row.value">{{ scope.row.value }}{{scope.row.unit}}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column property="time" label="监测时间" align="center" />
|
<el-table-column property="startTime" label="采集时间" align="center" width="160px" />
|
||||||
</el-table>
|
</el-table>
|
||||||
<div style="width:100%;display:flex;align-items:center;margin-top:10px;">
|
<div style="width:100%;display:flex;align-items:center;margin-top:10px;">
|
||||||
<Page style="margin:0 auto ;" :total="hutotal" v-model:size="environment_params.size" :jumper="'hide'"
|
<Page style="margin:0 auto ;" :total="hutotal" v-model:size="environment_params.size" :jumper="'hide'"
|
||||||
@ -326,7 +245,7 @@ function gettype(){
|
|||||||
.img_text2 {
|
.img_text2 {
|
||||||
font-family: '钉钉进步体 Bold', '钉钉进步体';
|
font-family: '钉钉进步体 Bold', '钉钉进步体';
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-size: 36px;
|
font-size: 24px;
|
||||||
color: #00ffff;
|
color: #00ffff;
|
||||||
|
|
||||||
.img_unit {
|
.img_unit {
|
||||||
|
@ -372,7 +372,7 @@ function open(row: any) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.videomonitor_right {
|
.videomonitor_right {
|
||||||
width: 100%;
|
width: 85%;
|
||||||
height: calc(90vh);
|
height: calc(90vh);
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
position: fixed;
|
position: fixed;
|
||||||
top: 60px;
|
top: 60px;
|
||||||
">
|
">
|
||||||
<Modelset v-if="isModelset" :isautoRotate="isautoRotate" />
|
<!-- <Modelset v-if="isModelset" :isautoRotate="isautoRotate" /> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="three_button" @click="autoRotateClick">
|
<div class="three_button" @click="autoRotateClick">
|
||||||
<span v-if="isautoRotate == true">暂停</span>
|
<span v-if="isautoRotate == true">暂停</span>
|
||||||
@ -115,7 +115,8 @@
|
|||||||
<div class="two_text">
|
<div class="two_text">
|
||||||
<div class="two_text_one">
|
<div class="two_text_one">
|
||||||
<span class="one_one">摄像头</span>
|
<span class="one_one">摄像头</span>
|
||||||
<span class="one_two">{{ patrolInfo.camera.online }}<span class="one_three">/{{ patrolInfo.camera.allCount }}</span></span>
|
<span class="one_two">{{ patrolInfo.camera.online }}<span class="one_three">/{{
|
||||||
|
patrolInfo.camera.allCount }}</span></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="two_text_two">
|
<div class="two_text_two">
|
||||||
<span class="two_one">在线率:</span>
|
<span class="two_one">在线率:</span>
|
||||||
@ -133,7 +134,8 @@
|
|||||||
<div class="two_text">
|
<div class="two_text">
|
||||||
<div class="two_text_one">
|
<div class="two_text_one">
|
||||||
<span class="one_one">声纹设备</span>
|
<span class="one_one">声纹设备</span>
|
||||||
<span class="one_two">{{ patrolInfo.voice.online }}<span class="one_three">/{{ patrolInfo.voice.allCount }}</span></span>
|
<span class="one_two">{{ patrolInfo.voice.online }}<span class="one_three">/{{
|
||||||
|
patrolInfo.voice.allCount }}</span></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="two_text_two">
|
<div class="two_text_two">
|
||||||
<span class="two_one">在线率:</span>
|
<span class="two_one">在线率:</span>
|
||||||
@ -151,7 +153,8 @@
|
|||||||
<div class="two_text">
|
<div class="two_text">
|
||||||
<div class="two_text_one">
|
<div class="two_text_one">
|
||||||
<span class="one_one">网关机</span>
|
<span class="one_one">网关机</span>
|
||||||
<span class="one_two">{{ patrolInfo.gateway.online }}<span class="one_three">/{{ patrolInfo.gateway.allCount }}</span></span>
|
<span class="one_two">{{ patrolInfo.gateway.online }}<span class="one_three">/{{
|
||||||
|
patrolInfo.gateway.allCount }}</span></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="two_text_two">
|
<div class="two_text_two">
|
||||||
<span class="two_one">在线率:</span>
|
<span class="two_one">在线率:</span>
|
||||||
@ -176,7 +179,8 @@
|
|||||||
<div class="three_top_right"><img src="@/assets/sytlechange/three1.svg" alt=""></div>
|
<div class="three_top_right"><img src="@/assets/sytlechange/three1.svg" alt=""></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="three_bottom">
|
<div class="three_bottom">
|
||||||
<span class="three_bottom_one">{{ environmentInfo.temperature }}</span>
|
<span class="three_bottom_one">{{ environmentInfo.temperature == '无' ? environmentInfo.temperature :
|
||||||
|
Number(environmentInfo.temperature).toFixed(2) }}</span>
|
||||||
<span class="three_bottom_two">℃</span>
|
<span class="three_bottom_two">℃</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -186,7 +190,8 @@
|
|||||||
<div class="three_top_right"><img src="@/assets/sytlechange/three2.svg" alt=""></div>
|
<div class="three_top_right"><img src="@/assets/sytlechange/three2.svg" alt=""></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="three_bottom">
|
<div class="three_bottom">
|
||||||
<span class="three_bottom_one">{{ environmentInfo.humidity }}</span>
|
<span class="three_bottom_one">{{ environmentInfo.humidity == '无' ? environmentInfo.humidity : Number(
|
||||||
|
environmentInfo.humidity).toFixed(2) }}</span>
|
||||||
<span class="three_bottom_two">RH</span>
|
<span class="three_bottom_two">RH</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -196,7 +201,9 @@
|
|||||||
<div class="three_top_right"><img src="@/assets/sytlechange/three3.svg" alt=""></div>
|
<div class="three_top_right"><img src="@/assets/sytlechange/three3.svg" alt=""></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="three_bottom">
|
<div class="three_bottom">
|
||||||
<span class="three_bottom_one">{{ environmentInfo.windSpeed }}</span>
|
<span
|
||||||
|
class="three_bottom_one">{{ environmentInfo.windSpeed == '无' ? environmentInfo.windSpeed : Number(environmentInfo.windSpeed).toFixed(2)
|
||||||
|
}}</span>
|
||||||
<span class="three_bottom_two">级</span>
|
<span class="three_bottom_two">级</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -206,7 +213,7 @@
|
|||||||
<div class="three_top_right"><img src="@/assets/sytlechange/three4.svg" alt=""></div>
|
<div class="three_top_right"><img src="@/assets/sytlechange/three4.svg" alt=""></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="three_bottom">
|
<div class="three_bottom">
|
||||||
<span class="three_bottom_one">{{ environmentInfo.windDirection}}</span>
|
<span class="three_bottom_one">{{ environmentInfo.windDirection }}</span>
|
||||||
<span class="three_bottom_two">SW</span>
|
<span class="three_bottom_two">SW</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -216,7 +223,9 @@
|
|||||||
<div class="three_top_right"><img src="@/assets/sytlechange/three5.svg" alt=""></div>
|
<div class="three_top_right"><img src="@/assets/sytlechange/three5.svg" alt=""></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="three_bottom">
|
<div class="three_bottom">
|
||||||
<span class="three_bottom_one">{{ environmentInfo.pressure }}</span>
|
<span class="three_bottom_one">{{
|
||||||
|
environmentInfo.pressure == '无' ? environmentInfo.pressure : Number(environmentInfo.pressure).toFixed(2)
|
||||||
|
}}</span>
|
||||||
<span class="three_bottom_two">HPA</span>
|
<span class="three_bottom_two">HPA</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -226,7 +235,9 @@
|
|||||||
<div class="three_top_right"><img src="@/assets/sytlechange/three6.svg" alt=""></div>
|
<div class="three_top_right"><img src="@/assets/sytlechange/three6.svg" alt=""></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="three_bottom">
|
<div class="three_bottom">
|
||||||
<span class="three_bottom_one">{{ environmentInfo.rainfall }}</span>
|
<span class="three_bottom_one">{{
|
||||||
|
environmentInfo.rainfall == '无' ? environmentInfo.rainfall : Number(environmentInfo.rainfall).toFixed(2)
|
||||||
|
}}</span>
|
||||||
<span class="three_bottom_two">MM</span>
|
<span class="three_bottom_two">MM</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -265,20 +276,20 @@
|
|||||||
<div class="right2_body" v-if="rate">
|
<div class="right2_body" v-if="rate">
|
||||||
<div class="right2_box">
|
<div class="right2_box">
|
||||||
<div class="box_text">
|
<div class="box_text">
|
||||||
<div class="box_text_one">{{rate.confirmationRate || 0}}%</div>
|
<div class="box_text_one">{{ rate.confirmationRate || 0 }}%</div>
|
||||||
<div class="box_text_two">报警准确率</div>
|
<div class="box_text_two">报警准确率</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="right2_box_left">
|
<div class="right2_box_left">
|
||||||
<div class="box_text">
|
<div class="box_text">
|
||||||
<div class="box_text1">告警总数</div>
|
<div class="box_text1">核查总数</div>
|
||||||
<div class="box_text3"> <img src="@/assets/navigation/sysy_gjl2.png" alt=""></div>
|
<div class="box_text3"> <img src="@/assets/navigation/sysy_gjl2.png" alt=""></div>
|
||||||
<div class="box_text2">{{rate.totalAlarms || 0}} <span class="span">件</span></div>
|
<div class="box_text2">{{ rate.totalAlarms || 0 }} <span class="span">条</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box_text" style="margin-top: 30px;">
|
<div class="box_text" style="margin-top: 30px;">
|
||||||
<div class="box_text1">告警总数</div>
|
<div class="box_text1">确认告警总数</div>
|
||||||
<div class="box_text3"> <img src="@/assets/navigation/sysy_gjl2.png" alt=""></div>
|
<div class="box_text3"> <img src="@/assets/navigation/sysy_gjl2.png" alt=""></div>
|
||||||
<div class="box_text2">{{rate.confirmedCount || 0}} <span class="span">件</span></div>
|
<div class="box_text2">{{ rate.confirmedCount || 0 }} <span class="span">条</span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -294,7 +305,7 @@
|
|||||||
<span :class="tabs == 4 ? 'span1' : ''" @click="tourTaskInit(4)">日</span>
|
<span :class="tabs == 4 ? 'span1' : ''" @click="tourTaskInit(4)">日</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="right_three_body" v-loading ="loading2">
|
<div class="right_three_body" v-loading="loading2">
|
||||||
<div class="three_left">
|
<div class="three_left">
|
||||||
<div class="three_left_top">{{ tourTaskInfo.executeRate }}%</div>
|
<div class="three_left_top">{{ tourTaskInfo.executeRate }}%</div>
|
||||||
<div class="three_left_bottom">任务执行率</div>
|
<div class="three_left_bottom">任务执行率</div>
|
||||||
@ -324,7 +335,7 @@ import Alarminformation from "@/views/monitorsystem/alarminformation.vue";
|
|||||||
import { getNotCheckAlarmCount } from '@/api/home';
|
import { getNotCheckAlarmCount } from '@/api/home';
|
||||||
import { CountTo as BaseCountTo } from 'vue3-count-to'
|
import { CountTo as BaseCountTo } from 'vue3-count-to'
|
||||||
import { ref, onMounted, onBeforeUnmount, nextTick, reactive, watch } from "vue";
|
import { ref, onMounted, onBeforeUnmount, nextTick, reactive, watch } from "vue";
|
||||||
import { getMainDeviceNumber, getPatrolDeviceOnLine, getWeatherLogList, getAlarmLogList, getExceptionEventStat, getTaskTodoStat,getConfirmationRate } from "@/api/home";
|
import { getMainDeviceNumber, getPatrolDeviceOnLine, getWeatherLogList, getAlarmLogList, getExceptionEventStat, getTaskTodoStat, getConfirmationRate } from "@/api/home";
|
||||||
import Modelset from './3DModelSet.vue';
|
import Modelset from './3DModelSet.vue';
|
||||||
import { getTaskTodoStatByMonth } from "@/api/areaboard";
|
import { getTaskTodoStatByMonth } from "@/api/areaboard";
|
||||||
import { useUserStore } from '@/store/modules/user';
|
import { useUserStore } from '@/store/modules/user';
|
||||||
@ -416,24 +427,6 @@ function getInit() {
|
|||||||
}
|
}
|
||||||
getWeatherLogList(params).then((res: any) => {
|
getWeatherLogList(params).then((res: any) => {
|
||||||
environmentInfo.value = res.data
|
environmentInfo.value = res.data
|
||||||
if (res.data.temperature == "") {
|
|
||||||
environmentInfo.value.temperature = "无"
|
|
||||||
}
|
|
||||||
if (res.data.humidity == "") {
|
|
||||||
environmentInfo.value.humidity = "无"
|
|
||||||
}
|
|
||||||
if (res.data.rainfall == "") {
|
|
||||||
environmentInfo.value.rainfall = "无"
|
|
||||||
}
|
|
||||||
if (res.data.windSpeed == "") {
|
|
||||||
environmentInfo.value.windSpeed = "无"
|
|
||||||
}
|
|
||||||
if (res.data.windDirection == "") {
|
|
||||||
environmentInfo.value.windDirection = "无"
|
|
||||||
}
|
|
||||||
if (res.data.pressure == "") {
|
|
||||||
environmentInfo.value.pressure = "无"
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
//获取巡视设备在线率
|
//获取巡视设备在线率
|
||||||
getPatrolDeviceOnLine(params).then((res: any) => {
|
getPatrolDeviceOnLine(params).then((res: any) => {
|
||||||
@ -448,42 +441,42 @@ function getInit() {
|
|||||||
const tourTaskInfo: any = ref({})
|
const tourTaskInfo: any = ref({})
|
||||||
// 天气
|
// 天气
|
||||||
const url = userStore.webApiBaseUrl;
|
const url = userStore.webApiBaseUrl;
|
||||||
const ws1 = new WebSocket(userStore.wsApiBaseUrl + '/websocket/vibe_run_data_' + userStore.userId);
|
// const ws1 = new WebSocket(userStore.wsApiBaseUrl + '/websocket/vibe_run_data_' + userStore.userId);
|
||||||
// var source = new EventSource(url + "/sse/connect/vibe_run_data_" + userStore.userId,)
|
// // var source = new EventSource(url + "/sse/connect/vibe_run_data_" + userStore.userId,)
|
||||||
function setupWebSocket() {
|
// function setupWebSocket() {
|
||||||
|
|
||||||
ws1.onopen = () => {
|
// ws1.onopen = () => {
|
||||||
console.log('WebSocket连接成功');
|
// console.log('WebSocket连接成功');
|
||||||
};
|
// };
|
||||||
ws1.onerror = (error: any) => {
|
// ws1.onerror = (error: any) => {
|
||||||
};
|
// };
|
||||||
ws1.onmessage = (e: any) => {
|
// ws1.onmessage = (e: any) => {
|
||||||
|
|
||||||
if (e.data != 0) {
|
// if (e.data != 0) {
|
||||||
environment.value = JSON.parse(e.data)
|
// environment.value = JSON.parse(e.data)
|
||||||
if (environment.value.type == 1) {
|
// if (environment.value.type == 1) {
|
||||||
environmentInfo.value.temperature = environment.value.value
|
// environmentInfo.value.temperature = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 2) {
|
// if (environment.value.type == 2) {
|
||||||
environmentInfo.value.humidity = environment.value.value
|
// environmentInfo.value.humidity = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 3) {
|
// if (environment.value.type == 3) {
|
||||||
environmentInfo.value.windSpeed = environment.value.value
|
// environmentInfo.value.windSpeed = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 4) {
|
// if (environment.value.type == 4) {
|
||||||
environmentInfo.value.rainfall = environment.value.value
|
// environmentInfo.value.rainfall = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 5) {
|
// if (environment.value.type == 5) {
|
||||||
environmentInfo.value.windDirection = environment.value.value
|
// environmentInfo.value.windDirection = environment.value.value
|
||||||
}
|
// }
|
||||||
if (environment.value.type == 6) {
|
// if (environment.value.type == 6) {
|
||||||
environmentInfo.value.pressure = environment.value.value
|
// environmentInfo.value.pressure = environment.value.value
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
};
|
// };
|
||||||
ws1.onclose = () => {
|
// ws1.onclose = () => {
|
||||||
};
|
// };
|
||||||
}
|
// }
|
||||||
|
|
||||||
const environmentInfo = ref({
|
const environmentInfo = ref({
|
||||||
temperature: "",
|
temperature: "",
|
||||||
@ -494,9 +487,9 @@ const environmentInfo = ref({
|
|||||||
pressure: ""
|
pressure: ""
|
||||||
})
|
})
|
||||||
const environment = ref()
|
const environment = ref()
|
||||||
const rate:any = ref()
|
const rate: any = ref()
|
||||||
function getgetConfirmationRate(){
|
function getgetConfirmationRate() {
|
||||||
getConfirmationRate({stationId:userStore.stationId}).then((res:any)=>{
|
getConfirmationRate({ stationId: userStore.stationId }).then((res: any) => {
|
||||||
rate.value = res.data
|
rate.value = res.data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -509,16 +502,16 @@ onMounted(() => {
|
|||||||
bsGetProductProcess()
|
bsGetProductProcess()
|
||||||
getInit()
|
getInit()
|
||||||
tourTaskInit('1')
|
tourTaskInit('1')
|
||||||
setupWebSocket()
|
// setupWebSocket()
|
||||||
getEquipment()
|
getEquipment()
|
||||||
getgetConfirmationRate()
|
getgetConfirmationRate()
|
||||||
|
|
||||||
alarmCount.value = userStore.alarmCount
|
alarmCount.value = userStore.alarmCount
|
||||||
});
|
});
|
||||||
onBeforeUnmount(() => {
|
onBeforeUnmount(() => {
|
||||||
if (ws1 != null) {
|
// if (ws1 != null) {
|
||||||
ws1.close()
|
// ws1.close()
|
||||||
}
|
// }
|
||||||
clearInterval(tableTimer)
|
clearInterval(tableTimer)
|
||||||
})
|
})
|
||||||
const isautoRotate = ref(true)
|
const isautoRotate = ref(true)
|
||||||
@ -701,7 +694,7 @@ const tabs = ref(1)
|
|||||||
top: 16px;
|
top: 16px;
|
||||||
left: 15px;
|
left: 15px;
|
||||||
width: 450px;
|
width: 450px;
|
||||||
height: 458px;
|
height: 400px;
|
||||||
background: url(@/assets/navigation/sy_zsb.png);
|
background: url(@/assets/navigation/sy_zsb.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
background-color: #001f59d7;
|
background-color: #001f59d7;
|
||||||
@ -721,7 +714,7 @@ const tabs = ref(1)
|
|||||||
background-image: url(@/assets/sytlechange/one.svg);
|
background-image: url(@/assets/sytlechange/one.svg);
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
margin-bottom: 30px;
|
margin: 17px 0px;
|
||||||
|
|
||||||
.all_img {
|
.all_img {
|
||||||
width: 23px;
|
width: 23px;
|
||||||
@ -766,10 +759,10 @@ const tabs = ref(1)
|
|||||||
|
|
||||||
.stationboard-left2 {
|
.stationboard-left2 {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 490px;
|
top: 430px;
|
||||||
left: 15px;
|
left: 15px;
|
||||||
width: 450px;
|
width: 450px;
|
||||||
height: 247px;
|
height: 290px;
|
||||||
background: url(@/assets/navigation/sy_zz.png);
|
background: url(@/assets/navigation/sy_zz.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
background-color: #001f59d7;
|
background-color: #001f59d7;
|
||||||
@ -789,7 +782,7 @@ const tabs = ref(1)
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin-bottom: 25px;
|
margin-bottom: 40px;
|
||||||
|
|
||||||
.two_img {
|
.two_img {
|
||||||
width: 36px;
|
width: 36px;
|
||||||
@ -863,10 +856,10 @@ const tabs = ref(1)
|
|||||||
|
|
||||||
.stationboard-left3 {
|
.stationboard-left3 {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 750px;
|
top: 730px;
|
||||||
left: 15px;
|
left: 15px;
|
||||||
width: 450px;
|
width: 450px;
|
||||||
height: 253px;
|
height: 273px;
|
||||||
background: url(@/assets/navigation/sy_gj.png);
|
background: url(@/assets/navigation/sy_gj.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
background-color: #001f59d7;
|
background-color: #001f59d7;
|
||||||
@ -889,7 +882,7 @@ const tabs = ref(1)
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 20px;
|
||||||
|
|
||||||
.three_top {
|
.three_top {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -916,6 +909,7 @@ const tabs = ref(1)
|
|||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
color: #00FFFF;
|
color: #00FFFF;
|
||||||
line-height: 23px;
|
line-height: 23px;
|
||||||
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.three_bottom_two {
|
.three_bottom_two {
|
||||||
@ -1108,6 +1102,7 @@ const tabs = ref(1)
|
|||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
color: #00FFFF;
|
color: #00FFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
.spanc2 {
|
.spanc2 {
|
||||||
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
@ -1115,6 +1110,7 @@ const tabs = ref(1)
|
|||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
color: #009933;
|
color: #009933;
|
||||||
}
|
}
|
||||||
|
|
||||||
.spanc3 {
|
.spanc3 {
|
||||||
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
@ -1149,13 +1145,15 @@ const tabs = ref(1)
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
.img_txt{
|
|
||||||
|
.img_txt {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
img{
|
|
||||||
|
img {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -65,9 +65,9 @@ const initlist = ref({
|
|||||||
convert_urls: false,
|
convert_urls: false,
|
||||||
branding: false,
|
branding: false,
|
||||||
})
|
})
|
||||||
let isDark: any = useDark().value == true ? '1' : '2'
|
let isDark: any = '1'
|
||||||
watch(useDark(), () => {
|
watch(useDark(), () => {
|
||||||
isDark = useDark().value == true ? '1' : '2'
|
isDark = '1'
|
||||||
if (useDark().value == true) {
|
if (useDark().value == true) {
|
||||||
initlist.value.skin_url = produrl.value + '/tinymce/skins/ui/oxide-dark'
|
initlist.value.skin_url = produrl.value + '/tinymce/skins/ui/oxide-dark'
|
||||||
contentstyleval.value = 'body { background-color: #282828;color:#fff;border:none;}'
|
contentstyleval.value = 'body { background-color: #282828;color:#fff;border:none;}'
|
||||||
|
@ -20,6 +20,7 @@ function getInit() {
|
|||||||
getAlarmLogById(params).then((res: any) => {
|
getAlarmLogById(params).then((res: any) => {
|
||||||
res.data.checkResult = '1'
|
res.data.checkResult = '1'
|
||||||
examinationInfo.value = res.data
|
examinationInfo.value = res.data
|
||||||
|
examinationInfo.value
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -98,7 +99,7 @@ const num = ref(0)
|
|||||||
<div>
|
<div>
|
||||||
<div class="public-overlay">
|
<div class="public-overlay">
|
||||||
<div class="newexamination">
|
<div class="newexamination">
|
||||||
<div class="public-examination" :style="examinationInfo.systemType == '02'?'' : 'height: 520px;'" >
|
<div class="public-examination">
|
||||||
<img v-if="examinationInfo.checkFlag == 1" style="position:absolute;top: 0px;left: 0px;"
|
<img v-if="examinationInfo.checkFlag == 1" style="position:absolute;top: 0px;left: 0px;"
|
||||||
src="@/assets/giveanalarm/hecha.png" alt="">
|
src="@/assets/giveanalarm/hecha.png" alt="">
|
||||||
<img style="position:absolute;top: 15px;right: 20px;cursor:pointer;" src="@/assets/giveanalarm/x.png" alt=""
|
<img style="position:absolute;top: 15px;right: 20px;cursor:pointer;" src="@/assets/giveanalarm/x.png" alt=""
|
||||||
@ -109,32 +110,24 @@ const num = ref(0)
|
|||||||
<div class="public-details-title">告警信息{{ examinationInfo.status }}</div>
|
<div class="public-details-title">告警信息{{ examinationInfo.status }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex;">
|
<div style="display: flex;">
|
||||||
<div :style="examinationInfo.systemType == '02'?'width:370px;height: 250px;' : 'width:370px;height: 150px;'">
|
<div style="width:370px;height: 250px;">
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '02'">
|
<div class="public-details-conent" >
|
||||||
<div class="public-details-name">点位名称:</div>
|
<div class="public-details-name">点位名称:</div>
|
||||||
<div>{{ examinationInfo.bayName }}</div>
|
<div>{{ examinationInfo.bayName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '01'">
|
<div class="public-details-conent" >
|
||||||
<div class="public-details-name">信号名称:</div>
|
|
||||||
<div>{{ examinationInfo.signalName }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '02'" >
|
|
||||||
<div class="public-details-name">设备名称:</div>
|
<div class="public-details-name">设备名称:</div>
|
||||||
<div>{{ examinationInfo.patroldeviceName }}</div>
|
<div>{{ examinationInfo.patroldeviceName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '01'" >
|
|
||||||
<div class="public-details-name">主设备名称:</div>
|
|
||||||
<div>{{ examinationInfo.mainDeviceName }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="public-details-conent">
|
<div class="public-details-conent">
|
||||||
<div class="public-details-name">部件名称:</div>
|
<div class="public-details-name">部件名称:</div>
|
||||||
<div>{{ examinationInfo.componentName }}</div>
|
<div>{{ examinationInfo.componentName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '02'">
|
<div class="public-details-conent">
|
||||||
<div class="public-details-name">告警来源:</div>
|
<div v-if="examinationInfo.alarmSourceType == 1" class="public-details-name">告警来源:</div>
|
||||||
<div>{{ currency(AlarmSourceList, examinationInfo.taskAlarmType) }}</div>
|
<div>{{ currency(AlarmSourceList, examinationInfo.taskAlarmType) }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '02'">
|
<div class="public-details-conent">
|
||||||
<div class="public-details-name">告警阈值:</div>
|
<div class="public-details-name">告警阈值:</div>
|
||||||
<span style="display:block;" >
|
<span style="display:block;" >
|
||||||
<span style="display: inline-block;width: 50%;text-align: left;"><span>预警:</span><span>{{
|
<span style="display: inline-block;width: 50%;text-align: left;"><span>预警:</span><span>{{
|
||||||
@ -154,11 +147,10 @@ const num = ref(0)
|
|||||||
|
|
||||||
<div class="public-details-conent">
|
<div class="public-details-conent">
|
||||||
<div class="public-details-name">告警时间:</div>
|
<div class="public-details-name">告警时间:</div>
|
||||||
<div v-if="examinationInfo.systemType == '02'" >{{ examinationInfo.alarmDate }}</div>
|
<div >{{ examinationInfo.alarmDate }}</div>
|
||||||
<div v-if="examinationInfo.systemType == '01'" >{{ examinationInfo.alarmTime }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="examinationInfo.systemType == '02'" style="width:290px;height: 200px;">
|
<div v-if="examinationInfo.alarmSourceType == 1" style="width:290px;height: 200px;">
|
||||||
<div style="width:100%;height:100%; position: relative;">
|
<div style="width:100%;height:100%; position: relative;">
|
||||||
<div title="查看图片" style="position: absolute;
|
<div title="查看图片" style="position: absolute;
|
||||||
right: 5px;
|
right: 5px;
|
||||||
@ -197,14 +189,11 @@ const num = ref(0)
|
|||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent">
|
<div class="public-details-conent">
|
||||||
<div class="public-details-name">告警描述:</div>
|
<div class="public-details-name">告警描述:</div>
|
||||||
<div v-if="examinationInfo.systemType == '02'" :title="examinationInfo.content" style="height:63px;width: 560px;display: -webkit-box;
|
<div :title="examinationInfo.content" style="height:63px;width: 560px;display: -webkit-box;
|
||||||
-webkit-box-orient: vertical;
|
-webkit-box-orient: vertical;
|
||||||
-webkit-line-clamp: 3;
|
-webkit-line-clamp: 3;
|
||||||
overflow: hidden;">{{ examinationInfo.content }}</div>
|
overflow: hidden;">{{ examinationInfo.content }}</div>
|
||||||
<div v-if="examinationInfo.systemType == '01'" :title="examinationInfo.alarmMessage" style="height:63px;width: 560px;display: -webkit-box;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
-webkit-line-clamp: 3;
|
|
||||||
overflow: hidden;">{{ examinationInfo.alarmMessage }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="display:flex;align-items: center;">
|
<div style="display:flex;align-items: center;">
|
||||||
|
@ -162,7 +162,7 @@ const handleChange = (value: any) => {
|
|||||||
<img src="@/assets/giveanalarm/jg_wz.png" alt="" style="width:180px ;">
|
<img src="@/assets/giveanalarm/jg_wz.png" alt="" style="width:180px ;">
|
||||||
<div style="font-size: 60px; color: red;">[{{ examinationData.length }}]</div>
|
<div style="font-size: 60px; color: red;">[{{ examinationData.length }}]</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-examination" :style="examinationInfo.systemType == '02'?'' : 'height: 560px;'">
|
<div class="public-examination">
|
||||||
<img v-if="examinationInfo.checkFlag == 1" style="position:absolute;top: 0px;left: 0px;"
|
<img v-if="examinationInfo.checkFlag == 1" style="position:absolute;top: 0px;left: 0px;"
|
||||||
src="@/assets/giveanalarm/hecha.png" alt="">
|
src="@/assets/giveanalarm/hecha.png" alt="">
|
||||||
<img style="position:absolute;top: 15px;right: 20px;cursor:pointer;" src="@/assets/giveanalarm/x.png" alt=""
|
<img style="position:absolute;top: 15px;right: 20px;cursor:pointer;" src="@/assets/giveanalarm/x.png" alt=""
|
||||||
@ -195,32 +195,24 @@ const handleChange = (value: any) => {
|
|||||||
<div class="public-details-title">告警信息{{ examinationInfo.status }}</div>
|
<div class="public-details-title">告警信息{{ examinationInfo.status }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex;">
|
<div style="display: flex;">
|
||||||
<div :style="examinationInfo.systemType == '02'?'width:370px;height: 250px;' : 'width:370px;height: 150px;'">
|
<div style="width:370px;height: 250px;">
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '02'">
|
<div class="public-details-conent">
|
||||||
<div class="public-details-name">点位名称:</div>
|
<div class="public-details-name">点位名称:</div>
|
||||||
<div>{{ examinationInfo.bayName }}</div>
|
<div>{{ examinationInfo.bayName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '01'">
|
<div class="public-details-conent">
|
||||||
<div class="public-details-name">信号名称:</div>
|
|
||||||
<div>{{ examinationInfo.signalName }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '02'" >
|
|
||||||
<div class="public-details-name">设备名称:</div>
|
<div class="public-details-name">设备名称:</div>
|
||||||
<div>{{ examinationInfo.patroldeviceName }}</div>
|
<div>{{ examinationInfo.patroldeviceName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '01'" >
|
|
||||||
<div class="public-details-name">主设备名称:</div>
|
|
||||||
<div>{{ examinationInfo.mainDeviceName }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="public-details-conent">
|
<div class="public-details-conent">
|
||||||
<div class="public-details-name">部件名称:</div>
|
<div class="public-details-name">部件名称:</div>
|
||||||
<div>{{ examinationInfo.componentName }}</div>
|
<div>{{ examinationInfo.componentName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '02'">
|
<div class="public-details-conent" v-if="examinationInfo.alarmSourceType == 1">
|
||||||
<div class="public-details-name">告警来源:</div>
|
<div class="public-details-name">告警来源:</div>
|
||||||
<div>{{ currency(AlarmSourceList, examinationInfo.taskAlarmType) }}</div>
|
<div>{{ currency(AlarmSourceList, examinationInfo.taskAlarmType) }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent" v-if="examinationInfo.systemType == '02'">
|
<div class="public-details-conent">
|
||||||
<div class="public-details-name">告警阈值:</div>
|
<div class="public-details-name">告警阈值:</div>
|
||||||
<span style="display:block;" >
|
<span style="display:block;" >
|
||||||
<span style="display: inline-block;width: 50%;text-align: left;"><span>预警:</span><span>{{
|
<span style="display: inline-block;width: 50%;text-align: left;"><span>预警:</span><span>{{
|
||||||
@ -241,11 +233,10 @@ const handleChange = (value: any) => {
|
|||||||
|
|
||||||
<div class="public-details-conent">
|
<div class="public-details-conent">
|
||||||
<div class="public-details-name">告警时间:</div>
|
<div class="public-details-name">告警时间:</div>
|
||||||
<div v-if="examinationInfo.systemType == '02'" >{{ examinationInfo.alarmDate }}</div>
|
<div>{{ examinationInfo.alarmDate }}</div>
|
||||||
<div v-if="examinationInfo.systemType == '01'" >{{ examinationInfo.alarmTime }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="width:290px;height: 200px;" v-if="examinationInfo.systemType == '02'">
|
<div v-if="examinationInfo.alarmSourceType == 1" style="width:290px;height: 200px;">
|
||||||
<div style="width:100%;height:100%; position: relative;">
|
<div style="width:100%;height:100%; position: relative;">
|
||||||
<div title="查看图片" style="position: absolute;
|
<div title="查看图片" style="position: absolute;
|
||||||
right: 5px;
|
right: 5px;
|
||||||
@ -283,14 +274,10 @@ const handleChange = (value: any) => {
|
|||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent">
|
<div class="public-details-conent">
|
||||||
<div class="public-details-name">告警描述:</div>
|
<div class="public-details-name">告警描述:</div>
|
||||||
<div v-if="examinationInfo.systemType == '02'" :title="examinationInfo.content" style="height:63px;width: 560px;display: -webkit-box;
|
<div :title="examinationInfo.content" style="height:63px;width: 560px;display: -webkit-box;
|
||||||
-webkit-box-orient: vertical;
|
-webkit-box-orient: vertical;
|
||||||
-webkit-line-clamp: 3;
|
-webkit-line-clamp: 3;
|
||||||
overflow: hidden;">{{ examinationInfo.content }}</div>
|
overflow: hidden;">{{ examinationInfo.content }}</div>
|
||||||
<div v-if="examinationInfo.systemType == '01'" :title="examinationInfo.alarmMessage" style="height:63px;width: 560px;display: -webkit-box;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
-webkit-line-clamp: 3;
|
|
||||||
overflow: hidden;">{{ examinationInfo.alarmMessage }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div style="display:flex;align-items: center;">
|
<div style="display:flex;align-items: center;">
|
||||||
<div class="public-details-line"></div>
|
<div class="public-details-line"></div>
|
||||||
|
@ -549,7 +549,7 @@ function leadingOut() {
|
|||||||
<img src="@/assets/monitorsystem/top_bj.png" alt="" class="header-img-box">
|
<img src="@/assets/monitorsystem/top_bj.png" alt="" class="header-img-box">
|
||||||
<div class="header-left">
|
<div class="header-left">
|
||||||
<img src="@/assets/monitorsystem/top_logo.png" alt="">
|
<img src="@/assets/monitorsystem/top_logo.png" alt="">
|
||||||
<div class="header-left-title">变电站远程智能巡视系统
|
<div class="header-left-title">配电网人工智能平台
|
||||||
<span style="position: relative; display: inline-block; font-size: 18px;font-family: 'Arial Normal', 'Arial';
|
<span style="position: relative; display: inline-block; font-size: 18px;font-family: 'Arial Normal', 'Arial';
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
@ -607,7 +607,7 @@ function leadingOut() {
|
|||||||
<div class="header-information">
|
<div class="header-information">
|
||||||
<img src="@/assets/monitorsystem/header/u385.png" alt="" style="width:16px;height: 16px;">
|
<img src="@/assets/monitorsystem/header/u385.png" alt="" style="width:16px;height: 16px;">
|
||||||
<div class="stationintroducebox">
|
<div class="stationintroducebox">
|
||||||
<div class="introduceboxtext1">变电站远程智能巡视系统</div>
|
<div class="introduceboxtext1">配电网人工智能平台</div>
|
||||||
<div class="introduceboxtext2">{{ systemInfo.version }}</div>
|
<div class="introduceboxtext2">{{ systemInfo.version }}</div>
|
||||||
<div style="display: flex;align-items: center;padding-bottom: 8px;">
|
<div style="display: flex;align-items: center;padding-bottom: 8px;">
|
||||||
<div class="introduceboxline"></div>
|
<div class="introduceboxline"></div>
|
||||||
|
16
riis-web/src/views/question/answering/index.vue
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
export default {
|
||||||
|
name: 'answering' // 智能问答
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { useUserStore } from '@/store/modules/user';
|
||||||
|
const userStore = useUserStore();
|
||||||
|
// answeringUrl answeringUrl
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<iframe :src="userStore.answeringUrl" style="width:100%; height:calc(90vh);margin-top: 10px;" frameborder="0" allow="microphone" >
|
||||||
|
</iframe>
|
||||||
|
</template>
|
||||||
|
<style scoped lang="scss"></style>
|
@ -1337,7 +1337,7 @@ onMounted(() => {
|
|||||||
border: 1px solid #131a25;
|
border: 1px solid #131a25;
|
||||||
border-top: 0px;
|
border-top: 0px;
|
||||||
padding: 0px 10px 20px 10px;
|
padding: 0px 10px 20px 10px;
|
||||||
background-color: #131a25;
|
// background-color: #131a25;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border-radius: 0px 5px 5px 5px;
|
border-radius: 0px 5px 5px 5px;
|
||||||
}
|
}
|
||||||
|
504
riis-web/src/views/task/alarmInfo/editvideo.vue
Normal file
@ -0,0 +1,504 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
export default {
|
||||||
|
name: 'editvideo' //控制摄像机
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, onMounted } from "vue";
|
||||||
|
import { ElMessageBox, ElMessage } from "element-plus";
|
||||||
|
import axios from 'axios';
|
||||||
|
import JessibucaPlayer from '@/components/jessibuca/index1.vue'
|
||||||
|
import { useUserStore } from '@/store/modules/user';
|
||||||
|
const userStore = useUserStore();
|
||||||
|
const videoUrl = ref("")
|
||||||
|
const props = defineProps({
|
||||||
|
rowInfo: {
|
||||||
|
required: false,
|
||||||
|
type: Object,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
online: {
|
||||||
|
required: false,
|
||||||
|
type: String,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
|
const controSpeed = ref(100) // 摄像头转动速度默认值 30
|
||||||
|
function ptzCamera(command: any) { // 监控视频控制方法
|
||||||
|
isGaoliang.value = command
|
||||||
|
if (props.online != "1") {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (channelId.value == "" || channelId.value == undefined) {
|
||||||
|
ElMessage({
|
||||||
|
type: 'error',
|
||||||
|
message: '暂时无法调试,请先检查视频监控是否正常!',
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
|
||||||
|
if (res.data.data == "0") {
|
||||||
|
axios.post(userStore.webApiMonitorUrl + '/api/ptz/control/' + deviceId.value + '/' + channelId.value + '?command=' + command +
|
||||||
|
'&horizonSpeed=' + controSpeed.value + '&verticalSpeed=' + controSpeed.value + '&zoomSpeed=' + controSpeed.value, {}).then((res: any) => { })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
function condensationChang(command: any) { // 光聚方法
|
||||||
|
if (props.online != "1") {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (channelId.value == "" || channelId.value == undefined) {
|
||||||
|
ElMessage({
|
||||||
|
type: 'error',
|
||||||
|
message: '暂时无法调试,请先检查视频监控是否正常!',
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 近(42H ) 66 远(41H) 65
|
||||||
|
const cmdCode = ref()
|
||||||
|
if (command == '加') {
|
||||||
|
cmdCode.value = 65
|
||||||
|
isGaoliang.value = '65'
|
||||||
|
} else if (command == '减') {
|
||||||
|
cmdCode.value = 66
|
||||||
|
isGaoliang.value = '66'
|
||||||
|
}
|
||||||
|
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
|
||||||
|
if (res.data.data == "0") {
|
||||||
|
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '¶meter1=80¶meter2=0&combindCode2=0', {}).then((res: any) => { })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
function apertureChang(command: any) { // 光圈方法
|
||||||
|
if (props.online != "1") {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (channelId.value == "" || channelId.value == undefined) {
|
||||||
|
ElMessage({
|
||||||
|
type: 'error',
|
||||||
|
message: '暂时无法调试,请先检查视频监控是否正常!',
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 缩小(48H ) 72 放大(44H) 70
|
||||||
|
const cmdCode = ref(72)
|
||||||
|
if (command == '加') {
|
||||||
|
cmdCode.value = 70
|
||||||
|
isGaoliang.value = '70'
|
||||||
|
} else if (command == '减') {
|
||||||
|
cmdCode.value = 72
|
||||||
|
isGaoliang.value = '72'
|
||||||
|
}
|
||||||
|
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
|
||||||
|
if (res.data.data == "0") {
|
||||||
|
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '¶meter1=0¶meter2=80&combindCode2=0', {}).then((res: any) => { })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function videoRefresh() {
|
||||||
|
videoUrl.value = videoUrl.value + '?Math=' + Math.random()
|
||||||
|
}
|
||||||
|
const deviceId = ref("")
|
||||||
|
const channelId = ref("")
|
||||||
|
const videofmp4 = ref('')
|
||||||
|
onMounted(() => {
|
||||||
|
if (props.rowInfo.deviceId == undefined) {
|
||||||
|
deviceId.value = props.rowInfo.deviceid
|
||||||
|
channelId.value = props.rowInfo.channelid
|
||||||
|
} else {
|
||||||
|
deviceId.value = props.rowInfo.deviceId
|
||||||
|
channelId.value = props.rowInfo.channelId
|
||||||
|
}
|
||||||
|
axios.get(userStore.webApiMonitorUrl + '/api/play/start/' + deviceId.value + '/' + channelId.value, {}).then((ress: any) => {
|
||||||
|
if (ress.data.data != undefined) {
|
||||||
|
videoUrl.value = ress.data.data.ws_flv
|
||||||
|
videofmp4.value = ress.data.data.fmp4
|
||||||
|
}
|
||||||
|
}).catch(function (error: any) {
|
||||||
|
})
|
||||||
|
})
|
||||||
|
const isGaoliang: any = ref("")
|
||||||
|
function quxiao() {
|
||||||
|
isGaoliang.value = ''
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div class="editvideo-box">
|
||||||
|
<div style="width: 98%; height: 650px; margin: auto;">
|
||||||
|
<JessibucaPlayer :isClose="false" :_uid="'editvideo1'" :visible.sync="true" :videoUrl="videoUrl"
|
||||||
|
:videofmp4="videofmp4" :hasAudio="true" fluent autoplay live></JessibucaPlayer>
|
||||||
|
</div>
|
||||||
|
<div class="Camera-buttons-box1">
|
||||||
|
<div class="Camera-buttons-box">
|
||||||
|
<div class="Camera-left-button1" @mousedown="ptzCamera('up')" @mouseup="ptzCamera('stop')"></div>
|
||||||
|
<div class="Camera-left-button2" @mousedown="ptzCamera('upright')" @mouseup="ptzCamera('stop')"></div>
|
||||||
|
<div class="Camera-left-button3" @mousedown="ptzCamera('right')" @mouseup="ptzCamera('stop')"></div>
|
||||||
|
<div class="Camera-left-button4" @mousedown="ptzCamera('downright')" @mouseup="ptzCamera('stop')"></div>
|
||||||
|
<div class="Camera-left-button5" @mousedown="ptzCamera('down')" @mouseup="ptzCamera('stop')"></div>
|
||||||
|
<div class="Camera-left-button6" @mousedown="ptzCamera('downleft')" @mouseup="ptzCamera('stop')"></div>
|
||||||
|
<div class="Camera-left-button7" @mousedown="ptzCamera('left')" @mouseup="ptzCamera('stop')"></div>
|
||||||
|
<div class="Camera-left-button8" @mousedown="ptzCamera('upleft')" @mouseup="ptzCamera('stop')"></div>
|
||||||
|
<div class="Camera-left-button9" @click="videoRefresh"></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="focallengthbox">
|
||||||
|
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == 'zoomout' }"
|
||||||
|
@mousedown="ptzCamera('zoomout')" @mouseup="ptzCamera('stop')">
|
||||||
|
<img src="@/assets/videoimg/left.png" style="width:8px;height:12px" alt="">
|
||||||
|
</div>
|
||||||
|
<div class="focallength2">缩放</div>
|
||||||
|
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == 'zoomin' }"
|
||||||
|
@mousedown="ptzCamera('zoomin')" @mouseup="ptzCamera('stop')">
|
||||||
|
<img src="@/assets/videoimg/right.png" style="width:8px;height:12px" alt="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="focallengthbox">
|
||||||
|
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == '66' }"
|
||||||
|
@mousedown="condensationChang('减')" @mouseup="quxiao">
|
||||||
|
<img src="@/assets/videoimg/left.png" style="width:8px;height:12px" alt="">
|
||||||
|
</div>
|
||||||
|
<div class="focallength2">光聚</div>
|
||||||
|
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == '65' }"
|
||||||
|
@mousedown="condensationChang('加')" @mouseup="quxiao">
|
||||||
|
<img src="@/assets/videoimg/right.png" style="width:8px;height:12px" alt="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="focallengthbox">
|
||||||
|
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == '72' }"
|
||||||
|
@mousedown="apertureChang('减')" @mouseup="quxiao">
|
||||||
|
<img src="@/assets/videoimg/left.png" style="width:8px;height:12px" alt="">
|
||||||
|
</div>
|
||||||
|
<div class="focallength2">光圈</div>
|
||||||
|
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == '70' }"
|
||||||
|
@mousedown="apertureChang('加')" @mouseup="quxiao">
|
||||||
|
<img src="@/assets/videoimg/right.png" style="width:8px;height:12px" alt="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.Camera-buttons-box1 {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-buttons-box {
|
||||||
|
position: relative;
|
||||||
|
width: 180px;
|
||||||
|
height: 165px;
|
||||||
|
// margin-top: 20px;
|
||||||
|
// margin-left: 50px;
|
||||||
|
// margin-bottom: 10px;
|
||||||
|
// display: flex;
|
||||||
|
// flex-wrap: wrap;
|
||||||
|
// justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button1 {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 29px;
|
||||||
|
left: 65px;
|
||||||
|
width: 44px;
|
||||||
|
height: 35px;
|
||||||
|
background: url(@/assets/navigation/sxj_01.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button2 {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 33px;
|
||||||
|
left: 100px;
|
||||||
|
width: 44px;
|
||||||
|
height: 44px;
|
||||||
|
background: url(@/assets/navigation/sxj_02.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button3 {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 65px;
|
||||||
|
left: 116px;
|
||||||
|
width: 34px;
|
||||||
|
height: 44px;
|
||||||
|
background: url(@/assets/navigation/sxj_03.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button4 {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 100px;
|
||||||
|
left: 103px;
|
||||||
|
width: 44px;
|
||||||
|
height: 44px;
|
||||||
|
background: url(@/assets/navigation/sxj_04.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button5 {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 117px;
|
||||||
|
left: 70px;
|
||||||
|
width: 44px;
|
||||||
|
height: 34px;
|
||||||
|
background: url(@/assets/navigation/sxj_05.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button6 {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 103px;
|
||||||
|
left: 35px;
|
||||||
|
width: 43px;
|
||||||
|
height: 44px;
|
||||||
|
background: url(@/assets/navigation/sxj_06.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button7 {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 69px;
|
||||||
|
left: 28px;
|
||||||
|
width: 35px;
|
||||||
|
height: 44px;
|
||||||
|
background: url(@/assets/navigation/sxj_07.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button8 {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 35px;
|
||||||
|
left: 33px;
|
||||||
|
width: 43px;
|
||||||
|
height: 43px;
|
||||||
|
background: url(@/assets/navigation/sxj_08.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button9 {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 63px;
|
||||||
|
left: 63px;
|
||||||
|
width: 54px;
|
||||||
|
height: 54px;
|
||||||
|
background: url(@/assets/navigation/sxj_09.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button1:hover {
|
||||||
|
background: url(@/assets/navigation/sxj_01.png) no-repeat center center;
|
||||||
|
background: url(@/assets/navigation/sxj_011.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button2:hover {
|
||||||
|
background: url(@/assets/navigation/sxj_02.png) no-repeat center center;
|
||||||
|
background: url(@/assets/navigation/sxj_022.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button3:hover {
|
||||||
|
background: url(@/assets/navigation/sxj_03.png) no-repeat center center;
|
||||||
|
background: url(@/assets/navigation/sxj_033.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button4:hover {
|
||||||
|
background: url(@/assets/navigation/sxj_04.png) no-repeat center center;
|
||||||
|
background:url(@/assets/navigation/sxj_044.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button5:hover {
|
||||||
|
background: url(@/assets/navigation/sxj_05.png) no-repeat center center;
|
||||||
|
background: url(@/assets/navigation/sxj_055.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button6:hover {
|
||||||
|
background: url(@/assets/navigation/sxj_06.png) no-repeat center center;
|
||||||
|
background: url(@/assets/navigation/sxj_066.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button7:hover {
|
||||||
|
background: url(@/assets/navigation/sxj_07.png) no-repeat center center;
|
||||||
|
background: url(@/assets/navigation/sxj_077.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button8:hover {
|
||||||
|
background: url(@/assets/navigation/sxj_08.png) no-repeat center center;
|
||||||
|
background: url(@/assets/navigation/sxj_088.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button9:hover {
|
||||||
|
background: url(@/assets/navigation/sxj_09.png) no-repeat center center;
|
||||||
|
background: url(@/assets/navigation/sxj_099.png) no-repeat center center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gaolaing {
|
||||||
|
background: rgba(50, 177, 245, 0.4)
|
||||||
|
}
|
||||||
|
|
||||||
|
.focallengthbox {
|
||||||
|
display: flex;
|
||||||
|
// padding-left: 40px;
|
||||||
|
padding-top: 5px;
|
||||||
|
|
||||||
|
.focallength1 {
|
||||||
|
border: 1px solid rgba(50, 177, 245, 0.4);
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.focallength2 {
|
||||||
|
pointer-events: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
border-top: 1px solid rgba(50, 177, 245, 0.4);
|
||||||
|
border-bottom: 1px solid rgba(50, 177, 245, 0.4);
|
||||||
|
width: 120px;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #B5D7FF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-buttons {
|
||||||
|
position: relative;
|
||||||
|
width: 156px;
|
||||||
|
height: 156px;
|
||||||
|
margin-right: 10px;
|
||||||
|
|
||||||
|
.Camera-left-input {
|
||||||
|
width: 130px;
|
||||||
|
height: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button {
|
||||||
|
position: absolute;
|
||||||
|
width: 44px;
|
||||||
|
height: 44px;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
.img {
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera1 {
|
||||||
|
top: 16px;
|
||||||
|
left: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera2 {
|
||||||
|
top: 0px;
|
||||||
|
left: 54px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera3 {
|
||||||
|
top: 16px;
|
||||||
|
right: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera4 {
|
||||||
|
top: 54px;
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera5 {
|
||||||
|
top: 54px;
|
||||||
|
left: 54px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera6 {
|
||||||
|
top: 54px;
|
||||||
|
right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera7 {
|
||||||
|
bottom: 16px;
|
||||||
|
left: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera8 {
|
||||||
|
bottom: 0px;
|
||||||
|
left: 54px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera9 {
|
||||||
|
bottom: 16px;
|
||||||
|
right: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-left-button:hover {
|
||||||
|
// background-color: rgba(33, 191, 149, 0.2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.Camera-right-buttons {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
width: 102px;
|
||||||
|
height: 156px;
|
||||||
|
|
||||||
|
.buttonurl-box {
|
||||||
|
width: 100%;
|
||||||
|
height: 48px;
|
||||||
|
// background-color: rgba(53, 222, 176,0.4);
|
||||||
|
border: 1px solid rgba(0, 249, 162, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
.buttonurl-imgbox {
|
||||||
|
width: 50%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonurl-imgbox:hover {
|
||||||
|
background-color: rgba(33, 191, 149, 0.2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
1147
riis-web/src/views/task/alarmInfo/index.vue
Normal file
@ -14,7 +14,7 @@ import {
|
|||||||
editTask,
|
editTask,
|
||||||
delTask,
|
delTask,
|
||||||
getelect,
|
getelect,
|
||||||
getSubstationNaviTree,
|
getBayTree,
|
||||||
getmaintype,
|
getmaintype,
|
||||||
getmaindata,
|
getmaindata,
|
||||||
QueryTour,
|
QueryTour,
|
||||||
@ -713,7 +713,7 @@ function getbaytree() {
|
|||||||
const params = {
|
const params = {
|
||||||
stationId: info.value.stationAll
|
stationId: info.value.stationAll
|
||||||
}
|
}
|
||||||
getSubstationNaviTree(params).then((res: any) => {
|
getBayTree(params).then((res: any) => {
|
||||||
if (res.data.length == 0) {
|
if (res.data.length == 0) {
|
||||||
MainvalData.value = []
|
MainvalData.value = []
|
||||||
componentData.value = []
|
componentData.value = []
|
||||||
@ -2165,8 +2165,8 @@ const open = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-table ref="multipleTableRef" :data="tableDataList" style="width: 100%;margin-bottom: 10px;height: calc(70vh);
|
<el-table ref="multipleTableRef" :data="tableDataList" style="width: 100%;margin-bottom: 10px;height: calc(70vh);
|
||||||
overflow: auto;" :header-cell-style="tableBg" stripe @selection-change="handleSelectionChange" v-loading="treeloading"
|
overflow: auto;" :header-cell-style="tableBg" stripe @selection-change="handleSelectionChange" :row-class-name="tableRowClassName"
|
||||||
>
|
v-loading="treeloading">
|
||||||
<el-table-column type="selection" width="30" align="center" />
|
<el-table-column type="selection" width="30" align="center" />
|
||||||
<el-table-column type="index" label="序号" width="50px" align="center" />
|
<el-table-column type="index" label="序号" width="50px" align="center" />
|
||||||
<el-table-column property="stationName" label="变电站名称">
|
<el-table-column property="stationName" label="变电站名称">
|
||||||
@ -2887,8 +2887,8 @@ const open = () => {
|
|||||||
width: 300px;
|
width: 300px;
|
||||||
padding: 5px 0px 10px;
|
padding: 5px 0px 10px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
// background: #fff;
|
// background: #fff; riis-web/src/assets/navigation/ty_260x988.png
|
||||||
background-image: url(@/assets/newimg/jcpz_260.png);
|
background-image: url(@/assets/navigation/ty_260x988.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -2909,7 +2909,7 @@ const open = () => {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100vh - 160px);
|
height: calc(100vh - 160px);
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
background-color: #131a25;
|
// background-color: #131a25;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
padding: 5px 20px 0px;
|
padding: 5px 20px 0px;
|
||||||
@ -2928,11 +2928,11 @@ const open = () => {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100vh - 290px);
|
height: calc(100vh - 290px);
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
// background-color: rgba(255, 255, 255, 1);
|
// background-color: rgba(255, 255, 255, 1); navigation/ty_260x988.png riis-web/src/assets/navigation/ty_1614x988.png
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
background: url(@/assets/newimg/cjrw_1890.png);
|
background: url(@/assets/navigation/ty_1614x988.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
@ -606,13 +606,14 @@ function retrunClick() {
|
|||||||
<div class="all-left">
|
<div class="all-left">
|
||||||
<div class="details">
|
<div class="details">
|
||||||
<div class="details-left">
|
<div class="details-left">
|
||||||
<img class="details-left-imgbg" src="@/assets/patrolmonitor/xsjk_1235.png" alt="">
|
<img class="details-left-imgbg" src="@/assets/navigation/sw.png" alt="">
|
||||||
<div class="details-content">
|
<div class="details-content">
|
||||||
<div class="details-content-left">
|
<div class="details-content-left">
|
||||||
<div style="display: flex;">
|
<div style="display: flex;">
|
||||||
<div style="margin: 20px 20px 0px 20px;">
|
<div style="margin: 20px 20px 0px 20px;">
|
||||||
<div class="details-left-two">任务名称: {{ tableData.taskName }}</div>
|
<div class="details-left-two">任务名称: {{ tableData.taskName }}</div>
|
||||||
<div style="margin-top: 20px;" class="details-left-two">开始时间:{{ tableData.startTime
|
<div style="margin-top: 20px;" class="details-left-two">开始时间:{{
|
||||||
|
tableData.startTime
|
||||||
}}</div>
|
}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin: 20px 20px 0px 20px;">
|
<div style="margin: 20px 20px 0px 20px;">
|
||||||
@ -622,7 +623,8 @@ function retrunClick() {
|
|||||||
<span v-if="tableData.type == 3">专项巡视</span>
|
<span v-if="tableData.type == 3">专项巡视</span>
|
||||||
<span v-if="tableData.type == 4">自定义巡视</span>
|
<span v-if="tableData.type == 4">自定义巡视</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 20px;" class="details-left-two">结束时间: {{ tableData.endTime
|
<div style="margin-top: 20px;" class="details-left-two">结束时间: {{
|
||||||
|
tableData.endTime
|
||||||
}}</div>
|
}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin: 20px 20px 0px 20px;">
|
<div style="margin: 20px 20px 0px 20px;">
|
||||||
@ -649,28 +651,33 @@ function retrunClick() {
|
|||||||
<div>已巡视</div>
|
<div>已巡视</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="details-content-number">
|
<div class="details-content-number">
|
||||||
<div class="details-top-number" style="color:#00F9A2 ;">{{ tableData.successCount }}
|
<div class="details-top-number" style="color:#00F9A2 ;">{{
|
||||||
|
tableData.successCount }}
|
||||||
</div>
|
</div>
|
||||||
<div style="color:#00F9A2 ;">成功</div>
|
<div style="color:#00F9A2 ;">成功</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="details-content-number">
|
<div class="details-content-number">
|
||||||
<div style="color:#FFBD00 ;" class="details-top-number">{{ tableData.failCount }}
|
<div style="color:#FFBD00 ;" class="details-top-number">{{ tableData.failCount
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div style="color:#FFBD00 ;">失败</div>
|
<div style="color:#FFBD00 ;">失败</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="details-content-number">
|
<div class="details-content-number">
|
||||||
<div style="color:#00F9A2 ;" class="details-top-number">{{ tableData.normalCount }}
|
<div style="color:#00F9A2 ;" class="details-top-number">{{ tableData.normalCount
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div style="color:#00F9A2 ;">正常</div>
|
<div style="color:#00F9A2 ;">正常</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="details-content-number">
|
<div class="details-content-number">
|
||||||
<div style="color:#FF3300 ;" class="details-top-number">{{ tableData.abnormalCount
|
<div style="color:#FF3300 ;" class="details-top-number">{{
|
||||||
|
tableData.abnormalCount
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div style="color:#FF3300 ;">异常</div>
|
<div style="color:#FF3300 ;">异常</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="details-content-number">
|
<div class="details-content-number">
|
||||||
<div style="color:#0099FF ;" class="details-top-number">{{ tableData.serviceCount }}
|
<div style="color:#0099FF ;" class="details-top-number">{{
|
||||||
|
tableData.serviceCount }}
|
||||||
</div>
|
</div>
|
||||||
<div style="color:#0099FF ;">设备检修</div>
|
<div style="color:#0099FF ;">设备检修</div>
|
||||||
</div>
|
</div>
|
||||||
@ -681,7 +688,8 @@ function retrunClick() {
|
|||||||
<el-progress type="circle" :percentage="tableData.taskProgress" :stroke-width="8"
|
<el-progress type="circle" :percentage="tableData.taskProgress" :stroke-width="8"
|
||||||
:color="'rgba(255,156,42,1)'" style="position:absolute;top:10px;left:10px">
|
:color="'rgba(255,156,42,1)'" style="position:absolute;top:10px;left:10px">
|
||||||
<template #default="{ percentage }">
|
<template #default="{ percentage }">
|
||||||
<div style="font-size: 26px;color: #fff;padding-bottom: 5px;">{{ percentage }}%
|
<div style="font-size: 26px;color: #fff;padding-bottom: 5px;">{{ percentage
|
||||||
|
}}%
|
||||||
</div>
|
</div>
|
||||||
<div style="padding-top: 5px;font-size: 14px;color: #fff;">巡视总进度</div>
|
<div style="padding-top: 5px;font-size: 14px;color: #fff;">巡视总进度</div>
|
||||||
</template>
|
</template>
|
||||||
@ -724,10 +732,11 @@ function retrunClick() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="contont" id="clickonresize">
|
<div class="contont" id="clickonresize">
|
||||||
<img class="contont-img" src="@/assets/patrolmonitor/xsjk_1235_700.png" alt="">
|
<img class="contont-img" src="@/assets/navigation/sw1.png" alt="">
|
||||||
<div style="position: relative;z-index: 1; height: 100%;">
|
<div style="position: relative;z-index: 1; height: 100%;">
|
||||||
<div class="contont-title">
|
<div class="contont-title">
|
||||||
<span style="color: #ffffff;font-size: 16px;font-weight:700 ;" class="fontFamily">巡视点位</span>
|
<span style="color: #ffffff;font-size: 16px;font-weight:700 ;"
|
||||||
|
class="fontFamily">巡视点位</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="contont-contont">
|
<div class="contont-contont">
|
||||||
<div
|
<div
|
||||||
@ -751,7 +760,7 @@ function retrunClick() {
|
|||||||
|
|
||||||
<el-table :data="gettable" stripe :header-cell-style="tableBg" @row-click="selectRow"
|
<el-table :data="gettable" stripe :header-cell-style="tableBg" @row-click="selectRow"
|
||||||
v-loading="treeloading" highlight-current-row @cell-mouse-enter="hoverTableEnter"
|
v-loading="treeloading" highlight-current-row @cell-mouse-enter="hoverTableEnter"
|
||||||
@cell-mouse-leave="hoverTableLeave"
|
@cell-mouse-leave="hoverTableLeave" :row-class-name="tableRowClassName"
|
||||||
style="width: 98%;margin:auto;position: relative;margin: 15px 10px;height:calc(100%); ">
|
style="width: 98%;margin:auto;position: relative;margin: 15px 10px;height:calc(100%); ">
|
||||||
<el-table-column type="index" align="center" label="序号" width="60px" />
|
<el-table-column type="index" align="center" label="序号" width="60px" />
|
||||||
<el-table-column prop="mainDeviceName" label="设备名称" />
|
<el-table-column prop="mainDeviceName" label="设备名称" />
|
||||||
@ -795,12 +804,14 @@ function retrunClick() {
|
|||||||
<span
|
<span
|
||||||
v-if="scope.row.valueType == 'meter' || scope.row.valueType == 'infrared' || scope.row.valueType == 'sound'">
|
v-if="scope.row.valueType == 'meter' || scope.row.valueType == 'infrared' || scope.row.valueType == 'sound'">
|
||||||
<span v-if="scope.row.analysisResult == '异常'"
|
<span v-if="scope.row.analysisResult == '异常'"
|
||||||
style="color: red;font-size: 16px;font-weight: bold;"> {{ scope.row.value }}
|
style="color: red;font-size: 16px;font-weight: bold;"> {{
|
||||||
|
scope.row.value }}
|
||||||
{{ scope.row.unit }}</span>
|
{{ scope.row.unit }}</span>
|
||||||
<span v-else> {{ scope.row.value }} {{ scope.row.unit }}</span>
|
<span v-else> {{ scope.row.value }} {{ scope.row.unit }}</span>
|
||||||
</span>
|
</span>
|
||||||
<span v-else>
|
<span v-else>
|
||||||
<span v-if="scope.row.conf != null && scope.row.conf != ''">{{ scope.row.conf
|
<span v-if="scope.row.conf != null && scope.row.conf != ''">{{
|
||||||
|
scope.row.conf
|
||||||
}}</span>
|
}}</span>
|
||||||
<span v-else>--</span>
|
<span v-else>--</span>
|
||||||
</span>
|
</span>
|
||||||
@ -838,8 +849,10 @@ function retrunClick() {
|
|||||||
<el-table-column label="操作" width="100px" align="center">
|
<el-table-column label="操作" width="100px" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div style="display: flex;justify-content: space-around;">
|
<div style="display: flex;justify-content: space-around;">
|
||||||
<img style="cursor:pointer ;" src="@/assets/tableIcon/patrolmonitor/u3303.png"
|
<img style="cursor:pointer ;"
|
||||||
v-if="tableData.examineFlag != 1" @click="correct(scope.row)" title="修正">
|
src="@/assets/tableIcon/patrolmonitor/u3303.png"
|
||||||
|
v-if="tableData.examineFlag != 1" @click="correct(scope.row)"
|
||||||
|
title="修正">
|
||||||
<img src="@/assets/tableIcon/patrolmonitor/u3303_disabled.png" v-else
|
<img src="@/assets/tableIcon/patrolmonitor/u3303_disabled.png" v-else
|
||||||
title="修正">
|
title="修正">
|
||||||
<!-- <div class="button-style" v-if="tableData.examineFlag != 1" @click="correct(scope.row)">修正</div>
|
<!-- <div class="button-style" v-if="tableData.examineFlag != 1" @click="correct(scope.row)">修正</div>
|
||||||
@ -853,7 +866,8 @@ function retrunClick() {
|
|||||||
style="display: inline-block;margin-left: 15px;">{{ tableDataHover.areaName
|
style="display: inline-block;margin-left: 15px;">{{ tableDataHover.areaName
|
||||||
}}</span></div>
|
}}</span></div>
|
||||||
<div style="margin-top: 10px;"><span>间隔名称 :</span><span
|
<div style="margin-top: 10px;"><span>间隔名称 :</span><span
|
||||||
style="display: inline-block;margin-left: 15px;">{{ tableDataHover.bayName }}</span>
|
style="display: inline-block;margin-left: 15px;">{{ tableDataHover.bayName
|
||||||
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 10px;"><span>点位名称 :</span><span
|
<div style="margin-top: 10px;"><span>点位名称 :</span><span
|
||||||
style="display: inline-block;margin-left: 15px;">{{ tableDataHover.deviceName
|
style="display: inline-block;margin-left: 15px;">{{ tableDataHover.deviceName
|
||||||
@ -861,15 +875,18 @@ function retrunClick() {
|
|||||||
<div style="margin-top: 10px;"><span style="display: inline-block;">识别类型 :</span><span
|
<div style="margin-top: 10px;"><span style="display: inline-block;">识别类型 :</span><span
|
||||||
style="display: inline-block;margin-left: 15px;"
|
style="display: inline-block;margin-left: 15px;"
|
||||||
v-if="tableDataHover.desc != null && tableDataHover.desc != ''">{{
|
v-if="tableDataHover.desc != null && tableDataHover.desc != ''">{{
|
||||||
tableDataHover.desc }}</span><span style="display: inline-block;margin-left: 15px;"
|
tableDataHover.desc }}</span><span
|
||||||
v-else>--</span></div>
|
style="display: inline-block;margin-left: 15px;" v-else>--</span></div>
|
||||||
<div style="margin-top: 10px;"><span>巡视时间 :</span><span
|
<div style="margin-top: 10px;"><span>巡视时间 :</span><span
|
||||||
style="display: inline-block;margin-left: 15px;">{{ tableDataHover.time }}</span>
|
style="display: inline-block;margin-left: 15px;">{{ tableDataHover.time
|
||||||
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 10px;"><span style="display: inline-block;margin-left: 17px;">实物id
|
<div style="margin-top: 10px;"><span
|
||||||
|
style="display: inline-block;margin-left: 17px;">实物id
|
||||||
:</span><span style="display: inline-block;margin-left: 15px;"
|
:</span><span style="display: inline-block;margin-left: 15px;"
|
||||||
v-if="tableDataHover.materialId">{{ tableDataHover.materialId }}</span><span
|
v-if="tableDataHover.materialId">{{ tableDataHover.materialId }}</span><span
|
||||||
style="display: inline-block;margin-left: 15px;width: 70%;" v-else>--</span></div>
|
style="display: inline-block;margin-left: 15px;width: 70%;" v-else>--</span>
|
||||||
|
</div>
|
||||||
<div style="margin-top: 10px;">
|
<div style="margin-top: 10px;">
|
||||||
<span style="display: block;margin-left: 33px;">阈值 :</span>
|
<span style="display: block;margin-left: 33px;">阈值 :</span>
|
||||||
<span style="display:block;margin-left:80px;margin-top: -23px;"
|
<span style="display:block;margin-left:80px;margin-top: -23px;"
|
||||||
@ -882,10 +899,12 @@ function retrunClick() {
|
|||||||
tableDataHover.sameMin }}-{{ tableDataHover.sameMax }}</span></span>
|
tableDataHover.sameMin }}-{{ tableDataHover.sameMax }}</span></span>
|
||||||
<span
|
<span
|
||||||
style="display: inline-block;width: 50%;text-align: left;"><span>严重:</span><span>{{
|
style="display: inline-block;width: 50%;text-align: left;"><span>严重:</span><span>{{
|
||||||
tableDataHover.seriousMin }}-{{ tableDataHover.seriousMax }}</span></span>
|
tableDataHover.seriousMin }}-{{ tableDataHover.seriousMax
|
||||||
|
}}</span></span>
|
||||||
<span
|
<span
|
||||||
style="display: inline-block;width: 50%;text-align: left;"><span>危急:</span><span>{{
|
style="display: inline-block;width: 50%;text-align: left;"><span>危急:</span><span>{{
|
||||||
tableDataHover.criticalMin }}-{{ tableDataHover.criticalMax }}</span></span>
|
tableDataHover.criticalMin }}-{{ tableDataHover.criticalMax
|
||||||
|
}}</span></span>
|
||||||
</span>
|
</span>
|
||||||
<span v-else style="display:block;margin-left:88px;margin-top: -23px;">
|
<span v-else style="display:block;margin-left:88px;margin-top: -23px;">
|
||||||
--
|
--
|
||||||
@ -902,7 +921,7 @@ function retrunClick() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="all-right">
|
<div class="all-right">
|
||||||
<div style="width: 100%; height: 49%;">
|
<div class="alarmInfo-visitation">
|
||||||
<div style="display:flex;align-items: center;">
|
<div style="display:flex;align-items: center;">
|
||||||
<div class="alarmInfo-line"></div>
|
<div class="alarmInfo-line"></div>
|
||||||
<div class="alarmInfo-title "> <span class="fontFamily">实时视频</span></div>
|
<div class="alarmInfo-title "> <span class="fontFamily">实时视频</span></div>
|
||||||
@ -918,8 +937,8 @@ function retrunClick() {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
padding-top: 10px;">暂无视频</div>
|
padding-top: 10px;">暂无视频</div>
|
||||||
</div>
|
</div>
|
||||||
<JessibucaPlayer v-if="alarmInfo.patroldeviceCode != undefined" ref="recordVideoPlayer" :_uid="101"
|
<JessibucaPlayer v-if="alarmInfo.patroldeviceCode != undefined" ref="recordVideoPlayer"
|
||||||
:devicechannelInfo="devicechannelInfo" :visible.sync="true" :videoUrl="videoUrl"
|
:_uid="101" :devicechannelInfo="devicechannelInfo" :visible.sync="true" :videoUrl="videoUrl"
|
||||||
:videofmp4="videofmp4" :hasAudio="false" fluent autoplay live @closeVideo="closeVideo">
|
:videofmp4="videofmp4" :hasAudio="false" fluent autoplay live @closeVideo="closeVideo">
|
||||||
</JessibucaPlayer>
|
</JessibucaPlayer>
|
||||||
</div>
|
</div>
|
||||||
@ -928,7 +947,9 @@ function retrunClick() {
|
|||||||
<div class="alarmInfo-visitation">
|
<div class="alarmInfo-visitation">
|
||||||
<div style="display: flex;align-items: center;justify-content: space-between;">
|
<div style="display: flex;align-items: center;justify-content: space-between;">
|
||||||
<div style="display:flex;align-items: center;height: 40px;padding-left: 10px;">
|
<div style="display:flex;align-items: center;height: 40px;padding-left: 10px;">
|
||||||
<div class="alarmInfo-title"> <span class="fontFamily" style="color:#ffffff">巡视结果</span> </div>
|
<div class="alarmInfo-line"></div>
|
||||||
|
<div class="alarmInfo-title"> <span class="fontFamily" style="color:#0099ff">巡视结果</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex;font-size: 14px;padding-right:15px">
|
<div style="display: flex;font-size: 14px;padding-right:15px">
|
||||||
<div :class="tabs == 1 ? 'historical' : 'change'" @click="tabsClick(2)">
|
<div :class="tabs == 1 ? 'historical' : 'change'" @click="tabsClick(2)">
|
||||||
@ -996,8 +1017,8 @@ function retrunClick() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 修正弹窗 -->
|
<!-- 修正弹窗 -->
|
||||||
<Eldialog v-if="Explicit == 1 && conclusion == 1" :title="'修正'" :zIndex="2000" :width="'600px'" :height="'600px'"
|
<Eldialog v-if="Explicit == 1 && conclusion == 1" :title="'修正'" :zIndex="2000" :width="'600px'"
|
||||||
@before-close="handleClose">
|
:height="'600px'" @before-close="handleClose">
|
||||||
<template v-slot:PopFrameContent>
|
<template v-slot:PopFrameContent>
|
||||||
<div v-if="conclusion == 1">
|
<div v-if="conclusion == 1">
|
||||||
<!-- <div class="notification-title">修正</div> -->
|
<!-- <div class="notification-title">修正</div> -->
|
||||||
@ -1017,7 +1038,8 @@ function retrunClick() {
|
|||||||
<span v-if="notificationText.analysisResult == '异常'"
|
<span v-if="notificationText.analysisResult == '异常'"
|
||||||
style="color: red;font-size: 16px;font-weight: bold;"> {{
|
style="color: red;font-size: 16px;font-weight: bold;"> {{
|
||||||
notificationText.value }} {{ notificationText.unit }}</span>
|
notificationText.value }} {{ notificationText.unit }}</span>
|
||||||
<span v-else> {{ notificationText.value }} {{ notificationText.unit }}</span>
|
<span v-else> {{ notificationText.value }} {{ notificationText.unit
|
||||||
|
}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span v-else>
|
<span v-else>
|
||||||
<span v-if="notificationText.conf != null && notificationText.conf != ''">{{
|
<span v-if="notificationText.conf != null && notificationText.conf != ''">{{
|
||||||
@ -1054,8 +1076,9 @@ function retrunClick() {
|
|||||||
</el-input>
|
</el-input>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="color: #fff;margin-top:20px;"><span class="large">修正结论  <el-radio-group
|
<div style="color: #fff;margin-top:20px;"><span
|
||||||
v-model="form.reviseValid" class="ml-4">
|
class="large">修正结论  <el-radio-group v-model="form.reviseValid"
|
||||||
|
class="ml-4">
|
||||||
<el-radio label="0" size="large">正常</el-radio>
|
<el-radio label="0" size="large">正常</el-radio>
|
||||||
<el-radio label="1" size="large">异常</el-radio>
|
<el-radio label="1" size="large">异常</el-radio>
|
||||||
</el-radio-group></span>
|
</el-radio-group></span>
|
||||||
@ -1077,8 +1100,8 @@ function retrunClick() {
|
|||||||
</Eldialog>
|
</Eldialog>
|
||||||
|
|
||||||
<!-- 审核弹窗 -->
|
<!-- 审核弹窗 -->
|
||||||
<Eldialog v-if="Explicit == 1 && conclusion == 2" :title="'审核结论'" :zIndex="2000" :width="'540px'" :height="'600px'"
|
<Eldialog v-if="Explicit == 1 && conclusion == 2" :title="'审核结论'" :zIndex="2000" :width="'540px'"
|
||||||
@before-close="handleClose">
|
:height="'600px'" @before-close="handleClose">
|
||||||
<template v-slot:PopFrameContent>
|
<template v-slot:PopFrameContent>
|
||||||
<div class="notification-body">
|
<div class="notification-body">
|
||||||
<div style="height: 190px;padding: 0px 40px;font-size: 14px;color: #00F9A2;">
|
<div style="height: 190px;padding: 0px 40px;font-size: 14px;color: #00F9A2;">
|
||||||
@ -1195,7 +1218,7 @@ function retrunClick() {
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
color: #fff;
|
color: #0099ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-box {
|
.video-box {
|
||||||
@ -1209,11 +1232,13 @@ function retrunClick() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.alarmInfo-visitation {
|
.alarmInfo-visitation {
|
||||||
padding-top: 5px;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 50%;
|
height: 49%;
|
||||||
background: url(@/assets/patrolmonitor/xsjk_640.png);
|
// riis-web/src/assets/navigation/sy_zsb.png
|
||||||
|
background: url(@/assets/navigation/sy_zsb.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.alarmimg {
|
.alarmimg {
|
||||||
@ -1463,5 +1488,3 @@ function retrunClick() {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,12 +69,10 @@ const tableRowClassName = ({
|
|||||||
row: any
|
row: any
|
||||||
rowIndex: number
|
rowIndex: number
|
||||||
}) => {
|
}) => {
|
||||||
if (row.lastItem == 'Now') {
|
if (rowIndex % 2 === 0) {
|
||||||
return 'lastItem-row'
|
return 'warning-row'
|
||||||
} else if (rowIndex % 2 === 0) {
|
|
||||||
// return 'warning-row'
|
|
||||||
} else if (rowIndex % 2 === 1) {
|
} else if (rowIndex % 2 === 1) {
|
||||||
// return 'success-row'
|
return 'success-row'
|
||||||
}
|
}
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
@ -346,6 +344,12 @@ function handleClose(){
|
|||||||
function retrunClick(){
|
function retrunClick(){
|
||||||
isPatrolDetails.value = true;
|
isPatrolDetails.value = true;
|
||||||
}
|
}
|
||||||
|
function removePercentSign(str:any) {
|
||||||
|
if (str.includes("%")) {
|
||||||
|
str = str.replace("%", "");
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
@ -467,10 +471,10 @@ function retrunClick(){
|
|||||||
</div>
|
</div>
|
||||||
<!-- <img src="@/assets/MenuIcon/xsri_lb1.png" alt="" style="width:100%;position: absolute;"> -->
|
<!-- <img src="@/assets/MenuIcon/xsri_lb1.png" alt="" style="width:100%;position: absolute;"> -->
|
||||||
<!-- <div style="position: relative;"> -->
|
<!-- <div style="position: relative;"> -->
|
||||||
<el-table :data="tableData" class="PatrolMonitoring"
|
<el-table :data="tableData" class="PatrolMonitoring" :row-class-name="tableRowClassName"
|
||||||
style="width: 99%;margin:auto;position: relative; height:calc(79vh); overflow: auto;margin-top: 10px; "
|
style="width: 99%;margin:auto;position: relative; height:calc(79vh); overflow: auto;margin-top: 10px; "
|
||||||
stripe :header-cell-style="tableBg">
|
stripe :header-cell-style="tableBg">
|
||||||
<el-table-column type="index" align="center" label="序号" width="50px" />
|
<el-table-column type="index" align="center" label="序号" width="60px" />
|
||||||
<el-table-column prop="taskName" label="任务名称" min-width="140px" align="left" />
|
<el-table-column prop="taskName" label="任务名称" min-width="140px" align="left" />
|
||||||
<el-table-column prop="taskType" label="任务类型" width="100px" align="center">
|
<el-table-column prop="taskType" label="任务类型" width="100px" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@ -493,7 +497,7 @@ function retrunClick(){
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="taskProgress" label="进度" align="center" width="100px">
|
<el-table-column prop="taskProgress" label="进度" align="center" width="100px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-progress :text-inside="true" :stroke-width="18" :percentage="scope.row.taskProgress" status="success" />
|
<el-progress :text-inside="true" :stroke-width="18" :percentage="Number(removePercentSign(scope.row.taskProgress))" status="success" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="taskState" label="状态" align="center" width="100px">
|
<el-table-column prop="taskState" label="状态" align="center" width="100px">
|
||||||
@ -510,45 +514,31 @@ function retrunClick(){
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="description" label="巡视结果" width="140px" align="center">
|
<el-table-column prop="description" label="巡视结果" width="140px" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>成功:{{ scope.row.result.successCount }};</span><span>失败:{{ scope.row.result.failCount }}</span><br />
|
<span>成功:{{ scope.row.deviceDeforeNum - scope.row.deviceFailureNum }};</span><span>失败:{{ scope.row.deviceFailureNum }}</span><br />
|
||||||
<span>正常:{{ scope.row.result.normalCount }};</span><span style="color: #FF3300;">异常:{{
|
<span>正常:{{ scope.row.deviceDeforeNum - scope.row.deviceFailureNum - scope.row.deviceUnusualnum }};</span><span style="color: #FF3300;">异常:{{scope.row.deviceUnusualnum }}</span>
|
||||||
scope.row.result.abnormalCount }}</span>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" width="140px">
|
<el-table-column label="操作" align="center" width="240px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div style="display: flex; justify-content: space-between;align-items: center;">
|
<div style="display: flex; justify-content: center;">
|
||||||
<img src="@/assets/tableIcon/patrolmonitor/u2219.png" alt="" title="立即执行" class="cursorpointer"
|
<div v-hasPerm="['task:runnow']" v-if="scope.row.taskState == 0" class="button-style"
|
||||||
v-hasPerm="['task:runnow']" v-if="scope.row.taskState == 0"
|
@click="Operate(scope.row, 'runNow')">立即执行</div>
|
||||||
@click="Operate(scope.row, 'runNow')">
|
<div v-hasPerm="['task:suspend']" v-if="scope.row.taskState == 3" class="button-style"
|
||||||
<img src="@/assets/tableIcon/patrolmonitor/u2219_disabled.png" alt="" title="立即执行"
|
@click="Operate(scope.row, 'resume')">恢复</div>
|
||||||
v-hasPerm="['task:runnow']" v-else>
|
<div v-hasPerm="['task:suspend']" v-if="scope.row.taskState == 2 || scope.row.taskState == 0"
|
||||||
|
class="button-style" @click="Operate(scope.row, 'pause')">暂停</div>
|
||||||
|
|
||||||
|
<div v-hasPerm="['task:shutdown']" v-if="scope.row.taskState == 0 || scope.row.taskState == 3"
|
||||||
|
class="button-style" @click="Operate(scope.row, 'stop')">终止</div>
|
||||||
|
<div @click="detailed(scope.row)" class="button-style"><router-link :to="{
|
||||||
<img class="cursorpointer" src="@/assets/tableIcon/patrolmonitor/u2225.png" v-hasPerm="['task:suspend']" v-if="scope.row.taskState == 2 || scope.row.taskState == 0"
|
path: '/patrolDetails',
|
||||||
title="暂停" @click="Operate(scope.row, 'pause')">
|
query: {
|
||||||
<img v-else src="@/assets/tableIcon/patrolmonitor/u2225_disabled.png" v-hasPerm="['task:suspend']"
|
taskTodoId: scope.row.taskTodoId,
|
||||||
title="暂停">
|
isStationFlag: scope.row.isStationFlag
|
||||||
<img class="cursorpointer" src="@/assets/tableIcon/patrolmonitor/u2228.png" v-hasPerm="['task:suspend']" v-if="scope.row.taskState == 3" title="恢复"
|
}
|
||||||
@click="Operate(scope.row, 'resume')">
|
}" style="color:#0099ff ;">详情</router-link>
|
||||||
|
</div>
|
||||||
<img v-else src="@/assets/tableIcon/patrolmonitor/u2228_disabled.png" v-hasPerm="['task:suspend']" title="恢复">
|
|
||||||
|
|
||||||
<img class="cursorpointer" src="@/assets/tableIcon/patrolmonitor/u2231.png"
|
|
||||||
v-hasPerm="['task:shutdown']"
|
|
||||||
v-if="scope.row.taskState == 0 || scope.row.taskState == 3 "
|
|
||||||
@click="Operate(scope.row, 'stop')"
|
|
||||||
title="终止" >
|
|
||||||
<img v-else src="@/assets/tableIcon/patrolmonitor/u2231_disabled.png"
|
|
||||||
v-hasPerm="['task:shutdown']"
|
|
||||||
title="终止" >
|
|
||||||
|
|
||||||
<img class="cursorpointer" src="@/assets/tableIcon/patrolmonitor/u2222.png"
|
|
||||||
@click="detailed(scope.row)"
|
|
||||||
title="详情" >
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
@ -352,7 +352,7 @@ onMounted(() => {
|
|||||||
.rightNav {
|
.rightNav {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(89vh);
|
height: calc(89vh);
|
||||||
background-color: #131a25;
|
// background-color: #131a25;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
padding: 10px 15px 0px;
|
padding: 10px 15px 0px;
|
||||||
|
@ -4984,7 +4984,7 @@ function getComponentPage() {
|
|||||||
bayId: pageInfo.value.bayId,
|
bayId: pageInfo.value.bayId,
|
||||||
componentName: componentName.value
|
componentName: componentName.value
|
||||||
}
|
}
|
||||||
getComponentByBayPage(params).then(res => {
|
getComponentByBayPage(JSON.stringify(params)).then(res => {
|
||||||
componentData.value = res.data.records
|
componentData.value = res.data.records
|
||||||
pageInfo.value.size = res.data.size
|
pageInfo.value.size = res.data.size
|
||||||
pageInfo.value.current = res.data.current
|
pageInfo.value.current = res.data.current
|
||||||
@ -5015,7 +5015,7 @@ function getmainDevicePage() {
|
|||||||
getSubstationBayByArea({ stationCode: userStore.stationCode }).then((res) => {
|
getSubstationBayByArea({ stationCode: userStore.stationCode }).then((res) => {
|
||||||
bayIdType.value = res.data
|
bayIdType.value = res.data
|
||||||
})
|
})
|
||||||
getMainDevicePage(params).then(res => {
|
getMainDevicePage(JSON.stringify(params)).then(res => {
|
||||||
mainDeviceData.value = res.data.records
|
mainDeviceData.value = res.data.records
|
||||||
pageInfo.value.size = res.data.size
|
pageInfo.value.size = res.data.size
|
||||||
pageInfo.value.current = res.data.current
|
pageInfo.value.current = res.data.current
|
||||||
|
@ -391,36 +391,46 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="desc" label="识别类型" width="140px">
|
<el-table-column prop="desc" label="识别类型" width="140px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.desc != null && scope.row.desc != ''">{{ scope.row.desc
|
<span v-if="scope.row.recognitionType">{{ currency(recognitionType,
|
||||||
|
scope.row.recognitionType,)
|
||||||
}}</span>
|
}}</span>
|
||||||
<span v-else>--</span>
|
<span v-else>--</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="识别值" width="100px">
|
<el-table-column label="识别值" width="100px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.valueType == 'meter' || scope.row.valueType == 'infrared'">
|
<span
|
||||||
|
v-if="scope.row.valueType == 'meter' || scope.row.valueType == 'partial' || scope.row.valueType == 'partial' || scope.row.valueType == 'infrared'">
|
||||||
<span v-if="scope.row.analysisResult == '异常'" style="color: red;font-size: 16px;font-weight: bold;">
|
<span v-if="scope.row.analysisResult == '异常'" style="color: red;font-size: 16px;font-weight: bold;">
|
||||||
{{
|
{{ scope.row.value }} {{ scope.row.unit }}
|
||||||
scope.row.value }}
|
|
||||||
{{ scope.row.unit }}</span>
|
|
||||||
<span v-else> {{ scope.row.value }} {{ scope.row.unit }}</span>
|
|
||||||
</span>
|
</span>
|
||||||
<span v-else>
|
<span v-else>
|
||||||
<span v-if="scope.row.conf != null && scope.row.conf != ''">{{ scope.row.conf
|
{{ scope.row.value }} {{ scope.row.unit }}
|
||||||
}}</span>
|
</span>
|
||||||
|
</span>
|
||||||
|
<span v-else>
|
||||||
|
<span v-if="scope.row.desc != null && scope.row.desc != '' && scope.row.valueType != 'sound'">
|
||||||
|
{{ scope.row.desc }}
|
||||||
|
</span>
|
||||||
<span v-else>--</span>
|
<span v-else>--</span>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="analysisResult" label="巡视结论" align="center" width="80px">
|
<el-table-column prop="analysisResult" label="巡视结论" align="center" width="80px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.analysisResult == '正常'" style="color: rgb(0, 249, 162)">正常</span>
|
<span v-if="scope.row.analysisResult == '正常' && scope.row.flag != '7'"
|
||||||
<span v-if="scope.row.analysisResult == '异常'"
|
style="color: rgb(0, 249, 162)">正常</span>
|
||||||
style="color: rgb(255, 51, 0);color: red;font-size: 16px;font-weight: bold;">异常</span>
|
<span v-if="scope.row.analysisResult == '异常' && scope.row.flag != '7'"
|
||||||
<span v-if="scope.row.analysisResult == '设备检修'" style="color: rgb(0, 153, 255)">设备检修</span>
|
style="color: rgb(255, 51, 0);font-size: 16px;font-weight: bold;">异常</span>
|
||||||
<span v-if="scope.row.analysisResult == '失败'" style="color: rgb(255, 189, 0)">失败</span>
|
<span v-if="scope.row.analysisResult == '设备检修' && scope.row.flag != '7'"
|
||||||
<span v-if="scope.row.analysisResult == '成功'" style="color: rgb(0, 249, 162)">成功</span>
|
style="color: rgb(0, 153, 255)">设备检修</span>
|
||||||
<span v-if="scope.row.analysisResult == '' || scope.row.analysisResult == null">--</span>
|
<span v-if="scope.row.analysisResult == '失败' && scope.row.flag != '7'"
|
||||||
|
style="color: rgb(255, 189, 0)">失败</span>
|
||||||
|
<span v-if="scope.row.analysisResult == '成功' && scope.row.flag != '7'"
|
||||||
|
style="color: rgb(0, 249, 162)">成功</span>
|
||||||
|
<span v-if="scope.row.flag == '7'" style="color: rgb(255, 51, 0);">表计读数异常</span>
|
||||||
|
<span
|
||||||
|
v-if="(scope.row.analysisResult == '' && scope.row.flag != '7') || (scope.row.analysisResult == null && scope.row.flag != '7')">--</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="reviseValue" label="修正值" align="center">
|
<el-table-column prop="reviseValue" label="修正值" align="center">
|
||||||
@ -592,6 +602,7 @@ const srangingMouse = new THREE.Vector2()
|
|||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
getTypeTwo()
|
||||||
setupWebSocket()
|
setupWebSocket()
|
||||||
initRenderer()
|
initRenderer()
|
||||||
|
|
||||||
@ -677,6 +688,12 @@ function Information(val) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
const recognitionType = ref([])
|
||||||
|
function getTypeTwo() {
|
||||||
|
getDeviceByType({ dictcode: 'recognition_type' }).then((res) => {
|
||||||
|
recognitionType.value = res.data
|
||||||
|
})
|
||||||
|
}
|
||||||
// 页面退出
|
// 页面退出
|
||||||
onBeforeUnmount(() => {
|
onBeforeUnmount(() => {
|
||||||
window.removeEventListener('resize', resize)
|
window.removeEventListener('resize', resize)
|
||||||
@ -2417,21 +2434,21 @@ function getVideoUrl(row, index) {
|
|||||||
videoUrl.value = res.data.data.ws_flv
|
videoUrl.value = res.data.data.ws_flv
|
||||||
videofmp4.value = res.data.data.fmp4
|
videofmp4.value = res.data.data.fmp4
|
||||||
if (index == 'camera') {
|
if (index == 'camera') {
|
||||||
presetPosition(130,row.patroldevice_pos)
|
presetPosition(130, row.patroldevice_pos)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}).catch(function (error) {
|
}).catch(function (error) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
function presetPosition(cmdCode,presetPos) { // 预置位操作 ---设置、删除、调用
|
function presetPosition(cmdCode, presetPos) { // 预置位操作 ---设置、删除、调用
|
||||||
|
|
||||||
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((resize) => {
|
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((resize) => {
|
||||||
if (res.data.data == "0") {
|
if (res.data.data == "0") {
|
||||||
console.log("预置位")
|
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) => { })
|
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([])
|
const videoChannelList = ref([])
|
||||||
@ -2503,7 +2520,6 @@ const hisloading = ref(false)
|
|||||||
const timeSlot = ref([])
|
const timeSlot = ref([])
|
||||||
const deviceIdone = ref('')
|
const deviceIdone = ref('')
|
||||||
function historicalRecords(row) {
|
function historicalRecords(row) {
|
||||||
console.log(row)
|
|
||||||
getType()
|
getType()
|
||||||
deviceIdone.value = row
|
deviceIdone.value = row
|
||||||
historParams.value.deviceId = row.objinfo.deviceId
|
historParams.value.deviceId = row.objinfo.deviceId
|
||||||
@ -2520,7 +2536,7 @@ function historicalRecords(row) {
|
|||||||
getHistoryDevice(historParams.value).then(res => {
|
getHistoryDevice(historParams.value).then(res => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
historydata.value = res.data.records
|
historydata.value = res.data.records
|
||||||
historParams.value.size = res.data.records
|
historParams.value.size = res.data.size
|
||||||
historParams.value.current = res.data.current
|
historParams.value.current = res.data.current
|
||||||
histotal.value = res.data.total
|
histotal.value = res.data.total
|
||||||
hisloading.value = false
|
hisloading.value = false
|
||||||
@ -3040,8 +3056,9 @@ function nextPage() {
|
|||||||
z-index: 1001;
|
z-index: 1001;
|
||||||
width: 320px;
|
width: 320px;
|
||||||
height: calc(100% - 18px);
|
height: calc(100% - 18px);
|
||||||
background: url('@/assets/3d/spjk_ytbj.png') no-repeat;
|
background: url('@/assets/navigation/sanwei.png') no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
|
background-color: #001b4a;
|
||||||
|
|
||||||
.THREE-right-list-title {
|
.THREE-right-list-title {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|