缺陷bug修改

This commit is contained in:
wangxk 2025-05-23 13:36:04 +08:00
parent f3cc9ac27c
commit a4be773f45
19 changed files with 704 additions and 284 deletions

View File

@ -1,12 +1,4 @@
import request from '@/utils/request'; import request from '@/utils/request';
// 查询环境设备
export function getWeatherLogPage(params:any){
return request({
url: '/basedata/weather-log/getWeatherLogPage' ,
method: 'get',
params:params
});
}
export function getdeviceworkdata(params:any){ export function getdeviceworkdata(params:any){
return request({ return request({
url: '/auxcontrol/device-work-data/page' , url: '/auxcontrol/device-work-data/page' ,

View File

@ -225,3 +225,44 @@ export function editArea(params: any) {
params: params params: params
}); });
} }
//按类型查询模型对象
export function getModelListByType(params: any) {
return request({
url: '/basedata/substation-model/getModelListByType',
method: 'get',
params
});
}
//按 任务查找模型
export function getDevicelListByTask(params: any) {
return request({
url: '/basedata/substation-model/getDevicelListByTask',
method: 'get',
params
});
}
//添加模型信息
export function addModelObject(params: any) {
return request({
url: '/basedata/substation-model/addModelObject',
method: 'post',
data: params
});
}
//删除模型对象
export function deleteModelObject(params: any) {
return request({
url: '/basedata/substation-model/deleteModelObject',
method: 'post',
params
});
}
//修改模型信息
export function updateModelObject(params: any) {
return request({
url: '/basedata/substation-model/updateModelObject',
method: 'post',
data: params
});
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 B

View File

@ -541,7 +541,7 @@ export default {
}, },
fullscreenSwich: function () { fullscreenSwich: function () {
const userStore = useUserStore() const userStore = useUserStore()
if (this.devicechannelInfo) { if (this.devicechannelInfo&&this.devicechannelInfo.deviceId ) {
if(this.zhu){ if(this.zhu){
let isFull = this.isFullscreen() let isFull = this.isFullscreen()
jessibucaPlayer[this._uid].setFullscreen(!isFull) jessibucaPlayer[this._uid].setFullscreen(!isFull)

View File

@ -211,7 +211,7 @@ const tableData = ref([]);
const total = ref() const total = ref()
const dialog = ref(false) const dialog = ref(false)
const algorithmId = ref('') const algorithmId = ref('')
const queryParams = ref({ const queryParams:any = ref({
algorithmId: '', algorithmId: '',
current: 1, current: 1,
size: 10, size: 10,
@ -219,6 +219,7 @@ const queryParams = ref({
function gatdata() { function gatdata() {
dialog.value = true dialog.value = true
queryParams.value.algorithmId = algorithmId.value queryParams.value.algorithmId = algorithmId.value
queryParams.value.stationCode = userStore.stationCode
getAlgorithmClassComponentPage(queryParams.value).then((res: any) => { getAlgorithmClassComponentPage(queryParams.value).then((res: any) => {
dialog.value = false dialog.value = false
tableData.value = res.data.records tableData.value = res.data.records
@ -404,7 +405,7 @@ const paramstable: any = ref({
componentId: '' componentId: ''
}) })
function getdevicedata1() { function getdevicedata1() {
devicedataloading.value = true
if (sourceType.value == 1) { if (sourceType.value == 1) {
paramstable.value.bayId = bayId.value paramstable.value.bayId = bayId.value
paramstable.value.componentId = componentId.value paramstable.value.componentId = componentId.value
@ -438,7 +439,7 @@ function getdevicedata1() {
}); });
}) })
} }
devicedataloading.value = true
@ -824,7 +825,6 @@ onMounted(() => {
<div :class="sourceType == 2 ? 'bianhua' : ''" @click="typeChange(2)">关联信号</div> <div :class="sourceType == 2 ? 'bianhua' : ''" @click="typeChange(2)">关联信号</div>
</div> </div>
<div class="faulttemplate-box1"> <div class="faulttemplate-box1">
<div class="silderRight1"> <div class="silderRight1">
<div <div
style="display: flex;display: -webkit-flex; justify-content: space-between; -webkit-justify-content: space-between; margin:15px 0px"> style="display: flex;display: -webkit-flex; justify-content: space-between; -webkit-justify-content: space-between; margin:15px 0px">

View File

@ -61,17 +61,10 @@ const currentNodeKey = ref("")
// //
const value = ref() const value = ref()
const optionSelect = ref() const optionSelect = ref()
function getSelect() {
getTreefirst().then((res: any) => {
optionSelect.value = res.data
value.value = res.data[0].stationId
getTree(res.data[0].stationId)
})
}
const areaId = ref() const areaId = ref()
function getTree(val: any) { function getTree() {
const params = { const params = {
stationId: val stationId: userStore.stationId
} }
getTreelist(params).then((res: any) => { getTreelist(params).then((res: any) => {
if (res.data.length == 0) { if (res.data.length == 0) {
@ -873,7 +866,8 @@ const patroldeviceName = ref()
const manufacturerList: any = ref([]) const manufacturerList: any = ref([])
// //
onMounted(() => { onMounted(() => {
getSelect(); getTree()
// getSelect();
notification() notification()
getDeviceByType({ dictcode: 'DeviceClass' }).then((res: any) => { getDeviceByType({ dictcode: 'DeviceClass' }).then((res: any) => {
DeviceClass.value = res.data DeviceClass.value = res.data
@ -1024,9 +1018,9 @@ function onSubmit(row: any) {
}).catch(function (error: any) { }).catch(function (error: any) {
}) })
} }
function ptzCamera(command: any) { // function ptzCamera(command: any) { // userStore.stationId
isGaoliang.value = command isGaoliang.value = command
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/control/' + deviceId.value + '/' + channelId.value + '?command=' + command + axios.post(userStore.webApiMonitorUrl + '/api/ptz/control/' + deviceId.value + '/' + channelId.value + '?command=' + command +
'&horizonSpeed=' + controSpeed.value + '&verticalSpeed=' + controSpeed.value + '&zoomSpeed=' + controSpeed.value, {}).then((res: any) => { }) '&horizonSpeed=' + controSpeed.value + '&verticalSpeed=' + controSpeed.value + '&zoomSpeed=' + controSpeed.value, {}).then((res: any) => { })
@ -1036,7 +1030,7 @@ function ptzCamera(command: any) { // 监控视频控制方法
} }
function presetPosition(cmdCode: any, presetPos: any) { // --- function presetPosition(cmdCode: any, presetPos: any) { // ---
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode + '&parameter1=0&parameter2=' + presetPos + '&combindCode2=0', {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode + '&parameter1=0&parameter2=' + presetPos + '&combindCode2=0', {}).then((res: any) => { })
} }
@ -1046,7 +1040,7 @@ const isLighting = ref(false)
function lightingClick(row: any) { // function lightingClick(row: any) { //
const cmdCode = ref(10) const cmdCode = ref(10)
const parameter1 = isLighting.value const parameter1 = isLighting.value
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=' + parameter1 + '&parameter2=128&combindCode2=0', {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=' + parameter1 + '&parameter2=128&combindCode2=0', {}).then((res: any) => { })
} }
@ -1056,7 +1050,7 @@ const isInfrared = ref(false)
function infraredClick(row: any) { // function infraredClick(row: any) { //
const cmdCode = ref(13) const cmdCode = ref(13)
const parameter1 = isInfrared.value const parameter1 = isInfrared.value
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=' + parameter1 + '&parameter2=128&combindCode2=0', {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=' + parameter1 + '&parameter2=128&combindCode2=0', {}).then((res: any) => { })
} }
@ -1067,7 +1061,7 @@ const isWiper = ref(false)
function WiperClick(row: any) { // function WiperClick(row: any) { //
const cmdCode = ref(1) const cmdCode = ref(1)
const combindCode2 = isWiper.value const combindCode2 = isWiper.value
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=0&parameter2=0&combindCode2=' + combindCode2, {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=0&parameter2=0&combindCode2=' + combindCode2, {}).then((res: any) => { })
} }
@ -1086,7 +1080,7 @@ function condensationChang(command: any) { // 光聚方法
isGaoliang.value = '66' isGaoliang.value = '66'
cmdCode.value = 66 cmdCode.value = 66
} }
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=80&parameter2=0&combindCode2=0', {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=80&parameter2=0&combindCode2=0', {}).then((res: any) => { })
} }
@ -1103,7 +1097,7 @@ function apertureChang(command: any) { // 光圈方法
cmdCode.value = 72 cmdCode.value = 72
isGaoliang.value = '72' isGaoliang.value = '72'
} }
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=0&parameter2=80&combindCode2=0', {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=0&parameter2=80&combindCode2=0', {}).then((res: any) => { })
} }
@ -1163,7 +1157,7 @@ function getCamera() {
const params = { const params = {
patroldeviceName: patroldeviceName.value, patroldeviceName: patroldeviceName.value,
type: '10', type: '10',
stationId: value.value, stationId: userStore.stationId,
areaId: '', areaId: '',
} }
GetCamera(params).then(res => { GetCamera(params).then(res => {
@ -1377,7 +1371,7 @@ const total1 = ref()
const tableData1: any = ref() const tableData1: any = ref()
function getData1() { function getData1() {
loading.value = true loading.value = true
paramstable1.value.stationId = value.value paramstable1.value.stationId = userStore.stationId
getdata(JSON.stringify(paramstable1.value)).then((res: any) => { getdata(JSON.stringify(paramstable1.value)).then((res: any) => {
loading.value = false loading.value = false
tableData1.value = res.data.records tableData1.value = res.data.records
@ -1723,12 +1717,12 @@ function handleSelectionChange(val: any) {
<div class="line"></div> <div class="line"></div>
<div class="title" style="font-size: 14px;">分类导航</div> <div class="title" style="font-size: 14px;">分类导航</div>
</div> </div>
<el-select v-model="value" placeholder="" <!-- <el-select v-model="value" placeholder=""
style="width: 100% !important; padding:5px; display: flex; justify-content: center;margin-top:10px;" style="width: 100% !important; padding:5px; display: flex; justify-content: center;margin-top:10px;"
@change="getTree"> @change="getTree">
<el-option v-for="item in optionSelect" :key="item.stationId" :label="item.stationName" <el-option v-for="item in optionSelect" :key="item.stationId" :label="item.stationName"
:value="item.stationId" style="width:100%" /> :value="item.stationId" style="width:100%" />
</el-select> </el-select> -->
<el-scrollbar height="calc(78vh)" style="width:99%"> <el-scrollbar height="calc(78vh)" style="width:99%">
<el-tree ref="treeRef" <el-tree ref="treeRef"
:class="useAppStore().size === 'default' ? 'silderLeft-large' : 'silderLeft-default'" :class="useAppStore().size === 'default' ? 'silderLeft-large' : 'silderLeft-default'"

View File

@ -148,6 +148,10 @@ function getechartdata() {
drawEchart() drawEchart()
}) })
} }
function changeType(val: any) {
type.value = val
getechartdata()
}
//线 //线
function drawEchart() { function drawEchart() {
let myChart = echarts.init(document.getElementById("deviceEachers") as HTMLDivElement); let myChart = echarts.init(document.getElementById("deviceEachers") as HTMLDivElement);
@ -318,10 +322,10 @@ function exportDevice() {
<el-radio-button label="分钟" :value="1" /> <el-radio-button label="分钟" :value="1" />
<el-radio-button label="小时" :value="2" /> <el-radio-button label="小时" :value="2" />
</el-radio-group> --> </el-radio-group> -->
<!-- <div class=""> <div class="selectdata">
<div>分钟</div> <div :class="type==1?'select':''" @click="changeType(1)">近一小时</div>
<div>小时</div> <div :class="type==2?'select':''" @click="changeType(2)">近一天</div>
</div> --> </div>
</div> </div>
<div id="deviceEachers" :style="{ width: '100%', height: '90%' }"></div> <div id="deviceEachers" :style="{ width: '100%', height: '90%' }"></div>
@ -331,6 +335,24 @@ function exportDevice() {
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
.selectdata{
display: flex;
align-items: center;
color: #fff;
font-size: 14px;
div{
padding: 3px 5px;
border: 1px solid #0099ffa2;
margin-left: 10px;
border-radius: 5px;
cursor: pointer;
}
.select{
background-color: #004e978a;
color: #0099ff;
border: 1px solid #0099ff;
}
}
.faulttemplate-box { .faulttemplate-box {
height: 100%; height: 100%;
display: flex; display: flex;

View File

@ -9,7 +9,7 @@ import { ref, onMounted, onBeforeUnmount, } from 'vue'
import Page from '@/components/Pagination/page.vue' import Page from '@/components/Pagination/page.vue'
import { useUserStore } from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
import { getWeatherLogList, getDeviceWorkData } from "@/api/home"; import { getWeatherLogList, getDeviceWorkData } from "@/api/home";
import { getWeatherLogPage, getdeviceworkdata } from "@/api/environmentalMonitoring"; import { getdeviceworkdata } from "@/api/environmentalMonitoring";
import { getDeviceByType } from "@/api/device"; import { getDeviceByType } from "@/api/device";
import { getHistoricalCurve } from "@/api/datasurvey/index"; import { getHistoricalCurve } from "@/api/datasurvey/index";
import dayjs from 'dayjs' import dayjs from 'dayjs'
@ -41,7 +41,7 @@ const environment_params: any = ref({
startDate: '', startDate: '',
endDate: '', endDate: '',
patroldeviceName: '', patroldeviceName: '',
stationId: userStore.stationId, // stationId: userStore.stationId,
}) })
const hutotal: any = ref('') const hutotal: any = ref('')
const environment_data = ref([]) const environment_data = ref([])
@ -182,7 +182,7 @@ function gettoday() {
} }
const echartdata: any = ref({}) const echartdata: any = ref({})
function getechartdata() { function getechartdata() {
getHistoricalCurve({ signalId: signalId.value }).then((res: any) => { getHistoricalCurve({ signalId: signalId.value,type:type.value }).then((res: any) => {
echartdata.value = res.data echartdata.value = res.data
drawEchart() drawEchart()
}) })
@ -215,6 +215,11 @@ function getechartdata() {
}) })
} }
} }
const type = ref(1)
function changeType(val: any) {
type.value = val
getechartdata()
}
</script> </script>
<template> <template>
@ -266,6 +271,10 @@ function getechartdata() {
</div> </div>
</div> </div>
<div class="environment_table"> <div class="environment_table">
<div class="selectdata">
<div :class="type==1?'select':''" @click="changeType(1)">近一小时</div>
<div :class="type==2?'select':''" @click="changeType(2)">近一天</div>
</div>
<div id="deviceEachers" :style="{ width: '100%', height: '90%' }"></div> <div id="deviceEachers" :style="{ width: '100%', height: '90%' }"></div>
</div> </div>
</div> </div>
@ -273,6 +282,24 @@ function getechartdata() {
</div> </div>
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
.selectdata{
display: flex;
align-items: center;
color: #fff;
font-size: 14px;
div{
padding: 3px 5px;
border: 1px solid #0099ffa2;
margin-left: 10px;
border-radius: 5px;
cursor: pointer;
}
.select{
background-color: #004e978a;
color: #0099ff;
border: 1px solid #0099ff;
}
}
.all_box { .all_box {
width: 100%; width: 100%;
padding: 15px; padding: 15px;

View File

@ -73,6 +73,7 @@ function handleNodeClick(data: any, node: any) {
}) })
} else { } else {
voiceprint_one.value = data voiceprint_one.value = data
// params.value.patroldeviceId = data.patroldeviceId
getdata() getdata()
// loading.value = true // loading.value = true
// Maindata.value = data // Maindata.value = data
@ -95,7 +96,7 @@ const environment_data = ref([
const total: any = ref() const total: any = ref()
const params: any = ref({ const params: any = ref({
stationId: userStore.stationId, stationId: userStore.stationId,
patroldeviceId: voiceprint_one.value.patroldeviceId, patroldeviceId: '',
size: 10, size: 10,
current: 1, current: 1,
startDate: '', startDate: '',
@ -111,6 +112,7 @@ function getdata() {
params.value.endDate = '' params.value.endDate = ''
} }
treeloading.value = false treeloading.value = false
params.value.patroldeviceId = voiceprint_one.value.patroldeviceId
getVoicePatrolPage(params.value).then((res: any) => { getVoicePatrolPage(params.value).then((res: any) => {
environment_data.value = res.data.records environment_data.value = res.data.records
params.value.size = res.data.size params.value.size = res.data.size

View File

@ -9,7 +9,7 @@
position: fixed; position: fixed;
top: 60px; top: 60px;
"> ">
<Modelset v-if="isModelset" :isautoRotate="isautoRotate" /> <!-- <Modelset v-if="isModelset" :isautoRotate="isautoRotate" /> -->
</div> </div>
<div class="three_button" @click="autoRotateClick"> <div class="three_button" @click="autoRotateClick">
<span v-if="isautoRotate == true">暂停</span> <span v-if="isautoRotate == true">暂停</span>

View File

@ -49,22 +49,12 @@ const currentNodeKey = ref("")
// //
const value = ref() const value = ref()
const stationId = ref() const stationId = ref()
const optionSelect = ref()
const stationCode = ref() const stationCode = ref()
const areaId = ref() const areaId = ref()
function getSelect() { function getTree() {
getTreefirst().then((res: any) => {
optionSelect.value = res.data
value.value = res.data[0].stationId
// stationId.value = res.data[0].stationId
stationCode.value = res.data[0].stationCode
getTree(res.data[0].stationId)
})
}
function getTree(val: any) {
stationId.value = val
const params = { const params = {
stationId: val stationId: userStore.stationId
} }
getTreeList(params).then((res: any) => { getTreeList(params).then((res: any) => {
if (res.data.length == 0) { if (res.data.length == 0) {
@ -113,7 +103,7 @@ const deviceName = ref('')
const tableData: any = ref() const tableData: any = ref()
const loading = ref(false) const loading = ref(false)
const flag = ref() const flag = ref()
const paramstable:any = ref({ const paramstable: any = ref({
size: 10, size: 10,
current: 1, current: 1,
deviceName: '', deviceName: '',
@ -123,7 +113,7 @@ const total = ref()
function getData() { function getData() {
loading.value = true loading.value = true
const params = { const params = {
stationId: stationId.value, stationId: userStore.stationId,
areaId: orgId.value, areaId: orgId.value,
size: paramstable.value.size, size: paramstable.value.size,
current: paramstable.value.current, current: paramstable.value.current,
@ -132,7 +122,7 @@ function getData() {
deviceModel: deviceModel.value, deviceModel: deviceModel.value,
manufacturer: manufacturer.value, manufacturer: manufacturer.value,
flag: flag.value == true ? '1' : '0', flag: flag.value == true ? '1' : '0',
online:paramstable.value.online, online: paramstable.value.online,
} }
getdata(params).then((res: any) => { getdata(params).then((res: any) => {
loading.value = false loading.value = false
@ -660,13 +650,8 @@ function typeall(val: any) {
// //
const areaList: any = ref([]) const areaList: any = ref([])
function GetArea() { function GetArea() {
optionSelect.value.forEach((element: any) => {
if (element.stationId == info.value.stationId) {
info.value.stationCode = element.stationCode
}
});
const parmas = { const parmas = {
stationCode: info.value.stationCode stationCode:userStore.stationCode
} }
getArea(parmas).then((res: any) => { getArea(parmas).then((res: any) => {
areaList.value = res.data areaList.value = res.data
@ -734,7 +719,7 @@ function handleEdit(row: any) {
dialogVisible.value = true; dialogVisible.value = true;
infoall.value = JSON.parse(JSON.stringify(row)) infoall.value = JSON.parse(JSON.stringify(row))
info.value = infoall.value info.value = infoall.value
getRobotListInit(info.value.stationId) getRobotListInit(userStore.stationId)
GetArea() GetArea()
if (row.slienceType != '') { if (row.slienceType != '') {
checkedlist.value = row.slienceType.split(",") checkedlist.value = row.slienceType.split(",")
@ -823,19 +808,11 @@ function GetSafety() {
}); });
}); });
} }
const infoRefAlls = ref()
const clothesRefInfoAlls = ref() const clothesRefInfoAlls = ref()
const infoRefMations = ref() const infoRefMations = ref()
const smokeRefInfos = ref()
const leakageRefInfos = ref()
//-- //--
function confirmClick(formEl: any) { function confirmClick(formEl: any) {
infoRefAlls.value.validate((valid1: any) => {
if (valid1) {
smokeRefInfos.value.validate((valid4: any) => {
if (valid4) {
leakageRefInfos.value.validate((valid5: any) => {
if (valid5) {
formEl.validate((valid: any) => { formEl.validate((valid: any) => {
if (valid) { if (valid) {
if (info.value.areaId != '') { if (info.value.areaId != '') {
@ -849,16 +826,12 @@ function confirmClick(formEl: any) {
info.value.areaName = allName.value.name info.value.areaName = allName.value.name
} }
if (info.value.stationId != '') { if (info.value.stationId != '') {
optionSelect.value.forEach((element: any) => { info.value.stationName = userStore.stationName
if (element.stationId == info.value.stationId) { info.value.stationCode = userStore.stationCode
info.value.stationName = element.stationName
info.value.stationCode = element.stationCode
}
});
} else { } else {
info.value.stationId = allName.value.stationId info.value.stationId = userStore.stationId
info.value.stationName = allName.value.stationName info.value.stationName = userStore.stationName
info.value.stationCode = allName.value.stationCode info.value.stationCode = userStore.stationCode
} }
@ -949,19 +922,10 @@ function confirmClick(formEl: any) {
}) })
} }
}
})
}
})
}
})
} }
}) })
} }
const cameraId = ref() const cameraId = ref()
// //
const infoAll: any = ref({ const infoAll: any = ref({
@ -1032,7 +996,7 @@ onMounted(() => {
manufacturerList.value = res.data manufacturerList.value = res.data
} }
}) })
getSelect(); getTree()
}); });
@ -1082,7 +1046,7 @@ const channelId = ref("") // 通道国标编号
const controSpeed = ref(100) // 30 const controSpeed = ref(100) // 30
function ptzCamera(command: any) { // function ptzCamera(command: any) { //
isGaoliang.value = command isGaoliang.value = command
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/control/' + deviceId.value + '/' + channelId.value + '?command=' + command + axios.post(userStore.webApiMonitorUrl + '/api/ptz/control/' + deviceId.value + '/' + channelId.value + '?command=' + command +
'&horizonSpeed=' + controSpeed.value + '&verticalSpeed=' + controSpeed.value + '&zoomSpeed=' + controSpeed.value, {}).then((res: any) => { }) '&horizonSpeed=' + controSpeed.value + '&verticalSpeed=' + controSpeed.value + '&zoomSpeed=' + controSpeed.value, {}).then((res: any) => { })
@ -1090,7 +1054,7 @@ function ptzCamera(command: any) { // 监控视频控制方法
}) })
} }
function presetPosition(cmdCode: any, presetPos: any) { // --- function presetPosition(cmdCode: any, presetPos: any) { // ---
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode + '&parameter1=0&parameter2=' + presetPos + '&combindCode2=0', {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode + '&parameter1=0&parameter2=' + presetPos + '&combindCode2=0', {}).then((res: any) => { })
} }
@ -1099,7 +1063,7 @@ function presetPosition(cmdCode: any, presetPos: any) { // 预置位操作 ---
} }
const isLighting = ref("0") const isLighting = ref("0")
function lightingClick(row: any) { // function lightingClick(row: any) { //
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=10&parameter1=' + isLighting.value + '&parameter2=128&combindCode2=0', {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=10&parameter1=' + isLighting.value + '&parameter2=128&combindCode2=0', {}).then((res: any) => { })
} }
@ -1108,7 +1072,7 @@ function lightingClick(row: any) { // 灯光方法
} }
const isInfrared = ref("0") const isInfrared = ref("0")
function infraredClick(row: any) { // function infraredClick(row: any) { //
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=13&parameter1=' + isInfrared.value + '&parameter2=128&combindCode2=0', {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=13&parameter1=' + isInfrared.value + '&parameter2=128&combindCode2=0', {}).then((res: any) => { })
} }
@ -1117,7 +1081,7 @@ function infraredClick(row: any) { // 红外方法
} }
const isWiper = ref("0") const isWiper = ref("0")
function WiperClick(row: any) { // function WiperClick(row: any) { //
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=1&parameter1=0&parameter2=0&combindCode2=' + isWiper.value, {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=1&parameter1=0&parameter2=0&combindCode2=' + isWiper.value, {}).then((res: any) => { })
} }
@ -1144,7 +1108,7 @@ function condensationChang(command: any) { // 光聚方法
isGaoliang.value = '66' isGaoliang.value = '66'
cmdCode.value = 66 cmdCode.value = 66
} }
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=80&parameter2=0&combindCode2=0', {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=80&parameter2=0&combindCode2=0', {}).then((res: any) => { })
} }
@ -1162,7 +1126,7 @@ function apertureChang(command: any) { // 光圈方法
isGaoliang.value = '72' isGaoliang.value = '72'
} }
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + info.value.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => { axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
if (res.data.data == "0") { if (res.data.data == "0") {
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=0&parameter2=80&combindCode2=0', {}).then((res: any) => { }) axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '&parameter1=0&parameter2=80&combindCode2=0', {}).then((res: any) => { })
} }
@ -1241,7 +1205,7 @@ function exportDevice() {
const params = { const params = {
type: 10, type: 10,
stationId: value.value stationId: userStore.stationId
} }
loading.value = true loading.value = true
exportPatrolDeviceList(params).then((response: any) => { exportPatrolDeviceList(params).then((response: any) => {
@ -1354,12 +1318,12 @@ const handleClick1 = (tab: TabsPaneContext, event: Event) => {
const isGaoliang: any = ref("") const isGaoliang: any = ref("")
const statusList = ref([ const statusList = ref([
{ {
id:1, id: 1,
name:'在线' name: '在线'
}, },
{ {
id:0, id: 0,
name:'离线' name: '离线'
} }
]) ])
</script> </script>
@ -1383,14 +1347,7 @@ const statusList = ref([
<el-input v-model="info.patroldeviceName" style="width: 90%;margin-left: 8px;" <el-input v-model="info.patroldeviceName" style="width: 90%;margin-left: 8px;"
placeholder="请输入设备名称"></el-input> placeholder="请输入设备名称"></el-input>
</el-form-item> </el-form-item>
<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"
:label="item.stationName" :value="item.stationId" style="width:90%" />
</el-select>
</el-form-item>
<el-form-item v-if="areaId == undefined || infoall.areaId == ''" label="区域" <el-form-item v-if="areaId == undefined || infoall.areaId == ''" label="区域"
style="width:50%" prop="areaId"> style="width:50%" prop="areaId">
<el-select v-model="info.areaId" placeholder="请选择区域" style="width: 90%" <el-select v-model="info.areaId" placeholder="请选择区域" style="width: 90%"
@ -1499,7 +1456,6 @@ const statusList = ref([
</span> </span>
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="info.type == 10 || info.type == ''" label="通道设置" name="third"> <el-tab-pane v-if="info.type == 10 || info.type == ''" label="通道设置" name="third">
<div> <div>
<div style="height: 562px;"> <div style="height: 562px;">
@ -1640,11 +1596,11 @@ const statusList = ref([
<div class="line"></div> <div class="line"></div>
<div class="title" style="font-size: 14px;">数据列表</div> <div class="title" style="font-size: 14px;">数据列表</div>
</div> </div>
<el-select v-model="value" placeholder="" <!-- <el-select v-model="value" placeholder=""
style="width: 98% !important; display: flex; justify-content: center" @change="getTree"> style="width: 98% !important; display: flex; justify-content: center" @change="getTree">
<el-option v-for="item in optionSelect" :key="item.stationId" :label="item.stationName" <el-option v-for="item in optionSelect" :key="item.stationId" :label="item.stationName"
:value="item.stationId" style="width:100%" /> :value="item.stationId" style="width:100%" />
</el-select> </el-select> -->
<el-scrollbar height="calc(80vh)" style="width:99%;"> <el-scrollbar height="calc(80vh)" style="width:99%;">
<el-tree ref="treeRef" <el-tree ref="treeRef"
:class="useAppStore().size === 'default' ? 'silderLeft-large' : 'silderLeft-default'" :class="useAppStore().size === 'default' ? 'silderLeft-large' : 'silderLeft-default'"
@ -1677,8 +1633,7 @@ const statusList = ref([
</el-select> </el-select>
<el-select v-model="paramstable.online" placeholder="实时状态" style="margin-right: 10px;width: 140px;" <el-select v-model="paramstable.online" placeholder="实时状态" style="margin-right: 10px;width: 140px;"
@change="getData()" clearable> @change="getData()" clearable>
<el-option v-for="item in statusList" :key="item.id" :label="item.name" <el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id" />
:value="item.id" />
</el-select> </el-select>
<el-button class="searchButton" type="primary" @click="getData()">搜索</el-button> <el-button class="searchButton" type="primary" @click="getData()">搜索</el-button>
<el-button class="searchButton" @click="resetting()">重置</el-button> <el-button class="searchButton" @click="resetting()">重置</el-button>
@ -1713,7 +1668,7 @@ const statusList = ref([
{{ currency(manufacturerList, scope.row.manufacturer) }} {{ currency(manufacturerList, scope.row.manufacturer) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="安装位置" prop="place" width="80" align="center"></el-table-column> <el-table-column label="安装位置" prop="place" width="120" align="center"></el-table-column>
<el-table-column label="实时状态" width="100" prop="datastatus" align="center"> <el-table-column label="实时状态" width="100" prop="datastatus" align="center">
<template #default="scope"> <template #default="scope">
<span style="color:#F24444" v-if="scope.row.online != 1"> <span style="color:#F24444" v-if="scope.row.online != 1">

View File

@ -49,6 +49,7 @@ const stationName = ref()
const stationCode = ref() const stationCode = ref()
function getSelect() { function getSelect() {
getTreeList({stationId:userStore.stationId}).then((res: any) => { getTreeList({stationId:userStore.stationId}).then((res: any) => {
treeloading.value = false
if (res.code == 0) { if (res.code == 0) {
if (res.data.length == 0) { if (res.data.length == 0) {
tableData.value = [] tableData.value = []

View File

@ -19,8 +19,9 @@ function getInit() {
// //
getAlarmLogById(params).then((res: any) => { getAlarmLogById(params).then((res: any) => {
// res.data.checkResult = '1' // res.data.checkResult = '1'
examinationInfo.value = res.data examinationInfo.value = res.data
examinationInfo.value console.log(examinationInfo.value)
}) })
} }
@ -152,7 +153,9 @@ const num = ref(0)
</div> </div>
<div v-if="examinationInfo.taskAlarmType != 4" style="width:290px;height: 200px;"> <div v-if="examinationInfo.taskAlarmType != 4" style="width:290px;height: 200px;">
<div style="width:100%;height:100%; position: relative;"> <div style="width:100%;height:100%; position: relative;">
<div v-if="examinationInfo.defectFilePath" title="查看图片" style="position: absolute; <div
v-if="examinationInfo.defectFilePath && examinationInfo.fileType != 3 && examinationInfo.defectFilePath.indexOf('mp4') == -1"
title="查看图片" style="position: absolute;
right: 5px; right: 5px;
top: 5px; top: 5px;
width: 26px; width: 26px;
@ -171,26 +174,16 @@ const num = ref(0)
:preview-src-list="[url + '/previewimage?type=alarm&filename=' + encodeURI(examinationInfo.defectFilePath)]" :preview-src-list="[url + '/previewimage?type=alarm&filename=' + encodeURI(examinationInfo.defectFilePath)]"
:preview-teleported="true" fit="cover" /> :preview-teleported="true" fit="cover" />
</div> </div>
<div title="查看视频" style="position: absolute; <div title="查看视频" v-if="examinationInfo.defectFilePath &&examinationInfo.fileType != 3 " class="lookvideo" :style="examinationInfo.defectFilePath.indexOf('mp4') != -1? 'right:5px;':''" >
right: 40px;
top: 5px;
width: 26px;
height: 26px;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
background: rgba(0,0,0,0.5);">
<img src="@/assets/monitorsystem/region/video.png" alt="" @click="isVideo = true"> <img src="@/assets/monitorsystem/region/video.png" alt="" @click="isVideo = true">
</div> </div>
<span v-if="examinationInfo.defectFilePath"> <span v-if="examinationInfo.defectFilePath" >
<video v-if="examinationInfo.defectFilePath.indexOf('mp4') != -1" width="300" height="400" <video v-if="examinationInfo.defectFilePath.indexOf('mp4') != -1" width="300" height="400" style=" margin-top: 40px;"
:src="url + '/alarm/' + decodeURIComponent(examinationInfo.filePath)" loop autoplay preload="auto" :src="url + '/alarm/' + decodeURIComponent(examinationInfo.filePath)" loop autoplay preload="auto"
controls></video> controls></video>
<div v-else-if="examinationInfo.fileType == 3" style="padding-top:20px;"> <div v-else-if="examinationInfo.fileType == 3" style="padding-top:20px;">
<audio style="width: 100%;margin-top:30px;" <audio style="width: 100%;margin-top:30px;"
:src="url + '/video/' + decodeURIComponent(examinationInfo.filePath)" controls> :src="url + '/alarm/' + decodeURIComponent(examinationInfo.filePath)" controls>
</audio> </audio>
</div> </div>
<img v-else-if="examinationInfo.defectFilePath" style="width:100%;height:100%;" <img v-else-if="examinationInfo.defectFilePath" style="width:100%;height:100%;"
@ -556,5 +549,21 @@ const num = ref(0)
} }
.lookvideo {
position: absolute;
right: 40px;
top: 5px;
width: 26px;
height: 26px;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
z-index: 99;
background: rgba(0, 0, 0, 0.5);
}
.ylclass {} .ylclass {}
</style> </style>

View File

@ -239,7 +239,8 @@ const handleChange = (value: any) => {
</div> </div>
<div v-if="examinationInfo.taskAlarmType != 4" style="width:290px;height: 200px;"> <div v-if="examinationInfo.taskAlarmType != 4" style="width:290px;height: 200px;">
<div style="width:100%;height:100%; position: relative;"> <div style="width:100%;height:100%; position: relative;">
<div title="查看图片" style="position: absolute; <div v-if="examinationInfo.defectFilePath && examinationInfo.fileType != 3 && examinationInfo.defectFilePath.indexOf('mp4') == -1"
title="查看图片" style="position: absolute;
right: 5px; right: 5px;
top: 5px; top: 5px;
width: 26px; width: 26px;
@ -255,17 +256,7 @@ const handleChange = (value: any) => {
:src="examinationInfo.defectFilePath" :zoom-rate="1.2" :src="examinationInfo.defectFilePath" :zoom-rate="1.2"
:preview-src-list="[examinationInfo.defectFilePath]" :preview-teleported="true" fit="cover" /> :preview-src-list="[examinationInfo.defectFilePath]" :preview-teleported="true" fit="cover" />
</div> </div>
<div title="查看视频" style="position: absolute; <div title="查看视频" v-if="examinationInfo.defectFilePath &&examinationInfo.fileType != 3 " class="lookvideo" :style="examinationInfo.defectFilePath.indexOf('mp4') != -1? 'right:5px;':''" >
right: 40px;
top: 5px;
width: 26px;
height: 26px;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
background: rgba(0,0,0,0.5);">
<img src="@/assets/monitorsystem/region/video.png" alt="" @click="isVideo = true"> <img src="@/assets/monitorsystem/region/video.png" alt="" @click="isVideo = true">
</div> </div>
<span v-if="examinationInfo.defectFilePath"> <span v-if="examinationInfo.defectFilePath">
@ -274,7 +265,7 @@ const handleChange = (value: any) => {
controls></video> controls></video>
<div v-else-if="examinationInfo.fileType == 3" style="padding-top:20px;"> <div v-else-if="examinationInfo.fileType == 3" style="padding-top:20px;">
<audio style="width: 100%;margin-top:30px;" <audio style="width: 100%;margin-top:30px;"
:src="url + '/video/' + decodeURIComponent(examinationInfo.filePath)" controls> :src="url + '/alarm/' + decodeURIComponent(examinationInfo.filePath)" controls>
</audio> </audio>
</div> </div>
<img v-else-if="examinationInfo.defectFilePath" style="width:100%;height:100%;" <img v-else-if="examinationInfo.defectFilePath" style="width:100%;height:100%;"
@ -664,7 +655,21 @@ const handleChange = (value: any) => {
:deep(.el-input-number .el-icon:hover) { :deep(.el-input-number .el-icon:hover) {
color: #409eff !important; color: #409eff !important;
} }
.lookvideo {
position: absolute;
right: 40px;
top: 5px;
width: 26px;
height: 26px;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
z-index: 99;
background: rgba(0, 0, 0, 0.5);
}
:deep(.el-input__inner) { :deep(.el-input__inner) {
color: #fff !important; color: #fff !important;
}</style> }</style>

View File

@ -57,9 +57,10 @@ function init() {
} }
treeloading.value = true treeloading.value = true
getAlgorithmClassTree(params).then((res: any) => { getAlgorithmClassTree(params).then((res: any) => {
treeloading.value = false
if (res.data.length !== 0 && res.data !== null) { if (res.data.length !== 0 && res.data !== null) {
treeData.value = res.data treeData.value = res.data
treeloading.value = false
if (res.data.length !== 0 && res.data !== null) { if (res.data.length !== 0 && res.data !== null) {
componentId.value = res.data[0].children[0].id componentId.value = res.data[0].children[0].id
algorithmId.value = res.data[0].children[0].parentId algorithmId.value = res.data[0].children[0].parentId
@ -104,7 +105,7 @@ function gatdata() {
const eacherslist: any = ref([1, 2, 3, 4]) const eacherslist: any = ref([1, 2, 3, 4])
function getecharts() { function getecharts() {
checloading.value = true checloading.value = true
getAlgorithmDeviceCurve({ algorithmId: algorithmId.value, componentId: componentId.value }).then((res: any) => { getAlgorithmDeviceCurve({ algorithmId: algorithmId.value, componentId: componentId.value,type:type.value }).then((res: any) => {
checloading.value = false checloading.value = false
eacherslist.value = res.data eacherslist.value = res.data
setTimeout(() => { setTimeout(() => {
@ -232,6 +233,11 @@ function getaction() {
}) })
}) })
} }
const type = ref(1)
function changeType(val: any) {
type.value = val
getecharts()
}
</script> </script>
<template> <template>
<div class="faulttemplate-box"> <div class="faulttemplate-box">
@ -261,6 +267,10 @@ function getaction() {
<div class="tree_title"> <div class="tree_title">
<img src="@/assets/navigation/ty_bq.png" alt=""> <img src="@/assets/navigation/ty_bq.png" alt="">
<div>信号/点位折线图</div> <div>信号/点位折线图</div>
<div class="selectdata">
<div :class="type==1?'select':''" @click="changeType(1)">近一小时</div>
<div :class="type==2?'select':''" @click="changeType(2)">近一天</div>
</div>
</div> </div>
<el-button style="margin-left: 10px;" @click="fenfault()" class="searchButton">故障分析</el-button> <el-button style="margin-left: 10px;" @click="fenfault()" class="searchButton">故障分析</el-button>
</div> </div>
@ -319,6 +329,24 @@ function getaction() {
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
.selectdata{
display: flex;
align-items: center;
color: #fff;
font-size: 14px;
div{
padding: 3px 5px;
border: 1px solid #0099ffa2;
margin-left: 10px;
border-radius: 5px;
cursor: pointer;
}
.select{
background-color: #004e978a;
color: #0099ff;
border: 1px solid #0099ff;
}
}
.silderLeft-default { .silderLeft-default {
:deep(.el-tree-node__label) { :deep(.el-tree-node__label) {
font-size: 16px !important; font-size: 16px !important;

View File

@ -9,7 +9,7 @@ import { ref, onMounted, watch } from "vue";
import JessibucaPlayer from '@/components/jessibuca/index1.vue' import JessibucaPlayer from '@/components/jessibuca/index1.vue'
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { getAlarmLogPage, setAlarmLogStatus, setBatchAlarmLogStatus } from "@/api/alarmInfo"; import { getAlarmLogPage, setAlarmLogStatus, setBatchAlarmLogStatus } from "@/api/alarmInfo";
import { getDeviceByType,getDictionaryItems } from "@/api/device"; import { getDeviceByType, getDictionaryItems } from "@/api/device";
import moment from 'moment' import moment from 'moment'
import axios from 'axios'; import axios from 'axios';
import { getNotCheckAlarmCount } from '@/api/home'; import { getNotCheckAlarmCount } from '@/api/home';
@ -180,11 +180,11 @@ function queryRecordDetails(row: any) {
} }
function rowClick(row: any) { function rowClick(row: any) {
console.log(row) console.log(row)
if (row.id == alarmInfo.value.id ) { if (row.id == alarmInfo.value.id) {
return return
} }
if (row.taskAlarmType == 4) { if (row.taskAlarmType == 4) {
ElMessage({message:'辅控任务暂无图片和视频',type:'warning'}) ElMessage({ message: '辅控任务暂无图片和视频', type: 'warning' })
return return
} }
alarmInfo.value = row alarmInfo.value = row
@ -315,6 +315,7 @@ const checkFlagList: any = ref([{
} }
]) ])
const AlarmTypeArr: any = ref([]) const AlarmTypeArr: any = ref([])
const deviceClassList: any = ref([])
function getArrType() { // function getArrType() { //
const paramstype = { const paramstype = {
dictcode: 'AlarmLevel' dictcode: 'AlarmLevel'
@ -332,6 +333,10 @@ function getArrType() { // 查询字典方法
getDictionaryItems({ dictCodes: 'AlarmType,fk_alarmType' }).then((res: any) => { getDictionaryItems({ dictCodes: 'AlarmType,fk_alarmType' }).then((res: any) => {
AlarmTypeArr.value = res.data AlarmTypeArr.value = res.data
}) })
getDeviceByType({ dictcode: 'DeviceClass' }).then((res: any) => {
deviceClassList.value = res.data
})
} }
function currency(list: any, itemcode: any) { function currency(list: any, itemcode: any) {
let dictname = '' let dictname = ''
@ -583,11 +588,12 @@ const isVideo = ref(false)
<el-table-column prop="componentName" label="部件名称" align="center" /> <el-table-column prop="componentName" label="部件名称" align="center" />
<el-table-column prop="deviceName" label="点位名称" align="center" /> <el-table-column prop="deviceName" label="点位名称" align="center" />
<el-table-column label="点位分类" prop="appearanceType" align="center"> <el-table-column label="点位分类" prop="deviceClass" align="center">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.pointType == 1"></span> {{ currency(deviceClassList, scope.row.deviceClass) }}
<span v-if="scope.row.pointType == 2"></span> <!-- <span v-if="scope.row.deviceClass == 1"></span>
<span v-if="scope.row.pointType == 3"></span> <span v-if="scope.row.deviceClass == 2"></span>
<span v-if="scope.row.deviceClass == 3"></span> -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="taskAlarmType" label="告警来源" width="100px" align="center"> <el-table-column prop="taskAlarmType" label="告警来源" width="100px" align="center">
@ -597,8 +603,8 @@ const isVideo = ref(false)
</el-table-column> </el-table-column>
<el-table-column prop="alarmType" label="告警类型" width="80px" align="center"> <el-table-column prop="alarmType" label="告警类型" width="80px" align="center">
<template #default="scope"> <template #default="scope">
<span>{{ currency(AlarmTypeArr, scope.row.taskAlarmType == '4' ? scope.row.alarmType :
<span>{{ currency(AlarmTypeArr,scope.row.taskAlarmType == '4'? scope.row.alarmType : scope.row.fkAlarmType) }}</span> scope.row.fkAlarmType) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="alarmLevel" label="告警等级" width="80px" align="center"> <el-table-column prop="alarmLevel" label="告警等级" width="80px" align="center">
@ -636,7 +642,7 @@ const isVideo = ref(false)
</div> </div>
</div> </div>
<div class="alarmInfo-right"> <div class="alarmInfo-right">
<div class="alarmInfo-visitation" > <div class="alarmInfo-visitation">
<div style="display:flex;align-items: center;margin: 5px 0px ;"> <div style="display:flex;align-items: center;margin: 5px 0px ;">
<div class="alarmInfo-line"></div> <div class="alarmInfo-line"></div>
<div class="alarmInfo-title"> <span class="fontFamily">实时视频 </span> </div> <div class="alarmInfo-title"> <span class="fontFamily">实时视频 </span> </div>
@ -664,7 +670,7 @@ const isVideo = ref(false)
</div> </div>
</div> </div>
<div class="alarmInfo-visitation" > <div class="alarmInfo-visitation">
<div style="display:flex;align-items: center;height: 40px;padding-left: 10px;"> <div style="display:flex;align-items: center;height: 40px;padding-left: 10px;">
<div class="alarmInfo-line"></div> <div class="alarmInfo-line"></div>
<div class="alarmInfo-title" style="color: #0099ff;"> <span class="fontFamily">告警图片</span> </div> <div class="alarmInfo-title" style="color: #0099ff;"> <span class="fontFamily">告警图片</span> </div>
@ -717,7 +723,8 @@ const isVideo = ref(false)
<div style="width: 96%;height: 98%;display: flex;align-items: end;" <div style="width: 96%;height: 98%;display: flex;align-items: end;"
v-if="alarmInfo.filePath != null && alarmInfo.filePath != '' && alarmInfo.fileType == 3"> v-if="alarmInfo.filePath != null && alarmInfo.filePath != '' && alarmInfo.fileType == 3">
<audio style="width: 100%;" <audio style="width: 100%;"
:src="url + '/playAudioFile?filename=' + encodeURI(alarmInfo.defectFilePath)" controls> :src="url + '/playAudioFile?type=alarm&&filename=' + encodeURI(alarmInfo.defectFilePath)"
controls>
</audio> </audio>
</div> </div>
</div> </div>
@ -757,9 +764,11 @@ const isVideo = ref(false)
<div>{{ currency(AlarmLevelList, examinationInfo.alarmLevel) }}</div> <div>{{ currency(AlarmLevelList, examinationInfo.alarmLevel) }}</div>
</div> </div>
</div> </div>
<div style="width:290px;height: 180px;margin: 0px 0px 10px 0px ;" v-if="examinationInfo.taskAlarmType == 4"> <div style="width:290px;height: 180px;margin: 0px 0px 10px 0px ;"
v-if="examinationInfo.taskAlarmType == 4">
<div style="width:100%;height:100%; position: relative;"> <div style="width:100%;height:100%; position: relative;">
<div title="查看图片" style="position: absolute;right: 5px;top: 5px;width: 26px;height: 26px;border-radius: 4px; <div title="查看图片"
style="position: absolute;right: 5px;top: 5px;width: 26px;height: 26px;border-radius: 4px;
display: flex;align-items: center;justify-content: center;cursor: pointer;background: rgba(0,0,0,0.5);"> display: flex;align-items: center;justify-content: center;cursor: pointer;background: rgba(0,0,0,0.5);">
<img src="@/assets/monitorsystem/region/img.png" alt=""> <img src="@/assets/monitorsystem/region/img.png" alt="">
<el-image v-if="examinationInfo.defectFilePath1" <el-image v-if="examinationInfo.defectFilePath1"
@ -768,7 +777,8 @@ const isVideo = ref(false)
:preview-src-list="examinationInfo.defectFilePath1" :preview-teleported="true" :preview-src-list="examinationInfo.defectFilePath1" :preview-teleported="true"
fit="cover" /> fit="cover" />
</div> </div>
<div title="查看视频" style="position: absolute;right: 40px;top: 5px;width: 26px;height: 26px;border-radius: 4px;display: flex; <div title="查看视频"
style="position: absolute;right: 40px;top: 5px;width: 26px;height: 26px;border-radius: 4px;display: flex;
align-items: center;justify-content: center;cursor: pointer; background: rgba(0,0,0,0.5);"> align-items: center;justify-content: center;cursor: pointer; background: rgba(0,0,0,0.5);">
<img src="@/assets/monitorsystem/region/video.png" alt="" @click="isVideo = true"> <img src="@/assets/monitorsystem/region/video.png" alt="" @click="isVideo = true">
</div> </div>
@ -779,7 +789,7 @@ const isVideo = ref(false)
autoplay preload="auto" controls></video> autoplay preload="auto" controls></video>
<div v-else-if="examinationInfo.fileType == 3" style="padding-top:20px;"> <div v-else-if="examinationInfo.fileType == 3" style="padding-top:20px;">
<audio style="width: 100%;margin-top:30px;" <audio style="width: 100%;margin-top:30px;"
:src="url + '/video/' + decodeURIComponent(examinationInfo.filePath)" :src="url + '/alarm/' + decodeURIComponent(examinationInfo.filePath)"
controls> controls>
</audio> </audio>
</div> </div>
@ -816,7 +826,9 @@ const isVideo = ref(false)
resize="none" type="textarea" placeholder="" /> resize="none" type="textarea" placeholder="" />
</div> </div>
<div style="display:flex;justify-content:center;margin-top:40px"> <div style="display:flex;justify-content:center;margin-top:40px">
<div class="details-button" v-if="examinationInfo.checkFlag == 0 || examinationInfo.checkFlag == undefined" @click="Explicit = false">取消</div> <div class="details-button"
v-if="examinationInfo.checkFlag == 0 || examinationInfo.checkFlag == undefined"
@click="Explicit = false">取消</div>
<div class="details-button" <div class="details-button"
v-if="examinationInfo.checkFlag == 0 || examinationInfo.checkFlag == undefined" v-if="examinationInfo.checkFlag == 0 || examinationInfo.checkFlag == undefined"
@click="confirmClick">确定</div> @click="confirmClick">确定</div>

View File

@ -519,7 +519,7 @@ function removePercentSign(str:any) {
<el-table-column prop="description" label="巡视结果" width="140px" align="center"> <el-table-column prop="description" label="巡视结果" width="140px" align="center">
<template #default="scope"> <template #default="scope">
<span>成功{{ scope.row.deviceDeforeNum - scope.row.deviceFailureNum }}</span><span>失败{{ scope.row.deviceFailureNum }}</span><br /> <span>成功{{ scope.row.deviceDeforeNum - scope.row.deviceFailureNum }}</span><span>失败{{ scope.row.deviceFailureNum }}</span><br />
<span>正常{{ scope.row.deviceDeforeNum - scope.row.deviceFailureNum - scope.row.deviceUnusualnum }}</span><span style="color: #FF3300;">异常{{scope.row.deviceUnusualnum }}</span> <span>正常{{ (scope.row.deviceDeforeNum - scope.row.deviceFailureNum - scope.row.deviceUnusualnum)<0?0:(scope.row.deviceDeforeNum - scope.row.deviceFailureNum - scope.row.deviceUnusualnum) }}</span><span style="color: #FF3300;">异常{{scope.row.deviceUnusualnum }}</span>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -317,7 +317,7 @@ const tableRowClassName = ({
<el-table-column prop="description" label="巡视结果" width="140px" align="center"> <el-table-column prop="description" label="巡视结果" width="140px" align="center">
<template #default="scope"> <template #default="scope">
<span>成功{{ scope.row.deviceDeforeNum - scope.row.deviceFailureNum }}</span><span>失败{{ scope.row.deviceFailureNum }}</span><br /> <span>成功{{ scope.row.deviceDeforeNum - scope.row.deviceFailureNum }}</span><span>失败{{ scope.row.deviceFailureNum }}</span><br />
<span>正常{{ scope.row.deviceDeforeNum - scope.row.deviceFailureNum - scope.row.deviceUnusualnum }}</span><span style="color: #FF3300;">异常{{scope.row.deviceUnusualnum }}</span> <span>正常{{ (scope.row.deviceDeforeNum - scope.row.deviceFailureNum - scope.row.deviceUnusualnum)<0?0:(scope.row.deviceDeforeNum - scope.row.deviceFailureNum - scope.row.deviceUnusualnum) }}</span><span style="color: #FF3300;">异常{{scope.row.deviceUnusualnum }}</span>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -106,8 +106,13 @@
@click.stop="historicalRecords(i), listClick(i, index)"> @click.stop="historicalRecords(i), listClick(i, index)">
</div> </div>
<div v-show="selType == '05'" class="THREE-right-list-main-icon"> <div v-show="selType == '05'" class="THREE-right-list-main-icon">
<div style="display:flex;width:28px;height:28px;align-items: center;">
<img src="@/assets/3d/xq.png" @click.stop="informationClick(i), listClick(i, index)" title="部件信息" <img src="@/assets/3d/xq.png" @click.stop="informationClick(i), listClick(i, index)" title="部件信息"
alt="部件信息"> alt="部件信息">
<img src="@/assets/3d/xq1.png" @click.stop="getdevsignal(i), listClick(i, index)" title="点位和信号"
alt="点位和信号">
</div>
</div> </div>
</li> </li>
</ul> </ul>
@ -452,6 +457,98 @@
</Page> </Page>
</template> </template>
</Eldialog> </Eldialog>
<!-- 点位和信号 -->
<Eldialog v-if="selectble" :title="'点位和信号'" :zIndex="2000" :width="'80%'" @before-close="selectbleClose">
<template v-slot:PopFrameContent>
<div class="device_box">
<div class="box_tabs">
<div :class="sourceType == 1 ? 'bianhua' : ''" @click="typeChange(1)">关联点位</div>
<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">
<div style="display: flex;display: -webkit-flex; align-items: center;">
<el-input v-if="sourceType == 1" v-model="paramstable.deviceName"
placeholder="请输入巡视点位名称" @clear="getdevicedata1()" @change="getdevicedata1()"
style="margin-right:15px ;width: 185px;" clearable />
<el-input v-if="sourceType == 2" v-model="paramstable.signalName"
placeholder="请输入信号名称" @clear="getdevicedata1()" @change="getdevicedata1()"
style="margin-right:15px ;width: 185px;" clearable />
<el-button class="searchButton" type="primary"
@click="getdevicedata1()">搜索</el-button>
<el-button class="searchButton" @click="resetting()">重置</el-button>
</div>
</div>
<el-table v-loading="devicedataloading" :data="devicedata" ref="tableref"
style="width: 100%;height: calc(50vh); overflow: auto;margin-bottom: 15px;"
row-key="deviceId" class="PatrolMonitoring" highlight-current-row default-expand-all
:row-class-name="tableRowClassName"
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
<el-table-column type="index" label="序号" width="50px" align="center" />
<el-table-column v-if="sourceType == 1" label="巡视点位编号" prop="deviceCode" align="center"
width="140"></el-table-column>
<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">
<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"
width="160"></el-table-column>
<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">
<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"
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">
<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">
<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>
<Page :total="devicetaotal" v-model:size="paramstable.size"
v-model:current="paramstable.current" @pagination="getdevicedata1()"></Page>
</div>
</div>
</div>
</template>
</Eldialog>
<div id="contextimg"> <div id="contextimg">
<img src="@/assets/3d/luminescence.svg" alt=""> <img src="@/assets/3d/luminescence.svg" alt="">
</div> </div>
@ -500,7 +597,11 @@
</template> </template>
<script setup> <script setup>
import { getdata, getArea } from '@/api/monitordevice' import { getdata, getArea } from '@/api/monitordevice'
import { getDeviceByType } from "@/api/device"; import { getDeviceByType,getdevicedata,getMainEquipment,getBayType } from "@/api/device";
import {
queryDeviceSignal
} from '@/api/equipmentsignal';
import dayjs from 'dayjs'
import JessibucaPlayer from '@/components/jessibuca/index1.vue' // import JessibucaPlayer from '@/components/jessibuca/index1.vue' //
import { useUserStore } from '@/store/modules/user' import { useUserStore } from '@/store/modules/user'
import axios from 'axios' import axios from 'axios'
@ -602,6 +703,7 @@ const srangingMouse = new THREE.Vector2()
// //
onMounted(() => { onMounted(() => {
gettoday()
getTypeTwo() getTypeTwo()
setupWebSocket() setupWebSocket()
initRenderer() initRenderer()
@ -2505,6 +2607,134 @@ function informationClick(row) {
}) })
clearDiv() clearDiv()
} }
//
//
const getacaTypeBayId = ref()
//
const EquipmentType = ref()
//
const DeviceClass = ref([])
const Metertype = ref([])
const mainEquipment = ref([])
//
function notification() {
//
const params = {
bayId: bayId.value
}
getMainEquipment(params).then((res) => {
mainEquipment.value = res.data
});
//
const paramsbayId = {
bayId: bayId.value
}
getBayType(paramsbayId).then((res) => {
getacaTypeBayId.value = res.data
})
//
getDeviceByType({ dictcode: 'MeterType' }).then((res) => {
Metertype.value = res.data
})
//
getDeviceByType({ dictcode: 'DeviceClass' }).then((res) => {
DeviceClass.value = res.data
})
//
getDeviceByType({ dictcode: 'EquipmentType' }).then((res) => {
EquipmentType.value = res.data
})
getDeviceByType({ dictcode: 'ykytType' }).then((ress) => {
typeoptions.value = ress.data
})
}
const selectble = ref(false)
function selectbleClose() {
selectble.value = false
sourceType.value = 0
devicedata.value.length = 0
}
const mainDeviceId= ref('')
function getdevsignal(row){
console.log(row)
if(row.objinfo.componentId){
componentId.value = row.objinfo.componentId
}else{
componentId.value = ''
mainDeviceId.value = row.objinfo.mainDeviceId
}
notification()
typeChange(1)
selectble.value = true
}
const sourceType = ref(1)
function typeChange(val) {
sourceType.value = val
getdevicedata1()
}
const componentId= ref('')
const bayId = ref('')
const devicedataloading = ref(false)
const devicetaotal = ref()
const devicedata = ref([])
const paramstable = ref({
size: 10,
current: 1,
deviceName: '',
componentId: ''
})
function getdevicedata1() {
if (sourceType.value == 1) {
paramstable.value.bayId = bayId.value
if(componentId.value){
paramstable.value.componentId = componentId.value
paramstable.value.mainComponentId = ''
}else{
paramstable.value.mainDeviceId = mainDeviceId.value
}
getdevicedata(paramstable.value).then((res) => {
devicedata.value = res.data.records
devicetaotal.value = res.data.total
paramstable.value.size = res.data.size
paramstable.value.current = res.data.current
devicedataloading.value = false
})
} else if (sourceType.value == 2) {
if(componentId.value){
paramstable.value.componentId = ''
paramstable.value.mainComponentId = componentId.value
}else{
paramstable.value.mainDeviceId = mainDeviceId.value
}
queryDeviceSignal(paramstable.value).then((res) => {
devicedata.value = res.data.records
devicetaotal.value = res.data.total
paramstable.value.size = res.data.size
paramstable.value.current = res.data.current
devicedataloading.value = false
})
}
devicedataloading.value = true
}
function resetting() {
paramstable.value = {
size: 10,
current: 1,
deviceName: '',
mainDeviceId: '',
componentId: ''
}
getdevicedata1()
}
// //
const history = ref(false) const history = ref(false)
const histotal = ref(0) const histotal = ref(0)
@ -2515,11 +2745,20 @@ const historParams = ref({
startDate: '', startDate: '',
endDate: '' endDate: ''
}) })
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')
timeSlot.value[0] = startTime
timeSlot.value[1] = endTime
}
const historydata = ref([]) const historydata = ref([])
const hisloading = ref(false) const hisloading = ref(false)
const timeSlot = ref([]) const timeSlot = ref([])
const deviceIdone = ref('') const deviceIdone = ref('')
function historicalRecords(row) { function historicalRecords(row) {
// gettoday()
getType() getType()
deviceIdone.value = row deviceIdone.value = row
historParams.value.deviceId = row.objinfo.deviceId historParams.value.deviceId = row.objinfo.deviceId
@ -2534,6 +2773,7 @@ function historicalRecords(row) {
hisloading.value = true hisloading.value = true
history.value = true history.value = true
getHistoryDevice(historParams.value).then(res => { getHistoryDevice(historParams.value).then(res => {
// debugger
if (res.code == 0) { if (res.code == 0) {
historydata.value = res.data.records historydata.value = res.data.records
historParams.value.size = res.data.size historParams.value.size = res.data.size
@ -2546,6 +2786,7 @@ function historicalRecords(row) {
} }
function hisreset() { function hisreset() {
timeSlot.value.length = 0 timeSlot.value.length = 0
gettoday()
historicalRecords(deviceIdone.value) historicalRecords(deviceIdone.value)
} }
const tableRowClassName = ({ const tableRowClassName = ({
@ -2568,6 +2809,17 @@ function currency(list, itemcode) {
}) })
return dictname return dictname
} }
const typeoptions = ref([])
function isykyttype(val) {
let name = ''
for (let i = 0; i < typeoptions.value.length; i++) {
if (typeoptions.value[i].itemcode === val) {
name = typeoptions.value[i].dictname
break
}
}
return name
}
const MeterTypeList = ref([]) const MeterTypeList = ref([])
function getType() { function getType() {
const paramstypes = { const paramstypes = {
@ -3165,7 +3417,7 @@ function nextPage() {
img { img {
width: 14px; width: 14px;
height: 14px; height: 14px;
margin: 0 5px; // margin: 0 5px;
cursor: pointer; cursor: pointer;
} }
} }
@ -3546,4 +3798,84 @@ function nextPage() {
:deep(.el-radio__input.is-checked + .el-radio__label) { :deep(.el-radio__input.is-checked + .el-radio__label) {
color: #009bff !important; color: #009bff !important;
} }
.device_box {
width: 100%;
.box_tabs {
width: 100%;
display: flex;
align-items: center;
border-bottom: 1px solid #0099ff;
border-radius: 5px 0px 0px 0px;
box-sizing: border-box;
margin-bottom: 20px;
div {
padding: 10px 20px 10px 24px;
box-sizing: border-box;
color: #fff;
font-size: 16px;
font-weight: bold;
cursor: pointer;
}
.bianhua {
padding: 10px 20px 10px 20px !important;
border-bottom: 4px solid #0099ff;
color: #0099ff;
}
}
}
.faulttemplate-box1 {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
background-color: #f2f4f900;
padding: 15px;
.silderLeft1 {
width: 300px;
height: calc(65vh);
box-sizing: border-box;
background: url(@/assets/navigation/ty_260x988.png);
background-size: 100% 100%;
padding: 10px;
.displayflex {
display: flex;
align-items: center;
.line {
width: 5px;
height: 14px;
background: #0099ff;
margin-right: 10px;
}
.title {
text-decoration: none !important;
font-family: "阿里妈妈数黑体 Bold";
font-weight: 700;
font-style: normal;
font-size: 16px !important;
color: rgb(255, 255, 255);
line-height: 12px;
}
}
}
.silderRight1 {
flex: 1;
width: 100%;
height: calc(65vh);
overflow: auto;
padding: 15px;
box-sizing: border-box;
margin-left: 15px;
background: url(@/assets/navigation/ty_1614x988.png);
background-size: 100% 100%;
}
}
</style> </style>