add(record): 添加巡检报警记录功能

- 新增巡检报警记录菜单项和相关权限
- 实现巡检报警记录的查询、新增、修改、删除和导出功能
- 添加电柜树形结构展示和筛选功能
- 优化记录列表展示和搜索功能
IOT
zch 1 year ago
parent 23101c9ec3
commit 464e7c5e5f

@ -0,0 +1,104 @@
package com.ruoyi.record.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.record.domain.RecordBusbarAlarm;
import com.ruoyi.record.service.IRecordBusbarAlarmService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* Controller
*
* @author zangch
* @date 2024-12-03
*/
@RestController
@RequestMapping("/record/recordBusbarAlarm")
public class RecordBusbarAlarmController extends BaseController
{
@Autowired
private IRecordBusbarAlarmService recordBusbarAlarmService;
/**
*
*/
@PreAuthorize("@ss.hasPermi('record:recordBusbarAlarm:list')")
@GetMapping("/list")
public TableDataInfo list(RecordBusbarAlarm recordBusbarAlarm)
{
startPage();
List<RecordBusbarAlarm> list = recordBusbarAlarmService.selectRecordBusbarAlarmList(recordBusbarAlarm);
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('record:recordBusbarAlarm:export')")
@Log(title = "巡检报警记录", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, RecordBusbarAlarm recordBusbarAlarm)
{
List<RecordBusbarAlarm> list = recordBusbarAlarmService.selectRecordBusbarAlarmList(recordBusbarAlarm);
ExcelUtil<RecordBusbarAlarm> util = new ExcelUtil<RecordBusbarAlarm>(RecordBusbarAlarm.class);
util.exportExcel(response, list, "巡检报警记录数据");
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('record:recordBusbarAlarm:query')")
@GetMapping(value = "/{objId}")
public AjaxResult getInfo(@PathVariable("objId") Long objId)
{
return success(recordBusbarAlarmService.selectRecordBusbarAlarmByObjId(objId));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('record:recordBusbarAlarm:add')")
@Log(title = "巡检报警记录", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody RecordBusbarAlarm recordBusbarAlarm)
{
return toAjax(recordBusbarAlarmService.insertRecordBusbarAlarm(recordBusbarAlarm));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('record:recordBusbarAlarm:edit')")
@Log(title = "巡检报警记录", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody RecordBusbarAlarm recordBusbarAlarm)
{
return toAjax(recordBusbarAlarmService.updateRecordBusbarAlarm(recordBusbarAlarm));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('record:recordBusbarAlarm:remove')")
@Log(title = "巡检报警记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{objIds}")
public AjaxResult remove(@PathVariable Long[] objIds)
{
return toAjax(recordBusbarAlarmService.deleteRecordBusbarAlarmByObjIds(objIds));
}
}

@ -0,0 +1,196 @@
package com.ruoyi.record.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* record_busbar_alarm
*
* @author zangch
* @date 2024-12-03
*/
public class RecordBusbarAlarm extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 租户号 */
@Excel(name = "租户号")
private Long objId;
/** 母排编号 */
@Excel(name = "母排编号")
private Long busbarCode;
/** 电柜编号 */
@Excel(name = "电柜编号")
private Long cabinetCode;
/** 最高温度 */
@Excel(name = "最高温度")
private BigDecimal tempMax;
/** 最低温度 */
@Excel(name = "最低温度")
private BigDecimal tempMin;
/** 平均温度 */
@Excel(name = "平均温度")
private BigDecimal tempAvg;
/** 温差 */
@Excel(name = "温差")
private BigDecimal tempDiff;
/** 图像路径 */
@Excel(name = "图像路径")
private String filePath;
/** 报警类型 */
@Excel(name = "报警类型")
private Long alarmType;
/** 报警阈值 */
@Excel(name = "报警阈值")
private BigDecimal alarmValue;
/** 是否标识:1-是0-否 */
@Excel(name = "是否标识:1-是0-否")
private Long isFlag;
/** 记录时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "记录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date recordTime;
public void setObjId(Long objId)
{
this.objId = objId;
}
public Long getObjId()
{
return objId;
}
public void setBusbarCode(Long busbarCode)
{
this.busbarCode = busbarCode;
}
public Long getBusbarCode()
{
return busbarCode;
}
public void setCabinetCode(Long cabinetCode)
{
this.cabinetCode = cabinetCode;
}
public Long getCabinetCode()
{
return cabinetCode;
}
public void setTempMax(BigDecimal tempMax)
{
this.tempMax = tempMax;
}
public BigDecimal getTempMax()
{
return tempMax;
}
public void setTempMin(BigDecimal tempMin)
{
this.tempMin = tempMin;
}
public BigDecimal getTempMin()
{
return tempMin;
}
public void setTempAvg(BigDecimal tempAvg)
{
this.tempAvg = tempAvg;
}
public BigDecimal getTempAvg()
{
return tempAvg;
}
public void setTempDiff(BigDecimal tempDiff)
{
this.tempDiff = tempDiff;
}
public BigDecimal getTempDiff()
{
return tempDiff;
}
public void setFilePath(String filePath)
{
this.filePath = filePath;
}
public String getFilePath()
{
return filePath;
}
public void setAlarmType(Long alarmType)
{
this.alarmType = alarmType;
}
public Long getAlarmType()
{
return alarmType;
}
public void setAlarmValue(BigDecimal alarmValue)
{
this.alarmValue = alarmValue;
}
public BigDecimal getAlarmValue()
{
return alarmValue;
}
public void setIsFlag(Long isFlag)
{
this.isFlag = isFlag;
}
public Long getIsFlag()
{
return isFlag;
}
public void setRecordTime(Date recordTime)
{
this.recordTime = recordTime;
}
public Date getRecordTime()
{
return recordTime;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("objId", getObjId())
.append("busbarCode", getBusbarCode())
.append("cabinetCode", getCabinetCode())
.append("tempMax", getTempMax())
.append("tempMin", getTempMin())
.append("tempAvg", getTempAvg())
.append("tempDiff", getTempDiff())
.append("filePath", getFilePath())
.append("alarmType", getAlarmType())
.append("alarmValue", getAlarmValue())
.append("isFlag", getIsFlag())
.append("recordTime", getRecordTime())
.toString();
}
}

@ -0,0 +1,61 @@
package com.ruoyi.record.mapper;
import java.util.List;
import com.ruoyi.record.domain.RecordBusbarAlarm;
/**
* Mapper
*
* @author zangch
* @date 2024-12-03
*/
public interface RecordBusbarAlarmMapper
{
/**
*
*
* @param objId
* @return
*/
public RecordBusbarAlarm selectRecordBusbarAlarmByObjId(Long objId);
/**
*
*
* @param recordBusbarAlarm
* @return
*/
public List<RecordBusbarAlarm> selectRecordBusbarAlarmList(RecordBusbarAlarm recordBusbarAlarm);
/**
*
*
* @param recordBusbarAlarm
* @return
*/
public int insertRecordBusbarAlarm(RecordBusbarAlarm recordBusbarAlarm);
/**
*
*
* @param recordBusbarAlarm
* @return
*/
public int updateRecordBusbarAlarm(RecordBusbarAlarm recordBusbarAlarm);
/**
*
*
* @param objId
* @return
*/
public int deleteRecordBusbarAlarmByObjId(Long objId);
/**
*
*
* @param objIds
* @return
*/
public int deleteRecordBusbarAlarmByObjIds(Long[] objIds);
}

@ -0,0 +1,61 @@
package com.ruoyi.record.service;
import java.util.List;
import com.ruoyi.record.domain.RecordBusbarAlarm;
/**
* Service
*
* @author zangch
* @date 2024-12-03
*/
public interface IRecordBusbarAlarmService
{
/**
*
*
* @param objId
* @return
*/
public RecordBusbarAlarm selectRecordBusbarAlarmByObjId(Long objId);
/**
*
*
* @param recordBusbarAlarm
* @return
*/
public List<RecordBusbarAlarm> selectRecordBusbarAlarmList(RecordBusbarAlarm recordBusbarAlarm);
/**
*
*
* @param recordBusbarAlarm
* @return
*/
public int insertRecordBusbarAlarm(RecordBusbarAlarm recordBusbarAlarm);
/**
*
*
* @param recordBusbarAlarm
* @return
*/
public int updateRecordBusbarAlarm(RecordBusbarAlarm recordBusbarAlarm);
/**
*
*
* @param objIds
* @return
*/
public int deleteRecordBusbarAlarmByObjIds(Long[] objIds);
/**
*
*
* @param objId
* @return
*/
public int deleteRecordBusbarAlarmByObjId(Long objId);
}

@ -0,0 +1,93 @@
package com.ruoyi.record.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.record.mapper.RecordBusbarAlarmMapper;
import com.ruoyi.record.domain.RecordBusbarAlarm;
import com.ruoyi.record.service.IRecordBusbarAlarmService;
/**
* Service
*
* @author zangch
* @date 2024-12-03
*/
@Service
public class RecordBusbarAlarmServiceImpl implements IRecordBusbarAlarmService
{
@Autowired
private RecordBusbarAlarmMapper recordBusbarAlarmMapper;
/**
*
*
* @param objId
* @return
*/
@Override
public RecordBusbarAlarm selectRecordBusbarAlarmByObjId(Long objId)
{
return recordBusbarAlarmMapper.selectRecordBusbarAlarmByObjId(objId);
}
/**
*
*
* @param recordBusbarAlarm
* @return
*/
@Override
public List<RecordBusbarAlarm> selectRecordBusbarAlarmList(RecordBusbarAlarm recordBusbarAlarm)
{
return recordBusbarAlarmMapper.selectRecordBusbarAlarmList(recordBusbarAlarm);
}
/**
*
*
* @param recordBusbarAlarm
* @return
*/
@Override
public int insertRecordBusbarAlarm(RecordBusbarAlarm recordBusbarAlarm)
{
return recordBusbarAlarmMapper.insertRecordBusbarAlarm(recordBusbarAlarm);
}
/**
*
*
* @param recordBusbarAlarm
* @return
*/
@Override
public int updateRecordBusbarAlarm(RecordBusbarAlarm recordBusbarAlarm)
{
return recordBusbarAlarmMapper.updateRecordBusbarAlarm(recordBusbarAlarm);
}
/**
*
*
* @param objIds
* @return
*/
@Override
public int deleteRecordBusbarAlarmByObjIds(Long[] objIds)
{
return recordBusbarAlarmMapper.deleteRecordBusbarAlarmByObjIds(objIds);
}
/**
*
*
* @param objId
* @return
*/
@Override
public int deleteRecordBusbarAlarmByObjId(Long objId)
{
return recordBusbarAlarmMapper.deleteRecordBusbarAlarmByObjId(objId);
}
}

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.record.mapper.RecordBusbarAlarmMapper">
<resultMap type="RecordBusbarAlarm" id="RecordBusbarAlarmResult">
<result property="objId" column="objId" />
<result property="busbarCode" column="busbar_code" />
<result property="cabinetCode" column="cabinet_code" />
<result property="tempMax" column="temp_max" />
<result property="tempMin" column="temp_min" />
<result property="tempAvg" column="temp_avg" />
<result property="tempDiff" column="temp_diff" />
<result property="filePath" column="file_path" />
<result property="alarmType" column="alarm_type" />
<result property="alarmValue" column="alarm_value" />
<result property="isFlag" column="is_flag" />
<result property="recordTime" column="record_time" />
</resultMap>
<sql id="selectRecordBusbarAlarmVo">
select objId, busbar_code, cabinet_code, temp_max, temp_min, temp_avg, temp_diff, file_path, alarm_type, alarm_value, is_flag, record_time from record_busbar_alarm
</sql>
<select id="selectRecordBusbarAlarmList" parameterType="RecordBusbarAlarm" resultMap="RecordBusbarAlarmResult">
<include refid="selectRecordBusbarAlarmVo"/>
<where>
<if test="objId != null "> and objId = #{objId}</if>
<if test="busbarCode != null "> and busbar_code = #{busbarCode}</if>
<if test="cabinetCode != null "> and cabinet_code = #{cabinetCode}</if>
<if test="tempMax != null "> and temp_max = #{tempMax}</if>
<if test="tempMin != null "> and temp_min = #{tempMin}</if>
<if test="tempAvg != null "> and temp_avg = #{tempAvg}</if>
<if test="tempDiff != null "> and temp_diff = #{tempDiff}</if>
<if test="filePath != null and filePath != ''"> and file_path = #{filePath}</if>
<if test="alarmType != null "> and alarm_type = #{alarmType}</if>
<if test="alarmValue != null "> and alarm_value = #{alarmValue}</if>
<if test="isFlag != null "> and is_flag = #{isFlag}</if>
<if test="params.beginRecordTime != null and params.beginRecordTime != '' and params.endRecordTime != null and params.endRecordTime != ''"> and record_time between #{params.beginRecordTime} and #{params.endRecordTime}</if>
</where>
</select>
<select id="selectRecordBusbarAlarmByObjId" parameterType="Long" resultMap="RecordBusbarAlarmResult">
<include refid="selectRecordBusbarAlarmVo"/>
where objId = #{objId}
</select>
<insert id="insertRecordBusbarAlarm" parameterType="RecordBusbarAlarm">
insert into record_busbar_alarm
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="objId != null">objId,</if>
<if test="busbarCode != null">busbar_code,</if>
<if test="cabinetCode != null">cabinet_code,</if>
<if test="tempMax != null">temp_max,</if>
<if test="tempMin != null">temp_min,</if>
<if test="tempAvg != null">temp_avg,</if>
<if test="tempDiff != null">temp_diff,</if>
<if test="filePath != null">file_path,</if>
<if test="alarmType != null">alarm_type,</if>
<if test="alarmValue != null">alarm_value,</if>
<if test="isFlag != null">is_flag,</if>
<if test="recordTime != null">record_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="objId != null">#{objId},</if>
<if test="busbarCode != null">#{busbarCode},</if>
<if test="cabinetCode != null">#{cabinetCode},</if>
<if test="tempMax != null">#{tempMax},</if>
<if test="tempMin != null">#{tempMin},</if>
<if test="tempAvg != null">#{tempAvg},</if>
<if test="tempDiff != null">#{tempDiff},</if>
<if test="filePath != null">#{filePath},</if>
<if test="alarmType != null">#{alarmType},</if>
<if test="alarmValue != null">#{alarmValue},</if>
<if test="isFlag != null">#{isFlag},</if>
<if test="recordTime != null">#{recordTime},</if>
</trim>
</insert>
<update id="updateRecordBusbarAlarm" parameterType="RecordBusbarAlarm">
update record_busbar_alarm
<trim prefix="SET" suffixOverrides=",">
<if test="busbarCode != null">busbar_code = #{busbarCode},</if>
<if test="cabinetCode != null">cabinet_code = #{cabinetCode},</if>
<if test="tempMax != null">temp_max = #{tempMax},</if>
<if test="tempMin != null">temp_min = #{tempMin},</if>
<if test="tempAvg != null">temp_avg = #{tempAvg},</if>
<if test="tempDiff != null">temp_diff = #{tempDiff},</if>
<if test="filePath != null">file_path = #{filePath},</if>
<if test="alarmType != null">alarm_type = #{alarmType},</if>
<if test="alarmValue != null">alarm_value = #{alarmValue},</if>
<if test="isFlag != null">is_flag = #{isFlag},</if>
<if test="recordTime != null">record_time = #{recordTime},</if>
</trim>
where objId = #{objId}
</update>
<delete id="deleteRecordBusbarAlarmByObjId" parameterType="Long">
delete from record_busbar_alarm where objId = #{objId}
</delete>
<delete id="deleteRecordBusbarAlarmByObjIds" parameterType="String">
delete from record_busbar_alarm where objId in
<foreach item="objId" collection="array" open="(" separator="," close=")">
#{objId}
</foreach>
</delete>
</mapper>

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询巡检报警记录列表
export function listRecordBusbarAlarm(query) {
return request({
url: '/record/recordBusbarAlarm/list',
method: 'get',
params: query
})
}
// 查询巡检报警记录详细
export function getRecordBusbarAlarm(objId) {
return request({
url: '/record/recordBusbarAlarm/' + objId,
method: 'get'
})
}
// 新增巡检报警记录
export function addRecordBusbarAlarm(data) {
return request({
url: '/record/recordBusbarAlarm',
method: 'post',
data: data
})
}
// 修改巡检报警记录
export function updateRecordBusbarAlarm(data) {
return request({
url: '/record/recordBusbarAlarm',
method: 'put',
data: data
})
}
// 删除巡检报警记录
export function delRecordBusbarAlarm(objId) {
return request({
url: '/record/recordBusbarAlarm/' + objId,
method: 'delete'
})
}

@ -0,0 +1,481 @@
<template>
<div class="app-container">
<el-row :gutter="28">
<el-col :span="5" :xs="24">
<div class="head-container">
<el-input
v-model="filterBoxName"
placeholder="请输入电柜名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<div class="tree-container">
<el-tree
:data="InfoOptions"
:props="props"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
node-key="id"
default-expand-all
highlight-current
@node-click="handleNodeClick"
/>
</div>
</div>
</el-col>
<el-col :span="19" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="租户号" prop="objId">
<el-input
v-model="queryParams.objId"
placeholder="请输入租户号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="母排编号" prop="busbarCode">
<el-input
v-model="queryParams.busbarCode"
placeholder="请输入母排编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="电柜编号" prop="cabinetCode">
<el-input
v-model="queryParams.cabinetCode"
placeholder="请输入电柜编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="最高温度" prop="tempMax">
<el-input
v-model="queryParams.tempMax"
placeholder="请输入最高温度"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
<!-- <el-form-item label="最低温度" prop="tempMin">
<el-input
v-model="queryParams.tempMin"
placeholder="请输入最低温度"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
<!-- <el-form-item label="平均温度" prop="tempAvg">
<el-input
v-model="queryParams.tempAvg"
placeholder="请输入平均温度"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
<!-- <el-form-item label="温差" prop="tempDiff">
<el-input
v-model="queryParams.tempDiff"
placeholder="请输入温差"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
<!-- <el-form-item label="图像路径" prop="filePath">
<el-input
v-model="queryParams.filePath"
placeholder="请输入图像路径"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
<!-- <el-form-item label="报警阈值" prop="alarmValue">
<el-input
v-model="queryParams.alarmValue"
placeholder="请输入报警阈值"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
<el-form-item label="是否标识" prop="isFlag">
<el-select v-model="queryParams.isFlag" placeholder="请选择是否标识" clearable>
<el-option
v-for="dict in dict.type.record_busbar_alarm_is_flag"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="记录时间">
<el-date-picker
v-model="daterangeRecordTime"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['record:recordBusbarAlarm:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['record:recordBusbarAlarm:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['record:recordBusbarAlarm:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['record:recordBusbarAlarm:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="recordBusbarAlarmList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="租户号" align="center" prop="objId" />
<el-table-column label="母排编号" align="center" prop="busbarCode" />
<el-table-column label="电柜编号" align="center" prop="cabinetCode" />
<el-table-column label="最高温度" align="center" prop="tempMax" />
<el-table-column label="最低温度" align="center" prop="tempMin" />
<el-table-column label="平均温度" align="center" prop="tempAvg" />
<el-table-column label="温差" align="center" prop="tempDiff" />
<el-table-column label="图像路径" align="center" prop="filePath" />
<el-table-column label="报警类型" align="center" prop="alarmType" />
<el-table-column label="报警阈值" align="center" prop="alarmValue" />
<el-table-column label="是否标识" align="center" prop="isFlag">
<template slot-scope="scope">
<dict-tag :options="dict.type.record_busbar_alarm_is_flag" :value="scope.row.isFlag"/>
</template>
</el-table-column>
<el-table-column label="记录时间" align="center" prop="recordTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d} {h}:{m}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['record:recordBusbarAlarm:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['record:recordBusbarAlarm:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改巡检报警记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="租户号" prop="objId">
<el-input v-model="form.objId" placeholder="请输入租户号" />
</el-form-item>
<el-form-item label="母排编号" prop="busbarCode">
<el-input v-model="form.busbarCode" placeholder="请输入母排编号" />
</el-form-item>
<el-form-item label="电柜编号" prop="cabinetCode">
<el-input v-model="form.cabinetCode" placeholder="请输入电柜编号" />
</el-form-item>
<el-form-item label="最高温度" prop="tempMax">
<el-input v-model="form.tempMax" placeholder="请输入最高温度" />
</el-form-item>
<el-form-item label="最低温度" prop="tempMin">
<el-input v-model="form.tempMin" placeholder="请输入最低温度" />
</el-form-item>
<el-form-item label="平均温度" prop="tempAvg">
<el-input v-model="form.tempAvg" placeholder="请输入平均温度" />
</el-form-item>
<el-form-item label="温差" prop="tempDiff">
<el-input v-model="form.tempDiff" placeholder="请输入温差" />
</el-form-item>
<el-form-item label="图像路径" prop="filePath">
<el-input v-model="form.filePath" placeholder="请输入图像路径" />
</el-form-item>
<el-form-item label="报警阈值" prop="alarmValue">
<el-input v-model="form.alarmValue" placeholder="请输入报警阈值" />
</el-form-item>
<el-form-item label="是否标识" prop="isFlag">
<el-radio-group v-model="form.isFlag">
<el-radio
v-for="dict in dict.type.record_busbar_alarm_is_flag"
:key="dict.value"
:label="parseInt(dict.value)"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="记录时间" prop="recordTime">
<el-date-picker clearable
v-model="form.recordTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择记录时间">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listRecordBusbarAlarm, getRecordBusbarAlarm, delRecordBusbarAlarm, addRecordBusbarAlarm, updateRecordBusbarAlarm } from "@/api/record/recordBusbarAlarm";
import {CabinetAndBusbarTree} from "@/api/record/recordBusbarTemp";
export default {
name: "RecordBusbarAlarm",
dicts: ['record_busbar_alarm_is_flag'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
recordBusbarAlarmList: [],
//
title: "",
//
open: false,
//
daterangeRecordTime: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
objId: null,
busbarCode: null,
cabinetCode: null,
tempMax: null,
tempMin: null,
tempAvg: null,
tempDiff: null,
filePath: null,
alarmType: null,
alarmValue: null,
isFlag: null,
recordTime: null
},
//
form: {},
//
rules: {
}
};
},
created() {
this.getList();
this.getTreeselect();
},
methods: {
/** 查询巡检报警记录列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeRecordTime && '' != this.daterangeRecordTime) {
this.queryParams.params["beginRecordTime"] = this.daterangeRecordTime[0];
this.queryParams.params["endRecordTime"] = this.daterangeRecordTime[1];
}
listRecordBusbarAlarm(this.queryParams).then(response => {
this.recordBusbarAlarmList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
objId: null,
busbarCode: null,
cabinetCode: null,
tempMax: null,
tempMin: null,
tempAvg: null,
tempDiff: null,
filePath: null,
alarmType: null,
alarmValue: null,
isFlag: null,
recordTime: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeRecordTime = [];
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加巡检报警记录";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const objId = row.objId || this.ids
getRecordBusbarAlarm(objId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改巡检报警记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.objId != null) {
updateRecordBusbarAlarm(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addRecordBusbarAlarm(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const objIds = row.objId || this.ids;
this.$modal.confirm('是否确认删除巡检报警记录编号为"' + objIds + '"的数据项?').then(function() {
return delRecordBusbarAlarm(objIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('record/recordBusbarAlarm/export', {
...this.queryParams
}, `recordBusbarAlarm_${new Date().getTime()}.xlsx`)
},
/** 查询电柜下拉树结构 */
getTreeselect() {
CabinetAndBusbarTree({}).then(response => {
this.InfoOptions = response.data
})
},
//
filterNode(value, data) {
if (!value) return true
return data.label.indexOf(value) !== -1
},
//
handleNodeClick(data) {
this.queryParams.busbarCode = data.code
this.handleQuery()
},
}
};
</script>
<style scoped>
.tree-container {
height: 666px; /* 设置固定高度 */
overflow-y: auto; /* 添加垂直滚动条 */
}
</style>

@ -0,0 +1,22 @@
-- 菜单 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('巡检报警记录', '2025', '1', 'recordBusbarAlarm', 'record/recordBusbarAlarm/index', 1, 0, 'C', '0', '0', 'record:recordBusbarAlarm:list', '#', 'admin', sysdate(), '', null, '巡检报警记录菜单');
-- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID();
-- 按钮 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('巡检报警记录查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', 'record:recordBusbarAlarm:query', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('巡检报警记录新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', 'record:recordBusbarAlarm:add', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('巡检报警记录修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', 'record:recordBusbarAlarm:edit', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('巡检报警记录删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', 'record:recordBusbarAlarm:remove', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('巡检报警记录导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', 'record:recordBusbarAlarm:export', '#', 'admin', sysdate(), '', null, '');
Loading…
Cancel
Save