视频管理(设备监控插件管理):增删改查操作

This commit is contained in:
骆乐 2022-10-13 15:20:38 +08:00
parent db8b254b9b
commit a73a91a73b
5 changed files with 301 additions and 14 deletions

BIN
dist.zip

Binary file not shown.

View File

@ -41,3 +41,10 @@ export const getvideoNvrApi = data => get('/xmgl/videoNvr/selectPage', data); //
export const addvideoNvrApi = data => post('/xmgl/videoNvr/addVideoNvr', data); //新增设备 export const addvideoNvrApi = data => post('/xmgl/videoNvr/addVideoNvr', data); //新增设备
export const editvideoNvrApi = data => post('/xmgl/videoNvr/updateVideoNvr', data); //编辑设备 export const editvideoNvrApi = data => post('/xmgl/videoNvr/updateVideoNvr', data); //编辑设备
export const delvideoNvrApi = data => get('/xmgl/videoNvr/deleteById', data); //删除设备 export const delvideoNvrApi = data => get('/xmgl/videoNvr/deleteById', data); //删除设备
export const getAllNvrApi = data => get('/xmgl/videoNvr/list', data); //获取所有视频nvr设备
// 监测插件控制器
export const addPluginApi = data => post('/xmgl/devMonitorPlugin/addDevMonitorPlugin', data); //新增监测插件
export const getPluginApi = data => get('/xmgl/devMonitorPlugin/selectPage', data); //分页查询监测插件
export const editPluginApi = data => post('/xmgl/devMonitorPlugin/updateDevMonitorPlugin', data); //编辑监测插件
export const delPluginApi = data => get('/xmgl/devMonitorPlugin/deleteById', data); //删除监测插件

View File

