缺陷修改

This commit is contained in:
wangxk 2025-05-17 14:51:04 +08:00
parent bc05013751
commit aa6c627228
21 changed files with 5084 additions and 602 deletions

View File

@ -56,7 +56,7 @@
text-align: right;
}
.tox-tinymce {
border: 1px solid #4c4d4f;
border: 1px solid #225b7e;
border-radius: 10px;
box-shadow: none;
box-sizing: border-box;
@ -2853,7 +2853,7 @@ body.tox-dialog__disable-scroll {
}
.tox .tox-statusbar {
align-items: center;
background-color: #202020 !important;
background-color: #001e55 !important;
border-top: 1px solid rgba(255, 255, 255, 0.15);
color: rgba(255, 255, 255, 0.75);
display: flex;

File diff suppressed because one or more lines are too long

View File

@ -18,7 +18,7 @@ export function getTableData(params: any) {
//查看详情-修正
export function editCorrect(params: any) {
return request({
url: '/patroltasks/task-todo/updateTaskResult',
url: '/patroltasks/task-todo/updateTaskResultById',
method: 'post',
data: params
});
@ -26,7 +26,7 @@ export function editCorrect(params: any) {
//审查任务执行情况
export function examination(params: any) {
return request({
url: '/patroltasks/task-todo/updateTaskTodo',
url: '/patroltasks/task-todo/updateTaskTodoById',
method: 'post',
data: params
});

View File

@ -634,7 +634,8 @@ input {
background: transparent !important;
color: #fff;
width: 100% !important;
height: 40px !important;
min-height: 40px !important;
height: auto !important;
margin: auto !important;
}
@ -837,11 +838,13 @@ input {
}
//左侧树统一样式
.el-tree-node.is-current > .el-tree-node__content {
background: none !important;
// background: none !important;
background-image: url(@/assets/sytlechange/treeBack.svg) !important;
background-size: 100% 100%;
background-size: 100% 100% !important;
color: #00ffff !important;
background-repeat: no-repeat !important;
min-height: 40px !important;
height: auto !important;
}
.el-tree-node__content:hover{
color:#00ffff;
@ -860,3 +863,12 @@ input {
border-left: #0099ff 3px solid;
border-right: #0099ff 3px solid;
}
.tox:not(.tox-tinymce-inline) .tox-editor-header{
background-color: #ffffff00 !important;
}
.tox .tox-toolbar-overlord > .tox-toolbar__primary{
background-color: #001e55 !important;
}
.tox .tox-statusbar{
background-color: #001e55 !important;
}

View File

@ -131,9 +131,12 @@
</template>
</el-input>
<div v-if="selType == '01'" class="three-right-list-main-tab">
<div :class="isOnLine == '01' ? 'three-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('01')">全部</div>
<div :class="isOnLine == '02' ? 'three-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('02')">在线</div>
<div :class="isOnLine == '03' ? 'three-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('03')">离线</div>
<div :class="isOnLine == '01' ? 'three-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('01')">全部
</div>
<div :class="isOnLine == '02' ? 'three-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('02')">在线
</div>
<div :class="isOnLine == '03' ? 'three-right-list-main-tab-hov' : ''" @click.stop="rightTabClik('03')">离线
</div>
</div>
</div>
<ul v-show="selType != '04' && selType != '03' && selType != '07'"
@ -179,7 +182,8 @@
src="@/assets/3d/sc_dis.png" title="实时视频" alt="实时视频">
<img v-if="i.objinfo != undefined && i.objinfo.channelList != undefined && i.objinfo.online == 1"
src="@/assets/3d/ks.png" title="实时视频-1" alt="实时视频-1" @click.stop="realTimeVideo(i, 0)">
<img v-if="i.objinfo != undefined && i.objinfo.channelList != undefined && i.objinfo.channelList.length == 2"
<img
v-if="i.objinfo != undefined && i.objinfo.channelList != undefined && i.objinfo.channelList.length == 2"
src="@/assets/3d/ks.png" title="实时视频-2" alt="实时视频-2" @click.stop="realTimeVideo(i, 1)">
<img src="@/assets/newimg/ht_sc.png" title="删除摄像机" alt="删除摄像机" @click.stop="listDel(i)">
<img v-show="i.type == 'Camera' && !i.start" src="@/assets/3d/ange.png" title="摄像机范围" alt="摄像机范围"
@ -214,9 +218,9 @@
<img src="@/assets/3d/spjk_ss.png" style="cursor:pointer ;">
</template>
</el-input>
<el-tree ref="treeRef" v-show="selType == '03' || selType == '04' || selType == '07'" :expand-on-click-node="false"
default-expand-all node-key="id" :data="searchdata" :props="defaultProps" :filter-node-method="filterNode"
@node-click="handleNodeClick" style="margin-top:10px;">
<el-tree ref="treeRef" v-show="selType == '03' || selType == '04' || selType == '07'"
:expand-on-click-node="false" default-expand-all node-key="id" :data="searchdata" :props="defaultProps"
:filter-node-method="filterNode" @node-click="handleNodeClick" style="margin-top:10px;">
<template #default="{ node, data }">
<div v-show="selType == '03'" class="w-full">
<div v-show="node.level == 1" style="display:flex;justify-content:space-between;width:100%">
@ -273,7 +277,8 @@
@click.stop="informationClick(data), handleNodeClick(data, node)">
<img v-show="data.objinfo == undefined" @click.stop src="@/assets/3d/xq_dis.png" title="无人车信息"
alt="无人车信息">
<img v-if="data.objinfo == undefined || data.objinfo.channelList == undefined || data.objinfo.online == 0"
<img
v-if="data.objinfo == undefined || data.objinfo.channelList == undefined || data.objinfo.online == 0"
src="@/assets/3d/sc_dis.png" title="实时视频" alt="实时视频">
<img v-if="data.objinfo != undefined && data.objinfo.channelList != undefined" src="@/assets/3d/ks.png"
title="实时视频-1" alt="实时视频-1" @click.stop="realTimeVideo(data, 0)">
@ -425,24 +430,22 @@
</div>
<div style="display: flex;align-items: center;"
v-if="selType == '02' || lineDrapStart == true || isUAVdropLine == true">
<el-input class="!w-[170px] mr-2" v-model="deviceName" clearable placeholder="请输入点位名称" @clear="getDevice()"
@keyup.enter="getDevice()" />
<el-select v-model="deviceInfo.mainDeviceId" class="mr-2 selType" placeholder="区域" clearable
@change="getDevice" :teleported="false" :popper-append-to-body="false">
<el-input class="!w-[170px] mr-2" v-model="deviceName" clearable placeholder="请输入点位名称"
@change="getDevice()" />
<el-select v-model="deviceInfo.areaId" class="mr-2 selType" placeholder="区域" @change="getbay()" clearable
:teleported="false" :popper-append-to-body="false">
<el-option v-for="item in areaIdType" :key="item.id" :label="item.areaName" :value="item.areaId" />
</el-select>
<el-select :disabled="!deviceInfo.areaId" v-model="deviceInfo.bayId" class="mr-2 selType" placeholder="间隔"
@change="getmainDevice()" :teleported="false" :popper-append-to-body="false" clearable>
<el-option v-for="item in bayIdType" :key="item.bayId" :label="item.bayName" :value="item.bayId" />
</el-select>
<el-select :disabled="!deviceInfo.bayId" v-model="deviceInfo.mainDeviceId" class="mr-2 selType"
placeholder="主设备" clearable @change="getcomponent" :teleported="false" :popper-append-to-body="false">
<el-option v-for="item in deviceMain" :key="item.mainDeviceId" :label="item.mainDeviceName"
:value="item.mainDeviceId" />
</el-select>
<el-select v-model="deviceInfo.mainDeviceId" class="mr-2 selType" placeholder="间隔" clearable
@change="getDevice" :teleported="false" :popper-append-to-body="false">
<el-option v-for="item in deviceMain" :key="item.mainDeviceId" :label="item.mainDeviceName"
:value="item.mainDeviceId" />
</el-select>
<el-select v-model="deviceInfo.mainDeviceId" class="mr-2 selType" placeholder="主设备" clearable
@change="getDevice" :teleported="false" :popper-append-to-body="false">
<el-option v-for="item in deviceMain" :key="item.mainDeviceId" :label="item.mainDeviceName"
:value="item.mainDeviceId" />
</el-select>
<el-select v-model="deviceInfo.componentId" class="mr-2 selType" placeholder="部件" clearable
<el-select :disabled="!deviceInfo.mainDeviceId" v-model="deviceInfo.componentId" class="mr-2 selType" placeholder="部件" clearable
@change="getDevice" :teleported="false" :popper-append-to-body="false">
<el-option v-for="item in deviceComponent" :key="item.componentId" :label="item.componentName"
:value="item.componentId" />
@ -559,16 +562,17 @@
style="width: 100%;margin:auto;position: relative;height:570px;overflow: auto;margin:10px 0"
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }" @row-click="rowClick">
<el-table-column type="index" align="center" label="序号" width="60" />
<el-table-column prop="deviceName" label="点位名称" width="140" />
<el-table-column prop="mainDeviceName" label="所属主设备" width="160" />
<el-table-column prop="deviceName" label="点位名称" />
<el-table-column prop="mainDeviceName" label="所属主设备" />
<el-table-column prop="componentName" label="所属部件" />
<el-table-column label="关联摄像机/预置位" width="200px">
<template #default="scope">
<span>{{ scope.row.device_code }}/{{ scope.row.device_name }}</span>
</template>
</el-table-column>
<el-table-column prop="recognitionTypeList" label="识别类型">
<el-table-column prop="recognitionTypeList" label="识别类型" width="120px" align="center">
<template #default="scope">
<!-- 局放特高频检测 -->
<span v-if="scope.row.recognitionTypeList == 1">表计读取</span>
<span v-if="scope.row.recognitionTypeList == 2">位置状态识别</span>
<span v-if="scope.row.recognitionTypeList == 3">设备外观查看</span>
@ -710,7 +714,8 @@
</Page>
<Page v-show="selType == '02'" style="position: relative;z-index: 100;" :total="total"
v-model:size="deviceInfo.size" :jumper="'hide'" v-model:current="deviceInfo.current"
@pagination="getDevice()"></Page>
@pagination="getDevice()">
</Page>
<Page v-show="selType == '04'" style="position: relative;z-index: 100;" :total="total"
v-model:size="robotInfo.size" :jumper="'hide'" v-model:current="robotInfo.current" @pagination="getRobot()">
</Page>
@ -722,7 +727,8 @@
@pagination="getmainDevicePage()"></Page>
<Page v-show="selType == '05' && associationTitle == '关联部件'" style="position: relative;z-index: 100;"
:total="total" v-model:size="pageInfo.size" :jumper="'hide'" v-model:current="pageInfo.current"
@pagination="getComponentPage()"></Page>
@pagination="getComponentPage()">
</Page>
</div>
</template>
</Eldialog>
@ -732,8 +738,8 @@
<template v-slot:PopFrameContent>
<div class="mt-[15px]" style="display: flex;align-items: center; justify-content: space-between;">
<div class="flex">
<el-input class="!w-[170px] mr-2" v-model="patrolDeviceName" placeholder="请输入巡视路线名称" @clear="searchNmaeLine()"
@keyup.enter="searchNmaeLine()" />
<el-input class="!w-[170px] mr-2" v-model="patrolDeviceName" placeholder="请输入巡视路线名称"
@clear="searchNmaeLine()" @keyup.enter="searchNmaeLine()" />
<el-button class="searchButton" @click="searchNmaeLine">搜索</el-button>
</div>
<el-button class="searchButton" @click="associationLineConfirm">确定</el-button>
@ -857,8 +863,8 @@
</el-select>
</el-form-item>
<el-form-item label="任务优先级" style="width:50%" class="screenHomepage ">
<el-select class="selType" :teleported="false" :popper-append-to-body="false" :disabled="info.taskType == ''"
v-model="info.priority" placeholder="请选择任务优先级" style="width: 100%">
<el-select class="selType" :teleported="false" :popper-append-to-body="false"
:disabled="info.taskType == ''" v-model="info.priority" placeholder="请选择任务优先级" style="width: 100%">
<el-option v-for="item in priority" :key="item.id" :label="item.dictname" :value="item.itemcode" />
</el-select>
</el-form-item>
@ -967,7 +973,8 @@
<div style="margin-top: -3px;">上午</div>
<el-checkbox-group v-model="checkListtime" @change="rediodtime(4)">
<div style=" display: flex;flex-wrap: wrap ;align-items: center;justify-content: flex-start;">
<el-checkbox style="display: block;" v-for="item in appointtime1" :label="item" size="large" />
<el-checkbox style="display: block;" v-for="item in appointtime1" :label="item"
size="large" />
</div>
</el-checkbox-group>
</div>
@ -975,7 +982,8 @@
<div style="margin-top: -3px;">下午</div>
<el-checkbox-group v-model="checkListtime" @change="rediodtime(4)">
<div style=" display: flex;flex-wrap: wrap ;align-items: center;justify-content: flex-start;">
<el-checkbox style="display: block;" v-for="item in appointtime2" :label="item" size="large" />
<el-checkbox style="display: block;" v-for="item in appointtime2" :label="item"
size="large" />
</div>
</el-checkbox-group>
</div>
@ -1061,10 +1069,8 @@
<div style="margin-top: 20px;margin-bottom:10px;color:#fff;font-size: 14px;">表达式</div>
<div class="zuihou"> <el-input v-model="resentation" style="height: 40px;" disabled /></div>
<div style="width: 100%;display: flex;justify-content:center;margin-top:20px;">
<el-button class="three-button1" style="margin-right:40px;"
@click="cronExpressions = false">取消</el-button>
<el-button class="three-button1" @click="assignment"
>确定</el-button>
<el-button class="three-button1" style="margin-right:40px;" @click="cronExpressions = false">取消</el-button>
<el-button class="three-button1" @click="assignment">确定</el-button>
</div>
</template>
</Eldialog>
@ -1076,6 +1082,9 @@ import { getPatrolDeviceStatus, getDeviceByType } from '@/api/device'
import { getSubstationBayByArea } from "@/api/task";
import { addTask } from "@/api/makeTask";
import { getdevicedata, getBayType, getMainEquipment, getComponentByBayPage, getMainDevicePage } from '@/api/device'
// import {
// getSubstationBayByArea,
// } from "@/api/algorithm";
import Page from '@/components/Pagination/page.vue'
import JessibucaPlayer from '@/components/jessibuca/index1.vue' //
import { useUserStore } from '@/store/modules/user'
@ -1186,7 +1195,7 @@ const isClick = ref(false)
onMounted(() => {
initRenderer()
setupWebSocket()
//
document.body.onselectstart = document.body.oncontextmenu = function () {
return false
@ -1210,8 +1219,8 @@ onBeforeUnmount(() => {
cancelAnimationFrame(_animate)
THREE.Cache.clear()
if (ws1 != null) {
ws1.close()
}
ws1.close()
}
})
//
function initRenderer() {
@ -1432,7 +1441,7 @@ function portClick(event) {
// Mesh
//
if (intersections[i].object.type == 'TransformControlsPlane') continue
drawline.value.push({x: intersections[i].point.x,y: 17.05,z: intersections[i].point.z})
drawline.value.push({ x: intersections[i].point.x, y: 17.05, z: intersections[i].point.z })
let gltfLoader = new OBJLoader() //obj
//
@ -3642,7 +3651,7 @@ function confirmClick() {
if (dataJson.value.UV[i].line != '' && dataJson.value.UV[i].line != null) {
let line = JSON.parse(dataJson.value.UV[i].line)
if (dataSel.value == '') {
if(line !=null) {
if (line != null) {
ElMessage({
message: '路线已绑定无人车,请解绑后重试',
type: 'warning',
@ -4193,7 +4202,7 @@ function removePointDiaConfirmClick() {
if (selType.value == '03') {
for (let i = 0; i < scene.children.length; i++) {
if (scene.children[i].userData.type == 'linePonit') {
if (treeId.value == scene.children[i].uuid) {
scene.remove(scene.children[i])
i--
@ -4202,7 +4211,7 @@ function removePointDiaConfirmClick() {
if (scene.children[i].userData.type == 'PatrolLine') {
for (let a = 0; a < scene.children[i].userData.linePonit.length; a++) {
if (treeId.value == scene.children[i].userData.linePonit[a].uuid) {
scene.children[i].userData.linePonit.splice(a,1)
scene.children[i].userData.linePonit.splice(a, 1)
a--
}
}
@ -4867,6 +4876,36 @@ function getData() {
})
}
//
function getbay() {
if (!deviceInfo.value.areaId) {
deviceInfo.value.mainDeviceId = ''
deviceInfo.value.componentId = ''
deviceInfo.value.bayId = ''
}
getDevice()
getSubstationBayByArea({ stationCode: userStore.stationCode, areaId: deviceInfo.value.areaId }).then((res) => {
bayIdType.value = res.data
})
}
function getmainDevice() {
if (!deviceInfo.value.bayId) {
deviceInfo.value.mainDeviceId = ''
deviceInfo.value.componentId = ''
}
getDevice()
getMainEquipment({ bayId: deviceInfo.value.bayId }).then((res) => {
deviceMain.value = res.data
})
}
function getcomponent() {
if (!deviceInfo.value.mainDeviceId) {
deviceInfo.value.componentId = ''
}
getDevice()
getBayType({ mainDeviceId: deviceInfo.value.mainDeviceId }).then((res) => {
deviceComponent.value = res.data
})
}
function getDevice() {
for (let i = 0; i < searchdata.value.length; i++) {
if (searchdata.value[i] != undefined && searchdata.value[i].objinfo != undefined && searchdata.value[i].objinfo.deviceId != undefined) {
@ -4880,15 +4919,16 @@ function getDevice() {
current: deviceInfo.value.current,
deviceName: deviceName.value,
mainDeviceId: deviceInfo.value.mainDeviceId,
componentId: deviceInfo.value.componentId
componentId: deviceInfo.value.componentId,
areaId: deviceInfo.value.areaId,
bayId: deviceInfo.value.bayId
}
getBayType({ stationCode: userStore.stationCode }).then((res) => {
deviceComponent.value = res.data
})
getMainEquipment({ stationCode: userStore.stationCode }).then((res) => {
deviceMain.value = res.data
getArea({ stationCode: userStore.stationCode }).then((res) => {
areaIdType.value = res.data
})
getdevicedata(params).then((res) => {
res.data.records.forEach((row) => {
if (row.patroldeviceJson) {
@ -5220,7 +5260,7 @@ function associationConfirm() {
scene.children[i].traverse(function (obj) {
if (obj.uuid === onjId.value) {
if (multipleSelection.value.componentId) {
obj.name = multipleSelection.value.componentName
obj.name =multipleSelection.value.mainDeviceName+'-'+ multipleSelection.value.componentName
} else {
obj.name = multipleSelection.value.mainDeviceName
}
@ -5259,32 +5299,33 @@ function closeVideo(index) { // 关闭视频
const ws1 = new WebSocket(userStore.wsApiBaseUrl + '/websocket/taskresult_' + userStore.stationCode + "_" + userStore.userId);
function setupWebSocket() {
ws1.onopen = () => {
ws1.onopen = () => {
};
ws1.onerror = (error) => {
};
ws1.onmessage = (e) => {
};
ws1.onerror = (error) => {
};
ws1.onmessage = (e) => {
if (e.data != 0) {
getData()
}
}
ws1.onclose = () => {
getData()
}
}
ws1.onclose = () => {
};
};
}
</script>
<style lang="scss" scoped>
#three_div {
width: 100%;
height: 100%;
}
//
.loadingBox {
position: absolute;
@ -5721,6 +5762,7 @@ ws1.onclose = () => {
color: #009bff;
}
}
.searchButton {
border: #009bff solid 1px;
background-color: #009bff;
@ -5764,6 +5806,7 @@ ws1.onclose = () => {
.back {
background-color: #131a25 !important;
}
:deep(.is-disabled) {
background-color: #0a232000 !important;
color: #009bff !important;
@ -5847,9 +5890,11 @@ ws1.onclose = () => {
right: 20px;
cursor: pointer;
}
.examination-contont {
color: #fff;
font-size: 14px;
.examination-contont-text {
margin-top: 11px;
}
@ -5865,6 +5910,7 @@ ws1.onclose = () => {
:deep(.el-input-number__increase) {
background-color: transparent !important;
}
:deep(.el-input-number.is-controls-right .el-input-number__increase) {
border: transparent !important;
}
@ -5876,6 +5922,7 @@ ws1.onclose = () => {
:deep(.el-input-number .el-icon) {
color: #009bff91 !important;
}
:deep(.el-input-number .el-icon:hover) {
color: #009bff !important;
}
@ -6045,6 +6092,7 @@ ws1.onclose = () => {
margin-top: -24px;
}
}
:deep(.el-checkbox__input.is-checked + .el-checkbox__label) {
color: #fff !important;
}

View File

@ -368,7 +368,7 @@ function confirmClick() {
inallList.decisionValueClass = '1'
inallList.alarmDesc = ''//
inallList.baseLineValue = element.commonLower
inallList.alarmLevel = '2'
inallList.alarmLevel = '1'
infoList.value.push(inallList)
}
if (element.commonUpper) {
@ -379,7 +379,7 @@ function confirmClick() {
inallList.decisionValueClass = '1'
inallList.alarmDesc = ''//
inallList.baseLineValue = element.commonUpper
inallList.alarmLevel = '2'
inallList.alarmLevel = '1'
infoList.value.push(inallList)
}
@ -391,7 +391,7 @@ function confirmClick() {
inallList.decisionValueClass = '1'
inallList.alarmDesc = ''//
inallList.baseLineValue = element.seriousLower
inallList.alarmLevel = '3'
inallList.alarmLevel = '2'
infoList.value.push(inallList)
}
if (element.seriousUpper) {
@ -402,7 +402,7 @@ function confirmClick() {
inallList.decisionValueClass = '1'
inallList.alarmDesc = ''//
inallList.baseLineValue = element.seriousUpper
inallList.alarmLevel = '3'
inallList.alarmLevel = '2'
infoList.value.push(inallList)
}
@ -414,7 +414,7 @@ function confirmClick() {
inallList.decisionValueClass = '1'
inallList.alarmDesc = ''//
inallList.baseLineValue = element.dangerLower
inallList.alarmLevel = '4'
inallList.alarmLevel = '3'
infoList.value.push(inallList)
}
if (element.dangerUpper) {
@ -425,7 +425,7 @@ function confirmClick() {
inallList.decisionValueClass = '1'
inallList.alarmDesc = ''//
inallList.baseLineValue = element.dangerUpper
inallList.alarmLevel = '4'
inallList.alarmLevel = '3'
infoList.value.push(inallList)
}

View File

@ -150,7 +150,16 @@ function addAlgorithmsan() {
}
function saveAlgor(row: any) {
row.algor = !row.algor
if (row.algor) {
if (!(row.paramName && row.paramType && row.paramFixed)) {
ElMessage.warning('请填写参数名称,类型和是否固定参数')
return
} else {
row.algor = !row.algor
}
} else {
row.algor = !row.algor
}
}
function delAlgor(row: any) {
algorithmData.value.splice(row.$index, 1);
@ -175,6 +184,12 @@ function confirmClick(formEl: any) {
algorithmData.value.forEach((item: any, index: any) => {
item.paramOrder = index + 1
})
for (let i = 0; i < algorithmData.value.length; i++) {
if (!(algorithmData.value[i].paramName && algorithmData.value[i].paramType &&algorithmData.value[i].paramFixed)) {
ElMessage.warning('请填写参数名称,类型和是否固定参数')
return
}
}
addAlgorithmClassAndParams({ algorithmClass: algorithmform.value, algorithmParamsList: algorithmData.value }).then((res: any) => {
console.log(res)
if (res.code == 0) {
@ -233,11 +248,8 @@ function handleClose1() {
}
function replace() {
meterdata.value.forEach((item: any) => {
// item.paramId = item.id
item.componentId = componentId.value
// item.algorithmId=
})
console.log(meterdata.value)
batchAddAlgorithmDevice(meterdata.value).then((res: any) => {
if (res.code == 0) {
mainble.value = false
@ -323,8 +335,8 @@ const mainble = ref()
function editmain(row: any) {
mainble.value = true
meterloding.value = true
componentId.value= row.componentId
getAlgorithmParamsList({ algorithmId: row.algorithmId,componentId: componentId.value}).then((res: any) => {
componentId.value = row.componentId
getAlgorithmParamsList({ algorithmId: row.algorithmId, componentId: componentId.value }).then((res: any) => {
meterdata.value = res.data
meterloding.value = false
})
@ -339,7 +351,7 @@ const tableref = ref()
const deviceId = ref('')
const componentId = ref('')
function selentDevide(row: any) {
cnshuId.value = row.id
cnshuId.value = row.paramId
if (row.deviceId) {
deviceId.value = row.deviceId
}
@ -359,24 +371,21 @@ function suredevice() {
selectble.value = false
devicedata.value.length = 0
meterdata.value.forEach((item: any) => {
if (item.id == cnshuId.value) {
if (item.paramId == cnshuId.value) {
if (sourceType.value == 1) {
item.deviceId = deviceIdList.value.deviceId
item.deviceName = deviceIdList.value.deviceName
// item.componentId = deviceIdList.value.componentId
item.paramValue = deviceIdList.value.deviceName
} else if (sourceType.value == 2) {
item.deviceId = deviceIdList.value.signalId
item.deviceName = deviceIdList.value.signalName
// item.componentId = deviceIdList.value.mainComponentId
item.paramValue = deviceIdList.value.signalName
}
item.sourceType = sourceType.value
}
// item.paramId = deviceIdList.value.paramId
})
console.log( meterdata.value)
console.log(meterdata.value)
}
function typeChange(val: any) {
sourceType.value = val
@ -394,7 +403,7 @@ const paramstable: any = ref({
componentId: ''
})
function getdevicedata1() {
if (sourceType.value == 1) {
paramstable.value.bayId = bayId.value
paramstable.value.componentId = componentId.value
@ -406,7 +415,7 @@ function getdevicedata1() {
devicedataloading.value = false
nextTick(() => {
if (deviceId.value) {
const foundObj = devicedata.value.find((item:any) => item.deviceId == deviceId.value);
const foundObj = devicedata.value.find((item: any) => item.deviceId == deviceId.value);
tableref.value!.setCurrentRow(foundObj)
}
});
@ -422,7 +431,7 @@ function getdevicedata1() {
devicedataloading.value = false
nextTick(() => {
if (deviceId.value) {
const foundObj = devicedata.value.find((item:any) => item.signalId == deviceId.value);
const foundObj = devicedata.value.find((item: any) => item.signalId == deviceId.value);
tableref.value!.setCurrentRow(foundObj)
}
});
@ -597,7 +606,7 @@ onMounted(() => {
</Page>
</section>
<!--弹框-->
<Eldialog v-if="algorithmible" :title="title" :zIndex="2000" :width="'60%'" @before-close="handleClose">
<Eldialog v-if="algorithmible" :title="title" :zIndex="2000" :width="'1150px'" @before-close="handleClose">
<template v-slot:PopFrameContent>
<el-form ref="ruleFormRef" style="padding: 15px 0px 0px;" :model="algorithmform" :rules="moderules"
label-width="auto">
@ -719,7 +728,7 @@ onMounted(() => {
</span>
</template>
</Eldialog>
<Eldialog v-if="masterble" :title="title" :zIndex="2000" :width="'60%'" @before-close="handleClose1">
<Eldialog v-if="masterble" :title="title" :zIndex="2000" :width="'1150px'" @before-close="handleClose1">
<template v-slot:PopFrameContent>
<div
style="width: 100%;display: flex;justify-content: space-between;align-items: center;margin-top: 10px;">
@ -778,7 +787,7 @@ onMounted(() => {
</template>
</el-table-column>
<el-table-column prop="paramRange" label="范围" width="70" align="center"></el-table-column>
<el-table-column prop="paramValue" label="参数值" align="center">
<el-table-column prop="paramValue" label="参数值" align="center">
<template #default="scope">
<div style="padding: 2px 0px;">
<el-input v-if="scope.row.paramFixed == 1" v-model="scope.row.paramValue"
@ -814,7 +823,7 @@ onMounted(() => {
<div :class="sourceType == 2 ? 'bianhua' : ''" @click="typeChange(2)">关联信号</div>
</div>
<div class="faulttemplate-box1">
<div class="silderRight1">
<div
style="display: flex;display: -webkit-flex; justify-content: space-between; -webkit-justify-content: space-between; margin:15px 0px">
@ -838,50 +847,56 @@ onMounted(() => {
:row-class-name="tableRowClassName" @row-click="rowClick"
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
<el-table-column type="index" label="序号" width="50px" align="center" />
<el-table-column v-if="sourceType == 1" label="巡视点位编号" prop="deviceCode" align="center"
<el-table-column v-if="sourceType == 1" label="巡视点位编号" prop="deviceCode" align="center"
width="140"></el-table-column>
<el-table-column v-if="sourceType == 1" label="巡视点位名称" align="center"
<el-table-column v-if="sourceType == 1" label="巡视点位名称" align="center"
prop="deviceName"></el-table-column>
<el-table-column v-if="sourceType == 1" label="所属主设备" prop="mainDeviceName" align="center"
width="120"></el-table-column>
<el-table-column v-if="sourceType == 1" label="主设备类型" prop="deviceType" align="center" width="120">
<el-table-column v-if="sourceType == 1" label="所属主设备" prop="mainDeviceName"
align="center" width="120"></el-table-column>
<el-table-column v-if="sourceType == 1" label="主设备类型" prop="deviceType" align="center"
width="120">
<template #default="scope">
<span>{{ currency(EquipmentType, scope.row.deviceType) }}</span>
</template>
</el-table-column>
<el-table-column v-if="sourceType == 1" label="所属部件" align="center" prop="componentName"
<el-table-column v-if="sourceType == 1" label="所属部件" align="center" prop="componentName"
width="160"></el-table-column>
<el-table-column v-if="sourceType == 1" label="表计类型" align="center" prop="meterType" width="100">
<el-table-column v-if="sourceType == 1" label="表计类型" align="center" prop="meterType"
width="100">
<template #default="scope">
<span>{{ currency(Metertype, scope.row.meterType) }}</span>
</template>
</el-table-column>
<el-table-column v-if="sourceType == 1" label="点位分类" align="center" width="100">
<el-table-column v-if="sourceType == 1" label="点位分类" align="center" width="100">
<template #default="scope">
<span>{{ currency(DeviceClass, scope.row.deviceClass) }}</span>
</template>
</el-table-column>
<el-table-column v-if="sourceType == 2" label="信号编号" align="center" prop="signalCode" width="100" />
<el-table-column v-if="sourceType == 2" label="信号名称" align="center" prop="signalName"
<el-table-column v-if="sourceType == 2" label="信号编号" align="center" prop="signalCode"
width="100" />
<el-table-column v-if="sourceType == 2" label="信号名称" align="center" prop="signalName"
min-width="140" />
<el-table-column v-if="sourceType == 2" label="信号单位" align="center" prop="signalUnit" width="80" />
<el-table-column v-if="sourceType == 2" label="遥控遥调类型" align="center" prop="ykytType" width="150">
<el-table-column v-if="sourceType == 2" label="信号单位" align="center" prop="signalUnit"
width="80" />
<el-table-column v-if="sourceType == 2" label="遥控遥调类型" align="center" prop="ykytType"
width="150">
<template #default="scope">
<span>{{ isykyttype(scope.row.ykytType) }}</span>
</template>
</el-table-column>
<el-table-column v-if="sourceType == 2" label="是否告警信号" align="center" prop="signalType" width="100">
<el-table-column v-if="sourceType == 2" label="是否告警信号" align="center" prop="signalType"
width="100">
<template #default="scope">
<span v-if="scope.row.signalType === '1'"></span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column v-if="sourceType == 2" label="遥信地址(yx)" align="center" prop="yxAddr" />
<el-table-column v-if="sourceType == 2" label="遥测地址(yc)" align="center" prop="ycAddr" />
<el-table-column v-if="sourceType == 2" label="遥控地址(yk)" align="center" prop="ykAddr" />
<el-table-column v-if="sourceType == 2" label="遥调地址(yt)" align="center" prop="ytAddr" />
<el-table-column v-if="sourceType == 2" label="遥信地址(yx)" align="center" prop="yxAddr" />
<el-table-column v-if="sourceType == 2" label="遥测地址(yc)" align="center" prop="ycAddr" />
<el-table-column v-if="sourceType == 2" label="遥控地址(yk)" align="center" prop="ykAddr" />
<el-table-column v-if="sourceType == 2" label="遥调地址(yt)" align="center" prop="ytAddr" />
</el-table>
<Page :total="devicetaotal" v-model:size="paramstable.size"

View File

@ -666,7 +666,7 @@ function mainChange(row: any) {
const deviceIdText = ref()
const miannDeviceId = ref()
function handleEdit(row: any) {
activeName.value = 'first'
activeName.value = 'first'
duration.value = row.duration
threshold.value = ''
beforName.value = ''
@ -1402,7 +1402,7 @@ function handleSelectionChange(val: any) {
if (val.length == 2) {
val.pop()
multipleTableRef.value!.toggleRowSelection(val[0], undefined)
}else{
} else {
vicode.value[0].patroldevice_name = val[0].patroldeviceName
vicode.value[0].patroldevice_code = val[0].patroldeviceCode
}
@ -1847,51 +1847,53 @@ function handleSelectionChange(val: any) {
@keyup.enter="getCamera()"
style="margin-right:15px ;margin-top:10px;width: 96%;margin-left:5px;" />
<div>
<el-tree ref="treeRef" class="Tree"
:class="useAppStore().size === 'default' ? 'silderLeft-large' : 'silderLeft-default'"
node-key="channelId" :data="allCamera" :current-node-key="currentNodeKey"
:highlight-current="true" :props="defaultprops" v-loading="treeloading"
@node-click="handleClick"
style="height: calc(80vh - 65px);width:96% ;margin-top: 10px; overflow: auto;margin-left:5px;">
<template #default="{ node }">
<span v-if="node.data.type == 10 && node.data.useMode == 10">
<span v-if="node.level == 1"
:style="{ color: node.data.online == '1' ? '#409eff' : 'red' }">
<svg style="margin-right: 5px;" t="1682315445615" class="icon"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="11437" xmlns:xlink="http://www.w3.org/1999/xlink" width="20"
height="20">
<path fill="currentColor"
d="M218.3 124.6h77.8l635.8 415.2-223.8 165.5h-48.7L117.7 338.7v-51.9z"
p-id="11438"></path>
<path fill="currentColor"
d="M701.6 799.3c-3.1 0-6.2-0.9-8.9-2.7L138.8 432.5c-7.5-4.9-9.6-15-4.6-22.5 4.9-7.5 15-9.6 22.5-4.6l542.9 356.9 29.6-29.6c6.3-6.3 16.6-6.3 22.9 0 6.3 6.3 6.3 16.6 0 22.9l-38.9 38.9c-3.3 3.2-7.4 4.8-11.6 4.8zM130.7 895.6c-9 0-16.2-7.3-16.2-16.2V530.1c0-9 7.3-16.2 16.2-16.2 9 0 16.2 7.3 16.2 16.2v349.3c0 9-7.3 16.2-16.2 16.2z"
p-id="11439"></path>
<path fill="currentColor"
d="M292.9 721.5H130.7c-9 0-16.2-7.3-16.2-16.2s7.3-16.2 16.2-16.2h153l56.9-95.9c4.6-7.7 14.5-10.2 22.2-5.7 7.7 4.6 10.2 14.5 5.7 22.2l-61.6 103.8c-3 5-8.3 8-14 8z"
p-id="11440"></path>
</svg>
<el-scrollbar height="calc(80vh)">
<el-tree ref="treeRef"
node-key="channelId" :data="allCamera" :current-node-key="currentNodeKey"
:highlight-current="true" :props="defaultprops" v-loading="treeloading"
@node-click="handleClick"
style="width:96% ;margin-top: 10px;margin-left:5px;">
<template #default="{ node }">
<span v-if="node.data.type == 10 && node.data.useMode == 10">
<span v-if="node.level == 1"
:style="{ color: node.data.online == '1' ? '#409eff' : 'red' }">
<svg style="margin-right: 5px;" t="1682315445615" class="icon"
viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="11437"
xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="20">
<path fill="currentColor"
d="M218.3 124.6h77.8l635.8 415.2-223.8 165.5h-48.7L117.7 338.7v-51.9z"
p-id="11438"></path>
<path fill="currentColor"
d="M701.6 799.3c-3.1 0-6.2-0.9-8.9-2.7L138.8 432.5c-7.5-4.9-9.6-15-4.6-22.5 4.9-7.5 15-9.6 22.5-4.6l542.9 356.9 29.6-29.6c6.3-6.3 16.6-6.3 22.9 0 6.3 6.3 6.3 16.6 0 22.9l-38.9 38.9c-3.3 3.2-7.4 4.8-11.6 4.8zM130.7 895.6c-9 0-16.2-7.3-16.2-16.2V530.1c0-9 7.3-16.2 16.2-16.2 9 0 16.2 7.3 16.2 16.2v349.3c0 9-7.3 16.2-16.2 16.2z"
p-id="11439"></path>
<path fill="currentColor"
d="M292.9 721.5H130.7c-9 0-16.2-7.3-16.2-16.2s7.3-16.2 16.2-16.2h153l56.9-95.9c4.6-7.7 14.5-10.2 22.2-5.7 7.7 4.6 10.2 14.5 5.7 22.2l-61.6 103.8c-3 5-8.3 8-14 8z"
p-id="11440"></path>
</svg>
</span>
</span>
</span>
<span v-if="node.data.type == 10 && node.data.useMode == 11">
<span v-if="node.level == 1"
:style="{ color: node.data.online == '1' ? '#409eff' : 'red' }">
<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" xmlns:xlink="http://www.w3.org/1999/xlink" width="18"
height="18">
<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"
p-id="2815"></path>
</svg>
<span v-if="node.data.type == 10 && node.data.useMode == 11">
<span v-if="node.level == 1"
:style="{ color: node.data.online == '1' ? '#409eff' : 'red' }">
<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"
xmlns:xlink="http://www.w3.org/1999/xlink" width="18" height="18">
<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"
p-id="2815"></path>
</svg>
</span>
</span>
</span>
<!-- <span>{{ node.data.name }}</span> -->
<span>{{ node.label }}</span>
</template>
</el-tree>
</el-scrollbar>
<!-- <span>{{ node.data.name }}</span> -->
<span>{{ node.label }}</span>
</template>
</el-tree>
</div>
</div>
<div class="Camera">
@ -2037,7 +2039,7 @@ function handleSelectionChange(val: any) {
</div>
</div>
<div style="width:100%;display: flex;margin: 10px 0px ;">
<!-- <div style="width:100%;display: flex;margin: 10px 0px ;"> -->
<!-- <div style="width: 50%; ">
<div style="display: inline-block;">表计量程最小值/最小值角度</div>
@ -2055,7 +2057,7 @@ function handleSelectionChange(val: any) {
<div style="position:absolute; top: 5px;right:8px; color:#a8abb2 ;"></div>
</div>
</div> -->
</div>
<!-- </div> -->
<span class="dialog-footer"
style="width: 100%;margin: auto; display: flex;display: -webkit-flex; justify-content: center;-webkit-justify-content: center;margin-top: 20px;">
@ -2287,7 +2289,7 @@ function handleSelectionChange(val: any) {
align-items: center;
justify-content: space-between;
width: 100%;
margin-top: 10px;
.Camera-left-switch {
width: 260px;
@ -2419,23 +2421,22 @@ function handleSelectionChange(val: any) {
width: 260px !important;
}
:deep(.el-tree-node.is-current>.el-tree-node__content) {
width: 100%;
height: 40px;
color: #fff !important;
}
:deep(.Tree .el-tree-node.is-current>.el-tree-node__content) {
width: 100%;
height: 40px;
// color: #209F84 !important;
}
:deep(.el-tree-node__content) {
.CameraLeft{
:deep(.el-tree-node__content) {
width: 100% !important;
height: 40px !important;
margin: auto !important;
min-height: 40px !important;
padding: 3px 0px !important;
// margin: auto !important;
}
}
.el-message-box {
width: 300px !important;
@ -2681,7 +2682,7 @@ function handleSelectionChange(val: any) {
.CameraLeft {
width: 240px;
background: url(@/assets/newimg/spjk_260.png);
background: url(@/assets/navigation/ty_260x988.png);
background-size: 100% 100%;
margin-right: 10px;
}

View File

@ -237,6 +237,10 @@ function gettoday() {
<div class="content_one_title">遥控遥调类型</div>
<div class="content_one_text">{{ signaldata.ykytType }}</div>
</div>
<div class="content_one">
<div class="content_one_title">设备编号</div>
<div class="content_one_text">{{ signaldata.deviceCode }}</div>
</div>
<div class="content_one">
<div class="content_one_title">设备名称</div>
<div class="content_one_text">{{ signaldata.deviceName }}</div>
@ -246,12 +250,8 @@ function gettoday() {
<div class="content_one_text">{{ signaldata.deviceModel }}</div>
</div>
<div class="content_one">
<div class="content_one_title">协议类型</div>
<div class="content_one_text">{{ signaldata.protocol }}</div>
</div>
<div class="content_one">
<div class="content_one_title">采集频率</div>
<div class="content_one_text">{{ signaldata.frequency }}</div>
<div class="content_one_title">安装位置</div>
<div class="content_one_text">{{ signaldata.place }}</div>
</div>
</div>
</div>

View File

@ -792,9 +792,10 @@ const isGaoliang: any = ref("")
{{ item.name }}
</div>
</div>
<el-scrollbar style="margin-left:0px ;margin-top:10px ;" height="calc(100vh - 270px)">
<el-tree :data="treeData" :props="defaultprops" @node-click="handleNodeClick" default-expand-all
:current-node-key="currentNodeKey" node-key="bayId">
<el-scrollbar style="margin-left:0px ;margin-top:10px ;" height="calc(100vh - 270px)">
<el-tree :data="treeData" :props="defaultprops" @node-click="handleNodeClick" default-expand-all :highlight-current="true"
:current-node-key="currentNodeKey" node-key="bayId">
<template #default="{ node }">
<span v-if="node.data.type == 10 && node.data.useMode == 10">
<span v-if="node.level != 1" :style="{ color: node.data.online == '1' ? '#009bff' : 'red' }">
@ -846,16 +847,16 @@ const isGaoliang: any = ref("")
<img v-else src="@/assets/monitorsystem/spjk_16p.png" alt="" @click="screenNumClick(16)">
</div>
<div style="display: flex;align-items: center;">
<el-checkbox v-model="isTimer" label="轮播" size="large" @change="animationInfo"
style="margin:0 10px 0px 30px">轮播</el-checkbox>
<el-input v-model="minute" placeholder="" oninput="value=value.replace(/^\.+|[^\d]/g,'')"
<!-- <el-checkbox v-model="isTimer" label="轮播" size="large" @change="animationInfo"
style="margin:0 10px 0px 30px">轮播</el-checkbox> -->
<!-- <el-input v-model="minute" placeholder="" oninput="value=value.replace(/^\.+|[^\d]/g,'')"
style="margin-right:20px ;width: 80px;height: 28px;" class="videomonitor-input">
<template #suffix>
<span>分钟</span>
</template>
</el-input>
<el-pagination class="paginationclass" background v-model:current-page="currentPage" :page-size="screenNum"
:small="true" layout="pager" :total="total" @current-change="handleCurrentChange" />
</el-input> -->
<!-- <el-pagination class="paginationclass" background v-model:current-page="currentPage" :page-size="screenNum"
:small="true" layout="pager" :total="total" @current-change="handleCurrentChange" /> -->
<div title="添加视频版块"
style="position: relative; margin-left:10px;margin-right:5px;cursor:pointer; width:24px;height:24px;font-size:18px;background:rgba(0, 155, 255, 1);color:#fff;display:flex;align-items:center;justify-content:center;border-radius:3px"
@click="addVideo" v-if="screenNum == 16">
@ -1013,7 +1014,7 @@ const isGaoliang: any = ref("")
</div>
</div>
<div style="display: flex;padding-top: 25px;padding-left: 30px;">
<!-- <div style="display: flex;padding-top: 25px;padding-left: 30px;">
<span style="display: block;padding-left: 10px;font-size: 14px; font-family: '微软雅黑';
font-weight: 400;
font-style: normal;
@ -1023,12 +1024,12 @@ const isGaoliang: any = ref("")
<span style="display: block;padding-left:70px;font-size: 14px; color: rgba(255, 255, 255, 0.8);">红外</span>
<el-switch style="display: block;margin-left:10px" v-model="isInfrared" inline-prompt @change="infraredClick"
active-value="255" inactive-value="0" />
</div>
</div> -->
<div style="display: flex;align-items: center; padding-top: 25px;padding-left: 15px;">
<span
style="display: block;padding-left: 10px;padding-right: 10px;font-size: 14px; color: rgba(255, 255, 255, 0.8);">预置位</span>
<el-input-number class="beforehandPosition-input" style="width: 75px" v-model="beforehandPosition" :min="1"
:max="10" controls-position="right" size="large" />
controls-position="right" size="large" />
<div title="设置" class="Camera-operate-buttons" @click="presetPosition(129, beforehandPosition)">
<img src="@/assets/videoimg/u3366.png" alt="" style="cursor: pointer;">
</div>
@ -1039,7 +1040,7 @@ const isGaoliang: any = ref("")
<img src="@/assets/videoimg/u3370.png" alt="">
</div>
</div>
<div style="width: 250px;height: 1px;background: rgba(50, 177, 245, 0.2); margin: 20px;"></div>
<div style="width: 250px;height: 1px;background: rgba(50, 177, 245, 0.2); margin:50px 20px;"></div>
<div style="padding-top:0px;padding-left:20px;padding-bottom:10px;font-family: 'Arial Normal', 'Arial';
font-weight: 400; font-style: normal; font-size: 14px;color: #009BFF;display: flex;
align-items: center;">
@ -1360,9 +1361,9 @@ const isGaoliang: any = ref("")
color: #fff !important;
}
:deep(.el-icon) {
transform: scale(1) !important;
}
// :deep(.el-icon) {
// transform: scale(1) !important;
// }
// :deep(.el-input__wrapper) {
// background: transparent;

View File

@ -95,7 +95,7 @@
<div class="one_box_all">
<div class="all_img"><img src="@/assets/sytlechange/one_right5.svg" alt=""></div>
<div class="all_text">
<div class="all_text_qian">避雷</div>
<div class="all_text_qian">避雷</div>
<div>
<span class="all_text_hou_one">{{ equipmentlist.lightningRod }}</span>
<span class="all_text_hou_two"></span>
@ -264,10 +264,14 @@
:class="{ 'table_active': index % 2 == 0 }" @dblclick="processClick(item)">
<div class="tr1 tr" :title="item.content">{{ item.content }}</div>
<div class="tr2 tr">
<span v-if="item.alarmLevel == 1" style="color: #0099FF;">预警</span>
<!-- <span v-if="item.alarmLevel == 1" style="color: #0099FF;">预警</span>
<span v-if="item.alarmLevel == 2" style="color: #FFFF00;">一般</span>
<span v-if="item.alarmLevel == 3" style="color: #FF9900;">严重</span>
<span v-if="item.alarmLevel == 4" style="color: #FF3300;">危急</span>
<span v-if="item.alarmLevel == 4" style="color: #FF3300;">危急</span> -->
<span v-if="item.alarmLevel == 1" style="color: #0099FF;">一般</span>
<span v-if="item.alarmLevel == 2" style="color: #FFFF00;">严重</span>
<span v-if="item.alarmLevel == 3" style="color: #FF9900;">危急</span>
<!-- <span v-if="item.alarmLevel == 4" style="color: #FF3300;">危急</span> -->
</div>
<div class="tr3 tr">{{ dateFormat(item.alarmDate) }}</div>
</div>
@ -769,7 +773,7 @@ const tabs = ref(1)
.stationboard-left2 {
position: absolute;
top: 430px;
top: 420px;
left: 15px;
width: 450px;
height: 290px;
@ -866,7 +870,7 @@ const tabs = ref(1)
.stationboard-left3 {
position: absolute;
top: 730px;
top: 715px;
left: 15px;
width: 450px;
height: 273px;
@ -951,7 +955,7 @@ const tabs = ref(1)
.stationboard-right2 {
position: absolute;
top: 350px;
top: 340px;
right: 15px;
width: 450px;
height: 317px;
@ -1043,7 +1047,7 @@ const tabs = ref(1)
.stationboard-right3 {
position: absolute;
top: 684px;
top: 666px;
right: 15px;
width: 450px;
height: 323px;

View File

@ -312,6 +312,15 @@ const tableRowClassName = ({
}
return ''
}
function currency(list: any, itemcode: any) {
let dictname = ''
list.forEach((element: any) => {
if (element.itemcode == itemcode) {
dictname = element.dictname
}
})
return dictname
}
</script>
<template>
<div class="faulttemplate-box">
@ -330,11 +339,11 @@ const tableRowClassName = ({
<div
style="margin-bottom:10px;display: flex;display: -webkit-flex; justify-content: space-between;-webkit-justify-content: space-between; width: 100%;">
<div>
<el-input v-model="queryparams.deviceName" placeholder="请输入设备名称" style="width: 220px;"
<el-input v-model="queryparams.deviceName" placeholder="请输入设备名称" style="width: 220px;" @change="getData"
clearable />
<el-input v-model="queryparams.deviceModel" placeholder="请输入设备型号"
style="width: 220px;margin-left: 10px;" clearable />
<el-select v-model="queryparams.deviceType" placeholder="请选择设备类型"
style="width: 220px;margin-left: 10px;" clearable @change="getData" />
<el-select v-model="queryparams.deviceType" placeholder="请选择设备类型" @change="getData"
style="width: 220px;margin-left: 10px;" clearable>
<el-option v-for="item in typeoptions" :key="item.itemcode" :label="item.dictname"
:value="item.itemcode" />
@ -359,9 +368,13 @@ const tableRowClassName = ({
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
<el-table-column type="selection" align="center" width="55" />
<el-table-column label="序号" align="center" type="index" width="50" />
<el-table-column label="设备编号" align="center" prop="deviceCode" width="80" />
<el-table-column label="设备名称" align="left" prop="deviceName" width="120" />
<el-table-column label="设备类型" align="center" prop="deviceTypeName" width="170" />
<el-table-column label="设备编号" align="center" prop="deviceCode" width="100" />
<el-table-column label="设备名称" align="left" prop="deviceName" />
<el-table-column label="设备类型" align="left" prop="deviceType" width="150" >
<template v-slot="scope">
{{ currency(typeoptions,scope.row.deviceType) }}
</template>
</el-table-column>
<el-table-column label="设备型号" align="center" prop="deviceModel" width="120" />
<el-table-column label="出厂编号" align="center" prop="productionNum" width="100" />
<el-table-column label="出厂日期" align="center" prop="productionDate" width="160">

View File

@ -37,7 +37,7 @@ interface Tree {
label: string;
}
const produrl = ref('')
const contentstyleval = ref('body { background-color: #282828;color:#fff;border:none;}')
const contentstyleval = ref('body { background-color: #001e55;color:#fff;border:none;}')
const initlist = ref({
selector: 'textarea',
language_url: produrl.value + '/tinymce/langs/zh_CN.js',
@ -70,7 +70,7 @@ watch(useDark(), () => {
isDark = '1'
if (useDark().value == true) {
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: #001e55;color:#fff;border:none;}'
} else {
initlist.value.skin_url = produrl.value + '/tinymce/skins/ui/oxide'
contentstyleval.value = 'body { background-color: #fff;color:#000;border:none;}'
@ -86,7 +86,7 @@ watch(dialogVisible, () => {
if (isDark === '1') {
//
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: #001e55;color:#fff;border:none;}'
} else {
initlist.value.skin_url = produrl.value + '/tinymce/skins/ui/oxide'
contentstyleval.value = 'body { background-color: #fff;color:#000;border:none;}'

View File

@ -657,4 +657,5 @@ function currency1(list: any, itemcode: any) {
:deep(.el-input .el-input__count .el-input__count-inner) {
background-color: rgba(240, 248, 255, 0);
}
</style>

View File

@ -113,7 +113,7 @@ const deviceName = ref('')
const tableData: any = ref()
const loading = ref(false)
const flag = ref()
const paramstable = ref({
const paramstable:any = ref({
size: 10,
current: 1,
deviceName: '',
@ -131,7 +131,8 @@ function getData() {
type: paramstable.value.type,
deviceModel: deviceModel.value,
manufacturer: manufacturer.value,
flag: flag.value == true ? '1' : '0'
flag: flag.value == true ? '1' : '0',
online:paramstable.value.online,
}
getdata(params).then((res: any) => {
loading.value = false
@ -148,7 +149,8 @@ function resetting() {
size: 10,
current: 1,
deviceName: '',
type: ''
type: '',
online: '',
}
deviceName.value = ''
@ -682,6 +684,7 @@ function handleEdit(row: any) {
channel_type: '1',
channel_code: '',
channel_rtspurl: '',
assist_rtspurl: '',
from_device: '',
recorder_code: '',
recorder_channelcode: ''
@ -889,6 +892,7 @@ function confirmClick(formEl: any) {
if (checked1.value == true) {
visibleLight.value.from_device = '2'
visibleLight.value.channel_rtspurl = ''
visibleLight.value.assist_rtspurl = ''
visibleLight.value.channel_code = ''
} else {
visibleLight.value.from_device = '1'
@ -906,7 +910,7 @@ function confirmClick(formEl: any) {
infrared.value.recorder_code = ''
infrared.value.recorder_channelcode = ''
}
if (visibleLight.value.recorder_code != '' && checked1.value == true || visibleLight.value.channel_rtspurl != '' && checked1.value == false || visibleLight.value.channel_code != '' && checked1.value == false || visibleLight.value.recorder_channelcode != '' && checked1.value == true) {
if (visibleLight.value.recorder_code != '' && checked1.value == true || visibleLight.value.channel_rtspurl != '' && visibleLight.value.assist_rtspurl != '' && checked1.value == false || visibleLight.value.channel_code != '' && checked1.value == false || visibleLight.value.recorder_channelcode != '' && checked1.value == true) {
channElinfo.push(visibleLight.value)
}
if (infrared.value.recorder_code != '' && checked2.value == true || infrared.value.channel_rtspurl != '' && checked2.value == false || infrared.value.channel_code != '' && checked2.value == false || infrared.value.recorder_channelcode != '' && checked2.value == true || infrared.value.pan_code != '' && checked2.value == false || infrared.value.pan_channelcode != '' && checked2.value == false) {
@ -1280,7 +1284,8 @@ const visibleLight = ref({
channel_rtspurl: '',
from_device: '',
recorder_code: '',
recorder_channelcode: ''
recorder_channelcode: '',
assist_rtspurl: '',
})
const infrareds = ref()
@ -1347,6 +1352,16 @@ const activeName = ref('first')
const handleClick1 = (tab: TabsPaneContext, event: Event) => {
}
const isGaoliang: any = ref("")
const statusList = ref([
{
id:1,
name:'在线'
},
{
id:0,
name:'离线'
}
])
</script>
<template>
@ -1368,7 +1383,8 @@ const isGaoliang: any = ref("")
<el-input v-model="info.patroldeviceName" style="width: 90%;margin-left: 8px;"
placeholder="请输入设备名称"></el-input>
</el-form-item>
<el-form-item v-if="infoall.stationId == ''" label="变电站" style="width:50%" prop="areaId">
<el-form-item v-if="infoall.stationId == ''" label="变电站" style="width:50%"
prop="areaId">
<el-select v-model="info.stationId" placeholder="请选择变电站" style="width: 90%"
@change="typeall, GetArea()">
<el-option v-for="item in optionSelect" :key="item.stationId"
@ -1386,8 +1402,8 @@ const isGaoliang: any = ref("")
<el-form-item label="设备类型" style="width:50%" prop="type">
<el-select v-model="info.type" placeholder="请选择设备类型" style="width: 92%"
@change="typeall">
<el-option v-for="item in PatrolEquipmentType" :key="item.id" :label="item.dictname"
:value="item.itemcode" />
<el-option v-for="item in PatrolEquipmentType" :key="item.id"
:label="item.dictname" :value="item.itemcode" />
</el-select>
</el-form-item>
<el-form-item label="视频类型" style="width:50%">
@ -1426,8 +1442,8 @@ const isGaoliang: any = ref("")
</el-form-item>
<el-form-item label="生产厂家" style="width:50%" prop="manufacturer">
<el-select v-model="info.manufacturer" placeholder="请选择生产厂家" style="width: 92%">
<el-option v-for="item in manufacturerList" :key="item.id" :label="item.dictname"
:value="item.itemcode" />
<el-option v-for="item in manufacturerList" :key="item.id"
:label="item.dictname" :value="item.itemcode" />
</el-select>
</el-form-item>
<el-form-item label="安装位置" style="width:50%" prop="place">
@ -1470,8 +1486,9 @@ const isGaoliang: any = ref("")
</el-form-item>
<el-form-item label="备注信息"
style="width:100%;display:flex;align-items:flex-start !important;">
<el-input type="textarea" v-model="info.custom1" :autosize="{ minRows: 2, maxRows: 8 }"
style="width: 96% ;margin-left: 8px;" placeholder="请输入备注信息"></el-input>
<el-input type="textarea" v-model="info.custom1"
:autosize="{ minRows: 2, maxRows: 8 }" style="width: 96% ;margin-left: 8px;"
placeholder="请输入备注信息"></el-input>
</el-form-item>
</el-form>
<span class="dialog-footer"
@ -1482,104 +1499,7 @@ const isGaoliang: any = ref("")
</span>
</div>
</el-tab-pane>
<el-tab-pane v-if="info.type == 10 || info.type == ''" label="静默监视配置" name="second">
<div>
<div class="tabbas2-toner">
<div v-for="(items, index) in SilentMonitoringType" :key="index"
:class="items.checkInfo == true ? 'changechecked' : 'checkedchange'">
<el-checkbox v-model="items.checkInfo" :label="items.dictname" @change="checkchange"
v-if="dialogVisible" />
</div>
</div>
<div v-show="checkedlist.length == 0 || checkedlist[0] == ''" class="tabbas2-bottom">
请选择监视类型
</div>
<div v-show="checkedlist.length != 0 && checkedlist[0] != ''" style="height: 510px;margin:auto">
<div style="height: calc(70vh - 200px); overflow: auto">
<div v-show="checkedlist.indexOf('ryxw') != -1">
<div>
<div class="tabbas2Bottom">
<span>人员行为</span>
<el-button v-show="isOnline" type="text" style="width:90px;" class="button_one"
@click="maintenanceArea('ryxw')">维护生效区域</el-button>
</div>
<div>
<el-form :model="infoAll" label-width="90px" ref="infoRefAlls"
:rules="infoRefAll" style="display: flex; flex-wrap: wrap;">
<el-form-item label="帧间隔" style="width:50%;position:relative"
prop="frame_interval" v-if="checkedlist.indexOf('ryxw') != -1">
<el-input v-model="infoAll.frame_interval"
style="width: 80%;margin-left: 8px;"
placeholder="请输入帧间隔"></el-input>
<div style="position: absolute;right: 90px;"></div>
</el-form-item>
<el-form-item label="" style="width:50%;position:relative"
v-if="checkedlist.indexOf('ryxw') != -1">
<el-checkbox v-model="infoAll.check_enter" label="检测人员进入"
size="large" />
</el-form-item>
</el-form>
</div>
</div>
</div>
<div v-show="checkedlist.indexOf('hzyw') != -1">
<div>
<div class="tabbas3Bottom">
<span>烟火</span>
<el-button v-show="isOnline" type="text" style="width:90px;" class="button_one"
@click="maintenanceArea('hzyw')">维护生效区域</el-button>
</div>
<div>
<el-form :model="smokeInfo" label-width="90px" ref="smokeRefInfos"
:rules="smokeRefInfo" style="display: flex; flex-wrap: wrap;">
<el-form-item label="帧间隔" style="width:50%;position:relative"
prop="frame_interval" v-if="checkedlist.indexOf('hzyw') != -1">
<el-input v-model="smokeInfo.frame_interval"
style="width: 80%;margin-left: 8px;"
placeholder="请输入帧间隔"></el-input>
<div style="position: absolute;right: 90px;"></div>
</el-form-item>
</el-form>
</div>
</div>
</div>
<div v-show="checkedlist.indexOf('sly_dmyw') != -1">
<div>
<div class="tabbas3Bottom">
<span>渗漏油</span>
<el-button v-show="isOnline" type="text" style="width:90px;" class="button_one"
@click="maintenanceArea('sly_dmyw')">维护生效区域</el-button>
</div>
<div>
<el-form :model="leakageInfo" label-width="90px" ref="leakageRefInfos"
:rules="leakageRefInfo" style="display: flex; flex-wrap: wrap;">
<el-form-item label="帧间隔" style="width:50%;position:relative"
prop="frame_interval" v-if="checkedlist.indexOf('sly_dmyw') != -1">
<el-input v-model="leakageInfo.frame_interval"
style="width: 80%;margin-left: 8px;"
placeholder="请输入帧间隔"></el-input>
<div style="position: absolute;right: 90px;"></div>
</el-form-item>
</el-form>
</div>
</div>
</div>
</div>
</div>
<span class="dialog-footer"
style="width: 100%;margin: auto; display: flex;display: -webkit-flex; justify-content: center;-webkit-justify-content: center;margin: 20px 0px 10px 0px ;">
<div class="details-button" @click="handleClose">取消</div>
<div class="details-button" @click="confirmClick(infoForm)">确定</div>
</span>
<!-- </div> -->
</div>
</el-tab-pane>
<el-tab-pane v-if="info.type == 10 || info.type == ''" label="通道设置" name="third">
<div>
<div style="height: 562px;">
@ -1596,9 +1516,16 @@ const isGaoliang: any = ref("")
<el-input :disabled="checked1 == true" v-model="visibleLight.channel_code"
style="width: 90%;margin-left: 8px;" placeholder="请输入通道编号"></el-input>
</el-form-item>
<el-form-item label="RTSP流地址" style="width:100%;">
<el-input :disabled="checked1 == true" v-model="visibleLight.channel_rtspurl"
style="width: 90%;margin-left: 8px;" placeholder="请输入RTSP流地址"></el-input>
<el-form-item label="RTSP主码流地址" style="width:100%;">
<el-input :disabled="checked1 == true"
v-model="visibleLight.channel_rtspurl"
style="width: 100%;margin-left: 8px;"
placeholder="请输入RTSP流地址"></el-input>
</el-form-item>
<el-form-item label="RTSP辅码流地址" style="width:100%;">
<el-input :disabled="checked1 == true" v-model="visibleLight.assist_rtspurl"
style="width: 100%;margin-left: 8px;"
placeholder="请输入RTSP流地址"></el-input>
</el-form-item>
<el-form-item label="来源" style="width:100%;">
<el-checkbox v-model="checked1" label="录像机" size="large"
@ -1623,15 +1550,16 @@ const isGaoliang: any = ref("")
红外设置</div>
</div>
<div>
<el-form :model="infrared" label-width="90px" ref="infrareds" :rules="leakageRefInfo"
style="display: flex; flex-wrap: wrap;">
<el-form :model="infrared" label-width="90px" ref="infrareds"
:rules="leakageRefInfo" style="display: flex; flex-wrap: wrap;">
<el-form-item label="通道编号" style="width:100%;position:relative">
<el-input :disabled="checked2 == true" v-model="infrared.channel_code"
style="width: 90%;margin-left: 8px;" placeholder="请输入通道编号"></el-input>
</el-form-item>
<el-form-item label="RTSP流地址" style="width:100%;">
<el-input :disabled="checked2 == true" v-model="infrared.channel_rtspurl"
style="width: 90%;margin-left: 8px;" placeholder="请输入RTSP流地址"></el-input>
style="width: 90%;margin-left: 8px;"
placeholder="请输入RTSP流地址"></el-input>
</el-form-item>
<el-form-item label="云台编号" style="width:50%;">
<el-input :disabled="checked2 == true" v-model="infrared.pan_code"
@ -1651,7 +1579,8 @@ const isGaoliang: any = ref("")
style="width: 77%;margin-left: 8px;" placeholder="录像机编号"></el-input>
</el-form-item>
<el-form-item label="录像通道编号" style="width:50%;">
<el-input :disabled="checked2 == false" v-model="infrared.recorder_channelcode"
<el-input :disabled="checked2 == false"
v-model="infrared.recorder_channelcode"
style="width: 77%;margin-left: 8px;" placeholder="录像通道编号"></el-input>
</el-form-item>
</el-form>
@ -1706,17 +1635,19 @@ const isGaoliang: any = ref("")
</template>
</Eldialog>
<aside id="silderLeft">
<div class="displayflex" style="margin: 0;padding-left: 8px;height: 30px;margin-top:10px;margin-bottom:10px;">
<div class="displayflex"
style="margin: 0;padding-left: 8px;height: 30px;margin-top:10px;margin-bottom:10px;">
<div class="line"></div>
<div class="title" style="font-size: 14px;">数据列表</div>
</div>
<el-select v-model="value" placeholder="" style="width: 98% !important; display: flex; justify-content: center"
@change="getTree">
<el-select v-model="value" placeholder=""
style="width: 98% !important; display: flex; justify-content: center" @change="getTree">
<el-option v-for="item in optionSelect" :key="item.stationId" :label="item.stationName"
:value="item.stationId" style="width:100%" />
</el-select>
<el-scrollbar height="calc(80vh)" 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="areaId" :data="treedata" :current-node-key="currentNodeKey" :highlight-current="true"
:props="defaultProps" v-loading="treeloading" @node-click="handleNodeClick">
</el-tree>
@ -1739,10 +1670,16 @@ const isGaoliang: any = ref("")
</el-select>
<el-input v-model="deviceModel" clearable placeholder="请输入设备型号" @clear="getData()"
@keyup.enter="getData()" style="margin-right:10px ;width: 185px;" />
<el-select v-model="manufacturer" placeholder="请选择生产厂家" style="margin-right: 10px;" @change="getData()">
<el-select v-model="manufacturer" placeholder="请选择生产厂家" style="margin-right: 10px;"
@change="getData()" clearable>
<el-option v-for="item in manufacturerList" :key="item.id" :label="item.dictname"
:value="item.itemcode" />
</el-select>
<el-select v-model="paramstable.online" placeholder="实时状态" style="margin-right: 10px;width: 140px;"
@change="getData()" clearable>
<el-option v-for="item in statusList" :key="item.id" :label="item.name"
:value="item.id" />
</el-select>
<el-button class="searchButton" type="primary" @click="getData()">搜索</el-button>
<el-button class="searchButton" @click="resetting()">重置</el-button>
</div>
@ -1755,40 +1692,39 @@ const isGaoliang: any = ref("")
<!-- <el-button type="primary" @click="addClick"><img style="margin-right:5px;"
src="@/assets/MenuIcon/u429.png" alt=""> 导入</el-button> -->
<el-button class="searchButton" v-hasPerm="['del:patroldevice']" @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 class="draggable">
<el-table v-loading="loading" :data="tableData" style="width: 100%;height: calc(75vh);
overflow: auto;margin-bottom: 15px;" row-key="id" @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" :selectable="checkSelectable" />
<el-table-column type="index" label="序号" width="50px" align="center" />
<el-table-column label="设备编码" prop="patroldeviceCode" align="center" ></el-table-column>
<el-table-column label="设备名称" prop="patroldeviceName" align="center" ></el-table-column>
<el-table-column label="设备类型" prop="typeName" width="80" align="center" ></el-table-column>
<el-table-column label="设备型号" prop="deviceModel" align="center" ></el-table-column>
<el-table-column label="设备编码" prop="patroldeviceCode" align="center"></el-table-column>
<el-table-column label="设备名称" prop="patroldeviceName" align="center"></el-table-column>
<el-table-column label="设备类型" prop="typeName" width="80" align="center"></el-table-column>
<el-table-column label="设备型号" prop="deviceModel" align="center"></el-table-column>
<el-table-column label="设备来源" prop="deviceSource" align="center" width="80"></el-table-column>
<el-table-column label="生产厂家" prop="manufacturer" align="center" width="80">
<template #default="scope">
{{ currency(manufacturerList, scope.row.manufacturer) }}
</template>
</el-table-column>
<el-table-column label="安装位置" prop="place" width="80" align="center" ></el-table-column>
<el-table-column label="安装位置" prop="place" width="80" align="center"></el-table-column>
<el-table-column label="实时状态" width="100" prop="datastatus" align="center">
<template #default="scope">
<!-- <span v-if="scope.row.typeName == '硬盘录像机'">
----
</span> -->
<span style="color:#F24444" v-if="scope.row.online != 1">
<img src="@/assets/MenuIcon/u499.png" alt=""
style="display: inline-block; margin: 0px 5px; ">离线
</span>
<span style="color:#F24444" v-else-if="scope.row.online == 1">
<span v-if="scope.row.online == 1" style="color:#00CC66"><img src="@/assets/newimg/u387.png"
alt="" style="display: inline-block; margin: 0px 5px; "> 在线
<span v-if="scope.row.online == 1" style="color:#00CC66"><img
src="@/assets/newimg/u387.png" alt=""
style="display: inline-block; margin: 0px 5px; "> 在线
</span>
</span>
</template>
@ -1806,24 +1742,24 @@ const isGaoliang: any = ref("")
<span v-if="scope.row.type == 10 && scope.row.useMode == 10">
<span v-if="scope.row.channelList != undefined && scope.row.channelList.length == 1">
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qij.png" alt="" title="查看通道1"
@click="monitorClick(scope.row, 0)"
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qij.png" alt=""
title="查看通道1" @click="monitorClick(scope.row, 0)"
style="cursor: pointer;margin:auto;display: inline-block;margin-left:15px;">
<img v-else src="@/assets/newimg/ht_qij1.png" alt="" title="离线通道1"
style="margin:auto;display: inline-block;margin-left:15px;">
</span>
<span v-if="scope.row.channelList != undefined && scope.row.channelList.length == 2">
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qij.png" alt="" title="查看通道1"
@click="monitorClick(scope.row, 0)"
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qij.png" alt=""
title="查看通道1" @click="monitorClick(scope.row, 0)"
style="cursor: pointer;margin:auto;display: inline-block;">
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qij.png" alt="" title="查看通道2"
@click="monitorClick(scope.row, 1)"
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qij.png" alt=""
title="查看通道2" @click="monitorClick(scope.row, 1)"
style="cursor: pointer;margin:auto;display: inline-block;margin-left:15px;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_qij1.png" alt="" title="离线通道1"
style="margin:auto;display: inline-block;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_qij1.png" alt="" title="离线通道1"
style="margin:auto;display: inline-block;margin-left:15px;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_qij1.png" alt=""
title="离线通道1" style="margin:auto;display: inline-block;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_qij1.png" alt=""
title="离线通道1" style="margin:auto;display: inline-block;margin-left:15px;">
</span>
<span v-if="scope.row.channelList.length == 0">
@ -1832,24 +1768,24 @@ const isGaoliang: any = ref("")
</span>
<span v-if="scope.row.type == 10 && scope.row.useMode == 11">
<span v-if="scope.row.channelList != undefined && scope.row.channelList.length == 1">
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qj.png" alt="" title="查看通道1"
@click="monitorClick(scope.row, 0)"
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qj.png" alt=""
title="查看通道1" @click="monitorClick(scope.row, 0)"
style="cursor: pointer;margin:auto;display: inline-block;margin-left:15px;">
<img v-else src="@/assets/newimg/ht_qj1.png" alt="" title="离线通道1"
style="margin:auto;display: inline-block;margin-left:15px;">
</span>
<span v-if="scope.row.channelList != undefined && scope.row.channelList.length == 2">
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qj.png" alt="" title="查看通道1"
@click="monitorClick(scope.row, 0)"
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qj.png" alt=""
title="查看通道1" @click="monitorClick(scope.row, 0)"
style="cursor: pointer;margin:auto;display: inline-block;">
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qj.png" alt="" title="查看通道2"
@click="monitorClick(scope.row, 1)"
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_qj.png" alt=""
title="查看通道2" @click="monitorClick(scope.row, 1)"
style="cursor: pointer;margin:auto;display: inline-block;margin-left:15px;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_qj1.png" alt="" title="离线通道1"
style="margin:auto;display: inline-block;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_qj1.png" alt="" title="离线通道1"
style="margin:auto;display: inline-block;margin-left:15px;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_qj1.png" alt=""
title="离线通道1" style="margin:auto;display: inline-block;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_qj1.png" alt=""
title="离线通道1" style="margin:auto;display: inline-block;margin-left:15px;">
</span>
<span v-if="scope.row.channelList.length == 0">
@ -1859,24 +1795,24 @@ const isGaoliang: any = ref("")
<span v-if="scope.row.type == 10 && scope.row.useMode == 12">
<span v-if="scope.row.channelList != undefined && scope.row.channelList.length == 1">
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_yt.png" alt="" title="查看通道1"
@click="monitorClick(scope.row, 0)"
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_yt.png" alt=""
title="查看通道1" @click="monitorClick(scope.row, 0)"
style="cursor: pointer;margin:auto;display: inline-block;margin-left:15px;">
<img v-else src="@/assets/newimg/ht_yt1.png" alt="" title="离线通道1"
style="margin:auto;display: inline-block;margin-left:15px;">
</span>
<span v-if="scope.row.channelList != undefined && scope.row.channelList.length == 2">
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_yt.png" alt="" title="查看通道1"
@click="monitorClick(scope.row, 0)"
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_yt.png" alt=""
title="查看通道1" @click="monitorClick(scope.row, 0)"
style="cursor: pointer;margin:auto;display: inline-block;">
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_yt.png" alt="" title="查看通道2"
@click="monitorClick(scope.row, 1)"
<img v-if="scope.row.online == 1" src="@/assets/newimg/ht_yt.png" alt=""
title="查看通道2" @click="monitorClick(scope.row, 1)"
style="cursor: pointer;margin:auto;display: inline-block;margin-left:15px;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_yt1.png" alt="" title="离线通道1"
style="margin:auto;display: inline-block;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_yt1.png" alt="" title="离线通道1"
style="margin:auto;display: inline-block;margin-left:15px;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_yt1.png" alt=""
title="离线通道1" style="margin:auto;display: inline-block;">
<img v-if="scope.row.online != 1" src="@/assets/newimg/ht_yt1.png" alt=""
title="离线通道1" style="margin:auto;display: inline-block;margin-left:15px;">
<span v-if="scope.row.channelList == undefined">
----
</span>
@ -1896,22 +1832,13 @@ const isGaoliang: any = ref("")
<span v-else style="color: #d7d7d7">无效</span>
</template>
</el-table-column>
<el-table-column label="静默任务" width="100" prop="dailymonitor" align="center" fixed="right">
<template #default="scope">
<el-switch v-model="scope.row.dailymonitor" active-value="1" inactive-value="0"
:disabled="scope.row.typeName == '硬盘录像机' || scope.row.channelList == undefined || scope.row.online != 1"
@change="switchDailymonitor(scope.row)" style="margin-right: 4px"></el-switch>
<span v-if="scope.row.dailymonitor == 1" class="effective">启用</span>
<span v-else style="color: #d7d7d7">停用</span>
</template>
</el-table-column>
<el-table-column label="操作" width="60" fixed="right" align="center"
style="display: flex; display: -webkit-flex;">
<template #default="scope">
<span
style="display: flex;display: -webkit-flex; justify-content: space-around;-webkit-justify-content: space-around; ">
<img v-hasPerm="['update:patroldevice']" src="@/assets/newimg/ht_xg.png" alt="" title="修改"
@click="handleEdit(scope.row)" style="cursor: pointer;">
<img v-hasPerm="['update:patroldevice']" src="@/assets/newimg/ht_xg.png" alt=""
title="修改" @click="handleEdit(scope.row)" style="cursor: pointer;">
<img v-hasPerm="['del:patroldevice']" src="@/assets/newimg/ht_sc.png" alt=""
v-if="scope.row.datastatus == 0" title="删除" @click="handleDelete(scope.row)"
style="cursor: pointer; ">
@ -1942,7 +1869,8 @@ const isGaoliang: any = ref("")
</div>
<div class="Camera-left-bottom">
<div class="Camera-buttons-box">
<div class="Camera-left-button1" @mousedown="ptzCamera('up')" @mouseup="ptzCamera('stop')">
<div class="Camera-left-button1" @mousedown="ptzCamera('up')"
@mouseup="ptzCamera('stop')">
</div>
<div class="Camera-left-button2" @mousedown="ptzCamera('upright')"
@mouseup="ptzCamera('stop')"></div>
@ -1977,8 +1905,8 @@ const isGaoliang: any = ref("")
</el-icon></div>
</div>
<div style="display: flex;">
<div class="videoOperations" :class="{ 'gaolaing': isGaoliang == '66' }" @mouseup="quxiao"
@mousedown="condensationChang('减')"><el-icon>
<div class="videoOperations" :class="{ 'gaolaing': isGaoliang == '66' }"
@mouseup="quxiao" @mousedown="condensationChang('减')"><el-icon>
<Minus />
</el-icon></div>
<div class="videoOperationstext">光聚</div>
@ -1989,8 +1917,8 @@ const isGaoliang: any = ref("")
</el-icon></div>
</div>
<div style="display: flex;">
<div class="videoOperations" :class="{ 'gaolaing': isGaoliang == '72' }" @mouseup="quxiao"
@mousedown="apertureChang('减')"><el-icon>
<div class="videoOperations" :class="{ 'gaolaing': isGaoliang == '72' }"
@mouseup="quxiao" @mousedown="apertureChang('减')"><el-icon>
<Minus />
</el-icon></div>
<div class="videoOperationstext">光圈</div>
@ -2004,59 +1932,27 @@ const isGaoliang: any = ref("")
</div>
</div>
<div style="width:500px">
<div style="display: flex;justify-content:space-between; padding-left: 30px;">
<div style="display: flex;">
<span style="display: block; padding-top: 4px;padding-left: 15px;">灯光</span>
<el-switch class="nei" style="display: block;margin-left:15px;" v-model="isLighting"
inline-prompt active-text="开" inactive-text="关" @change="lightingClick"
active-value="255" inactive-value="0" />
</div>
<div style="display: flex;"><span
style="display: block;padding-top: 4px;padding-left:30px">红外</span>
<el-switch class="nei" style="display: block;margin-left:15px" v-model="isInfrared"
inline-prompt active-text="开" inactive-text="关" @change="infraredClick"
active-value="255" inactive-value="0" />
</div>
<div style="display: flex;"><span
style="display: block;padding-top: 4px;padding-left:30px">雨刷</span>
<el-switch class="nei" style="display: block;margin-left:15px" v-model="isWiper"
inline-prompt active-text="开" inactive-text="关" @change="WiperClick"
active-value="1" inactive-value="0" />
</div>
</div>
<!-- <div class="Camera-left-switchs-two"></div> -->
<div style="display: flex;align-items: center; padding-top: 25px; padding-left: 30px;"
class="buttonstyleheight">
<div style="width: 60px;">预置位</div>
<el-input-number class="Camera-number-input" style="width:140px"
v-model="beforehandPosition" controls-position="right" size="large" />
<el-button class="searchButton" style="margin-left:30px"
<div>
<el-button class="searchButton" style="margin-left:30px"
@click="presetPosition(129, beforehandPosition)">设置</el-button>
<el-button class="searchButton" style="margin-left:30px"
@click="presetPosition(131, beforehandPosition)">删除</el-button>
<el-button class="searchButton" type="primary" style="margin-left:30px"
@click="presetPosition(130, beforehandPosition)">调用</el-button>
</div>
</div>
</div>
</div>
<div
style="display: flex;align-items: center; justify-content: space-between; padding-top: 10px;width:100%;">
<div style="margin-left: 15px;">守望位号</div>
<div style="margin-left:15px ;width:200px;"><el-input placeholder=" " v-model="preset" />
</div>
<div style="margin-left: 30px;">守望位回归时间</div>
<div style="margin-left:15px ;position: relative;"><el-input v-model="presettime"
placeholder=" " />
<div style="position: absolute;color: #00000067;top: 6px;right: 5px;">分钟</div>
</div>
<el-button class="searchButton" style="margin-left:30px" @click="Position">设置</el-button>
</div>
</div>
</div>
</template>
@ -2080,14 +1976,16 @@ const isGaoliang: any = ref("")
@mouseup="ptzCamera('stop')">
<img src="@/assets/MenuIcon/u1158.png" alt="" style="transform:rotate(-45deg)">
</div>
<div class="Camera-left-button" @mousedown="ptzCamera('up')" @mouseup="ptzCamera('stop')">
<div class="Camera-left-button" @mousedown="ptzCamera('up')"
@mouseup="ptzCamera('stop')">
<img src="@/assets/MenuIcon/u1158.png" alt="">
</div>
<div class="Camera-left-button" @mousedown="ptzCamera('upright')"
@mouseup="ptzCamera('stop')">
<img src="@/assets/MenuIcon/u1158.png" alt="" style="transform:rotate(45deg)">
</div>
<div class="Camera-left-button" @mousedown="ptzCamera('left')" @mouseup="ptzCamera('stop')">
<div class="Camera-left-button" @mousedown="ptzCamera('left')"
@mouseup="ptzCamera('stop')">
<img src="@/assets/MenuIcon/u1158.png" alt="" style="transform:rotate(-90deg)">
</div>
<div class="Camera-left-button" @mousedown="videoRefresh"><img
@ -2100,7 +1998,8 @@ const isGaoliang: any = ref("")
@mouseup="ptzCamera('stop')">
<img src="@/assets/MenuIcon/u1158.png" alt="" style="transform:rotate(-135deg)">
</div>
<div class="Camera-left-button" @mousedown="ptzCamera('down')" @mouseup="ptzCamera('stop')">
<div class="Camera-left-button" @mousedown="ptzCamera('down')"
@mouseup="ptzCamera('stop')">
<img src="@/assets/MenuIcon/u1158.png" alt="" style="transform:rotate(180deg)">
</div>
<div class="Camera-left-button" @mousedown="ptzCamera('downright')"
@ -2163,9 +2062,9 @@ const isGaoliang: any = ref("")
</div>
<div style="display: flex;"><span
style="display: block;padding-top: 4px;padding-left:30px">雨刷</span>
<el-switch style="display: block;margin-left:15px" v-model="isWiper" inline-prompt
active-text="开" inactive-text="关" @change="WiperClick" active-value="1"
inactive-value="0" />
<el-switch style="display: block;margin-left:15px" v-model="isWiper"
inline-prompt active-text="开" inactive-text="关" @change="WiperClick"
active-value="1" inactive-value="0" />
</div>
@ -2901,6 +2800,5 @@ const isGaoliang: any = ref("")
.gaolaing {
background: rgba(50, 177, 245, 0.4)
}</style>
}
</style>

View File

@ -25,6 +25,9 @@ import Eldialog from '@/components/seccmsdialog/eldialog.vue';
import {
getArea,
} from "@/api/monitordevice";
import { useUserStore } from '@/store/modules/user';
import { getTreeList } from "@/api/linksignal";
const userStore = useUserStore();
//
interface Tree {
[x: string]: any;
@ -32,8 +35,8 @@ interface Tree {
children?: Tree[];
}
const defaultProps = {
// children: "children",
label: "stationName"
children: "children",
label: "name"
};
const treedata: any = ref([]);
const treeRef = ref();
@ -45,21 +48,22 @@ const stationId = ref()
const stationName = ref()
const stationCode = ref()
function getSelect() {
getTreefirst().then((res: any) => {
getTreeList({stationId:userStore.stationId}).then((res: any) => {
if (res.code == 0) {
if (res.data.length == 0) {
tableData.value = []
loading.value = false
}
treedata.value = res.data
stationId.value = res.data[0].stationId
stationId.value = userStore.stationId
areaId.value = res.data[0].areaId
stationName.value = res.data[0].stationName
stationCode.value = res.data[0].stationCode
GetArea()
treeloading.value = false
loading.value = true
nextTick(() => {
treeRef.value?.setCurrentKey(res.data[0].stationId);
treeRef.value?.setCurrentKey(areaId.value);
});
getData()
} else {
@ -71,7 +75,8 @@ function getSelect() {
//
const disabled = ref(false)
function handleNodeClick(data: Tree, node: any) {
stationId.value = data.stationId
areaId.value = data.areaId
stationId.value = userStore.stationId
stationName.value = data.stationName
stationCode.value = data.stationCode
GetArea()
@ -81,9 +86,10 @@ function handleNodeClick(data: Tree, node: any) {
}
//
const deviceName = ref('')
const areaId = ref('')
const tableData: any = ref()
const loading = ref(false)
const paramstable = ref({
const paramstable:any = ref({
size: 10,
current: 1,
stationId: '',
@ -99,7 +105,8 @@ const manufacturer = ref()
const total = ref()
function getData() {
loading.value = true
paramstable.value.stationId = stationId.value
paramstable.value.stationId = userStore.stationId
paramstable.value.areaId = areaId.value
paramstable.value.patrolDeviceName = patrolDeviceName.value
paramstable.value.deviceModel = deviceModel.value
paramstable.value.manufacturer = manufacturer.value
@ -364,7 +371,8 @@ function addClick() {
macaddr: '',
custom1: '',
materialId: '',
internationalId: ''
internationalId: '',
areaId: areaId.value,
}
title.value = "新增声纹监测装置"
dialogVisible.value = true;
@ -586,7 +594,7 @@ function GetArea() {
placeholder="请输入设备名称"></el-input>
</el-form-item>
<el-form-item label="区域" style="width:50%" prop="areaId">
<el-select v-model="info.areaId" placeholder="请选择区域"
<el-select v-model="info.areaId" placeholder="请选择区域" disabled
style="width: 100%;">
<el-option v-for="item in areaList" :key="item.areaId" :label="item.areaName"
:value="item.areaId" />

View File

@ -113,7 +113,7 @@ const num = ref(0)
<div style="width:370px;height: 250px;">
<div class="public-details-conent" >
<div class="public-details-name">点位名称</div>
<div>{{ examinationInfo.bayName }}</div>
<div>{{ examinationInfo.deviceName }}</div>
</div>
<div class="public-details-conent" >
<div class="public-details-name">设备名称</div>
@ -130,14 +130,14 @@ const num = ref(0)
<div class="public-details-conent">
<div class="public-details-name">告警阈值</div>
<span style="display:block;" >
<span style="display: inline-block;width: 50%;text-align: left;"><span>预警</span><span>{{
examinationInfo.earlyMin }}-{{ examinationInfo.earlyMax }}</span></span>
<span style="display: inline-block;width: 50%;text-align: left;"><span>一般</span><span>{{
examinationInfo.sameMin }}-{{ examinationInfo.sameMax }}</span></span>
<span style="display: inline-block;width: 50%;text-align: left;"><span>严重</span><span>{{
examinationInfo.seriousMin }}-{{ examinationInfo.seriousMax }}</span></span>
<span style="display: inline-block;width: 50%;text-align: left;"><span>危急</span><span>{{
examinationInfo.criticalMin }}-{{ examinationInfo.criticalMax }}</span></span>
<!-- <span style="display: inline-block;width: 50%;text-align: left;"><span>预警</span><span>{{
examinationInfo.earlyMin }}-{{ examinationInfo.earlyMax }}</span></span> -->
<span style="display: inline-block;width: 70%;text-align: left;"><span>一般</span><span>{{
examinationInfo.commonLower }}-{{ examinationInfo.commonUpper }}</span></span>
<span style="display: inline-block;width: 70%;text-align: left;"><span>严重</span><span>{{
examinationInfo.seriousLower }}-{{ examinationInfo.seriousUpper }}</span></span>
<span style="display: inline-block;width: 70%;text-align: left;"><span>危急</span><span>{{
examinationInfo.dangerLower }}-{{ examinationInfo.dangerLower }}</span></span>
</span>
</div>
<div class="public-details-conent">

View File

@ -198,7 +198,7 @@ const handleChange = (value: any) => {
<div style="width:370px;height: 250px;">
<div class="public-details-conent">
<div class="public-details-name">点位名称</div>
<div>{{ examinationInfo.bayName }}</div>
<div>{{ examinationInfo.deviceName }}</div>
</div>
<div class="public-details-conent">
<div class="public-details-name">设备名称</div>
@ -215,14 +215,14 @@ const handleChange = (value: any) => {
<div class="public-details-conent">
<div class="public-details-name">告警阈值</div>
<span style="display:block;" >
<span style="display: inline-block;width: 50%;text-align: left;"><span>预警</span><span>{{
examinationInfo.earlyMin }}-{{ examinationInfo.earlyMax }}</span></span>
<!-- <span style="display: inline-block;width: 50%;text-align: left;"><span>预警</span><span>{{
examinationInfo.earlyMin }}-{{ examinationInfo.earlyMax }}</span></span> -->
<span style="display: inline-block;width: 50%;text-align: left;"><span>一般</span><span>{{
examinationInfo.sameMin }}-{{ examinationInfo.sameMax }}</span></span>
examinationInfo.commonLower }}-{{ examinationInfo.commonLower }}</span></span>
<span style="display: inline-block;width: 50%;text-align: left;"><span>严重</span><span>{{
examinationInfo.seriousMin }}-{{ examinationInfo.seriousMax }}</span></span>
examinationInfo.seriousLower }}-{{ examinationInfo.seriousLower }}</span></span>
<span style="display: inline-block;width: 50%;text-align: left;"><span>危急</span><span>{{
examinationInfo.criticalMin }}-{{ examinationInfo.criticalMax }}</span></span>
examinationInfo.dangerLower }}-{{ examinationInfo.dangerLower }}</span></span>
</span>
</div>

View File

@ -103,31 +103,41 @@ function getecharts() {
})
}
function getRandomColor(): string {
const hue = Math.floor(Math.random() * 360); // 0~359
const saturation = 70 + Math.floor(Math.random() * 20); // 70~90%
const lightness = 50 + Math.floor(Math.random() * 10); // 50~60%
return `hsl(${hue}, ${saturation}%, ${lightness}%)`;
}
function drawEchart(item: any, index: any) {
// debugger
const dynamicColor = `fff`;
let myChart = echarts.init(document.getElementById(("deviceEachers" + index)) as HTMLDivElement);
myChart.setOption({
tooltip: {
trigger: 'axis'
},
legend: {
data: [item.series[0].name],
textStyle: { color: dynamicColor, fontSize: 14 }
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
top: '18%',
containLabel: true
},
//
const randomColor = getRandomColor();
xAxis: item.xAxis,
yAxis: item.yAxis,
series: item.series,
})
let myChart = echarts.init(document.getElementById("deviceEachers" + index) as HTMLDivElement);
myChart.setOption({
tooltip: {
trigger: 'axis'
},
legend: {
data: [item.series[0].name],
textStyle: { color: randomColor, fontSize: 14 }
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
top: '18%',
containLabel: true,
borderColor: randomColor
},
xAxis:item.xAxis ,
yAxis:item.yAxis ,
series: item.series.map((series: any) => ({
...series,
itemStyle: { color: randomColor }
}))
});
}
//fenxi
const checloading = ref(false)

View File

@ -1450,18 +1450,18 @@ function delTour(row: any) {
}
//
const tableRowClassName = ({
row,
rowIndex,
row,
rowIndex,
}: {
row: any
rowIndex: number
row: any
rowIndex: number
}) => {
if (rowIndex % 2 === 0) {
return 'warning-row'
} else if (rowIndex % 2 === 1) {
return 'success-row'
}
return ''
if (rowIndex % 2 === 0) {
return 'warning-row'
} else if (rowIndex % 2 === 1) {
return 'success-row'
}
return ''
}
// //
// const tableRowClassName = ({
@ -1488,12 +1488,12 @@ onMounted(() => {
gettoday()
});
function gettoday() {
// 0
let startTime = dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss')
//
let endTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
tableData.value[0] = startTime
tableData.value[1] = endTime
// 0
let startTime = dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss')
//
let endTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
tableData.value[0] = startTime
tableData.value[1] = endTime
}
//
function changeType(row: any) {
@ -2175,8 +2175,8 @@ const open = () => {
</div>
<div>
<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" :row-class-name="tableRowClassName"
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="index" label="序号" width="50px" align="center" />
<el-table-column property="stationName" label="变电站名称" align="center">
@ -2392,91 +2392,98 @@ const open = () => {
<div class="essential-top">
<div style="margin-bottom: 20px;">
<el-button class="searchButton" style="margin-left:0" type="primary"
v-if="info.datastatus == 1 || title == '复制巡视任务'" @click="associationInterval">关联间隔</el-button>
<el-button class="searchButton" type="primary" v-if="info.datastatus == 1 || title == '复制巡视任务'"
v-if="info.datastatus == 1 && title == '复制巡视任务'" @click="associationInterval">关联间隔</el-button>
<el-button class="searchButton" type="primary" v-if="info.datastatus == 1 && title == '复制巡视任务'"
@click="associateMasterDevice">关联主设备</el-button>
<el-button class="searchButton" type="primary" v-if="info.datastatus == 1 || title == '复制巡视任务'"
<el-button class="searchButton" type="primary" v-if="info.datastatus == 1 && title == '复制巡视任务'"
@click="AssociatedComponents">关联部件</el-button>
<el-button class="searchButton" type="primary" v-if="info.datastatus == 1 || title == '复制巡视任务'"
<el-button class="searchButton" type="primary" v-if="info.datastatus == 1 && title == '复制巡视任务'"
@click="AssociatedInspection">关联巡视点位</el-button>
</div>
</div>
<div>
<div class="suo">
<div>
<div class="essentialTop">关联结果 </div>
<div v-if="deviceLevel == 0" class="essentialBottom">
暂未绑定
</div>
<div v-if="deviceLevel == 1">
<el-scrollbar height="300px">
<el-table :data="allData" style="width: 100%;margin-bottom: 15px;" row-key="id" default-expand-all
:header-cell-style="tableBg" :row-class-name="tableRowClassName">
<el-table-column label="序号" type="index" align="center" width="50px" />
<el-table-column label="间隔名称" prop="bayName" width="110"></el-table-column>
<el-table-column label="所属变电站" prop="stationName"></el-table-column>
<el-table-column label="所属区域" prop="areaName"></el-table-column>
<el-table-column v-if="info.datastatus == 1" label="操作" width="60px">
<template #default="scope">
<img src="@/assets/MenuIcon/lbcz_sc.png" alt="" @click="delTour(scope.row)"
style="cursor: pointer;">
</template>
</el-table-column>
</el-table>
</el-scrollbar>
<el-table :data="allData"
style="width: 100%;height: calc(100vh - 650px);overflow:auto;margin-bottom: 15px;" row-key="id"
default-expand-all :header-cell-style="tableBg" :row-class-name="tableRowClassName">
<el-table-column label="序号" type="index" align="center" width="50px" />
<el-table-column label="间隔名称" prop="bayName" width="110"></el-table-column>
<el-table-column label="所属变电站" prop="stationName"></el-table-column>
<el-table-column label="所属区域" prop="areaName"></el-table-column>
<el-table-column v-if="info.datastatus == 1" label="操作" width="60px">
<template #default="scope">
<img src="@/assets/MenuIcon/lbcz_sc.png" alt="" @click="delTour(scope.row)"
style="cursor: pointer;">
</template>
</el-table-column>
</el-table>
</div>
<div v-if="deviceLevel == 2">
<el-table :data="allData"
style="width: 100%;height: calc(100vh - 650px);overflow:auto;margin-bottom: 15px;" row-key="id"
default-expand-all :header-cell-style="tableBg" :row-class-name="tableRowClassName">
<el-table-column label="序号" type="index" align="center" width="50px" />
<el-table-column label="主设备名称" prop="mainDeviceName" width="110"></el-table-column>
<el-table-column label="所属变电站" prop="stationName"></el-table-column>
<el-table-column label="所属区域" prop="areaName"></el-table-column>
<el-table-column label="所属间隔" prop="bayName"></el-table-column>
<el-table-column v-if="info.datastatus == 1" label="操作" width="60px">
<template #default="scope">
<img src="@/assets/MenuIcon/lbcz_sc.png" alt="" @click="delTour(scope.row)"
style="cursor: pointer;">
</template>
</el-table-column>
</el-table>
<el-scrollbar height="300px">
<el-table :data="allData" style="width: 100%;margin-bottom: 15px;" row-key="id" default-expand-all
:header-cell-style="tableBg" :row-class-name="tableRowClassName">
<el-table-column label="序号" type="index" align="center" width="50px" />
<el-table-column label="主设备名称" prop="mainDeviceName" width="110"></el-table-column>
<el-table-column label="所属变电站" prop="stationName"></el-table-column>
<el-table-column label="所属区域" prop="areaName"></el-table-column>
<el-table-column label="所属间隔" prop="bayName"></el-table-column>
<el-table-column v-if="info.datastatus == 1" label="操作" width="60px">
<template #default="scope">
<img src="@/assets/MenuIcon/lbcz_sc.png" alt="" @click="delTour(scope.row)"
style="cursor: pointer;">
</template>
</el-table-column>
</el-table>
</el-scrollbar>
</div>
<div v-if="deviceLevel == 4">
<el-table :data="allData"
style="width: 100%;height: calc(100vh - 650px);overflow:auto;margin-bottom: 15px;" row-key="id"
default-expand-all :header-cell-style="tableBg" :row-class-name="tableRowClassName">
<el-table-column label="序号" type="index" align="center" width="50px" />
<el-table-column label="部件名称" prop="componentName" width="110"></el-table-column>
<el-table-column label="所属变电站" prop="stationName"></el-table-column>
<el-table-column label="所属区域" prop="areaName"></el-table-column>
<el-table-column label="所属间隔" prop="bayName"></el-table-column>
<el-table-column label="所属主设备" prop="mainDeviceName"></el-table-column>
<el-table-column v-if="info.datastatus == 1" label="操作" width="60px">
<template #default="scope">
<img src="@/assets/MenuIcon/lbcz_sc.png" alt="" @click="delTour(scope.row)"
style="cursor: pointer;">
</template>
</el-table-column>
</el-table>
<el-scrollbar height="300px">
<el-table :data="allData" style="width: 100%;margin-bottom: 15px;" row-key="id" default-expand-all
:header-cell-style="tableBg" :row-class-name="tableRowClassName">
<el-table-column label="序号" type="index" align="center" width="50px" />
<el-table-column label="部件名称" prop="componentName" width="110"></el-table-column>
<el-table-column label="所属变电站" prop="stationName"></el-table-column>
<el-table-column label="所属区域" prop="areaName"></el-table-column>
<el-table-column label="所属间隔" prop="bayName"></el-table-column>
<el-table-column label="所属主设备" prop="mainDeviceName"></el-table-column>
<el-table-column v-if="info.datastatus == 1" label="操作" width="60px">
<template #default="scope">
<img src="@/assets/MenuIcon/lbcz_sc.png" alt="" @click="delTour(scope.row)"
style="cursor: pointer;">
</template>
</el-table-column>
</el-table>
</el-scrollbar>
</div>
<div v-if="deviceLevel == 3">
<el-table :data="allData"
style="width: 100%;height: calc(100vh - 650px);overflow:auto;margin-bottom: 15px;" row-key="id"
default-expand-all :header-cell-style="tableBg" :row-class-name="tableRowClassName">
<el-table-column label="序号" type="index" align="center" width="50px" />
<el-table-column label="巡视点位名称" prop="deviceName"></el-table-column>
<el-table-column label="所属变电站" prop="stationName" width="170px"></el-table-column>
<el-table-column label="所属区域" prop="areaName" width="120px"></el-table-column>
<el-table-column label="所属间隔" prop="bayName" width="120px"></el-table-column>
<el-table-column label="所属主设备" prop="mainDeviceName" width="120px"></el-table-column>
<el-table-column label="所属部件" prop="componentName" width="120px"></el-table-column>
<el-table-column v-if="info.datastatus == 1" label="操作" width="60px">
<template #default="scope">
<img src="@/assets/MenuIcon/lbcz_sc.png" alt="" @click="delTour(scope.row)"
style="cursor: pointer;">
</template>
</el-table-column>
</el-table>
<el-scrollbar height="300px">
<el-table :data="allData" style="width: 100%;margin-bottom: 15px;" row-key="id" default-expand-all
:header-cell-style="tableBg" :row-class-name="tableRowClassName">
<el-table-column label="序号" type="index" align="center" width="50px" />
<el-table-column label="巡视点位名称" prop="deviceName"></el-table-column>
<el-table-column label="所属变电站" prop="stationName" width="170px"></el-table-column>
<el-table-column label="所属区域" prop="areaName" width="120px"></el-table-column>
<el-table-column label="所属间隔" prop="bayName" width="120px"></el-table-column>
<el-table-column label="所属主设备" prop="mainDeviceName" width="120px"></el-table-column>
<el-table-column label="所属部件" prop="componentName" width="120px"></el-table-column>
<el-table-column v-if="info.datastatus == 1" label="操作" width="60px">
<template #default="scope">
<img src="@/assets/MenuIcon/lbcz_sc.png" alt="" @click="delTour(scope.row)"
style="cursor: pointer;">
</template>
</el-table-column>
</el-table>
</el-scrollbar>
</div>
</div>
</div>
@ -2850,8 +2857,8 @@ const open = () => {
</Eldialog>
<Eldialog v-if="control" :title="'二次密码验证'" :zIndex="2000" :width="'400px'" @before-close="inputCLOse">
<template v-slot:PopFrameContent>
<el-input v-model="password" autocomplete="new-password" :name="'pwd-'+Date.now()" placeholder="请输入账号密码" style="margin-top:30px;width: 100%;" type="password"
show-password />
<el-input v-model="password" autocomplete="new-password" :name="'pwd-' + Date.now()" placeholder="请输入账号密码"
style="margin-top:30px;width: 100%;" type="password" show-password />
<div style="padding:5px 0">
<div v-if="inputTrue" style="color:red;">密码错误请重新输入</div>
</div>
@ -3148,6 +3155,11 @@ const open = () => {
:deep(.el-scrollbar) {
height: calc(100vh - 360px);
}
.suo{
:deep(.el-scrollbar) {
height: 100% !important;
}
}
.draggable {
padding-top: 15px;

View File

@ -52,7 +52,12 @@ const form: any = ref({
custom2: '',
})
const recognitionType = ref([])
function getTypeTwo() {
getDeviceByType({ dictcode: 'recognition_type' }).then((res: any) => {
recognitionType.value = res.data
})
}
//
function sure(data: any, index: any) {
if (index == 'one') {
@ -568,6 +573,7 @@ onMounted(() => {
deviceName: '',
valid: '',
}
getTypeTwo()
setupWebSocket()
getType()
getData()
@ -792,45 +798,50 @@ function retrunClick() {
<span v-else>--</span>
</template>
</el-table-column> -->
<el-table-column prop="desc" label="识别类型" width="140px" align="center" >
<el-table-column prop="desc" label="识别类型" width="140px">
<template #default="scope">
<span v-if="scope.row.desc != null && scope.row.desc != ''">{{ scope.row.desc
<span v-if="scope.row.recognitionType">{{ currency(recognitionType,
scope.row.recognitionType,)
}}</span>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column label="识别值" width="100px" align="center">
<el-table-column label="识别值" width="100px">
<template #default="scope">
<span
v-if="scope.row.valueType == 'meter' || scope.row.valueType == 'infrared' || scope.row.valueType == 'sound'">
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;"> {{
scope.row.value }}
{{ scope.row.unit }}</span>
<span v-else> {{ scope.row.value }} {{ scope.row.unit }}</span>
style="color: red;font-size: 16px;font-weight: bold;">
{{ scope.row.value }} {{ scope.row.unit }}
</span>
<span v-else>
{{ scope.row.value }} {{ scope.row.unit }}
</span>
</span>
<span v-else>
<span v-if="scope.row.conf != null && scope.row.conf != ''">{{
scope.row.conf
}}</span>
<span
v-if="scope.row.desc != null && scope.row.desc != '' && scope.row.valueType != 'sound'">
{{ scope.row.desc }}
</span>
<span v-else>--</span>
</span>
</template>
</el-table-column>
<el-table-column prop="analysisResult" label="巡视结论" align="center" width="80px">
<template #default="scope">
<span v-if="scope.row.analysisResult == '正常'"
<span v-if="scope.row.analysisResult == '正常' && scope.row.flag != '7'"
style="color: rgb(0, 249, 162)">正常</span>
<span v-if="scope.row.analysisResult == '异常'"
style="color: rgb(255, 51, 0);color: red;font-size: 16px;font-weight: bold;">异常</span>
<span v-if="scope.row.analysisResult == '设备检修'"
<span v-if="scope.row.analysisResult == '异常' && scope.row.flag != '7'"
style="color: rgb(255, 51, 0);font-size: 16px;font-weight: bold;">异常</span>
<span v-if="scope.row.analysisResult == '设备检修' && scope.row.flag != '7'"
style="color: rgb(0, 153, 255)">设备检修</span>
<span v-if="scope.row.analysisResult == '失败'"
<span v-if="scope.row.analysisResult == '失败' && scope.row.flag != '7'"
style="color: rgb(255, 189, 0)">失败</span>
<span v-if="scope.row.analysisResult == '成功'"
<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.analysisResult == null">--</span>
v-if="(scope.row.analysisResult == '' && scope.row.flag != '7') || (scope.row.analysisResult == null && scope.row.flag != '7')">--</span>
</template>
</el-table-column>
<el-table-column prop="reviseValue" label="修正值" align="center">
@ -881,29 +892,30 @@ function retrunClick() {
style="display: inline-block;margin-left: 15px;">{{ tableDataHover.time
}}</span>
</div>
<div style="margin-top: 10px;"><span
<!-- <div style="margin-top: 10px;"><span
style="display: inline-block;margin-left: 17px;">实物id
:</span><span style="display: inline-block;margin-left: 15px;"
v-if="tableDataHover.materialId">{{ tableDataHover.materialId }}</span><span
style="display: inline-block;margin-left: 15px;width: 70%;" v-else>--</span>
</div>
</div> -->
<div style="margin-top: 10px;">
<span style="display: block;margin-left: 33px;">阈值 :</span>
<span style="display:block;margin-left:80px;margin-top: -23px;"
v-if="tableDataHover.sameMin">
<span
v-if="tableDataHover.dangerLower">
<!-- <span
style="display: inline-block;width: 50%;text-align: left;"><span>预警</span><span>{{
tableDataHover.earlyMin }}-{{ tableDataHover.earlyMax }}</span></span>
tableDataHover.earlyMin }}-{{ tableDataHover.earlyMax }}</span></span> -->
<span
style="display: inline-block;width: 50%;text-align: left;"><span>一般</span><span>{{
tableDataHover.sameMin }}-{{ tableDataHover.sameMax }}</span></span>
<span
style="display: inline-block;width: 50%;text-align: left;"><span>严重</span><span>{{
tableDataHover.seriousMin }}-{{ tableDataHover.seriousMax
style="display: inline-block;width: 100%;text-align: left;"><span>一般</span><span>{{
tableDataHover.commonLower }}-{{ tableDataHover.commonUpper
}}</span></span>
<span
style="display: inline-block;width: 50%;text-align: left;"><span>危急</span><span>{{
tableDataHover.criticalMin }}-{{ tableDataHover.criticalMax
style="display: inline-block;width: 100%;text-align: left;"><span>严重</span><span>{{
tableDataHover.seriousLower }}-{{ tableDataHover.seriousUpper
}}</span></span>
<span
style="display: inline-block;width: 100%;text-align: left;"><span>危急</span><span>{{
tableDataHover.dangerLower }}-{{ tableDataHover.dangerUpper
}}</span></span>
</span>
<span v-else style="display:block;margin-left:88px;margin-top: -23px;">