<template>
|
<div class="HashCard">
|
<div class="hashrate">
|
<img v-if="type == 0" src="/images/hashrate/polling.png" alt="" />
|
<img v-if="type == 1" src="/images/hashrate/realTime2.png" alt="" />
|
<img v-if="type == 2" src="/images/hashrate/static.png" alt="" />
|
<div class="hashrateContent">
|
<div class="label" v-if="type == 0">轮询算力</div>
|
<div class="label" v-if="type == 1">实时算力</div>
|
<div class="label" v-if="type == 2">数据栈算力</div>
|
<div class="data">
|
<span class="number">{{ hashrate.total }}</span
|
>路
|
</div>
|
</div>
|
</div>
|
<div class="detail">
|
<div class="detailItem">
|
<div class="label"><span class="iconfont"></span>打开分析开关</div>
|
<div class="data">
|
<span class="number">{{ hashrate.valid }}</span
|
>路
|
</div>
|
</div>
|
<div class="detailItem">
|
<div class="label"><span class="iconfont"></span>算法不全</div>
|
<div class="data">
|
<span class="number">{{ hashrate.invalid }}</span
|
>路
|
</div>
|
</div>
|
<div class="detailItem">
|
<div class="label"><span class="iconfont"></span>正在分析</div>
|
<div class="data">
|
<span class="number">{{ hashrate.run }}</span
|
>路
|
</div>
|
</div>
|
<div class="detailItem click" @click="showDetail">
|
<div class="label" title="因未知原因未处理"><span class="iconfont"></span>因未知原因未处理</div>
|
<div class="data">
|
<span class="number">{{ hashrate.noDeal }}</span
|
>路
|
</div>
|
</div>
|
</div>
|
<el-dialog
|
title="取流异常数据"
|
destroy-on-close
|
:visible.sync="dialogVisible"
|
width="70%"
|
:before-close="handleClose"
|
>
|
<el-table :data="tableData" stripe style="width: 100%">
|
<el-table-column prop="device" label="设备ID" > </el-table-column>
|
<el-table-column prop="name" label="通道名称" > </el-table-column>
|
<el-table-column prop="rtsp" label="通道号"> </el-table-column>
|
</el-table>
|
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
export default {
|
props: {
|
type: {},
|
hashrate: {}
|
},
|
data() {
|
return {
|
page: 1,
|
size: 10, //分页相关
|
total: 0, //总数,
|
|
id: "",
|
dialogVisible: false,
|
tableData: [
|
]
|
}
|
},
|
methods: {
|
showDetail() {
|
console.log(this.hashrate)
|
|
// 有断流摄像机的信息才显示, 其他原因不展示明细
|
if (this.hashrate.hasOwnProperty("duanliu") && this.hashrate.duanliu.length > 0) {
|
this.tableData = []
|
this.hashrate.duanliu.forEach(element => {
|
let cameraInfo = element.split("->")
|
if (cameraInfo.length != 4) {
|
return
|
}
|
|
this.tableData.push({
|
"device":cameraInfo[0],
|
"name":cameraInfo[2],
|
"rtsp":cameraInfo[3]
|
})
|
});
|
|
this.dialogVisible = true
|
}
|
},
|
refrash(page) {
|
this.page = page
|
this.lookUp()
|
},
|
handleSizeChange(size) {
|
this.size = size
|
this.lookUp()
|
},
|
|
handleClose(done) {
|
// this.dialogVisible = false
|
// this.$confirm("确认关闭?")
|
// .then((_) => {
|
done()
|
// })
|
// .catch((_) => {})
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
.HashCard {
|
overflow: hidden;
|
height: 156px;
|
background-color: #fff;
|
display: flex;
|
justify-content: space-between;
|
|
.hashrate {
|
margin-left: 20px;
|
margin-right: 34px;
|
margin-top: 42px;
|
display: flex;
|
justify-content: center;
|
|
img {
|
margin-right: 10px;
|
width: 72px;
|
height: 72px;
|
}
|
|
.hashrateContent {
|
.label {
|
margin-bottom: 4px;
|
font-size: 14px;
|
}
|
|
.data {
|
font-size: 16px;
|
font-weight: 700;
|
.number {
|
font-size: 32px;
|
}
|
}
|
}
|
}
|
|
.detail {
|
box-sizing: border-box;
|
padding: 20px 20px 20px 0px;
|
flex: 1;
|
display: flex;
|
flex-wrap: wrap;
|
align-items: center;
|
.detailItem {
|
padding-top: 6px;
|
overflow: hidden;
|
box-sizing: border-box;
|
width: 50%;
|
height: 50%;
|
text-align: center;
|
|
.label {
|
font-size: 12px;
|
color: #666;
|
overflow: hidden;
|
white-space: nowrap;
|
text-overflow: ellipsis;
|
span {
|
vertical-align: -2px;
|
margin-right: 5px;
|
font-size: 18px;
|
}
|
}
|
|
.data {
|
margin-top: 4px;
|
font-size: 12px;
|
font-weight: 700;
|
.number {
|
font-size: 24px;
|
}
|
}
|
|
&:nth-child(1) {
|
border-right: 1px solid #e9ebee;
|
border-bottom: 1px solid #e9ebee;
|
}
|
|
&:nth-child(2) {
|
border-bottom: 1px solid #e9ebee;
|
}
|
|
&:nth-child(3) {
|
border-right: 1px solid #e9ebee;
|
}
|
}
|
|
.click{
|
cursor: pointer;
|
}
|
}
|
}
|
.el-pagination ::v-deep {
|
margin-top: 30px;
|
|
text-align: center;
|
height: 24px;
|
.el-pagination__sizes {
|
margin-right: 0;
|
}
|
}
|
</style>
|