@ -41,6 +41,7 @@ if (process.env.NODE_ENV == 'development') {
// tag: 本地 // tag: 本地
// axios.defaults.baseURL = 'http://192.168.34.174:6023/' // 老大本地 // axios.defaults.baseURL = 'http://192.168.34.174:6023/' // 老大本地
axios.defaults.baseURL = 'http://192.168.34.216:6023/' // 邱平毅本地 axios.defaults.baseURL = 'http://192.168.34.216:6023/' // 邱平毅本地
// axios.defaults.baseURL = 'http://139.9.66.234:6324/' // 河南春笋
// axios.defaults.baseURL ='http://124.71.67.160:8088/' //中建四局线上 // axios.defaults.baseURL ='http://124.71.67.160:8088/' //中建四局线上
// axios.defaults.baseURL = 'http://192.168.34.125:6023/' //杨意本地 http/1.1 // axios.defaults.baseURL = 'http://192.168.34.125:6023/' //杨意本地 http/1.1
// axios.defaults.baseURL ='http://47.97.202.104:6023/' //金林湾线上 // axios.defaults.baseURL ='http://47.97.202.104:6023/' //金林湾线上

View File

@ -119,6 +119,7 @@
</el-button> </el-button>
<!-- 设备监测插件管理--> <!-- 设备监测插件管理-->
<el-button <el-button
@click="pluginManage"
type="primary" type="primary"
size="medium" size="medium"
> >
@ -164,11 +165,11 @@
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
@click="editBtn(scope.row)">编辑</el-button> @click="editBtn(scope.row,1)">编辑</el-button>
<el-button <el-button
size="mini" size="mini"
type="danger" type="danger"
@click="deleteBtn(scope.row)">删除</el-button> @click="deleteBtn(scope.row,1)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -231,6 +232,115 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-dialog> </el-dialog>
<!-- 插件配置 -->
<el-dialog :modal-append-to-body="false" title="设备监测插件管理" :visible.sync="pluginDevice"
width="1200px" :close-on-click-modal="false">
<el-form :inline="true" :model="formInline1" class="demo-form-inline">
<!-- <el-form-item label="插件名称">
<el-input v-model="formInline1.name" placeholder="请输入" clearable></el-input>
</el-form-item> -->
<el-form-item label="ip">
<el-input v-model="formInline1.ip" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item label="插件sn">
<el-input v-model="formInline1.sn" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item label="时间">
<el-date-picker
v-model="timeRange"
type="datetimerange"
value-format="yyyy-MM-dd hh:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSearch1">查询</el-button>
<el-button type="primary" @click="onAdd1">新增</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData1" style="width:100%">
<el-table-column prop="name" label="插件名称"></el-table-column>
<el-table-column prop="sn" label="插件sn"></el-table-column>
<el-table-column prop="ip" label="插件所在ip"></el-table-column>
<el-table-column prop="lastDataTime" label="最后一次更新时间"></el-table-column>
<el-table-column prop="deviceState" label="设备状态" align="center">
<template slot-scope="scope">
{{scope.row.deviceState == 1 ? '在线' : '离线'}}
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
@click="editBtn(scope.row,2)">编辑</el-button>
<el-button
size="mini"
type="danger"
@click="deleteBtn(scope.row,2)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagerBox">
<el-pagination
@size-change="handleSizeChange1"
@current-change="handleCurrentChange1"
:current-page="pageNo1"
:page-sizes="pageSizes"
:page-size="pageSize1"
layout="total, sizes, prev, pager, next, jumper"
background
:total="total1">
</el-pagination>
</div>
</el-dialog>
<!-- 新增插件配置的弹窗 -->
<el-dialog :modal-append-to-body="false" :title="pluginTitle" :visible.sync="addPlugin"
width="667px" :close-on-click-modal="false">
<el-form
ref="addForm"
:rules="rules2"
size="medium"
label-width="140px"
label-position="right"
:model="addPluginData">
<el-form-item label="插件名称" prop="name">
<el-input
clearable
type="text"
v-model="addPluginData.name"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="插件所在ip" prop="ip">
<el-input
clearable
type="text"
v-model="addPluginData.ip"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="插件sn" prop="sn">
<el-input
clearable
type="text"
v-model="addPluginData.sn"
placeholder="请输入插件编号"
></el-input>
</el-form-item>
<el-form-item label="设备状态" prop="deviceState">
<el-select v-model="addPluginData.deviceState" placeholder="请选择">
<el-option label="在线" :value="1"></el-option>
<el-option label="离线" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="addPlugin = false"> </el-button>
<el-button type="primary" @click="addPluginSubmit"> </el-button>
</el-form-item>
</el-form>
</el-dialog>
<!-- 配置视频类型 --> <!-- 配置视频类型 -->
<el-dialog :modal-append-to-body="false" :title="$t('message.videoManage.dialog_video_config.title')" :visible.sync="configDialog" <el-dialog :modal-append-to-body="false" :title="$t('message.videoManage.dialog_video_config.title')" :visible.sync="configDialog"
width="667px" :close-on-click-modal="false" width="667px" :close-on-click-modal="false"
@ -365,15 +475,29 @@
<el-form-item :label="$t('message.videoManage.sort')"> <el-form-item :label="$t('message.videoManage.sort')">
<el-input-number style="width:auto" v-model="currentVideoTypeDetail.sortNum" :placeholder="$t('message.videoManage.theSmaller')"></el-input-number> <el-input-number style="width:auto" v-model="currentVideoTypeDetail.sortNum" :placeholder="$t('message.videoManage.theSmaller')"></el-input-number>
</el-form-item> </el-form-item>
<!-- 设备ip -->
<el-form-item label="设备ip" prop="ip"> <el-form-item label="设备ip" prop="ip">
<el-input <el-input
v-model="currentVideoTypeDetail.ip" v-model="currentVideoTypeDetail.ip"
:placeholder="$t('message.videoManage.placeholder')"></el-input> :placeholder="$t('message.videoManage.placeholder')"></el-input>
</el-form-item> </el-form-item>
<!-- 设备NVR -->
<el-form-item label="设备NVR" prop="nvrId"> <el-form-item label="设备NVR" prop="nvrId">
<el-input <el-select
v-model="currentVideoTypeDetail.nvrId"
:placeholder="$t('message.videoManage.pleaseSelect')" :clearable="true"
>
<el-option
v-for="item in nvrList"
:key="item.id"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<!-- <el-input
v-model="currentVideoTypeDetail.nvrId" v-model="currentVideoTypeDetail.nvrId"
:placeholder="$t('message.videoManage.placeholder')"></el-input> :placeholder="$t('message.videoManage.placeholder')"></el-input> -->
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="dialog-footer"> <div class="dialog-footer">
@ -578,7 +702,12 @@
getvideoNvrApi, getvideoNvrApi,
addvideoNvrApi, addvideoNvrApi,
editvideoNvrApi, editvideoNvrApi,
delvideoNvrApi delvideoNvrApi,
addPluginApi,
getPluginApi,
editPluginApi,
delPluginApi,
getAllNvrApi
} from "@/assets/js/api/equipmentCenter/cameraList"; } from "@/assets/js/api/equipmentCenter/cameraList";
import { import {
getProjectChilderSystemUserListApi getProjectChilderSystemUserListApi
@ -612,18 +741,43 @@
}, },
addDevice:false, addDevice:false,
nvrTitle:'', nvrTitle:'',
pluginTitle:'',
mode:1, mode:1,
pageNo:1, pageNo:1,
pageSizes:[5,10,20,50], pageSizes:[5,10,20,50],
pageSize:10, pageSize:10,
total:0, total:0,
pageNo1:1,
pageSize1:10,
total1:0,
tableData:[], tableData:[],
tableData1:[],
pluginDevice:false, //
formInline1:{
name:"",
ip:"",
sn:""
},
timeRange:[],
addPlugin:false,
addPluginData:{
name:"",
ip:"",
sn:"",
deviceState:"",
},
rules1:{ rules1:{
ip:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },], ip:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },],
deviceState:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },], deviceState:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },],
name:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },], name:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },],
nvrSn:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },], nvrSn:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },],
}, },
rules2:{
ip:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },],
deviceState:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },],
name:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },],
sn:[{ required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' },],
},
account_Config: {}, account_Config: {},
projectVideoConfigList: [], projectVideoConfigList: [],
configDialog: false, configDialog: false,
@ -660,6 +814,7 @@
accountList:[], accountList:[],
organizationID:'', organizationID:'',
groupList:[], groupList:[],
nvrList:[],
activeGroupIndex:'', activeGroupIndex:'',
currentGroupInfo:null, currentGroupInfo:null,
isAddGroup:true, isAddGroup:true,
@ -680,6 +835,7 @@
this.getProjectVideoConfigList(); this.getProjectVideoConfigList();
this.getAccountList() this.getAccountList()
this.getVideoGroup() this.getVideoGroup()
this.getAll()
}, },
components: {cameraList,cameraListLc}, components: {cameraList,cameraListLc},
methods: { methods: {
@ -688,6 +844,13 @@
this.nvrDevice = true this.nvrDevice = true
this.getvideoNvrList() this.getvideoNvrList()
}, },
getAll(){
getAllNvrApi({projectSn : this.projectSn}).then((res)=>{
this.nvrList = res.result.map((item,index)=>{
return { value:item.id,label:index}
})
})
},
getvideoNvrList(){ getvideoNvrList(){
let data = this.formInline let data = this.formInline
data.projectSn = this.projectSn data.projectSn = this.projectSn
@ -715,18 +878,32 @@
this.nvrTitle = '新增nvr设备' this.nvrTitle = '新增nvr设备'
this.mode = 1 this.mode = 1
}, },
editBtn(val){ editBtn(val,type){
this.addFormData = val if(type == 1){
this.addDevice = true, this.addFormData = val
this.nvrTitle = '编辑nvr设备' this.addDevice = true,
this.mode = 2 this.nvrTitle = '编辑nvr设备'
this.mode = 2
}else{
this.addPluginData.ip = val.ip
this.addPluginData.deviceState = val.deviceState
this.addPluginData.sn = val.sn
this.addPluginData.name = val.name
this.addPluginData.id = val.id
console.log('this.addPluginData',this.addPluginData)
this.addPlugin = true
this.pluginTitle = '编辑监控插件'
this.mode = 4
}
}, },
deleteBtn(val){ deleteBtn(val,type){
this.$confirm('删除当前nvr设备,相关联的摄像头也将被删除,确认删除吗?, 是否继续?', '提示', { if(type == 1){
this.$confirm('删除当前nvr设备,相关联的摄像头也将被删除,确认删除吗?, 是否继续?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
delvideoNvrApi({id: val.id}).then(res=>{ delvideoNvrApi({id: val.id}).then(res=>{
if(res.code == 200){ if(res.code == 200){
this.$message({ this.$message({
@ -742,6 +919,29 @@
message: '已取消删除' message: '已取消删除'
}); });
}) })
}else{
this.$confirm('删除当前插件会导致对应编号工地推送数据异常,确认删除吗?, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delPluginApi({id: val.id}).then(res=>{
if(res.code == 200){
this.$message({
type: 'success',
message: '删除成功!'
});
this.getPluginList();
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
})
}
}, },
addDeviceSubmit(){ addDeviceSubmit(){
let data = this.addFormData let data = this.addFormData
@ -754,7 +954,7 @@
this.addDevice = false this.addDevice = false
} }
}) })
}else{ }else if(this.mode == 2){
editvideoNvrApi(data).then((res)=>{ editvideoNvrApi(data).then((res)=>{
if(res.code == 200){ if(res.code == 200){
this.$message.success('编辑成功!') this.$message.success('编辑成功!')
@ -763,6 +963,66 @@
} }
}) })
} }
},
//
pluginManage(){
this.pluginDevice = true
this.getPluginList()
},
getPluginList(){
let data = this.formInline1
data.projectSn = this.projectSn
data.size=this.pageSize1
data.current = this.pageNo1,
data.startLastDataTime = this.timeRange != null ? this.timeRange[0] : "",
data.endLastDataTime = this.timeRange != null ? this.timeRange[1] : "",
getPluginApi(data).then((res)=>{
console.log('查询结果',res)
if(res.code == 200){
this.tableData1 = res.result.records
this.total1 = res.result.total
}
})
},
onSearch1(){
this.getPluginList()
},
handleSizeChange1(val) {
this.pageSize1 = val
this.getPluginList()
},
handleCurrentChange1(val) {
this.pageNo1 = val
this.getPluginList()
},
onAdd1(){
this.addPluginData = {}
this.addPlugin = true
this.pluginTitle = '新增监控插件'
this.mode = 3
},
addPluginSubmit(){
let data = this.addPluginData
data.projectSn = this.projectSn
if(this.mode == 3){
addPluginApi(data).then((res)=>{
if(res.code == 200) {
this.$message.success('新增成功!')
}
this.addPlugin = false
this.getPluginList()
})
}else if(this.mode == 4){
console.log('编辑参数',data)
editPluginApi(data).then((res)=>{
if(res.code == 200){
console.log('编辑的结果',res)
this.$message.success('编辑成功!')
this.getPluginList()
this.addPlugin = false
}
})
}
}, },
uploadThirdParty(){ uploadThirdParty(){
sendVideoInfoApi({projectSn: this.projectSn}).then(res=>{ sendVideoInfoApi({projectSn: this.projectSn}).then(res=>{

View File

@ -1687,6 +1687,25 @@ export default {
}, },
itemStyle: { itemStyle: {
color: "#3A7BFF" color: "#3A7BFF"
},
markLine:{
symbol:"none",
label:{
position:"end",
},
data:[{
silent:false,
// 线
lineStyle:{
type:"solid",
color:"#f76462",
},
label:{
position:'end',
formatter:'报警值(3)'
},
yAxis:3
}]
} }
// markLine:{ // markLine:{
// data:[{ // data:[{