监控管理修改

product
chuang 2 years ago
parent 17a49f2b53
commit 76e3cc230a

@ -6,6 +6,8 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import jnpf.base.ActionResult;
@ -18,6 +20,7 @@ import jnpf.exception.DataException;
import jnpf.monitorItem.entity.Monitoring_itemEntity;
import jnpf.monitorItem.model.monitoring_item.*;
import jnpf.monitorItem.service.Monitoring_itemService;
import jnpf.monitorItem.utils.ImouConfig;
import jnpf.util.*;
import jnpf.util.enums.FileTypeEnum;
import jnpf.util.file.UploadUtil;
@ -33,6 +36,7 @@ import javax.validation.Valid;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -47,7 +51,7 @@ import java.util.Map;
@Slf4j
@RestController
@Api(tags = "监控管理" , value = "example")
@RequestMapping("/api/example/monitoringItem")
@RequestMapping("/api/example/Jg_monitoring_item0")
public class Monitoring_itemController {
@Autowired
@ -61,8 +65,70 @@ public class Monitoring_itemController {
@Autowired
private Monitoring_itemService monitoring_itemService;
@ApiOperation("更新摄像头视频流地址")
@GetMapping("/updateMonitoring")
public ActionResult updateMonitoring() throws Exception {
// 查询rtmp协议直播地址
// String URL="https://openapi.lechange.cn/openapi/queryDeviceRtmpLive";
// 获取管理员token
ImouConfig config = new ImouConfig();
String accessToken = config.getAccessToken();
// 获取设备的列表信息
// config.getList(accessToken);
// 批量创建设备flv直播支持录像直播和实时直播
// for (int i = 0; i < 32; i++) {
// config.createFlvLive(accessToken,i+"");
// }
////获取开发者当前账号下创建的直播详情列表,包含直播地址、直播状态、直播计划等详细信息。
// config.getLiveList(accessToken);
for (int i = 0; i < 32; i++) {
// 1 根据通道号获取地址
JSONObject flvLive = config.getFlvLive(accessToken, i+"");
// flv标清直播
String flv = String.valueOf(flvLive.get("flv"));
// flv高清直播
String flvHD = String.valueOf(flvLive.get("flvHD"));
// 设备序列号
String deviceId = String.valueOf(flvLive.get("deviceId"));
// 设备通道号
String channelId = String.valueOf(flvLive.get("channelId"));
Monitoring_itemEntity monitor = new Monitoring_itemEntity();
// 设置区域为日照金属
monitor.setMonitoringId("1");
monitor.setMName("NVR-3FA0-"+i);
monitor.setSerialnumber(deviceId);
monitor.setMStatus("1");
monitor.setFlvAddress(flv);
monitor.setFlvHdAddress(flvHD);
monitor.setChannelNumber(channelId);
// boolean save = monitoring_itemService.save(monitor);
// 2 查询本地表中此通道是否存在
LambdaQueryWrapper<Monitoring_itemEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Monitoring_itemEntity::getChannelNumber,channelId);
Monitoring_itemEntity one = monitoring_itemService.getOne(wrapper);
if (one!=null){
// 3 存在根据返回的id进行更新
monitor.setMName(null);
monitor.setLastModifyUserId("1");
monitor.setLastModifyUserName("admin");
monitor.setLastModifyTime(new Date());
monitoring_itemService.update(monitor,wrapper);
}else{
// 4 不存在进行保存
monitor.setCreatorTime(new Date());
monitor.setCreatorUserId("1");
monitor.setCreatorUserName("admin");
monitoring_itemService.save(monitor);
}
}
return ActionResult.success("成功");
}
/**
@ -71,6 +137,7 @@ public class Monitoring_itemController {
* @param monitoring_itemPagination
* @return
*/
@ApiOperation("列表")
@PostMapping("/getList")
public ActionResult list(@RequestBody Monitoring_itemPagination monitoring_itemPagination)throws IOException{
List<Monitoring_itemEntity> list= monitoring_itemService.getList(monitoring_itemPagination);

@ -2,6 +2,7 @@ package jnpf.monitorItem.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@ -51,6 +52,7 @@ public class Monitoring_itemEntity {
private Date deleteTime;
@TableField("DELETE_MARK")
@TableLogic
private String deleteMark;
@TableField("ORGNIZE_ID")
@ -71,16 +73,16 @@ public class Monitoring_itemEntity {
@TableField("M_STATUS")
private String mStatus;
@TableField("FLV_ADDRESS")
@TableField("flvAddress")
private String flvAddress;
@TableField("FLV_HD_ADDRESS")
@TableField("flvHdAddress")
private String flvHdAddress;
@TableField("CHANNEL_NUMBER")
@TableField("channelNumber")
private String channelNumber;
@TableField("IS_ENABLE")
@TableField("isEnable")
private String isEnable;
}

@ -9,6 +9,8 @@ import jnpf.util.Md5Util;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.text.SimpleDateFormat;
@ -17,7 +19,7 @@ import java.util.Calendar;
import java.util.Date;
@Slf4j
//@Component
@Component
public class ImouConfig {
private String appSecret="189fec75174e487684a16c49dd1789";
@ -34,10 +36,9 @@ public class ImouConfig {
// id请求唯一标示ID每次请求调用时传入唯一非空字符串
private String id="98a7a257-c4e4-4db3-a2d3-d97a3836b87c";
// @Resource
@Autowired
private Monitoring_itemService monitoring_itemService;
// 设备序列号
private String deviceId="5K0A36BPAZ73FA0";
@Test

@ -13,57 +13,63 @@
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="设备序列号"
prop="serialnumber" >
<p>{{dataForm.serialnumber}}</p>
<el-form-item label="区域"
prop="monitoringId" >
<p>{{dataForm.monitoringId}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="ip地址"
prop="ip" >
<p>{{dataForm.ip}}</p>
<el-form-item label="设备状态:"
prop="mStatus" >
<p>{{ dataForm.mStatus | dynamicText(mStatusOptions) }} </p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="端口号"
prop="port" >
<p>{{dataForm.port}}</p>
<el-form-item label="标清flv直播地址"
prop="flvAddress" >
<p>{{dataForm.flvAddress}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="账号"
prop="account" >
<p>{{dataForm.account}}</p>
<el-form-item label="高清flv直播地址"
prop="flvHdAddress" >
<p>{{dataForm.flvHdAddress}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="密码"
prop="password" >
<p>{{dataForm.password}}</p>
<el-form-item label="设备通道号"
prop="channelNumber" >
<p>{{dataForm.channelNumber}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="创建人名称"
prop="creatorusername" >
<p>{{dataForm.creatorusername}}</p>
<el-form-item label="是否显示"
prop="isEnable" >
<p>{{ dataForm.isEnable | dynamicText(isEnableOptions) }} </p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="创建时间"
prop="creatortime" >
<p>{{jnpf.dateFormat(dataForm.creatortime)}}</p>
<el-form-item label="修改时间"
prop="lastmodifytime" >
<p>{{jnpf.dateFormat(dataForm.lastmodifytime)}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="修改人名称"
prop="lastmodifyusername" >
<p>{{dataForm.lastmodifyusername}}</p>
<el-form-item label="修改人id"
prop="deleteUserId" >
<p>{{dataForm.deleteUserId}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="修改时间"
prop="lastmodifytime" >
<p>{{jnpf.dateFormat(dataForm.lastmodifytime)}}</p>
<el-form-item label="创建人名称"
prop="creatorUserName" >
<p>{{dataForm.creatorUserName}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="创建时间"
prop="creatorTime" >
<p>{{jnpf.dateFormat(dataForm.creatorTime)}}</p>
</el-form-item>
</el-col>
</template>
@ -90,16 +96,20 @@
dataForm: {
id :'',
mName : '',
monitoringId : "",
serialnumber : '',
ip : '',
port : '',
account : '',
password : '',
creatorusername : '',
creatortime : '',
lastmodifyusername : '',
mStatus : "0",
flvAddress : '',
flvHdAddress : '',
channelNumber : '',
isEnable : "0",
lastmodifytime : '',
deleteUserId : '',
creatorUserName : '',
creatorTime : '',
},
mStatusOptions:[{"fullName":"在线","id":"1"},{"fullName":"不在线","id":"0"}],
isEnableOptions:[{"fullName":"显示","id":"1"},{"fullName":"不显示","id":"0"}],
}
},
@ -122,7 +132,7 @@
if(this.dataForm.id){
this.loading = true
request({
url: '/api/monitormanage/Monitormanage/detail/'+this.dataForm.id,
url: '/api/example/Jg_monitoring_item0/detail/'+this.dataForm.id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)

@ -1,228 +1,262 @@
<template>
<el-dialog :title="!dataForm.id ? '新建' : isDetail ? '详情':'编辑'" :close-on-click-modal="false" append-to-body
:visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll width="1000px">
<el-row :gutter="15" class="">
<el-form ref="elForm" :model="dataForm" :rules="rules" size="small" label-width="100px"
label-position="right">
<template v-if="!loading">
<el-col :span="24">
<el-form-item label="设备名称" prop="mName">
<el-input v-model="dataForm.mName" placeholder="请输入" clearable :style='{"width":"100%"}'>
<el-dialog :title="!dataForm.id ? '新建' : isDetail ? '详情':'编辑'"
:close-on-click-modal="false" append-to-body
:visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll
width="800px">
<el-row :gutter="15" class="">
<el-form ref="elForm" :model="dataForm" :rules="rules" size="small" label-width="100px" label-position="right" >
<template v-if="!loading">
<el-col :span="24" >
<el-form-item label="设备名称"
prop="mName" >
<el-input v-model="dataForm.mName"
placeholder="请输入设备名称" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="设备序列号" prop="serialnumber">
<el-input v-model="dataForm.serialnumber" placeholder="请输入" clearable
:style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="区域"
prop="monitoringId" >
<el-select v-model="dataForm.monitoringId"
placeholder="请选择区域" clearable :style='{"width":"100%"}' filterable >
<el-option v-for="(item, index) in monitoringIdOptions" :key="index" :label="item.m_name" :value="item.id" :disabled="item.disabled" ></el-option>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="ip地址" prop="ip">
<el-input v-model="dataForm.ip" placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="设备状态:"
prop="mStatus" >
<el-select v-model="dataForm.mStatus"
placeholder="请选择设备状态" clearable :style='{"width":"100%"}'>
<el-option v-for="(item, index) in mStatusOptions" :key="index" :label="item.fullName" :value="item.id" :disabled="item.disabled" ></el-option>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="端口号" prop="port">
<el-input v-model="dataForm.port" placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="标清flv直播地址"
prop="flvAddress" >
<el-input v-model="dataForm.flvAddress"
placeholder="请输入" readonly clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="账号" prop="account">
<el-input v-model="dataForm.account" placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="高清flv直播地址"
prop="flvHdAddress" >
<el-input v-model="dataForm.flvHdAddress"
placeholder="请输入" readonly clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="密码" prop="password">
<el-input v-model="dataForm.password" placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="设备通道号"
prop="channelNumber" >
<el-input v-model="dataForm.channelNumber"
placeholder="请输入" readonly clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="创建人名称" prop="creatorusername">
<el-input v-model="dataForm.creatorusername" placeholder="请输入" clearable
:style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="是否显示"
prop="isEnable" >
<el-select v-model="dataForm.isEnable"
placeholder="请选择是否显示" clearable :style='{"width":"100%"}'>
<el-option v-for="(item, index) in isEnableOptions" :key="index" :label="item.fullName" :value="item.id" :disabled="item.disabled" ></el-option>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="创建时间" prop="creatortime">
<el-date-picker v-model="dataForm.creatortime" placeholder="请选择" clearable
:style='{"width":"100%"}' type="datetime" format="yyyy-MM-dd HH:mm:ss"
value-format="timestamp">
</el-select>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="修改时间"
prop="lastmodifytime" >
<el-date-picker v-model="dataForm.lastmodifytime"
placeholder="请选择" readonly clearable :style='{"width":"100%"}' type="datetime" format="yyyy-MM-dd HH:mm:ss" value-format="timestamp" >
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="修改人名称" prop="lastmodifyusername">
<el-input v-model="dataForm.lastmodifyusername" placeholder="请输入" clearable
:style='{"width":"100%"}'>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="修改人id"
prop="deleteUserId" >
<el-input v-model="dataForm.deleteUserId"
placeholder="请输入" readonly clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="修改时间" prop="lastmodifytime">
<el-date-picker v-model="dataForm.lastmodifytime" placeholder="请选择" clearable
:style='{"width":"100%"}' type="datetime" format="yyyy-MM-dd HH:mm:ss"
value-format="timestamp">
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="创建人名称"
prop="creatorUserName" >
<el-input v-model="dataForm.creatorUserName"
placeholder="请输入" readonly clearable :style='{"width":"100%"}'>
</el-date-picker>
</el-form-item>
</el-col>
</template>
</el-form>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button>
<el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail"> </el-button>
</span>
</el-dialog>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="创建时间"
prop="creatorTime" >
<el-date-picker v-model="dataForm.creatorTime"
placeholder="请选择" readonly clearable :style='{"width":"100%"}' type="datetime" format="yyyy-MM-dd HH:mm:ss" value-format="timestamp" >
</el-date-picker>
</el-form-item>
</el-col>
</template>
</el-form>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button>
<el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail"> </el-button>
</span>
</el-dialog>
</template>
<script>
import request from '@/utils/request'
import {
getDataInterfaceRes
} from '@/api/systemData/dataInterface'
import {
getDictionaryDataSelector
} from '@/api/systemData/dictionary'
export default {
components: {},
props: [],
data() {
return {
visible: false,
loading: false,
isDetail: false,
dataForm: {
mName: '',
serialnumber: '',
ip: '',
port: '',
account: '',
password: '',
creatorusername: '',
creatortime: '',
lastmodifyusername: '',
lastmodifytime: '',
},
rules: {
mName: [{
required: true,
message: '请输入',
trigger: 'blur'
}, ],
serialnumber: [{
required: true,
message: '请输入',
trigger: 'blur'
}, ],
},
import request from '@/utils/request'
import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
export default {
components: {},
props: [],
data() {
return {
visible: false,
loading: false,
isDetail: false,
dataForm: {
mName : '',
monitoringId : "",
serialnumber : '',
mStatus : "0",
flvAddress : '',
flvHdAddress : '',
channelNumber : '',
isEnable : "0",
lastmodifytime : '',
deleteUserId : '',
creatorUserName : '',
creatorTime : '',
},
rules:
{
mName: [
{
required: true,
message: '请输入设备名称',
trigger: 'blur'
},
],
},
monitoringIdOptions:[],
mStatusOptions:[{"fullName":"在线","id":"1"},{"fullName":"不在线","id":"0"}],
isEnableOptions:[{"fullName":"显示","id":"1"},{"fullName":"不显示","id":"0"}],
}
},
computed: {},
watch: {},
created() {
this.getmonitoringIdOptions();
},
mounted() {},
methods: {
getmonitoringIdOptions() {
getDataInterfaceRes('370933183241262469').then(res => {
let data = res.data.data
this.monitoringIdOptions = data
})
},
clearData(data){
for (let key in data) {
if (data[key] instanceof Array) {
data[key] = [];
} else if (data[key] instanceof Object) {
this.clearData(data[key]);
} else {
data[key] = "";
}
}
},
init(id, isDetail) {
this.dataForm.id = id || 0;
this.visible = true;
this.isDetail = isDetail || false;
this.$nextTick(() => {
this.$refs['elForm'].resetFields();
if(this.dataForm.id){
this.loading = true
request({
url: '/api/example/Jg_monitoring_item0/'+this.dataForm.id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
});
}else{
this.clearData(this.dataForm)
}
});
this.$store.commit('generator/UPDATE_RELATION_DATA', {})
},
//
dataFormSubmit() {
this.$refs['elForm'].validate((valid) => {
if (valid) {
this.request()
}
})
},
request() {
var _data =this.dataList()
if (!this.dataForm.id) {
request({
url: '/api/example/Jg_monitoring_item0',
method: 'post',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.visible = false
this.$emit('refresh', true)
}
})
})
}else{
request({
url: '/api/example/Jg_monitoring_item0/'+this.dataForm.id,
method: 'PUT',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.visible = false
this.$emit('refresh', true)
}
})
})
}
},
dataList(){
var _data = JSON.parse(JSON.stringify(this.dataForm));
return _data;
},
dataInfo(dataAll){
let _dataAll =dataAll
this.dataForm = _dataAll
},
},
}
}
},
computed: {},
watch: {},
created() {},
mounted() {},
methods: {
clearData(data) {
for (let key in data) {
if (data[key] instanceof Array) {
data[key] = [];
} else if (data[key] instanceof Object) {
this.clearData(data[key]);
} else {
data[key] = "";
}
}
},
init(id, isDetail) {
this.dataForm.id = id || 0;
this.visible = true;
this.isDetail = isDetail || false;
this.$nextTick(() => {
this.$refs['elForm'].resetFields();
if (this.dataForm.id) {
this.loading = true
request({
url: '/api/monitormanage/Monitormanage/' + this.dataForm.id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
});
} else {
this.clearData(this.dataForm)
}
});
this.$store.commit('generator/UPDATE_RELATION_DATA', {})
},
//
dataFormSubmit() {
this.$refs['elForm'].validate((valid) => {
if (valid) {
this.request()
}
})
},
request() {
var _data = this.dataList()
if (!this.dataForm.id) {
request({
url: '/api/monitormanage/Monitormanage',
method: 'post',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.visible = false
this.$emit('refresh', true)
}
})
})
} else {
request({
url: '/api/monitormanage/Monitormanage/' + this.dataForm.id,
method: 'PUT',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.visible = false
this.$emit('refresh', true)
}
})
})
}
},
dataList() {
var _data = JSON.parse(JSON.stringify(this.dataForm));
return _data;
},
dataInfo(dataAll) {
let _dataAll = dataAll
this.dataForm = _dataAll
},
},
}
</script>

