2025-5-12讨论bug更改
This commit is contained in:
parent
fe5c319357
commit
172404f84d
Binary file not shown.
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 7.4 KiB |
Binary file not shown.
Before Width: | Height: | Size: 592 B After Width: | Height: | Size: 416 B |
@ -540,9 +540,39 @@ export default {
|
|||||||
eventcallbacK: function (type, message) {
|
eventcallbacK: function (type, message) {
|
||||||
},
|
},
|
||||||
fullscreenSwich: function () {
|
fullscreenSwich: function () {
|
||||||
let isFull = this.isFullscreen()
|
const userStore = useUserStore()
|
||||||
jessibucaPlayer[this._uid].setFullscreen(!isFull)
|
if (this.devicechannelInfo) {
|
||||||
this.fullscreen = !isFull;
|
if(this.zhu){
|
||||||
|
let isFull = this.isFullscreen()
|
||||||
|
jessibucaPlayer[this._uid].setFullscreen(!isFull)
|
||||||
|
this.fullscreen = !isFull;
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.fullscreen) {
|
||||||
|
axios.get(userStore.webApiMonitorUrl + '/api/play/stop/' + this.devicechannelInfo.deviceId + '/' + this.devicechannelInfo.channelId, {}).then((res) => { })
|
||||||
|
axios.get(userStore.webApiMonitorUrl + '/api/play/start/' + this.devicechannelInfo.deviceId + '/' + this.devicechannelInfo.channelId + '_sub', {}).then((res) => {
|
||||||
|
this.play(res.data.data.ws_flv)
|
||||||
|
let isFull = this.isFullscreen()
|
||||||
|
jessibucaPlayer[this._uid].setFullscreen(!isFull)
|
||||||
|
this.fullscreen = !isFull;
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
axios.get(userStore.webApiMonitorUrl + '/api/play/stop/' + this.devicechannelInfo.deviceId + '/' + this.devicechannelInfo.channelId + '_sub', {}).then((res) => { })
|
||||||
|
axios.get(userStore.webApiMonitorUrl + '/api/play/start/' + this.devicechannelInfo.deviceId + '/' + this.devicechannelInfo.channelId, {}).then((res) => {
|
||||||
|
this.play(res.data.data.ws_flv)
|
||||||
|
let isFull = this.isFullscreen()
|
||||||
|
jessibucaPlayer[this._uid].setFullscreen(!isFull)
|
||||||
|
this.fullscreen = !isFull;
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let isFull = this.isFullscreen()
|
||||||
|
jessibucaPlayer[this._uid].setFullscreen(!isFull)
|
||||||
|
this.fullscreen = !isFull;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if(this.fullscreen
|
||||||
},
|
},
|
||||||
isFullscreen: function () {
|
isFullscreen: function () {
|
||||||
return document.fullscreenElement ||
|
return document.fullscreenElement ||
|
||||||
|
@ -480,7 +480,26 @@ audio::-webkit-media-controls-current-time-display,
|
|||||||
audio::-webkit-media-controls-time-remaining-display {
|
audio::-webkit-media-controls-time-remaining-display {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
/* 轨道 */
|
||||||
|
audio::-webkit-media-controls-timeline::before {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
height: 6px;
|
||||||
|
background-color: #ff0000; /* 已播放部分颜色 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 滑块 */
|
||||||
|
audio::-webkit-media-controls-timeline::after {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
background-color: #ff0000;
|
||||||
|
border-radius: 50%;
|
||||||
|
position: relative;
|
||||||
|
top: -6px;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
/* Firefox兼容样式 */
|
/* Firefox兼容样式 */
|
||||||
@-moz-document url-prefix() {
|
@-moz-document url-prefix() {
|
||||||
audio {
|
audio {
|
||||||
|
@ -9,13 +9,22 @@
|
|||||||
:class="{ 'nav-active': activeIndex == index }" @click.stop="navClick(item, index)">
|
:class="{ 'nav-active': activeIndex == index }" @click.stop="navClick(item, index)">
|
||||||
<div class="nav-imgtitle">{{ item.name }}</div>
|
<div class="nav-imgtitle">{{ item.name }}</div>
|
||||||
<div class="nav-sonbox" v-if="item.children != undefined && item.hide == true">
|
<div class="nav-sonbox" v-if="item.children != undefined && item.hide == true">
|
||||||
<div class="nav-son-list" v-for="(items, indexs) in item.children"
|
<div v-for="(items, indexs) in item.children">
|
||||||
@click.stop="navSonClick(item, index, items)">{{ items.name }}
|
<div class="nav-son-list" v-if="items.name != '异常告警管理'" @click.stop="navSonClick(item, index, items)">
|
||||||
|
{{ items.name }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-right-box">
|
<div class="nav-right-box">
|
||||||
|
<div class="header-information" @click="alarmInfoClick">
|
||||||
|
<el-badge :value="alarmCount" :max="99" class="item" v-if="alarmCount != 0">
|
||||||
|
<div class="header-informationImg"></div>
|
||||||
|
</el-badge>
|
||||||
|
<div class="header-informationImg" v-else></div>
|
||||||
|
</div>
|
||||||
<div class="nav-right-text" style="margin-right: 20px;">
|
<div class="nav-right-text" style="margin-right: 20px;">
|
||||||
<div class="header-left-time" style="padding: 0;">用户名:{{ userStore.username }}</div>
|
<div class="header-left-time" style="padding: 0;">用户名:{{ userStore.username }}</div>
|
||||||
<!-- <div class="header-left-time" style="padding-top: 10px;">变电站:{{ userStore.regionName }}</div> -->
|
<!-- <div class="header-left-time" style="padding-top: 10px;">变电站:{{ userStore.regionName }}</div> -->
|
||||||
@ -99,12 +108,12 @@ function dateFormat(row: any) {
|
|||||||
}
|
}
|
||||||
function alarmInfoClick() {
|
function alarmInfoClick() {
|
||||||
router.push(`/task/alarmInfo/index`)
|
router.push(`/task/alarmInfo/index`)
|
||||||
let item = {
|
// let item = {
|
||||||
name: "告警核认",
|
// name: "告警核认",
|
||||||
opturl: "/task/alarmInfo/index"
|
// opturl: "/task/alarmInfo/index"
|
||||||
}
|
// }
|
||||||
activeSonIndex.value = 2
|
// activeSonIndex.value = 2
|
||||||
navSonClick(navlist.value[2], 2, item)
|
// navSonClick(navlist.value[2], 2, item)
|
||||||
}
|
}
|
||||||
function navSonClick(row: any, index: any, item: any) {
|
function navSonClick(row: any, index: any, item: any) {
|
||||||
isElicon.value = true
|
isElicon.value = true
|
||||||
@ -397,7 +406,7 @@ watch(() => props.CloseNav, (newValue, oldValue) => {
|
|||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 62px;
|
height: 62px;
|
||||||
z-index:99999 !important;
|
z-index: 99999 !important;
|
||||||
|
|
||||||
.times {
|
.times {
|
||||||
font-family: '微软雅黑';
|
font-family: '微软雅黑';
|
||||||
@ -470,7 +479,7 @@ watch(() => props.CloseNav, (newValue, oldValue) => {
|
|||||||
margin-left: -12px;
|
margin-left: -12px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 40px;
|
top: 40px;
|
||||||
z-index:9999;
|
z-index: 9999;
|
||||||
|
|
||||||
.nav-son-list {
|
.nav-son-list {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -506,7 +515,7 @@ watch(() => props.CloseNav, (newValue, oldValue) => {
|
|||||||
|
|
||||||
.nav-active .nav-imgtitle {
|
.nav-active .nav-imgtitle {
|
||||||
// background: rgba(21, 69, 119, 0.8);\
|
// background: rgba(21, 69, 119, 0.8);\
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -608,8 +617,8 @@ watch(() => props.CloseNav, (newValue, oldValue) => {
|
|||||||
background: url(@/assets/monitorsystem/top_gj.png);
|
background: url(@/assets/monitorsystem/top_gj.png);
|
||||||
|
|
||||||
.header-informationImg {
|
.header-informationImg {
|
||||||
width: 18px;
|
width: 16px;
|
||||||
height: 18px;
|
height: 16px;
|
||||||
background: url(@/assets/monitorsystem/top_gj1.png);
|
background: url(@/assets/monitorsystem/top_gj1.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -918,12 +927,12 @@ watch(() => props.CloseNav, (newValue, oldValue) => {
|
|||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-family: "Arial Normal", "Arial";
|
font-family: "Arial Normal", "Arial";
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 31px;
|
line-height: 31px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.homeImgActive {
|
.homeImgActive {
|
||||||
@ -936,7 +945,37 @@ watch(() => props.CloseNav, (newValue, oldValue) => {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
color:#ffffff;
|
color: #ffffff;
|
||||||
|
|
||||||
|
.header-information {
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-right: 25px;
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
// background: url(@/assets/monitorsystem/top_gj.png);
|
||||||
|
|
||||||
|
.header-informationImg {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
background: url(@/assets/monitorsystem/top_gj1.png);
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-informationDian {
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
left: 15px;
|
||||||
|
width: 6px;
|
||||||
|
height: 6px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: red;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.iscursorinitial {
|
.iscursorinitial {
|
||||||
|
@ -123,7 +123,7 @@ function closeClick() {
|
|||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
z-index: 98;
|
z-index: 2000;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
transition: width 0.28s;
|
transition: width 0.28s;
|
||||||
// background: #ffffff;
|
// background: #ffffff;
|
||||||
|
@ -5282,7 +5282,7 @@ ws1.onclose = () => {
|
|||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: #131a25;
|
background: #001b4a;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
@ -443,6 +443,7 @@ const getacaType: any = ref()
|
|||||||
const Metertype = ref()
|
const Metertype = ref()
|
||||||
const auxitype = ref()
|
const auxitype = ref()
|
||||||
function addClick() {
|
function addClick() {
|
||||||
|
activeName.value = 'first'
|
||||||
threshold.value = ''
|
threshold.value = ''
|
||||||
beforName.value = ''
|
beforName.value = ''
|
||||||
info.value = {
|
info.value = {
|
||||||
@ -525,6 +526,8 @@ const getacaTypeBayId = ref()
|
|||||||
const PictureAnalysisType = ref()
|
const PictureAnalysisType = ref()
|
||||||
//图像缺陷分析类型
|
//图像缺陷分析类型
|
||||||
const PictureDefectAnalysisType = ref()
|
const PictureDefectAnalysisType = ref()
|
||||||
|
//声纹分析类型
|
||||||
|
const voiceAnalysisTypeList = ref()
|
||||||
//图像判别分析类型
|
//图像判别分析类型
|
||||||
const PictureDiscriminateAnalysisType = ref()
|
const PictureDiscriminateAnalysisType = ref()
|
||||||
//数据来源
|
//数据来源
|
||||||
@ -565,7 +568,10 @@ function notification() {
|
|||||||
getDeviceByType(paramsect).then((res: any) => {
|
getDeviceByType(paramsect).then((res: any) => {
|
||||||
PictureDefectAnalysisType.value = res.data
|
PictureDefectAnalysisType.value = res.data
|
||||||
})
|
})
|
||||||
|
//获取声纹分析类型
|
||||||
|
getDeviceByType({ dictcode: 'VoiceAnalysisType' }).then((res: any) => {
|
||||||
|
voiceAnalysisTypeList.value = res.data
|
||||||
|
})
|
||||||
//获取图像分析类型
|
//获取图像分析类型
|
||||||
const paramsscr = {
|
const paramsscr = {
|
||||||
dictcode: 'PictureDiscriminateAnalysisType'
|
dictcode: 'PictureDiscriminateAnalysisType'
|
||||||
@ -660,6 +666,7 @@ function mainChange(row: any) {
|
|||||||
const deviceIdText = ref()
|
const deviceIdText = ref()
|
||||||
const miannDeviceId = ref()
|
const miannDeviceId = ref()
|
||||||
function handleEdit(row: any) {
|
function handleEdit(row: any) {
|
||||||
|
activeName.value = 'first'
|
||||||
duration.value = row.duration
|
duration.value = row.duration
|
||||||
threshold.value = ''
|
threshold.value = ''
|
||||||
beforName.value = ''
|
beforName.value = ''
|
||||||
@ -740,7 +747,7 @@ function handleEdit(row: any) {
|
|||||||
droPoint.value = JSON.parse(infoall.outsideAngle)
|
droPoint.value = JSON.parse(infoall.outsideAngle)
|
||||||
} else if (infoall.recognitionTypeList == "5") {
|
} else if (infoall.recognitionTypeList == "5") {
|
||||||
infoall.decibel = JSON.parse(infoall.outsideAngle).decibel
|
infoall.decibel = JSON.parse(infoall.outsideAngle).decibel
|
||||||
infoall.frequency = JSON.parse(infoall.outsideAngle).frequency
|
infoall.frequency = JSON.parse(infoall.outsideAngle).frequency
|
||||||
} else {
|
} else {
|
||||||
arrdata.value = JSON.parse(infoall.outsideAngle)
|
arrdata.value = JSON.parse(infoall.outsideAngle)
|
||||||
}
|
}
|
||||||
@ -1344,10 +1351,10 @@ const vMove = {
|
|||||||
}
|
}
|
||||||
const activeName = ref('first')
|
const activeName = ref('first')
|
||||||
const handleClick1 = (tab: TabsPaneContext, event: Event) => {
|
const handleClick1 = (tab: TabsPaneContext, event: Event) => {
|
||||||
console.log(tab.props.name, event);
|
console.log(tab.props.name, event);
|
||||||
if(tab.props.name == 'three'){
|
if (tab.props.name == 'three') {
|
||||||
getData1()
|
getData1()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const isGaoliang: any = ref("")
|
const isGaoliang: any = ref("")
|
||||||
@ -1392,11 +1399,10 @@ function getData1() {
|
|||||||
}
|
}
|
||||||
const multipleTableRef = ref()
|
const multipleTableRef = ref()
|
||||||
function handleSelectionChange(val: any) {
|
function handleSelectionChange(val: any) {
|
||||||
if (val.length > 1) {
|
if (val.length == 2) {
|
||||||
val.pop()
|
val.pop()
|
||||||
multipleTableRef.value!.toggleRowSelection(val[0], undefined)
|
multipleTableRef.value!.toggleRowSelection(val[0], undefined)
|
||||||
}
|
}else{
|
||||||
if (val[0]) {
|
|
||||||
vicode.value[0].patroldevice_name = val[0].patroldeviceName
|
vicode.value[0].patroldevice_name = val[0].patroldeviceName
|
||||||
vicode.value[0].patroldevice_code = val[0].patroldeviceCode
|
vicode.value[0].patroldevice_code = val[0].patroldeviceCode
|
||||||
}
|
}
|
||||||
@ -1413,7 +1419,7 @@ function handleSelectionChange(val: any) {
|
|||||||
<el-tabs v-model="activeName" @tab-click="handleClick1">
|
<el-tabs v-model="activeName" @tab-click="handleClick1">
|
||||||
<el-tab-pane label="基本信息" name="first">
|
<el-tab-pane label="基本信息" name="first">
|
||||||
<el-form ref="infoForm" :model="info" label-width="140px"
|
<el-form ref="infoForm" :model="info" label-width="140px"
|
||||||
style="display: flex; flex-wrap: wrap; margin: 5px;height:593px;" :rules="rules">
|
style="display: flex; flex-wrap: wrap; margin: 5px;" :rules="rules">
|
||||||
<el-form-item label="巡视点位编号" style="width:50%" prop="deviceCode">
|
<el-form-item label="巡视点位编号" style="width:50%" prop="deviceCode">
|
||||||
<el-input v-model="info.deviceCode" style="width: 90%;margin-left: 8px;"
|
<el-input v-model="info.deviceCode" style="width: 90%;margin-left: 8px;"
|
||||||
placeholder="请输入巡视点位编号"></el-input>
|
placeholder="请输入巡视点位编号"></el-input>
|
||||||
@ -1519,6 +1525,20 @@ function handleSelectionChange(val: any) {
|
|||||||
:label="item.dictname" :value="item.itemcode" />
|
:label="item.dictname" :value="item.itemcode" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="声纹设备缺陷类型" style="width:50%">
|
||||||
|
<el-select v-model="info.voiceAnalysisTypeList" placeholder="请选择"
|
||||||
|
:disabled="info.recognitionTypeList != 5" style="width: 90%;margin-left: 8px;"
|
||||||
|
multiple clearable>
|
||||||
|
<el-option v-for="item in voiceAnalysisTypeList" :key="item.id"
|
||||||
|
:label="item.dictname" :value="item.itemcode" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="相位" style="width:50%">
|
||||||
|
<el-select v-model="info.phase" style="width:90%" clearable>
|
||||||
|
<el-option v-for="item in DevicePhase" :key="item.id" :label="item.dictname"
|
||||||
|
:value="item.itemcode" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="正常范围下限" prop="lowerValue" style="width:50%">
|
<el-form-item label="正常范围下限" prop="lowerValue" style="width:50%">
|
||||||
<el-input v-model="info.lowerValue" style="width: 90%;margin-left: 8px;"
|
<el-input v-model="info.lowerValue" style="width: 90%;margin-left: 8px;"
|
||||||
placeholder="请输入正常范围下限"></el-input>
|
placeholder="请输入正常范围下限"></el-input>
|
||||||
@ -1569,12 +1589,9 @@ function handleSelectionChange(val: any) {
|
|||||||
<div style="width:90%;display:flex;">
|
<div style="width:90%;display:flex;">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<span class="dialog-footer"
|
<span class="dialog-footer"
|
||||||
style="width: 100%;margin: auto; display: flex;display: -webkit-flex; justify-content: center;-webkit-justify-content: center;margin-top: 10px;">
|
style="width: 100%;margin: auto; display: flex;display: -webkit-flex; justify-content: center;-webkit-justify-content: center;">
|
||||||
|
|
||||||
<div class="details-button" @click="handleClose">取消</div>
|
<div class="details-button" @click="handleClose">取消</div>
|
||||||
<div class="details-button" @click="confirmClick(infoForm)">确定</div>
|
<div class="details-button" @click="confirmClick(infoForm)">确定</div>
|
||||||
@ -1693,10 +1710,9 @@ function handleSelectionChange(val: any) {
|
|||||||
<Page :total="total1" v-model:size="paramstable1.size" v-model:current="paramstable1.current"
|
<Page :total="total1" v-model:size="paramstable1.size" v-model:current="paramstable1.current"
|
||||||
@pagination="getData1()"></Page>
|
@pagination="getData1()"></Page>
|
||||||
<span class="dialog-footer"
|
<span class="dialog-footer"
|
||||||
style="width: 100%;margin: auto; display: flex;display: -webkit-flex; justify-content: flex-end;-webkit-justify-content: flex-end;margin-top: 20px;">
|
style="width: 100%;margin: auto; display: flex;display: -webkit-flex; justify-content:center;-webkit-justify-content:center;margin-top: 20px;">
|
||||||
<el-button @click="handleClose">取 消</el-button>
|
<div class="details-button" @click="handleClose">取消</div>
|
||||||
<el-button type="primary" @click="confirmClick(infoForm)"
|
<div class="details-button" @click="confirmClick(infoForm)">确定</div>
|
||||||
style="margin-right: 15px;">保存</el-button>
|
|
||||||
</span>
|
</span>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
|
@ -11,6 +11,7 @@ import { getDeviceSignalTree, querySignalDataById, workpage, getHistoricalCurve
|
|||||||
import { useUserStore } from '@/store/modules/user';
|
import { useUserStore } from '@/store/modules/user';
|
||||||
import Page from '@/components/Pagination/page.vue'
|
import Page from '@/components/Pagination/page.vue'
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
|
import dayjs from 'dayjs'
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
//左侧树形控件
|
//左侧树形控件
|
||||||
interface Tree {
|
interface Tree {
|
||||||
@ -174,8 +175,17 @@ function drawEchart() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getTreeData()
|
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')
|
||||||
|
detaall.value[0] = startTime
|
||||||
|
detaall.value[1] = endTime
|
||||||
|
getTreeData()
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@ -201,40 +211,7 @@ onMounted(() => {
|
|||||||
<div>信号信息</div>
|
<div>信号信息</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="text_top">
|
<div class="text_top">
|
||||||
<div class="text_top_title">
|
|
||||||
<div></div>所属网关机信息
|
|
||||||
</div>
|
|
||||||
<div class="text_top_content" v-loading="dignaloading">
|
|
||||||
<div class="content_one">
|
|
||||||
<div class="content_one_title">设备类型</div>
|
|
||||||
<div class="content_one_text">{{ signaldata.deviceType }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="content_one">
|
|
||||||
<div class="content_one_title">设备名称</div>
|
|
||||||
<div class="content_one_text">{{ signaldata.deviceName }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="content_one">
|
|
||||||
<div class="content_one_title">设备型号</div>
|
|
||||||
<div class="content_one_text">{{ signaldata.deviceModel }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="content_one">
|
|
||||||
<div class="content_one_title">ip地址</div>
|
|
||||||
<div class="content_one_text">{{ signaldata.ipAddr }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="content_one">
|
|
||||||
<div class="content_one_title">协议类型</div>
|
|
||||||
<div class="content_one_text">{{ signaldata.protocol }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="content_one">
|
|
||||||
<div class="content_one_title">采集频率</div>
|
|
||||||
<div class="content_one_text">{{ signaldata.frequency }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="text_top">
|
|
||||||
<div class="text_top_title">
|
|
||||||
<div></div>型号信息
|
|
||||||
</div>
|
|
||||||
<div class="text_top_content" v-loading="dignaloading">
|
<div class="text_top_content" v-loading="dignaloading">
|
||||||
<div class="content_one">
|
<div class="content_one">
|
||||||
<div class="content_one_title">信号编号</div>
|
<div class="content_one_title">信号编号</div>
|
||||||
@ -260,8 +237,26 @@ onMounted(() => {
|
|||||||
<div class="content_one_title">遥控遥调类型</div>
|
<div class="content_one_title">遥控遥调类型</div>
|
||||||
<div class="content_one_text">{{ signaldata.ykytType }}</div>
|
<div class="content_one_text">{{ signaldata.ykytType }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="content_one">
|
||||||
|
<div class="content_one_title">设备名称</div>
|
||||||
|
<div class="content_one_text">{{ signaldata.deviceName }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="content_one">
|
||||||
|
<div class="content_one_title">设备型号</div>
|
||||||
|
<div class="content_one_text">{{ signaldata.deviceModel }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="content_one">
|
||||||
|
<div class="content_one_title">协议类型</div>
|
||||||
|
<div class="content_one_text">{{ signaldata.protocol }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="content_one">
|
||||||
|
<div class="content_one_title">采集频率</div>
|
||||||
|
<div class="content_one_text">{{ signaldata.frequency }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="top_left">
|
<div class="top_left">
|
||||||
<div class="title_right">
|
<div class="title_right">
|
||||||
@ -278,14 +273,14 @@ onMounted(() => {
|
|||||||
<div class="cont_top_right"> <el-button class="searchButton">导出</el-button></div>
|
<div class="cont_top_right"> <el-button class="searchButton">导出</el-button></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cont_bottom">
|
<div class="cont_bottom">
|
||||||
<el-table v-loading="loading" :data="tableData" style="width: 100%;height: calc(30vh);
|
<el-table v-loading="loading" :data="tableData" style="width: 100%;height: calc(33vh);
|
||||||
overflow: auto;;margin-bottom: 15px;" row-key="id" default-expand-all
|
overflow: auto;;margin-bottom: 15px;" row-key="id" default-expand-all
|
||||||
:row-class-name="tableRowClassName"
|
:row-class-name="tableRowClassName"
|
||||||
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
||||||
<el-table-column type="index" label="序号" width="50px" align="center" />
|
<el-table-column type="index" label="序号" width="50px" align="center" />
|
||||||
<el-table-column label="采集时间" prop="startTime" width="120"></el-table-column>
|
<el-table-column label="采集时间" prop="startTime" width="160" align="center"></el-table-column>
|
||||||
<el-table-column label="监测数值" prop="value"></el-table-column>
|
<el-table-column label="监测数值" prop="value" align="center"></el-table-column>
|
||||||
<el-table-column label="单位" prop="unit"></el-table-column>
|
<el-table-column label="单位" prop="unit" align="center"></el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<Page :total="total" v-model:size="tableform.size" v-model:current="tableform.current"
|
<Page :total="total" v-model:size="tableform.size" v-model:current="tableform.current"
|
||||||
@pagination="gettabledata()">
|
@pagination="gettabledata()">
|
||||||
@ -344,8 +339,10 @@ onMounted(() => {
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
|
||||||
|
|
||||||
.text_top {
|
.text_top {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
margin-top:20px ;
|
||||||
|
|
||||||
.text_top_title {
|
.text_top_title {
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -378,27 +375,26 @@ onMounted(() => {
|
|||||||
width: 50%;
|
width: 50%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.content_one_title {
|
.content_one_title {
|
||||||
width: 114px;
|
width: 114px;
|
||||||
height: 50px;
|
height: 75px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 50px;
|
line-height: 75px;
|
||||||
border-top: 1px solid #00397c;
|
border-top: 1px solid #00397c;
|
||||||
border-left: 1px solid #00397c;
|
border-left: 1px solid #00397c;
|
||||||
background-color: #002562;
|
background-color: #002562;
|
||||||
font-size: 14px;
|
font-size: 16px;
|
||||||
color: #B5D7FF;
|
color: #B5D7FF;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content_one_text {
|
.content_one_text {
|
||||||
width: 267px;
|
width: 267px;
|
||||||
height: 50px;
|
height: 75px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 50px;
|
line-height: 75px;
|
||||||
border-top: 1px solid #00397c;
|
border-top: 1px solid #00397c;
|
||||||
border-left: 1px solid #00397c;
|
border-left: 1px solid #00397c;
|
||||||
font-size: 14px;
|
font-size: 16px;
|
||||||
color: #B5D7FF;
|
color: #B5D7FF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,14 @@ export default {
|
|||||||
import { ref, onMounted, onBeforeUnmount, } from 'vue'
|
import { ref, onMounted, onBeforeUnmount, } from 'vue'
|
||||||
import Page from '@/components/Pagination/page.vue'
|
import Page from '@/components/Pagination/page.vue'
|
||||||
import { useUserStore } from '@/store/modules/user';
|
import { useUserStore } from '@/store/modules/user';
|
||||||
import { getWeatherLogList,getDeviceWorkData } from "@/api/home";
|
import { getWeatherLogList, getDeviceWorkData } from "@/api/home";
|
||||||
import { getWeatherLogPage,getdeviceworkdata} from "@/api/environmentalMonitoring";
|
import { getWeatherLogPage, getdeviceworkdata } from "@/api/environmentalMonitoring";
|
||||||
import { getDeviceByType } from "@/api/device";
|
import { getDeviceByType } from "@/api/device";
|
||||||
|
import { getHistoricalCurve } from "@/api/datasurvey/index";
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
import * as echarts from 'echarts'
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const tableData = ref([])
|
const tableData: any = ref([])
|
||||||
const treeloading = ref(false)
|
const treeloading = ref(false)
|
||||||
const total = ref()
|
const total = ref()
|
||||||
//控制行变色
|
//控制行变色
|
||||||
@ -32,44 +35,49 @@ const tableRowClassName = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
//环境设备获取
|
//环境设备获取
|
||||||
const environment_params = ref({
|
const environment_params: any = ref({
|
||||||
current:1,
|
current: 1,
|
||||||
size:10,
|
size: 10,
|
||||||
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([])
|
||||||
// const treeloading = ref(false)
|
// const treeloading = ref(false)
|
||||||
function getEnvironment() {
|
function getEnvironment() {
|
||||||
|
|
||||||
if(tableData.value){
|
if (tableData.value) {
|
||||||
environment_params.value.startDate = tableData.value[0]
|
environment_params.value.startDate = tableData.value[0]
|
||||||
environment_params.value.endDate = tableData.value[1]
|
environment_params.value.endDate = tableData.value[1]
|
||||||
}else{
|
} else {
|
||||||
environment_params.value.startDate = ''
|
environment_params.value.startDate = ''
|
||||||
environment_params.value.endDate = ''
|
environment_params.value.endDate = ''
|
||||||
}
|
}
|
||||||
|
environment_params.value.signalId = signalId.value
|
||||||
getdeviceworkdata(environment_params.value).then((res: any) => {
|
getdeviceworkdata(environment_params.value).then((res: any) => {
|
||||||
environment_data.value = res.data.records
|
environment_data.value = res.data.records
|
||||||
environment_params.value.size = res.data.size
|
environment_params.value.size = res.data.size
|
||||||
environment_params.value.current = res.data.current
|
environment_params.value.current = res.data.current
|
||||||
hutotal.value = res.data.total
|
hutotal.value = res.data.total
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
function environmentReset(){
|
function environmentReset() {
|
||||||
if( tableData.value){
|
environmentInfo
|
||||||
|
if (tableData.value) {
|
||||||
tableData.value.length = 0
|
tableData.value.length = 0
|
||||||
}
|
}
|
||||||
environment_params.value.patroldeviceName = ''
|
signalId.value = environmentInfo.value[0].signalId
|
||||||
getEnvironment()
|
tabs.value = 0
|
||||||
|
// getEnvironment()
|
||||||
|
gettoday()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 环境WebSocket
|
// 环境WebSocket
|
||||||
const environment = ref()
|
const environment = ref()
|
||||||
const environmentInfo:any = ref([])
|
const environmentInfo: any = ref([])
|
||||||
// const ws1 = new WebSocket(userStore.wsApiBaseUrl + '/websocket/vibe_run_data_' + userStore.userId);
|
// const ws1 = new WebSocket(userStore.wsApiBaseUrl + '/websocket/vibe_run_data_' + userStore.userId);
|
||||||
// function setupWebSocket() {
|
// function setupWebSocket() {
|
||||||
|
|
||||||
@ -79,7 +87,7 @@ const environmentInfo:any = ref([])
|
|||||||
// ws1.onerror = (error: any) => {
|
// ws1.onerror = (error: any) => {
|
||||||
// };
|
// };
|
||||||
// ws1.onmessage = (e: any) => {
|
// ws1.onmessage = (e: any) => {
|
||||||
|
|
||||||
// if (e.data != 0) {
|
// if (e.data != 0) {
|
||||||
// environment.value = JSON.parse(e.data)
|
// environment.value = JSON.parse(e.data)
|
||||||
// if (environment.value.type == 1) {
|
// if (environment.value.type == 1) {
|
||||||
@ -113,20 +121,19 @@ const environmentInfo:any = ref([])
|
|||||||
|
|
||||||
// }
|
// }
|
||||||
function getInit() {
|
function getInit() {
|
||||||
let params = {
|
let params = {
|
||||||
stationId: userStore.stationId
|
stationId: userStore.stationId
|
||||||
}
|
}
|
||||||
getDeviceWorkData(params).then((res: any) => {
|
getDeviceWorkData(params).then((res: any) => {
|
||||||
|
|
||||||
|
environmentInfo.value = res.data
|
||||||
|
})
|
||||||
|
|
||||||
environmentInfo.value = res.data
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getInit()
|
gettoday()
|
||||||
//setupWebSocket()
|
getInit()
|
||||||
getEnvironment()
|
|
||||||
gettype()
|
|
||||||
});
|
});
|
||||||
// onBeforeUnmount(() => {
|
// onBeforeUnmount(() => {
|
||||||
// if (ws1 != null) {
|
// if (ws1 != null) {
|
||||||
@ -142,65 +149,122 @@ function currency(list: any, itemcode: any) {
|
|||||||
})
|
})
|
||||||
return dictname
|
return dictname
|
||||||
}
|
}
|
||||||
const EquipmentType:any= ref([])
|
const EquipmentType: any = ref([])
|
||||||
function gettype(){
|
function gettype() {
|
||||||
getDeviceByType({ dictcode: 'system' }).then((res: any) => {
|
getDeviceByType({ dictcode: 'system' }).then((res: any) => {
|
||||||
EquipmentType.value = res.data
|
EquipmentType.value = res.data
|
||||||
|
signalId.value = res.data[0].signalId
|
||||||
|
getEnvironment()
|
||||||
|
getechartdata()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const tabs = ref(0)
|
||||||
|
const signalId = ref('')
|
||||||
|
function getscenetable(index: any, signalId1: any) {
|
||||||
|
tabs.value = index
|
||||||
|
signalId.value = signalId1
|
||||||
|
getEnvironment()
|
||||||
|
getechartdata()
|
||||||
|
}
|
||||||
|
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
|
||||||
|
gettype()
|
||||||
|
}
|
||||||
|
const echartdata: any = ref({})
|
||||||
|
function getechartdata() {
|
||||||
|
getHistoricalCurve({ signalId: signalId.value }).then((res: any) => {
|
||||||
|
echartdata.value = res.data
|
||||||
|
drawEchart()
|
||||||
|
})
|
||||||
|
function drawEchart() {
|
||||||
|
let myChart = echarts.init(document.getElementById("deviceEachers") as HTMLDivElement);
|
||||||
|
myChart.setOption({
|
||||||
|
title: {
|
||||||
|
text: ''
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data: ['Step Start', 'Step Middle', 'Step End']
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '3%',
|
||||||
|
right: '4%',
|
||||||
|
bottom: '3%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
feature: {
|
||||||
|
saveAsImage: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
xAxis: echartdata.value.xAxis,
|
||||||
|
yAxis: echartdata.value.yAxis,
|
||||||
|
series: echartdata.value.series
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="all_box">
|
<div class="all_box">
|
||||||
<div class="img_box">
|
<div class="img_box">
|
||||||
<div class="img_box_one" v-for="(item,index) in environmentInfo">
|
<div :class="tabs == index ? 'img_box_one1' : 'img_box_one'" v-for="(item, index) in environmentInfo"
|
||||||
<div><img :src="`/environment/${item.itemcode}.png`" alt=""></div>
|
@click="getscenetable(index, item.signalId)">
|
||||||
<div class="img_box_nei">
|
<div><img :src="`/environment/${item.itemcode}.png`" alt=""></div>
|
||||||
<div class="img_text1">{{ item.dictname }}</div>
|
<div class="img_box_nei">
|
||||||
<div v-if="item.value != '无'" class="img_text2">{{item.dictname == '风向'? item.value: Number(item.value).toFixed(2)}}<span class="img_unit"> {{ item.unit }}</span></div>
|
<div class="img_text1">{{ item.dictname }}</div>
|
||||||
<div v-else class="img_text2">{{item.value}}</div>
|
<div v-if="item.value != '无'" class="img_text2">{{ item.dictname == '风向' ? item.value :
|
||||||
|
Number(item.value).toFixed(2) }}<span class="img_unit"> {{ item.unit }}</span></div>
|
||||||
|
<div v-else class="img_text2">{{ item.value }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;align-items: center;justify-content: space-between;">
|
||||||
|
<div class="environment_table">
|
||||||
|
<div class="table-title">
|
||||||
|
<div class="table_left">
|
||||||
|
<div class="screenHomepage">
|
||||||
|
<el-date-picker class="screenHomepage" popper-class="elDatePicker"
|
||||||
|
@change="getEnvironment()" style="width: 400px; margin-right: 10px;" v-model="tableData"
|
||||||
|
type="datetimerange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" />
|
||||||
</div>
|
</div>
|
||||||
|
<el-button class="searchButton" @click="getEnvironment()">搜索</el-button>
|
||||||
|
<el-button class="searchButton" @click="environmentReset()">重置</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="environment_table">
|
<el-table :data="environment_data" :row-class-name="tableRowClassName" class="PatrolMonitoring"
|
||||||
<div class="table-title">
|
v-loading="treeloading" element-loading-background="rgb(11, 40, 34)" highlight-current-row
|
||||||
<div class="table_left">
|
style="width: 100%;margin:auto;position: relative;margin-top: 15px; height:calc(56vh); overflow: auto "
|
||||||
<div class="screenHomepage">
|
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }">
|
||||||
<el-input v-model="environment_params.patroldeviceName" placeholder="请输入设备名称" clearable @change="getEnvironment()"
|
<el-table-column type="index" label="序号" width="80px" align="center" />
|
||||||
style="margin-right:15px ;width: 200px;" />
|
<el-table-column property="signalName" label="气象参数名称" align="center" />
|
||||||
<el-date-picker class="screenHomepage" popper-class="elDatePicker" @change="getEnvironment()"
|
<el-table-column property="startTime" label="采集时间" align="center" width="160px" />
|
||||||
style="width: 300px; margin-right: 10px;" v-model="tableData" type="daterange"
|
<el-table-column property="taskName" label="监测数值" align="center" width="100px">
|
||||||
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
|
<template #default="scope">
|
||||||
value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
|
<div v-if="scope.row.value">{{ scope.row.value }}{{ scope.row.unit }}</div>
|
||||||
</div>
|
</template>
|
||||||
<el-button class="searchButton" @click="getEnvironment()">搜索</el-button>
|
</el-table-column>
|
||||||
<el-button class="searchButton" @click="environmentReset()">重置</el-button>
|
|
||||||
</div>
|
</el-table>
|
||||||
</div>
|
<div style="width:100%;display:flex;align-items:center;margin-top:10px;">
|
||||||
<el-table :data="environment_data" :row-class-name="tableRowClassName" class="PatrolMonitoring"
|
<Page style="margin:0 auto ;" :total="hutotal" v-model:size="environment_params.size"
|
||||||
v-loading="treeloading" element-loading-background="rgb(11, 40, 34)" highlight-current-row
|
:jumper="'hide'" v-model:current="environment_params.current" @pagination="getEnvironment()">
|
||||||
style="width: 100%;margin:auto;position: relative;margin-top: 15px; height:calc(56vh); overflow: auto "
|
</Page>
|
||||||
:header-cell-style="{ background: '#253b51', color: '#b5d7ff', height: '50px' }">
|
|
||||||
<el-table-column type="index" label="序号" width="80px" align="center" />
|
|
||||||
<el-table-column property="deviceName" label="监控设备名称" align="center" />
|
|
||||||
<el-table-column property="signalName" label="监控信号名称" align="center" />
|
|
||||||
<el-table-column property="systemcode" label="所属系统" align="center" width="100px">
|
|
||||||
<template #default="scope">
|
|
||||||
<span>{{ currency(EquipmentType, scope.row.systemcode) }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column property="taskName" label="监测数值" align="center" width="100px">
|
|
||||||
<template #default="scope">
|
|
||||||
<div v-if="scope.row.value">{{ scope.row.value }}{{scope.row.unit}}</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column property="startTime" label="采集时间" align="center" width="160px" />
|
|
||||||
</el-table>
|
|
||||||
<div style="width:100%;display:flex;align-items:center;margin-top:10px;">
|
|
||||||
<Page style="margin:0 auto ;" :total="hutotal" v-model:size="environment_params.size" :jumper="'hide'"
|
|
||||||
v-model:current="environment_params.current" @pagination="getEnvironment()"></Page>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="environment_table">
|
||||||
|
<div id="deviceEachers" :style="{ width: '100%', height: '90%' }"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@ -219,21 +283,64 @@ function gettype(){
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin: 20px 0px;
|
margin: 20px 0px;
|
||||||
|
|
||||||
.img_box_one {
|
.img_box_one1 {
|
||||||
width: 220px;
|
width: 220px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
background: url(@/assets/navigation/hjjc_sjbj.png) ;
|
background: url(@/assets/navigation/hjjc_sjbj.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
|
background-color: #00ffff2f;
|
||||||
|
border: #00ffff 1px solid;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
.img_box_nei {
|
.img_box_nei {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
|
||||||
|
.img_text1 {
|
||||||
|
font-family: '微软雅黑';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 18px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img_text2 {
|
||||||
|
font-family: '钉钉进步体 Bold', '钉钉进步体';
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 24px;
|
||||||
|
color: #00ffff;
|
||||||
|
|
||||||
|
.img_unit {
|
||||||
|
font-family: '钉钉进步体 Bold', '钉钉进步体';
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 18px;
|
||||||
|
color: rgba(255, 255, 255, 0.298039215686275);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.img_box_one {
|
||||||
|
width: 220px;
|
||||||
|
height: 150px;
|
||||||
|
background: url(@/assets/navigation/hjjc_sjbj.png);
|
||||||
|
background-size: 100% 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-around;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
.img_box_nei {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-top: 10px;
|
||||||
|
|
||||||
.img_text1 {
|
.img_text1 {
|
||||||
font-family: '微软雅黑';
|
font-family: '微软雅黑';
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@ -260,11 +367,11 @@ function gettype(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
.environment_table {
|
.environment_table {
|
||||||
width: 1881px;
|
width: 935px;
|
||||||
height: calc(69vh);
|
height: calc(69vh);
|
||||||
background: url(@/assets/navigation/hjjc_BK.png) ;
|
background: url(@/assets/navigation/sbjc_488.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
margin: 0 auto;
|
// margin: 0 auto;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
|
|
||||||
@ -281,10 +388,4 @@ function gettype(){
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.environment_table1{
|
|
||||||
height: calc(83vh);
|
|
||||||
background: url(@/assets/station_2/hjjc_9.png) no-repeat;
|
|
||||||
margin-top:20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -5,7 +5,7 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, nextTick, onBeforeUnmount } from "vue";
|
import { ref, onMounted, nextTick, onBeforeUnmount,computed } from "vue";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import { getVoicePrintByArea, getVoicePatrolPage, executeVoicePatrolTask } from "@/api/videomonitor/index";
|
import { getVoicePrintByArea, getVoicePatrolPage, executeVoicePatrolTask } from "@/api/videomonitor/index";
|
||||||
import Page from '@/components/Pagination/page.vue'
|
import Page from '@/components/Pagination/page.vue'
|
||||||
@ -79,6 +79,7 @@ onBeforeUnmount(() => {
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getInit()
|
getInit()
|
||||||
})
|
})
|
||||||
|
|
||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
const treeloading = ref(false)
|
const treeloading = ref(false)
|
||||||
const environment_data = ref([
|
const environment_data = ref([
|
||||||
|
@ -244,8 +244,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="stationboard-right1" id="tableTr">
|
<div class="stationboard-right1" id="tableTr">
|
||||||
<div class="stationboard-box-title">
|
<div class="stationboard-box-title" style="padding-bottom:0px ;">
|
||||||
<div class="img_txt"> <img src=@/assets/navigation/ty_bq.png alt=""><span>告警列表</span></div>
|
<div style="display: flex;align-items: center;justify-content: space-between;width: 100%;">
|
||||||
|
<div class="img_txt">
|
||||||
|
<img src=@/assets/navigation/ty_bq.png alt=""><span>告警列表</span>
|
||||||
|
</div>
|
||||||
|
<el-button class="searchButton" @click="alarmInfoClick" >详情</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="table_body">
|
<div class="table_body">
|
||||||
<div class="table_th">
|
<div class="table_th">
|
||||||
@ -259,10 +264,10 @@
|
|||||||
:class="{ 'table_active': index % 2 == 0 }" @dblclick="processClick(item)">
|
:class="{ 'table_active': index % 2 == 0 }" @dblclick="processClick(item)">
|
||||||
<div class="tr1 tr" :title="item.content">{{ item.content }}</div>
|
<div class="tr1 tr" :title="item.content">{{ item.content }}</div>
|
||||||
<div class="tr2 tr">
|
<div class="tr2 tr">
|
||||||
<span v-if="item.alarmLevel == 1" style="color: #98E0FF;">预警</span>
|
<span v-if="item.alarmLevel == 1" style="color: #0099FF;">预警</span>
|
||||||
<span v-if="item.alarmLevel == 2" style="color: #0ACAFF;">一般</span>
|
<span v-if="item.alarmLevel == 2" style="color: #FFFF00;">一般</span>
|
||||||
<span v-if="item.alarmLevel == 3" style="color: #6B86FF;">严重</span>
|
<span v-if="item.alarmLevel == 3" style="color: #FF9900;">严重</span>
|
||||||
<span v-if="item.alarmLevel == 4" style="color: #FF9C29;">危急</span>
|
<span v-if="item.alarmLevel == 4" style="color: #FF3300;">危急</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="tr3 tr">{{ dateFormat(item.alarmDate) }}</div>
|
<div class="tr3 tr">{{ dateFormat(item.alarmDate) }}</div>
|
||||||
</div>
|
</div>
|
||||||
@ -340,6 +345,7 @@ import Modelset from './3DModelSet.vue';
|
|||||||
import { getTaskTodoStatByMonth } from "@/api/areaboard";
|
import { getTaskTodoStatByMonth } from "@/api/areaboard";
|
||||||
import { useUserStore } from '@/store/modules/user';
|
import { useUserStore } from '@/store/modules/user';
|
||||||
import * as echarts from 'echarts';
|
import * as echarts from 'echarts';
|
||||||
|
import router from '@/router';
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
watch(() => userStore.alarmCount, (newValue, oldValue) => {
|
watch(() => userStore.alarmCount, (newValue, oldValue) => {
|
||||||
alarmCount.value = newValue
|
alarmCount.value = newValue
|
||||||
@ -362,6 +368,10 @@ function dateFormat(row: any) {
|
|||||||
return month + "-" + day + " " + hours + ":" + minutes;
|
return month + "-" + day + " " + hours + ":" + minutes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function alarmInfoClick() {
|
||||||
|
router.push(`/task/alarmInfo/index`)
|
||||||
|
|
||||||
|
}
|
||||||
const tableTop = ref(0)
|
const tableTop = ref(0)
|
||||||
const tableList: any = ref([])
|
const tableList: any = ref([])
|
||||||
let tableTimer: any = null
|
let tableTimer: any = null
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="login-container">
|
<div class="login-container">
|
||||||
<img :src="loginImg" alt="" style="position: absolute;top: 0;width: 100vw !important;max-width:100vw!important;height:100vh">
|
<img :src="loginImg" alt="" style="position: absolute;top: 0;width: 100vw !important;max-width:100vw!important;height:100vh">
|
||||||
<div class="login-container-center">
|
<div class="login-container-center">
|
||||||
<div class="title-container">
|
<div class="title-container" style="width: 461px;">
|
||||||
<img src="@/assets/login/bt.png" alt="" style="margin: auto;">
|
<img src="@/assets/login/bt.png" alt="" style="margin: auto;">
|
||||||
</div>
|
</div>
|
||||||
<div class="login-container-right">
|
<div class="login-container-right">
|
||||||
|
@ -124,7 +124,7 @@ const num = ref(0)
|
|||||||
<div>{{ examinationInfo.componentName }}</div>
|
<div>{{ examinationInfo.componentName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent">
|
<div class="public-details-conent">
|
||||||
<div v-if="examinationInfo.alarmSourceType == 1" class="public-details-name">告警来源:</div>
|
<div v-if="examinationInfo.taskAlarmType == 4" class="public-details-name">告警来源:</div>
|
||||||
<div>{{ currency(AlarmSourceList, examinationInfo.taskAlarmType) }}</div>
|
<div>{{ currency(AlarmSourceList, examinationInfo.taskAlarmType) }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent">
|
<div class="public-details-conent">
|
||||||
@ -150,7 +150,7 @@ const num = ref(0)
|
|||||||
<div >{{ examinationInfo.alarmDate }}</div>
|
<div >{{ examinationInfo.alarmDate }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="examinationInfo.alarmSourceType == 1" 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 title="查看图片" style="position: absolute;
|
||||||
right: 5px;
|
right: 5px;
|
||||||
|
@ -208,7 +208,7 @@ const handleChange = (value: any) => {
|
|||||||
<div class="public-details-name">部件名称:</div>
|
<div class="public-details-name">部件名称:</div>
|
||||||
<div>{{ examinationInfo.componentName }}</div>
|
<div>{{ examinationInfo.componentName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="public-details-conent" v-if="examinationInfo.alarmSourceType == 1">
|
<div class="public-details-conent" v-if="examinationInfo.taskAlarmType == 4">
|
||||||
<div class="public-details-name">告警来源:</div>
|
<div class="public-details-name">告警来源:</div>
|
||||||
<div>{{ currency(AlarmSourceList, examinationInfo.taskAlarmType) }}</div>
|
<div>{{ currency(AlarmSourceList, examinationInfo.taskAlarmType) }}</div>
|
||||||
</div>
|
</div>
|
||||||
@ -236,7 +236,7 @@ const handleChange = (value: any) => {
|
|||||||
<div>{{ examinationInfo.alarmDate }}</div>
|
<div>{{ examinationInfo.alarmDate }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="examinationInfo.alarmSourceType == 1" 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 title="查看图片" style="position: absolute;
|
||||||
right: 5px;
|
right: 5px;
|
||||||
|
@ -311,7 +311,7 @@ onBeforeUnmount(() => {
|
|||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: #07241c;
|
background: #001b4a;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
475
riis-web/src/views/question/question/index.vue
Normal file
475
riis-web/src/views/question/question/index.vue
Normal file
@ -0,0 +1,475 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, onMounted, reactive, nextTick } from 'vue'
|
||||||
|
import Page from '@/components/Pagination/page.vue'
|
||||||
|
import { ElMessageBox, ElMessage, ElTable, FormRules, ElTree } from 'element-plus'
|
||||||
|
import { getDeviceByType } from '@/api/device'
|
||||||
|
import { queryDevice, addDevice, updateDevice, deleteDeviceById, deleteDeviceByIds, updateDeviceByIds } from '@/api/auxiliarymanage/index';
|
||||||
|
import { getGatewayList } from '@/api/systemmanage'
|
||||||
|
import { getdevicedata } from "@/api/device";
|
||||||
|
import Eldialog from '@/components/seccmsdialog/eldialog.vue'
|
||||||
|
import { useUserStore } from '@/store/modules/user';
|
||||||
|
import {
|
||||||
|
getBayTree,
|
||||||
|
} from "@/api/makeTask";
|
||||||
|
const userStore = useUserStore();
|
||||||
|
//树形控件类型定义
|
||||||
|
interface Tree {
|
||||||
|
[x: string]: any;
|
||||||
|
label: string;
|
||||||
|
children?: Tree[];
|
||||||
|
}
|
||||||
|
const vMove = {
|
||||||
|
mounted(el: any) {
|
||||||
|
el.onmousedown = function (e: any) {
|
||||||
|
var init = e.clientX;
|
||||||
|
var parent: any = document.getElementById("silderLeft");
|
||||||
|
const initWidth: any = parent.offsetWidth;
|
||||||
|
document.onmousemove = function (e) {
|
||||||
|
var end = e.clientX;
|
||||||
|
var newWidth = end - init + initWidth;
|
||||||
|
parent.style.width = newWidth + "px";
|
||||||
|
};
|
||||||
|
document.onmouseup = function () {
|
||||||
|
document.onmousemove = document.onmouseup = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const tableRowClassName = ({
|
||||||
|
row,
|
||||||
|
rowIndex,
|
||||||
|
}: {
|
||||||
|
row: any
|
||||||
|
rowIndex: number
|
||||||
|
}) => {
|
||||||
|
if (rowIndex % 2 === 0) {
|
||||||
|
return 'warning-row'
|
||||||
|
} else if (rowIndex % 2 === 1) {
|
||||||
|
return 'success-row'
|
||||||
|
}
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
const defaultProps = { label: "dictname" };
|
||||||
|
const defaultProps1 = {
|
||||||
|
children: "children",
|
||||||
|
label: "name"
|
||||||
|
};
|
||||||
|
const checktreenode: any = ref({})
|
||||||
|
const handleNodeClick = (data: Tree) => {
|
||||||
|
|
||||||
|
};
|
||||||
|
const treeRef = ref<InstanceType<typeof ElTree>>()
|
||||||
|
const treeData: any = ref([])
|
||||||
|
const treeloading = ref(false)
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
init()
|
||||||
|
})
|
||||||
|
function init() {
|
||||||
|
const params = {
|
||||||
|
dictcode: 'FaultDiagnosisType'
|
||||||
|
}
|
||||||
|
treeloading.value = true
|
||||||
|
getDeviceByType(params).then((res: any) => {
|
||||||
|
if (res.data.length !== 0 && res.data !== null) {
|
||||||
|
treeData.value = res.data
|
||||||
|
treeloading.value = false
|
||||||
|
if (res.data.length !== 0 && res.data !== null) {
|
||||||
|
nextTick(() => {
|
||||||
|
treeRef.value?.setCurrentKey(res.data[0].id);
|
||||||
|
checktreenode.value.code = res.data[0].itemcode
|
||||||
|
checktreenode.value.name = res.data[0].dictname
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function handleClose() {
|
||||||
|
serviceOpen.value = false
|
||||||
|
tieupswitch.value = false
|
||||||
|
}
|
||||||
|
//维护按钮
|
||||||
|
const serviceOpen = ref(true)
|
||||||
|
function uphold() {
|
||||||
|
serviceOpen.value = true
|
||||||
|
}
|
||||||
|
//表格数据
|
||||||
|
const tableData = ref([])
|
||||||
|
const loading = ref(false)
|
||||||
|
|
||||||
|
//绑定
|
||||||
|
const title = ref('')
|
||||||
|
const tieupswitch = ref(false)
|
||||||
|
function tieupdevice(row: any) {
|
||||||
|
title.value = '关联' + row
|
||||||
|
tieupswitch.value = true
|
||||||
|
getbaytree()
|
||||||
|
}
|
||||||
|
//维护添加绑定数据
|
||||||
|
//左侧树
|
||||||
|
const treedata = ref([])
|
||||||
|
const treeRefbay: any = ref(null)
|
||||||
|
const weitreeloading = ref(false)
|
||||||
|
const bayId = ref('')
|
||||||
|
function getbaytree() {
|
||||||
|
const params = {
|
||||||
|
stationId: userStore.stationId
|
||||||
|
}
|
||||||
|
weitreeloading.value = true
|
||||||
|
getBayTree(params).then((res: any) => {
|
||||||
|
if (res.data.length == 0) {
|
||||||
|
weitableData.value.length = 0
|
||||||
|
}
|
||||||
|
weitreeloading.value = false
|
||||||
|
treedata.value = res.data
|
||||||
|
bayId.value = res.data[0].children[0].children[0].bayId
|
||||||
|
nextTick(() => {
|
||||||
|
treeRefbay.value?.setCurrentKey(bayId.value);
|
||||||
|
});
|
||||||
|
// getPointsData()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//导航树点击事件
|
||||||
|
const currentNodeKeybay = ref("")
|
||||||
|
function handClick(data: Tree, node: any) {
|
||||||
|
if (data.children) {
|
||||||
|
node.isCurrent = false
|
||||||
|
currentNodeKeybay.value = ""
|
||||||
|
nextTick(() => {
|
||||||
|
currentNodeKeybay.value = bayId.value
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
bayId.value = data.bayId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//右侧表格
|
||||||
|
const weitableData = ref([])
|
||||||
|
const tableloading = ref(false)
|
||||||
|
const bayName = ref('')
|
||||||
|
// const componentIds = ref('')
|
||||||
|
// const mainDeviceIds = ref('')
|
||||||
|
function getPointsData() {
|
||||||
|
tableloading.value = true
|
||||||
|
const params = {
|
||||||
|
bayId: bayId.value,
|
||||||
|
// componentId: componentIds.value,
|
||||||
|
// mainDeviceId: mainDeviceIds.value,
|
||||||
|
status: 0,
|
||||||
|
// patrolDeviceCode: info.value.robotCode,
|
||||||
|
deviceName: bayName.value
|
||||||
|
}
|
||||||
|
getdevicedata(params).then((res: any) => {
|
||||||
|
tableloading.value = false
|
||||||
|
weitableData.value = res.data.records
|
||||||
|
res.data.records.forEach((res: any) => {
|
||||||
|
res['id'] = res.deviceId
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function handPointsChange(val: any) {
|
||||||
|
|
||||||
|
}
|
||||||
|
function resetComponent() {
|
||||||
|
bayId.value = ''
|
||||||
|
getPointsData()
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div class="faulttemplate-box">
|
||||||
|
<aside id="silderLeft">
|
||||||
|
<el-tree v-loading="treeloading" ref="treeRef" node-key="id" :data="treeData" :highlight-current="true"
|
||||||
|
:props="defaultProps" :expand-on-click-node="false" @node-click="handleNodeClick"
|
||||||
|
style="height: calc(87vh); overflow: auto;margin-top: 10px;">
|
||||||
|
</el-tree>
|
||||||
|
<div class="moveBtn" v-move>
|
||||||
|
<div class="moveBtn-line"></div>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
<section class="silderRight1">
|
||||||
|
<div class="right_yop">
|
||||||
|
<div class="right_button"><el-button class="searchButton" type="primary" @click="uphold">维护</el-button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div></div>
|
||||||
|
</section>
|
||||||
|
<Eldialog v-if="serviceOpen" :title="'维护'" :zIndex="2000" :width="'60%'" @before-close="handleClose">
|
||||||
|
<template v-slot:PopFrameContent>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<el-button class="searchButton" type="primary" @click="tieupdevice('点位')">关联点位</el-button>
|
||||||
|
<el-button class="searchButton" type="primary" @click="tieupdevice('信号')">关联信号</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="tieup">
|
||||||
|
<div class="tieup_title">
|
||||||
|
<div class="tieup_title_line"></div>
|
||||||
|
<div class="tieup_title_text">关联结果</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-table ref="multipleTableRef" :data="tableData" :row-class-name="tableRowClassName"
|
||||||
|
:v-loading="loading"
|
||||||
|
style="width: 100%;margin-bottom: 20px;height: calc(35vh);overflow: auto;" row-key="id"
|
||||||
|
default-expand-all
|
||||||
|
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
||||||
|
<el-table-column label="序号" type="index" width="50" />
|
||||||
|
<el-table-column label="设备编号" prop="deviceCode" />
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<span class="dialog-footer"
|
||||||
|
style="width: 95%;margin: auto; display: flex;display: -webkit-flex; justify-content: center;-webkit-justify-content: center;margin-top: 10px;">
|
||||||
|
<div class="details-button" @click="handleClose">取消</div>
|
||||||
|
<div class="details-button" @click="">保存</div>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</Eldialog>
|
||||||
|
<Eldialog v-if="tieupswitch" :title="title" :zIndex="2000" :width="'80%'" @before-close="handleClose">
|
||||||
|
<template v-slot:PopFrameContent>
|
||||||
|
<div class="faulttemplate-box1">
|
||||||
|
<aside id="silderLeft1">
|
||||||
|
<div class="displayflex">
|
||||||
|
<div class="line"></div>
|
||||||
|
<div class="title" style="font-size: 14px;color: #fff;">数据列表</div>
|
||||||
|
</div>
|
||||||
|
<el-scrollbar>
|
||||||
|
<el-tree ref="treeRefbay" node-key="bayId" :data="treedata"
|
||||||
|
:current-node-key="currentNodeKeybay" v-loading="weitreeloading"
|
||||||
|
:highlight-current="true" :props="defaultProps1" @node-click="handClick">
|
||||||
|
</el-tree>
|
||||||
|
</el-scrollbar>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
<section class="silderRightDialog">
|
||||||
|
<div
|
||||||
|
style="display: flex;display: -webkit-flex; justify-content: space-between; -webkit-justify-content: space-between; margin:5px">
|
||||||
|
<div style="display: flex;display: -webkit-flex; align-items: center;width: 80%;">
|
||||||
|
|
||||||
|
<el-input v-model="bayName" placeholder="请输入巡视点位名称" clearable @clear="getPointsData()"
|
||||||
|
@change="getPointsData()" style="margin-right:15px ;width: 30%;" />
|
||||||
|
<el-button class="searchButton" @click="getPointsData()">搜索</el-button>
|
||||||
|
<el-button class="searchButton" @click="resetComponent()">重置</el-button>
|
||||||
|
</div>
|
||||||
|
<div><el-button class="searchButton" @click="">添加</el-button></div>
|
||||||
|
</div>
|
||||||
|
<div class="draggable">
|
||||||
|
<el-table ref="multipleTableRef" :data="weitableData" :row-class-name="tableRowClassName"
|
||||||
|
:v-loading="loading"
|
||||||
|
style="width: 100%;margin-bottom: 20px;height: calc(35vh);overflow: auto;" row-key="id"
|
||||||
|
default-expand-all
|
||||||
|
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
||||||
|
<el-table-column type="selection" width="30" align="center" />
|
||||||
|
<el-table-column label="序号" type="index" width="50"></el-table-column>
|
||||||
|
<el-table-column label="巡视点位名称" prop="deviceName"></el-table-column>
|
||||||
|
<el-table-column label="所属主设备" prop="mainDeviceName"></el-table-column>
|
||||||
|
<el-table-column label="所属部件" prop="componentName"></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</Eldialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.silderLeft-default {
|
||||||
|
:deep(.el-tree-node__label) {
|
||||||
|
font-size: 16px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.faulttemplate-box {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
display: -webkit-flex;
|
||||||
|
background-color: #f2f4f900;
|
||||||
|
padding: 15px 15px 0px 15px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#silderLeft {
|
||||||
|
width: 300px;
|
||||||
|
padding: 5px 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-radius: 3px;
|
||||||
|
position: relative;
|
||||||
|
background: url(@/assets/navigation/ty_260x988.png);
|
||||||
|
background-size: 100% 100%;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
.moveBtn {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 拖动条 */
|
||||||
|
.moveBtn {
|
||||||
|
height: 100%;
|
||||||
|
width: 15px;
|
||||||
|
padding: 0 6px;
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
right: -15px;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.moveBtn-line {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
cursor: col-resize;
|
||||||
|
user-select: none;
|
||||||
|
background-color: #60bfff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.silderRight1 {
|
||||||
|
flex: 1;
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100vh - 160px);
|
||||||
|
overflow: auto;
|
||||||
|
background-color: rgba(255, 255, 255, 0);
|
||||||
|
border-radius: 3px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-left: 15px;
|
||||||
|
|
||||||
|
.right_yop {
|
||||||
|
width: 100%;
|
||||||
|
height: calc(60vh);
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 15px;
|
||||||
|
background: url(@/assets/navigation/sw1.png);
|
||||||
|
background-size: 100% 100%;
|
||||||
|
|
||||||
|
.right_button {
|
||||||
|
display: flex;
|
||||||
|
justify-content: end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//关联
|
||||||
|
.tieup {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.tieup_title {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 18px;
|
||||||
|
margin: 10px 0px;
|
||||||
|
|
||||||
|
.tieup_title_line {
|
||||||
|
width: 6px;
|
||||||
|
height: 16px;
|
||||||
|
background-color: #009bff;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////
|
||||||
|
///
|
||||||
|
///
|
||||||
|
.faulttemplate-box1 {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
display: -webkit-flex;
|
||||||
|
padding-top: 15px;
|
||||||
|
|
||||||
|
#silderLeft1 {
|
||||||
|
width: 300px;
|
||||||
|
padding: 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background-image: url(@/assets/navigation/ty_260x988.png);
|
||||||
|
background-size: 100% 100%;
|
||||||
|
height: calc(70vh);
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.silderRightDialog {
|
||||||
|
flex: 1;
|
||||||
|
width: 100%;
|
||||||
|
height: calc(70vh);
|
||||||
|
overflow: auto;
|
||||||
|
// background-color: rgba(255, 255, 255, 1); navigation/ty_260x988.png riis-web/src/assets/navigation/ty_1614x988.png
|
||||||
|
border-radius: 3px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-left: 15px;
|
||||||
|
background: url(@/assets/navigation/ty_1614x988.png);
|
||||||
|
background-size: 100% 100%;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.displayflex {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.line {
|
||||||
|
width: 5px;
|
||||||
|
height: 14px;
|
||||||
|
background: #0099ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
padding-left: 10px;
|
||||||
|
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #303133;
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-tree-node.is-current>.el-tree-node__content) {
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
// color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-tree) {
|
||||||
|
background-color: #ffffff00 !important;
|
||||||
|
--el-tree-node-hover-bg-color: #0099ff09;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-tree-node__content) {
|
||||||
|
width: 100% !important;
|
||||||
|
height: 40px !important;
|
||||||
|
margin: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-table:not(.el-table--border) .el-table__cell) {
|
||||||
|
border: none;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-tree) {
|
||||||
|
background-color: #ffffff00 !important;
|
||||||
|
--el-tree-node-hover-bg-color: #0099ff09;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-input) {
|
||||||
|
--el-input-bg-color: #ffffff00 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-input-group__append) {
|
||||||
|
background: #ffffff00 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-input .el-input__count .el-input__count-inner) {
|
||||||
|
background-color: rgba(240, 248, 255, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-scrollbar) {
|
||||||
|
height: 95% !important;
|
||||||
|
}
|
||||||
|
</style>
|
@ -183,7 +183,7 @@ function rowClick(row: any) {
|
|||||||
if (row.id == alarmInfo.value.id ) {
|
if (row.id == alarmInfo.value.id ) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (row.alarmSourceType == 2) {
|
if (row.taskAlarmType == 4) {
|
||||||
ElMessage({message:'辅控任务暂无图片和视频',type:'warning'})
|
ElMessage({message:'辅控任务暂无图片和视频',type:'warning'})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -577,36 +577,36 @@ const isVideo = ref(false)
|
|||||||
style="width: 100%;margin:auto;position: relative;margin-top: 0px; height:calc(75vh); overflow: auto "
|
style="width: 100%;margin:auto;position: relative;margin-top: 0px; height:calc(75vh); overflow: auto "
|
||||||
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }"
|
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }"
|
||||||
@selection-change="handleSelectionChange" @row-click="rowClick">
|
@selection-change="handleSelectionChange" @row-click="rowClick">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="20" align="center" />
|
||||||
<el-table-column type="index" align="center" label="序号" width="60px"></el-table-column>
|
<el-table-column type="index" align="center" label="序号" width="40px"></el-table-column>
|
||||||
<el-table-column prop="patroldeviceName" label="设备名称" />
|
<el-table-column prop="patroldeviceName" label="设备名称" align="center" />
|
||||||
<el-table-column prop="componentName" label="部件名称" />
|
<el-table-column prop="componentName" label="部件名称" align="center" />
|
||||||
<el-table-column prop="deviceName" label="点位名称" />
|
<el-table-column prop="deviceName" label="点位名称" align="center" />
|
||||||
<el-table-column prop="materialId" label="实物ID">
|
<el-table-column prop="materialId" label="实物ID" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.materialId">{{ scope.row.materialId }}</span>
|
<span v-if="scope.row.materialId">{{ scope.row.materialId }}</span>
|
||||||
<span v-else>--</span>
|
<span v-else>--</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="点位分类" prop="appearanceType">
|
<el-table-column label="点位分类" prop="appearanceType" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.pointType == 1">Ⅰ类</span>
|
<span v-if="scope.row.pointType == 1">Ⅰ类</span>
|
||||||
<span v-if="scope.row.pointType == 2">Ⅱ类</span>
|
<span v-if="scope.row.pointType == 2">Ⅱ类</span>
|
||||||
<span v-if="scope.row.pointType == 3">Ⅲ类</span>
|
<span v-if="scope.row.pointType == 3">Ⅲ类</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="taskAlarmType" label="告警来源" width="110px" align="center">
|
<el-table-column prop="taskAlarmType" label="告警来源" width="80px" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ currency(AlarmSourceList, scope.row.taskAlarmType) }}</span>
|
<span>{{ currency(AlarmSourceList, scope.row.taskAlarmType) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="alarmType" label="告警类型" width="110px" align="center">
|
<el-table-column prop="alarmType" label="告警类型" width="80px" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
|
|
||||||
<span>{{ currency(AlarmTypeArr,scope.row.alarmSourceType == '1'? scope.row.alarmType : scope.row.fkAlarmType) }}</span>
|
<span>{{ currency(AlarmTypeArr,scope.row.taskAlarmType == '4'? scope.row.alarmType : scope.row.fkAlarmType) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="alarmLevel" label="告警等级" width="90px" align="center">
|
<el-table-column prop="alarmLevel" label="告警等级" width="80px" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.alarmLevel == 1" style="color: #0099FF;">{{ currency(AlarmLevelList,
|
<span v-if="scope.row.alarmLevel == 1" style="color: #0099FF;">{{ currency(AlarmLevelList,
|
||||||
scope.row.alarmLevel) }}</span>
|
scope.row.alarmLevel) }}</span>
|
||||||
@ -752,7 +752,7 @@ const isVideo = ref(false)
|
|||||||
<div class="details-name">部件名称:</div>
|
<div class="details-name">部件名称:</div>
|
||||||
<div>{{ examinationInfo.componentName }}</div>
|
<div>{{ examinationInfo.componentName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="details-conent" v-if="examinationInfo.alarmSourceType == 1">
|
<div class="details-conent" v-if="examinationInfo.taskAlarmType == 4">
|
||||||
<div class="details-name">告警来源:</div>
|
<div class="details-name">告警来源:</div>
|
||||||
<div>{{ currency(AlarmSourceList, examinationInfo.taskAlarmType) }}</div>
|
<div>{{ currency(AlarmSourceList, examinationInfo.taskAlarmType) }}</div>
|
||||||
</div>
|
</div>
|
||||||
@ -762,7 +762,7 @@ 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.alarmSourceType == 1">
|
<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);">
|
||||||
|
@ -22,6 +22,7 @@ import {
|
|||||||
PatrolTask,
|
PatrolTask,
|
||||||
getRobotAndUavList
|
getRobotAndUavList
|
||||||
} from "@/api/makeTask";
|
} from "@/api/makeTask";
|
||||||
|
import dayjs from 'dayjs'
|
||||||
import { secondauthPassword } from '@/api/robotmonitoring'
|
import { secondauthPassword } from '@/api/robotmonitoring'
|
||||||
import { getdevicedata } from "@/api/device";
|
import { getdevicedata } from "@/api/device";
|
||||||
import { encrypt, decrypt } from '@/utils/sm4';
|
import { encrypt, decrypt } from '@/utils/sm4';
|
||||||
@ -1484,7 +1485,16 @@ onMounted(() => {
|
|||||||
getarrType()
|
getarrType()
|
||||||
GetSelect()
|
GetSelect()
|
||||||
getrobotUAV()
|
getrobotUAV()
|
||||||
|
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
|
||||||
|
}
|
||||||
//新增优先级回显
|
//新增优先级回显
|
||||||
function changeType(row: any) {
|
function changeType(row: any) {
|
||||||
info.value.priority = row
|
info.value.priority = row
|
||||||
|
@ -5285,7 +5285,7 @@ ws1.onclose = () => {
|
|||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: #131a25;
|
background: #001b4a;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
@ -2875,7 +2875,7 @@ function nextPage() {
|
|||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: #131a25;
|
background: #001b4a;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
Loading…
Reference in New Issue
Block a user