@ -1,300 +1,285 @@
<template>
<div class="JNPF-common-layout">
<div class="JNPF-common-layout">
<div class="JNPF-common-layout-center">
<el-row class="JNPF-common-search-box" :gutter="16">
<el-form @submit.native.prevent>
<el-col :span="6">
<el-form-item label="设备名称">
<el-input v-model="query.mName" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div class="JNPF-common-layout-main JNPF-flex-main">
<div class="JNPF-common-head">
<div>
<el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()">
</el-button>
<el-button type="text" icon="el-icon-download" @click="exportData()">
</el-button>
<el-button type="text" icon="el-icon-delete" @click="handleBatchRemoveDel()">
</el-button>
</div>
<div class="JNPF-common-head-right">
<el-tooltip effect="dark" content="刷新" placement="top">
<el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false"
@click="reset()" />
</el-tooltip>
<screenfull isContainer />
</div>
</div>
<JNPF-table v-loading="listLoading" :data="list" @sort-change='sortChange' has-c
@selection-change="handleSelectionChange">
<el-table-column prop="mName" label="设备名称" width="0" align="left" />
<el-table-column prop="serialnumber" label="设备序列号" width="0" align="left" />
<el-table-column prop="ip" label="ip地址" width="0" align="left" />
<el-table-column prop="port" label="端口号" width="0" align="left" />
<el-table-column prop="account" label="账号" width="0" align="left" />
<el-table-column prop="password" label="密码" width="0" align="left" />
<el-table-column prop="creatorusername" label="创建人名称" width="0" align="left" />
<el-table-column prop="creatortime" label="创建时间" width="0" align="left" />
<el-table-column prop="lastmodifyusername" label="修改人名称" width="0" align="left" />
<el-table-column prop="lastmodifytime" label="修改时间" width="0" align="left" />
<el-table-column label="操作" fixed="right" width="100">
<template slot-scope="scope">
<el-button type="text" @click="addOrUpdateHandle(scope.row.id)">
</el-button>
<el-button type="text" class="JNPF-table-delBtn" @click="handleDel(scope.row.id)">
</el-button>
</template>
</el-table-column>
</JNPF-table>
<pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize"
@pagination="initData" />
</div>
</div>
<JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh" />
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
<Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible=false" />
</div>
<div class="JNPF-common-layout-center">
<el-row class="JNPF-common-search-box" :gutter="16">
<el-form @submit.native.prevent>
<el-col :span="6">
<el-form-item label="设备名称">
<el-input v-model="query.mName" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="区域">
<el-select v-model="query.monitoringId" placeholder="请选择区域"
clearable>
<el-option v-for="(item, index) in monitoringIdOptions" :key="index"
:label="item.m_name" :value="item.id"
:disabled="item.disabled"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div class="JNPF-common-layout-main JNPF-flex-main">
<div class="JNPF-common-head">
<div>
<el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()">
</el-button>
<el-button type="text" icon="el-icon-download" @click="exportData()" >导出
</el-button>
<el-button type="text" icon="el-icon-delete" @click="handleBatchRemoveDel()" >批量删除
</el-button>
</div>
<div class="JNPF-common-head-right">
<el-tooltip effect="dark" content="刷新" placement="top">
<el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false"
@click="reset()"/>
</el-tooltip>
<screenfull isContainer/>
</div>
</div>
<JNPF-table v-loading="listLoading" :data="list" @sort-change='sortChange' has-c @selection-change="handleSelectionChange">
<el-table-column prop="mName" label="设备名称" width="0" align="left"
/>
<el-table-column prop="serialnumber" label="设备序列号" width="0" align="left"
/>
<el-table-column prop="monitoringId" label="区域" width="0" align="left"
/>
<el-table-column label="设备状态:" width="0" prop="mStatus" algin="left"
>
<template slot-scope="scope">
{{ scope.row.mStatus | dynamicText(mStatusOptions) }}
</template>
</el-table-column>
<el-table-column prop="channelNumber" label="设备通道号" width="0" align="left"
/>
<el-table-column label="是否显示" width="0" prop="isEnable" algin="left"
>
<template slot-scope="scope">
{{ scope.row.isEnable | dynamicText(isEnableOptions) }}
</template>
</el-table-column>
<el-table-column label="操作" fixed="right"
width="100" >
<template slot-scope="scope">
<el-button type="text"
@click="addOrUpdateHandle(scope.row.id)" >编辑
</el-button>
<el-button type="text" class="JNPF-table-delBtn" @click="handleDel(scope.row.id)">
</el-button>
</template>
</el-table-column>
</JNPF-table>
<pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize" @pagination="initData"/>
</div>
</div>
<JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh"/>
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download"/>
<Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible=false"/>
</div>
</template>
<script>
import request from '@/utils/request'
import {
getDictionaryDataSelector
} from '@/api/systemData/dictionary'
import JNPFForm from './Form'
import ExportBox from './ExportBox'
import {
getDataInterfaceRes
} from '@/api/systemData/dataInterface'
import Detail from './Detail'
import request from '@/utils/request'
import {getDictionaryDataSelector} from '@/api/systemData/dictionary'
import JNPFForm from './Form'
import ExportBox from './ExportBox'
import {getDataInterfaceRes} from '@/api/systemData/dataInterface'
import Detail from './Detail'
export default {
components: {
JNPFForm,
ExportBox,
Detail
},
data() {
return {
detailVisible: false,
query: {
mName: undefined,
},
treeProps: {
children: 'children',
label: 'fullName',
value: 'id'
},
list: [],
listLoading: true,
multipleSelection: [],
total: 0,
listQuery: {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "",
},
formVisible: false,
exportBoxVisible: false,
columnList: [{
prop: 'mName',
label: '设备名称'
},
{
prop: 'serialnumber',
label: '设备序列号'
},
{
prop: 'ip',
label: 'ip地址'
},
{
prop: 'port',
label: '端口号'
},
{
prop: 'account',
label: '账号'
},
{
prop: 'password',
label: '密码'
},
{
prop: 'creatorusername',
label: '创建人名称'
},
{
prop: 'creatortime',
label: '创建时间'
},
{
prop: 'lastmodifyusername',
label: '修改人名称'
},
{
prop: 'lastmodifytime',
label: '修改时间'
},
],
}
},
computed: {
menuId() {
return this.$route.meta.modelId || ''
}
},
created() {
this.initData()
},
methods: {
goDetail(id) {
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(id)
})
},
sortChange({
column,
prop,
order
}) {
this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
this.listQuery.sidx = !order ? '' : prop
this.initData()
},
initData() {
this.listLoading = true;
let _query = {
...this.listQuery,
...this.query,
menuId: this.menuId
};
request({
url: `/api/monitormanage/Monitormanage/getList`,
method: 'post',
data: _query
}).then(res => {
var _list = [];
for (let i = 0; i < res.data.list.length; i++) {
let _data = res.data.list[i];
_list.push(_data)
}
this.list = _list
this.total = res.data.pagination.total
export default {
components: {JNPFForm, ExportBox,Detail},
data() {
return {
detailVisible: false,
query: {
mName:undefined,
monitoringId:undefined,
},
treeProps: {
children: 'children',
label: 'fullName',
value: 'id'
},
list: [],
listLoading: true,
multipleSelection: [], total: 0,
listQuery: {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "lastmodifytime",
},
formVisible: false,
exportBoxVisible: false,
columnList: [
{prop: 'mName', label: '设备名称'},
{prop: 'serialnumber', label: '设备序列号'},
{prop: 'monitoringId', label: '区域'},
{prop: 'mStatus', label: '设备状态:'},
{prop: 'channelNumber', label: '设备通道号'},
{prop: 'isEnable', label: '是否显示'},
],
monitoringIdOptions:[],
monitoringIdProps:{"label":"m_name","value":"id"},
mStatusOptions:[{"fullName":"在线","id":"1"},{"fullName":"不在线","id":"0"}],
mStatusProps:{"label":"fullName","value":"id"},
isEnableOptions:[{"fullName":"显示","id":"1"},{"fullName":"不显示","id":"0"}],
isEnableProps:{"label":"fullName","value":"id"},
}
},
computed: {
menuId() {
return this.$route.meta.modelId || ''
}
},
created() {
this.initData()
this.getmonitoringIdOptions();
},
methods: {
getmonitoringIdOptions() {
getDataInterfaceRes('370933183241262469').then(res => {
let data = res.data.data
this.monitoringIdOptions = data
})
},
goDetail(id){
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(id)
})
},
sortChange({column, prop, order}) {
this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
this.listQuery.sidx = !order ? '' : prop
this.initData()
},
initData() {
this.listLoading = true;
let _query = {
...this.listQuery,
...this.query,
menuId:this.menuId
};
request({
url: `/api/example/Jg_monitoring_item0/getList`,
method: 'post',
data: _query
}).then(res => {
var _list =[];
for(let i=0;i<res.data.list.length;i++){
let _data = res.data.list[i];
_list.push(_data)
}
this.list = _list
this.total = res.data.pagination.total
this.listLoading = false
})
},
handleDel(id) {
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/monitormanage/Monitormanage/${id}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {});
},
handleSelectionChange(val) {
const res = val.map(item => item.id)
this.multipleSelection = res
},
handleBatchRemoveDel() {
if (!this.multipleSelection.length) {
this.$message({
type: 'error',
message: '请选择一条数据',
duration: 1500,
})
return
}
const ids = this.multipleSelection.join()
this.$confirm('您确定要删除这些数据吗, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/monitormanage/Monitormanage/batchRemove/${ids}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {})
},
addOrUpdateHandle(id, isDetail) {
this.formVisible = true
this.$nextTick(() => {
this.$refs.JNPFForm.init(id, isDetail)
})
},
exportData() {
this.exportBoxVisible = true
this.$nextTick(() => {
this.$refs.ExportBox.init(this.columnList)
})
},
download(data) {
let query = {
...data,
...this.listQuery,
...this.query,
menuId: this.menuId
}
request({
url: `/api/monitormanage/Monitormanage/Actions/Export`,
method: 'GET',
data: query
}).then(res => {
if (!res.data.url) return
this.jnpf.downloadFile(res.data.url)
this.$refs.ExportBox.visible = false
this.exportBoxVisible = false
})
},
search() {
this.listQuery = {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "",
}
this.initData()
},
refresh(isrRefresh) {
this.formVisible = false
if (isrRefresh) this.reset()
},
reset() {
for (let key in this.query) {
this.query[key] = undefined
}
this.search()
}
}
}
this.listLoading = false
})
},
handleDel(id) {
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/example/Jg_monitoring_item0/${id}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {
});
},
handleSelectionChange(val) {
const res = val.map(item => item.id)
this.multipleSelection = res
},
handleBatchRemoveDel() {
if (!this.multipleSelection.length) {
this.$message({
type: 'error',
message: '请选择一条数据',
duration: 1500,
})
return
}
const ids = this.multipleSelection.join()
this.$confirm('您确定要删除这些数据吗, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/example/Jg_monitoring_item0/batchRemove/${ids}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {
})
},
addOrUpdateHandle(id, isDetail) {
this.formVisible = true
this.$nextTick(() => {
this.$refs.JNPFForm.init(id, isDetail)
})
},
exportData() {
this.exportBoxVisible = true
this.$nextTick(() => {
this.$refs.ExportBox.init(this.columnList)
})
},
download(data) {
let query = {...data, ...this.listQuery, ...this.query,menuId:this.menuId}
request({
url: `/api/example/Jg_monitoring_item0/Actions/Export`,
method: 'GET',
data: query
}).then(res => {
if (!res.data.url) return
this.jnpf.downloadFile(res.data.url)
this.$refs.ExportBox.visible = false
this.exportBoxVisible = false
})
},
search() {
this.listQuery = {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "lastmodifytime",
}
this.initData()
},
refresh(isrRefresh) {
this.formVisible = false
if (isrRefresh) this.reset()
},
reset() {
for (let key in this.query) {
this.query[key] = undefined
}
this.search()
}
}
}
</script>

Loading…
Cancel
Save