feat(ems): 添加蒸汽和震动实时数据查询接口

- 新和增蒸汽历史数据最新数据查询接口
- 新增震动实时数据查询接口
- 完善停机统计报表类型定义
-修复多个页面权限标识符格式问题
- 统一表单引用变量命名规范
- 添加搜索框前缀图标和清理多余空行
master
zangch@mesnac.com 5 months ago
parent 0630661b88
commit 448728c507

@ -56,4 +56,31 @@ export interface RealtimeAlarmVO {
alarmEndTime: string | null;
durationMinutes: string; // as string from backend
alarmContent: string;
}
// 停机统计报表 Query/VO
export interface DowntimeReportQuery {
pageNum?: number;
pageSize?: number;
startDate?: string; // 'YYYY-MM-DD HH:mm:ss' or ISO
endDate?: string; // 'YYYY-MM-DD HH:mm:ss' or ISO
deviceModeId?: number;
machineCode?: string;
machineId?: number;
shutTypeId?: number;
shutReasonId?: number;
downtimeFlag?: string; // 字典 sys_yes_no (1 是, 0 否)
params?: Record<string, any>;
}
export interface DowntimeReportVO {
machineCode: string;
machineName: string;
deviceModeName: string;
shutTypeName: string;
shutReasonName: string;
shutBeginTime: string;
shutEndTime: string | null;
durationMinutes: string; // 后端以字符串返回
downtimeFlag: string; // 字典 sys_yes_no
}

@ -73,3 +73,21 @@ export function getExpendSum(query) {
params: query
})
}
// 查询蒸汽历史数据(曲线)
export function steamInstantList(query) {
return request({
url: '/ems/record/recordSteamInstant/steamInstantList',
method: 'get',
params: query
})
}
//查询蒸汽实时最后一条数据
export function latestSteamInstantList(query) {
return request({
url: '/ems/record/recordSteamInstant/latestSteamInstantList',
method: 'get',
params: query
})
}

@ -64,3 +64,12 @@ export function getLatestVibrationData(monitorId: string | number): AxiosPromise
method: 'get'
});
}
// 查询震动实时数据(曲线)
export function vibrationInstantList(query) {
return request({
url: '/ems/record/recordVibrationInstant/vibrationInstantList',
method: 'get',
params: query
})
}

@ -69,7 +69,7 @@
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['ems/record:recordAlarmData:add']"-->
<!-- v-hasPermi="['ems:record:recordAlarmData:add']"-->
<!-- >新增-->
<!-- </el-button>-->
<!-- </el-col>-->
@ -81,7 +81,7 @@
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['ems/record:recordAlarmData:edit']"-->
<!-- v-hasPermi="['ems:record:recordAlarmData:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- </el-col>-->
@ -93,7 +93,7 @@
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['ems/record:recordAlarmData:remove']"-->
<!-- v-hasPermi="['ems:record:recordAlarmData:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </el-col>-->
@ -104,7 +104,7 @@
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ems/record:recordAlarmData:export']"
v-hasPermi="['ems:record:recordAlarmData:export']"
>导出
</el-button>
</el-col>
@ -147,7 +147,7 @@
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['ems/record:recordAlarmData:edit']"
v-hasPermi="['ems:record:recordAlarmData:edit']"
>修改
</el-button>
<!-- <el-button-->
@ -155,7 +155,7 @@
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordAlarmData:remove']"-->
<!-- v-hasPermi="['ems:record:recordAlarmData:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
</template>

@ -1,383 +0,0 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="规则名称" prop="ruleName">
<el-input
v-model="queryParams.ruleName"
placeholder="请输入规则名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="触发规则" prop="triggerRule">
<el-select v-model="queryParams.triggerRule" placeholder="请选择触发规则" clearable>
<el-option
v-for="dict in dict.type.trigger_rule"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="通知用户" prop="notifyUser">-->
<!-- <el-input-->
<!-- v-model="queryParams.notifyUser"-->
<!-- placeholder="请输入通知用户"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </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="['ems/record:recordAlarmRule: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="['ems/record:recordAlarmRule: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="['ems/record:recordAlarmRule: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="['ems/record:recordAlarmRule:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="recordAlarmRuleList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="自增标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="规则编号" align="center" prop="ruleId" v-if="columns[1].visible"/>
<el-table-column label="规则名称" align="center" prop="ruleName" v-if="columns[2].visible"/>
<el-table-column label="计量设备编号" align="center" prop="monitorId" v-if="columns[3].visible"/>
<el-table-column label="记录时间" align="center" prop="collectTime" width="180" v-if="columns[4].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.collectTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="能源类型" align="center" prop="energyType" v-if="columns[5].visible"/>
<el-table-column label="触发规则" align="center" prop="triggerRule" v-if="columns[6].visible">
<template slot-scope="scope">
<dict-tag :options="dict.type.trigger_rule" :value="scope.row.triggerRule"/>
</template>
</el-table-column>
<el-table-column label="触发阈值次数" align="center" prop="triggerNumber" v-if="columns[7].visible"/>
<el-table-column label="时间范围(分)" align="center" prop="timeRange" v-if="columns[8].visible"/>
<el-table-column label="设备离线时间(分钟)" align="center" prop="deviceOfflineTime" v-if="columns[9].visible"/>
<el-table-column label="通知用户" align="center" prop="notifyUser" v-if="columns[10].visible"/>
<el-table-column label="备注" align="center" prop="cause" v-if="columns[11].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['ems/record:recordAlarmRule:edit']"
>修改
</el-button>
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordAlarmRule:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
</template>
</el-table-column>
</el-table>
<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="150px">
<el-form-item label="规则编号" prop="ruleId">
<el-input v-model="form.ruleId" placeholder="请输入规则编号" disabled/>
</el-form-item>
<el-form-item label="规则名称" prop="ruleName">
<el-input v-model="form.ruleName" placeholder="请输入规则名称"/>
</el-form-item>
<!-- <el-form-item label="计量设备编号" prop="monitorId">-->
<!-- <el-input v-model="form.monitorId" placeholder="请输入计量设备编号"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="记录时间" prop="collectTime">-->
<!-- <el-date-picker clearable-->
<!-- v-model="form.collectTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择记录时间"-->
<!-- >-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="能源类型" prop="energyType">-->
<!-- <el-input v-model="form.energyType" placeholder="请输入能源类型"/>-->
<!-- </el-form-item>-->
<el-form-item label="触发规则" prop="triggerRule">
<el-radio-group v-model="form.triggerRule" disabled>
<el-radio
v-for="dict in dict.type.trigger_rule"
:key="dict.value"
:label="parseInt(dict.value)"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="触发阈值次数" prop="triggerNumber">-->
<!-- <el-input v-model="form.triggerNumber" placeholder="请输入触发阈值次数"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="时间范围(分)" prop="timeRange">-->
<!-- <el-input v-model="form.timeRange" placeholder="请输入时间范围(分)"/>-->
<!-- </el-form-item>-->
<el-form-item label="设备离线时间(分钟)" prop="deviceOfflineTime">
<el-input-number v-model="form.deviceOfflineTime" placeholder="请输入设备离线时间(分钟)"/>
</el-form-item>
<!-- <el-form-item label="通知用户" prop="notifyUser">-->
<!-- <el-input v-model="form.notifyUser" placeholder="请输入通知用户"/>-->
<!-- </el-form-item>-->
<el-form-item label="备注" prop="cause">
<el-input v-model="form.cause" placeholder="请输入备注"/>
</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 {
listRecordAlarmRule,
getRecordAlarmRule,
delRecordAlarmRule,
addRecordAlarmRule,
updateRecordAlarmRule
} from '@/api/ems/record/recordAlarmRule'
export default {
name: 'RecordAlarmRule',
dicts: ['trigger_rule'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
recordAlarmRuleList: [],
//
title: '',
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ruleId: null,
ruleName: null,
monitorId: null,
collectTime: null,
energyType: null,
triggerRule: null,
triggerNumber: null,
timeRange: null,
deviceOfflineTime: null,
notifyUser: null,
cause: null
},
//
form: {},
//
rules: {
objId: [
{ required: true, message: '自增标识不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: `自增标识`, visible: false },
{ key: 1, label: `规则编号`, visible: true },
{ key: 2, label: `规则名称`, visible: true },
{ key: 3, label: `计量设备编号`, visible: false },
{ key: 4, label: `记录时间`, visible: false },
{ key: 5, label: `能源类型`, visible: false },
{ key: 6, label: `触发规则`, visible: true },
{ key: 7, label: `触发阈值次数`, visible: false },
{ key: 8, label: `时间范围(分)`, visible: false },
{ key: 9, label: `设备离线时间(分钟)`, visible: true },
{ key: 10, label: `通知用户`, visible: false },
{ key: 11, label: `备注`, visible: true },
{ key: 12, label: `创建人`, visible: false },
{ key: 13, label: `创建时间`, visible: false },
{ key: 14, label: `更新人`, visible: false },
{ key: 15, label: `更新时间`, visible: false }
]
}
},
created() {
this.getList()
},
methods: {
/** 查询异常告警规则列表 */
getList() {
this.loading = true
listRecordAlarmRule(this.queryParams).then(response => {
this.recordAlarmRuleList = response.rows
this.total = response.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
ruleId: null,
ruleName: null,
monitorId: null,
collectTime: null,
energyType: null,
triggerRule: null,
triggerNumber: null,
timeRange: null,
deviceOfflineTime: null,
notifyUser: null,
cause: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
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
getRecordAlarmRule(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) {
updateRecordAlarmRule(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addRecordAlarmRule(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 delRecordAlarmRule(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('ems/record/recordAlarmRule/export', {
...this.queryParams
}, `recordAlarmRule_${new Date().getTime()}.xlsx`)
}
}
}
</script>

@ -7,7 +7,7 @@
v-model="workUnitName"
placeholder="请输入计量设备名称"
clearable
prefix-icon="Search"
style="margin-bottom: 20px"
/>
@ -27,7 +27,7 @@
</div>
</el-col>
<el-col :span="19" :xs="24">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch"
<el-form :model="queryParams" ref="queryFormRef" :inline="true" v-show="showSearch"
label-width="100px"
>
<!-- <el-form-item label="计量设备编号" prop="monitorCode">-->
@ -81,9 +81,9 @@
type="primary"
plain
icon="Plus"
@click="handleAdd"
v-hasPermi="['ems/record:recordDnbInstant:add']"
v-hasPermi="['ems:record:recordDnbInstant:add']"
>新增
</el-button>
</el-col>
@ -92,10 +92,10 @@
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['ems/record:recordDnbInstant:edit']"
v-hasPermi="['ems:record:recordDnbInstant:edit']"
>修改
</el-button>
</el-col>
@ -104,10 +104,10 @@
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['ems/record:recordDnbInstant:remove']"
v-hasPermi="['ems:record:recordDnbInstant:remove']"
>删除
</el-button>
</el-col>
@ -116,9 +116,9 @@
type="warning"
plain
icon="Download"
@click="handleExport"
v-hasPermi="['ems/record:recordDnbInstant:export']"
v-hasPermi="['ems:record:recordDnbInstant:export']"
>导出
</el-button>
</el-col>
@ -162,7 +162,7 @@
<!-- type="text"-->
<!-- icon="Edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordDnbInstant:edit']"-->
<!-- v-hasPermi="['ems:record:recordDnbInstant:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
@ -170,7 +170,7 @@
<!-- type="text"-->
<!-- icon="Delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordDnbInstant:remove']"-->
<!-- v-hasPermi="['ems:record:recordDnbInstant:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
@ -190,7 +190,7 @@
<!-- 添加或修改电实时数据对话框 -->
<el-dialog :title="dialogTitle" v-model="dialogOpen" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="计量设备名称" prop="monitorCode">
<treeselect v-model="form.monitorCode" :options="baseMonitorInfoOptions" :normalizer="normalizer"
placeholder="请选择计量设备名称"
@ -222,7 +222,7 @@
<!-- </el-form-item>-->
<!-- <el-form-item label="C项电流" prop="ic">-->
<!-- <el-input v-model="form.ic" placeholder="请输入C项电流"/>-->
<!-- </el-form-item>-->
<!-- </el-item>-->
<!-- <el-form-item label="记录时间" prop="recordTime">-->
<!-- <el-date-picker clearable-->
<!-- v-model="form.recordTime"-->
@ -342,6 +342,8 @@ const data = reactive({
} as RecordDnbInstantForm
});
const { queryParams, form } = toRefs(data);
const rules = reactive<FormRules>({
objId: [{ required: true, message: '编号不能为空', trigger: 'blur' }]
});
@ -478,4 +480,4 @@ onMounted(() => {
getTreeMonitorInfo();
getList();
});
</script>
</script>

@ -1,538 +0,0 @@
<template>
<div class="app-container">
<el-row :gutter="28">
<el-col :span="4.3" :xs="24">
<div class="head-container">
<el-input
v-model="workUnitName"
placeholder="请输入计量设备名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
:data="monitorInfoOptions"
:props="monitorProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
node-key="id"
default-expand-all
highlight-current
@node-click="handleNodeClick"
/>
</div>
</el-col>
<el-col :span="19" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="100px"
>
<!-- <el-form-item label="计量设备编号" prop="monitorCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.monitorCode"-->
<!-- placeholder="请输入计量设备编号"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="采集时间">
<el-date-picker
v-model="daterangeCollectTime"
style="width: 340px"
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 label="记录时间">
<el-date-picker
v-model="daterangeRecordTime"
style="width: 340px"
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 label="采集方式" prop="collectType">
<el-select v-model="queryParams.collectType" placeholder="请选择采集方式" clearable>
<el-option
v-for="dict in dict.type.collect_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</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="['ems/record:recordDnbInstant: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="['ems/record:recordDnbInstant: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="['ems/record:recordDnbInstant: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="['ems/record:recordDnbInstant:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="recordDnbInstantList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="编号" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="计量设备编号" align="center" prop="monitorCode" v-if="columns[1].visible" width="100"/>
<el-table-column label="计量设备名称" align="center" prop="monitorName" v-if="columns[15].visible" width="120"/>
<el-table-column label="采集时间" align="center" prop="collectTime" width="180" v-if="columns[2].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.collectTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="A项电压" align="center" prop="va" v-if="columns[3].visible"/>
<el-table-column label="B项电压" align="center" prop="vb" v-if="columns[4].visible"/>
<el-table-column label="C项电压" align="center" prop="vc" v-if="columns[5].visible"/>
<el-table-column label="A项电流" align="center" prop="ia" v-if="columns[6].visible"/>
<el-table-column label="B项电流" align="center" prop="ib" v-if="columns[7].visible"/>
<el-table-column label="C项电流" align="center" prop="ic" v-if="columns[8].visible"/>
<el-table-column label="功率因数" align="center" prop="glys" v-if="columns[10].visible"/>
<el-table-column label="正向有功" align="center" prop="zxyg" v-if="columns[11].visible"/>
<el-table-column label="有功功率" align="center" prop="activePower" v-if="columns[12].visible"/>
<el-table-column label="无功功率" align="center" prop="reactivePower" v-if="columns[13].visible"/>
<el-table-column label="记录时间" align="center" prop="recordTime" width="180" v-if="columns[9].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="采集方式" align="center" prop="collectType" v-if="columns[14].visible">
<template slot-scope="scope">
<dict-tag :options="dict.type.collect_type" :value="scope.row.collectType"/>
</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="['ems/record:recordDnbInstant:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordDnbInstant: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="100px">
<el-form-item label="计量设备名称" prop="monitorCode">
<treeselect v-model="form.monitorCode" :options="baseMonitorInfoOptions" :normalizer="normalizer"
placeholder="请选择计量设备名称"
/>
</el-form-item>
<el-form-item label="采集时间" prop="collectTime">
<el-date-picker clearable
v-model="form.collectTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择采集时间"
>
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="A项电压" prop="va">-->
<!-- <el-input v-model="form.va" placeholder="请输入A项电压"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="B项电压" prop="vb">-->
<!-- <el-input v-model="form.vb" placeholder="请输入B项电压"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="C项电压" prop="vc">-->
<!-- <el-input v-model="form.vc" placeholder="请输入C项电压"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="A项电流" prop="ia">-->
<!-- <el-input v-model="form.ia" placeholder="请输入A项电流"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="B项电流" prop="ib">-->
<!-- <el-input v-model="form.ib" placeholder="请输入B项电流"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="C项电流" prop="ic">-->
<!-- <el-input v-model="form.ic" placeholder="请输入C项电流"/>-->
<!-- </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-item label="功率因数" prop="glys">-->
<!-- <el-input v-model="form.glys" placeholder="请输入功率因数"/>-->
<!-- </el-form-item>-->
<el-form-item label="正向有功" prop="zxyg">
<el-input-number v-model="form.zxyg" placeholder="请输入正向有功"/>
</el-form-item>
<!-- <el-form-item label="有功功率" prop="activePower">-->
<!-- <el-input v-model="form.activePower" placeholder="请输入有功功率"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="无功功率" prop="reactivePower">-->
<!-- <el-input v-model="form.reactivePower" placeholder="请输入无功功率"/>-->
<!-- </el-form-item>-->
<el-form-item label="采集方式" prop="collectType">
<el-radio-group v-model="form.collectType" disabled>
<el-radio
v-for="dict in dict.type.collect_type"
:key="dict.value"
:label="parseInt(dict.value)"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</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 {
listRecordDnbInstant,
getRecordDnbInstant,
delRecordDnbInstant,
addRecordDnbInstant,
updateRecordDnbInstant
} from '@/api/ems/record/recordDnbInstant'
import { getMonitorInfoTree, listBaseMonitorInfo } from '@/api/ems/base/baseMonitorInfo'
import Treeselect from 'vue3-treeselect';
import 'vue3-treeselect/dist/vue3-treeselect.css';
import { parseTime } from '@/utils/ruoyi'
export default {
name: 'RecordDnbInstant',
dicts: ['collect_type'],
components: {
Treeselect
},
data() {
return {
//List
baseMonitorInfoOptions: [],
//List
monitorInfoOptions: [],
workUnitName: undefined,
//
baseMonitorInfoList: [],
//
daterangeCollectTime: [],
//
daterangeRecordTime: [],
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
recordDnbInstantList: [],
//
title: '',
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
monitorCode: null,
collectTime: null,
va: null,
vb: null,
vc: null,
ia: null,
ib: null,
ic: null,
recordTime: null,
glys: null,
zxyg: null,
activePower: null,
reactivePower: null,
collectType: null
},
//
form: {},
monitorProps: {
children: 'children',
label: 'label'
},
//
rules: {
objId: [
{ required: true, message: '编号不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `计量设备编号`, visible: true },
{ key: 2, label: `采集时间`, visible: true },
{ key: 3, label: `A项电压`, visible: true },
{ key: 4, label: `B项电压`, visible: true },
{ key: 5, label: `C项电压`, visible: true },
{ key: 6, label: `A项电流`, visible: true },
{ key: 7, label: `B项电流`, visible: true },
{ key: 8, label: `C项电流`, visible: true },
{ key: 9, label: `记录时间`, visible: true },
{ key: 10, label: `功率因数`, visible: true },
{ key: 11, label: `正向有功`, visible: true },
{ key: 12, label: `有功功率`, visible: false },
{ key: 13, label: `无功功率`, visible: false },
{ key: 14, label: `采集方式`, visible: true },
{ key: 15, label: `计量设备名称`, visible: true }
]
}
},
created() {
const nowDate = parseTime(new Date(), '{y}-{m}-{d}')
this.daterangeCollectTime[0] = nowDate + ' 00:00:00'
this.daterangeCollectTime[1] = nowDate + ' 23:59:59'
this.getTreeselect()
this.getTreeMonitorInfo()
this.getList()
},
watch: {
//
workUnitName(val) {
this.$refs.tree.filter(val)
}
},
methods: {
/** 转换计量设备信息数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children
}
return {
id: node.monitorCode,
label: node.monitorName,
children: node.children
}
},
/** 查询计量设备信息下拉树结构 新增用*/
getTreeMonitorInfo() {
listBaseMonitorInfo({ monitorType: 2 }).then(response => {
this.baseMonitorInfoOptions = []
const data = { objId: 0, monitorName: '顶级节点', children: [] }
data.children = this.handleTree(response.data, 'objId', 'parentId')
this.baseMonitorInfoOptions.push(data)
})
},
/** 查询电实时数据列表 */
getList() {
this.loading = true
this.queryParams.params = {}
if (null != this.daterangeCollectTime && '' != this.daterangeCollectTime) {
this.queryParams.params['beginCollectTime'] = this.daterangeCollectTime[0]
this.queryParams.params['endCollectTime'] = this.daterangeCollectTime[1]
}
if (null != this.daterangeRecordTime && '' != this.daterangeRecordTime) {
this.queryParams.params['beginRecordTime'] = this.daterangeRecordTime[0]
this.queryParams.params['endRecordTime'] = this.daterangeRecordTime[1]
}
listRecordDnbInstant(this.queryParams).then(response => {
this.recordDnbInstantList = response.rows
this.total = response.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
monitorCode: null,
collectTime: null,
va: null,
vb: null,
vc: null,
ia: null,
ib: null,
ic: null,
recordTime: null,
glys: null,
zxyg: null,
activePower: null,
reactivePower: null,
collectType: 1
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.monitorCode = null
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
getRecordDnbInstant(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) {
updateRecordDnbInstant(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addRecordDnbInstant(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 delRecordDnbInstant(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('ems/record/recordDnbInstant/export', {
...this.queryParams
}, `recordDnbInstant_${new Date().getTime()}.xlsx`)
},
/** 查询计量设备信息下拉树结构 */
getTreeselect() {
getMonitorInfoTree({ monitorType: 2 }).then(response => {
this.monitorInfoOptions = response.data
})
},
//
filterNode(value, data) {
if (!value) return true
return data.label.indexOf(value) !== -1
},
//
handleNodeClick(data) {
this.queryParams.monitorCode = data.code
this.handleQuery()
}
}
}
</script>

@ -135,7 +135,7 @@
icon="Plus"
@click="handleAdd"
v-hasPermi="['ems/record:recordIOTInstant:add']"
v-hasPermi="['ems:record:recordIOTInstant:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
@ -146,7 +146,7 @@
:disabled="single"
@click="handleUpdate"
v-hasPermi="['ems/record:recordIOTInstant:edit']"
v-hasPermi="['ems:record:recordIOTInstant:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
@ -157,7 +157,7 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['ems/record:recordIOTInstant:remove']"
v-hasPermi="['ems:record:recordIOTInstant:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
@ -167,7 +167,7 @@
icon="Download"
@click="handleExport"
v-hasPermi="['ems/record:recordIOTInstant:export']"
v-hasPermi="['ems:record:recordIOTInstant:export']"
>导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
@ -208,14 +208,14 @@
type="text"
icon="Edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['ems/record:recordIOTInstant:edit']"
v-hasPermi="['ems:record:recordIOTInstant:edit']"
>修改</el-button>
<el-button
type="text"
icon="Delete"
@click="handleDelete(scope.row)"
v-hasPermi="['ems/record:recordIOTInstant:remove']"
v-hasPermi="['ems:record:recordIOTInstant:remove']"
>删除</el-button>
</template>
</el-table-column>

@ -76,7 +76,7 @@
icon="Plus"
@click="handleAdd"
v-hasPermi="['ems/record:recordSteamInstant:add']"
v-hasPermi="['ems:record:recordSteamInstant:add']"
>新增
</el-button>
</el-col>-->
@ -88,7 +88,7 @@
:disabled="single"
@click="handleUpdate"
v-hasPermi="['ems/record:recordSteamInstant:edit']"
v-hasPermi="['ems:record:recordSteamInstant:edit']"
>修改
</el-button>
</el-col>
@ -100,7 +100,7 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['ems/record:recordSteamInstant:remove']"
v-hasPermi="['ems:record:recordSteamInstant:remove']"
>删除
</el-button>
</el-col>-->
@ -111,7 +111,7 @@
icon="Download"
@click="handleExport"
v-hasPermi="['ems/record:recordSteamInstant:export']"
v-hasPermi="['ems:record:recordSteamInstant:export']"
>导出
</el-button>
</el-col>
@ -148,7 +148,7 @@
<!-- type="text"-->
<!-- icon="Edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordSteamInstant:edit']"-->
<!-- v-hasPermi="['ems:record:recordSteamInstant:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
@ -156,7 +156,7 @@
<!-- type="text"-->
<!-- icon="Delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordSteamInstant:remove']"-->
<!-- v-hasPermi="['ems:record:recordSteamInstant:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->

@ -1,553 +0,0 @@
<template>
<div class="app-container">
<el-row :gutter="28">
<el-col :span="4.3" :xs="24">
<div class="head-container">
<el-input
v-model="workUnitName"
placeholder="请输入计量设备名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
:data="monitorInfoOptions"
:props="monitorProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
node-key="id"
default-expand-all
highlight-current
@node-click="handleNodeClick"
/>
</div>
</el-col>
<el-col :span="19" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="100px"
>
<!-- <el-form-item label="计量设备编号" prop="monitorCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.monitorCode"-->
<!-- placeholder="请输入计量设备编号"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="采集时间">
<el-date-picker
v-model="daterangeCollectTime"
style="width: 340px"
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 label="记录时间">
<el-date-picker
v-model="daterangeRecordTime"
style="width: 340px"
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="['ems/record:recordSteamInstant: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="['ems/record:recordSteamInstant: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="['ems/record:recordSteamInstant: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="['ems/record:recordSteamInstant:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="recordSteamInstantList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="自增标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="计量设备编号" align="center" prop="monitorCode" v-if="columns[1].visible"/>
<el-table-column label="计量设备名称" align="center" prop="monitorName" v-if="columns[12].visible"/>
<el-table-column label="采集时间" align="center" prop="collectTime" width="180" v-if="columns[2].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.collectTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="瞬时流量t/h" align="center" prop="fluxFlow" v-if="columns[3].visible"/>
<el-table-column label="累计流量t" align="center" prop="steamFlow" v-if="columns[4].visible"/>
<el-table-column label="瞬时热量" align="center" prop="heatInstantValue" v-if="columns[5].visible"/>
<el-table-column label="累计热量" align="center" prop="heatTotalValue" v-if="columns[6].visible"/>
<el-table-column label="温度(℃)" align="center" prop="temperature" v-if="columns[7].visible"/>
<el-table-column label="压力Mpa" align="center" prop="press" v-if="columns[8].visible"/>
<el-table-column label="密度" align="center" prop="density" v-if="columns[9].visible"/>
<el-table-column label="压力差值" align="center" prop="differencePress" v-if="columns[10].visible"/>
<el-table-column label="记录时间" align="center" prop="recordTime" width="180" v-if="columns[11].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordSteamInstant:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordSteamInstant:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<span v-if="totalFluxFlow!==null">{{totalFluxFlow}} t/h</span>
</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="100px">
<el-form-item label="计量设备名称" prop="monitorCode">
<treeselect v-model="form.monitorCode" :options="baseMonitorInfoOptions" :normalizer="normalizer"
placeholder="请选择计量设备名称"
/>
</el-form-item>
<el-form-item label="采集时间" prop="collectTime">
<el-date-picker clearable
v-model="form.collectTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择采集时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="瞬时流量t/h" prop="fluxFlow">
<el-input v-model="form.fluxFlow" placeholder="请输入瞬时流量t/h"/>
</el-form-item>
<el-form-item label="累计流量t" prop="steamFlow">
<el-input v-model="form.steamFlow" placeholder="请输入累计流量t"/>
</el-form-item>
<el-form-item label="瞬时热量" prop="heatInstantValue">
<el-input v-model="form.heatInstantValue" placeholder="请输入瞬时热量"/>
</el-form-item>
<el-form-item label="累计热量" prop="heatTotalValue">
<el-input v-model="form.heatTotalValue" placeholder="请输入累计热量"/>
</el-form-item>
<el-form-item label="温度(℃)" prop="temperature">
<el-input v-model="form.temperature" placeholder="请输入温度(℃)"/>
</el-form-item>
<el-form-item label="压力Mpa" prop="press">
<el-input v-model="form.press" placeholder="请输入压力"/>
</el-form-item>
<el-form-item label="密度" prop="density">
<el-input v-model="form.density" placeholder="请输入密度"/>
</el-form-item>
<el-form-item label="压力差值" prop="differencePress">
<el-input v-model="form.differencePress" placeholder="请输入压力差值"/>
</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 {
listRecordSteamInstant,
getRecordSteamInstant,
delRecordSteamInstant,
addRecordSteamInstant,
updateRecordSteamInstant, latestSteamInstantList
} from '@/api/ems/record/recordSteamInstant'
import { getMonitorInfoTree, listBaseMonitorInfo } from '@/api/ems/base/baseMonitorInfo'
import Treeselect from 'vue3-treeselect';
import 'vue3-treeselect/dist/vue3-treeselect.css';
import { parseTime } from '@/utils/ruoyi'
export default {
name: 'RecordSteamInstant',
components: {
Treeselect
},
data() {
return {
totalFluxFlow: null, //
//List
baseMonitorInfoOptions: [],
//List
monitorInfoOptions: [],
workUnitName: undefined,
//
baseMonitorInfoList: [],
monitorProps: {
children: 'children',
label: 'label'
},
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
recordSteamInstantList: [],
//
title: '',
//
open: false,
//
daterangeCollectTime: [],
//
daterangeRecordTime: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
monitorCode: null,
collectTime: null,
fluxFlow: null,
steamFlow: null,
heatInstantValue: null,
heatTotalValue: null,
temperature: null,
press: null,
density: null,
differencePress: null,
recordTime: null
},
//
form: {},
//
rules: {
objId: [
{ required: true, message: '自增标识不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: `自增标识`, visible: false },
{ key: 1, label: `计量设备编号`, visible: true },
{ key: 2, label: `采集时间`, visible: true },
{ key: 3, label: `瞬时流量t/h`, visible: true },
{ key: 4, label: `累计流量t`, visible: true },
{ key: 5, label: `瞬时热量`, visible: false },
{ key: 6, label: `累计热量`, visible: false },
{ key: 7, label: `温度(℃)`, visible: true },
{ key: 8, label: `压力`, visible: true },
{ key: 9, label: `密度`, visible: false },
{ key: 10, label: `压力差值`, visible: false },
{ key: 11, label: `记录时间`, visible: true },
{ key: 12, label: `计量设备名称`, visible: true }
]
}
},
created() {
this.getTreeselect()
this.getTreeMonitorInfo()
this.getList()
},
watch: {
//
workUnitName(val) {
this.$refs.tree.filter(val)
}
},
methods: {
/** 转换计量设备信息数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children
}
return {
id: node.monitorCode,
label: node.monitorName,
children: node.children
}
},
/** 查询计量设备信息下拉树结构 新增用*/
getTreeMonitorInfo() {
listBaseMonitorInfo({ monitorType: 4 }).then(response => {
this.baseMonitorInfoOptions = []
const data = { objId: 0, monitorName: '顶级节点', children: [] }
data.children = this.handleTree(response.data, 'objId', 'parentId')
this.baseMonitorInfoOptions.push(data)
})
},
/** 查询蒸汽实时数据列表 */
getList() {
this.loading = true
this.queryParams.params = {}
if (null != this.daterangeCollectTime && '' != this.daterangeCollectTime) {
this.queryParams.params['beginCollectTime'] = this.daterangeCollectTime[0]
this.queryParams.params['endCollectTime'] = this.daterangeCollectTime[1]
}
if (null != this.daterangeRecordTime && '' != this.daterangeRecordTime) {
this.queryParams.params['beginRecordTime'] = this.daterangeRecordTime[0]
this.queryParams.params['endRecordTime'] = this.daterangeRecordTime[1]
}
// monitorCodesensorId
if (this.queryParams.sensorId !== null) {
this.queryParams.params['sensorId'] = this.queryParams.sensorId;
}
latestSteamInstantList(this.queryParams).then(response => {
this.recordSteamInstantList = response.data
this.totalFluxFlow = this.recordSteamInstantList.reduce((sum, item) => sum + (parseFloat(item.fluxFlow) || 0), 0);
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
monitorCode: null,
collectTime: null,
fluxFlow: null,
steamFlow: null,
heatInstantValue: null,
heatTotalValue: null,
temperature: null,
press: null,
density: null,
differencePress: null,
recordTime: null,
totalFluxFlow: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeCollectTime = []
this.daterangeRecordTime = []
this.resetForm('queryForm')
this.reset()
this.queryParams.monitorCode = null
this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 查询计量设备信息下拉树结构 */
getTreeselect() {
getMonitorInfoTree({ monitorType: 4 }).then(response => {
this.monitorInfoOptions = response.data
})
},
//
filterNode(value, data) {
if (!value) return true
return data.label.indexOf(value) !== -1
},
//
handleNodeClick(data) {
this.queryParams.monitorCode = data.code
this.handleQuery()
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加蒸汽历史数据'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const objId = row.objId || this.ids
getRecordSteamInstant(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) {
updateRecordSteamInstant(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addRecordSteamInstant(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 delRecordSteamInstant(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('ems/record/recordSteamInstant/export', {
...this.queryParams
}, `recordSteamInstant_${new Date().getTime()}.xlsx`)
}
}
}
/*function sortByPrefixOrder(data, order) {
//
const groupedData = {};
data.forEach(item => {
const prefix = item.code.split('_')[0];
if (!groupedData[prefix]) {
groupedData[prefix] = [];
}
groupedData[prefix].push(item);
});
//
const sortedData = [];
order.forEach(prefix => {
if (groupedData[prefix]) {
sortedData.push(...groupedData[prefix]);
}
});
//
data.forEach(item => {
if (!sortedData.includes(item)) {
sortedData.push(item);
}
});
return sortedData;
}*/
</script>
<style scoped>
/* 选中节点的样式 */
/deep/ .el-tree .el-tree-node.is-current > .el-tree-node__content {
background-color: #67C23A !important; /* 选中节点的背景色 */
color: #303133 !important; /* 选中节点的文字颜色 */
padding: 0; /* 清除内边距 */
margin: 0; /* 清除外边距 */
z-index: 1; /* 确保在其他元素之上 */
}
/* 鼠标悬停时的样式 */
.el-tree .el-tree-node__content:hover {
background-color: #e6f7ff; /* 鼠标悬停时的背景色 */
}
</style>

@ -99,7 +99,7 @@
icon="Plus"
@click="handleAdd"
v-hasPermi="['ems/record:recordSteamInstant:add']"
v-hasPermi="['ems:record:recordSteamInstant:add']"
>新增
</el-button>
</el-col>
@ -111,7 +111,7 @@
:disabled="single"
@click="handleUpdate"
v-hasPermi="['ems/record:recordSteamInstant:edit']"
v-hasPermi="['ems:record:recordSteamInstant:edit']"
>修改
</el-button>
</el-col>
@ -123,7 +123,7 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['ems/record:recordSteamInstant:remove']"
v-hasPermi="['ems:record:recordSteamInstant:remove']"
>删除
</el-button>
</el-col>
@ -134,7 +134,7 @@
icon="Download"
@click="handleExport"
v-hasPermi="['ems/record:recordSteamInstant:export']"
v-hasPermi="['ems:record:recordSteamInstant:export']"
>导出
</el-button>
</el-col>
@ -174,7 +174,7 @@
<!-- type="text"-->
<!-- icon="Edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordSteamInstant:edit']"-->
<!-- v-hasPermi="['ems:record:recordSteamInstant:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
@ -182,7 +182,7 @@
<!-- type="text"-->
<!-- icon="Delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordSteamInstant:remove']"-->
<!-- v-hasPermi="['ems:record:recordSteamInstant:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->

@ -1,595 +0,0 @@
<template>
<div class="app-container">
<el-row :gutter="28">
<el-col :span="4.3" :xs="24">
<div class="head-container">
<el-input
v-model="workUnitName"
placeholder="请输入计量设备名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
:data="monitorInfoOptions"
:props="monitorProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
node-key="id"
default-expand-all
highlight-current
@node-click="handleNodeClick"
/>
</div>
</el-col>
<el-col :span="19" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="100px"
>
<!-- <el-form-item label="计量设备编号" prop="monitorCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.monitorCode"-->
<!-- placeholder="请输入计量设备编号"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="采集时间">
<el-date-picker
v-model="daterangeCollectTime"
style="width: 340px"
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 label="记录时间">
<date-picker
v-model="daterangeRecordTime"
range
type="datetime"
format="YYYY-MM-DD HH:mm:ss"
value-type="YYYY-MM-DD HH:mm:ss"
:placeholder="['开始时间', '结束时间']"
:lang="lang"
></date-picker>
</el-form-item>
<!-- <el-form-item label="记录日期范围">
<el-date-picker
v-model="daterangeRecordTime"
style="width: 340px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item label="记录时间范围">
<el-time-picker
v-model="timerangeRecordTime"
style="width: 340px"
value-format="HH:mm:ss"
is-range
range-separator="-"
start-placeholder="开始时间"
end-placeholder="结束时间"
></el-time-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="['ems/record:recordSteamInstant: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="['ems/record:recordSteamInstant: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="['ems/record:recordSteamInstant: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="['ems/record:recordSteamInstant:export']"
>导出
</el-button>
</el-col>
<!-- <el-col :span="3">
<span v-if="expendSum!==null">{{expendSum}}</span>
</el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="recordSteamInstantList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="自增标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="计量设备编号" align="center" prop="monitorCode" v-if="columns[1].visible"/>
<!-- <el-table-column label="计量设备名称" align="center" prop="monitorName" v-if="columns[12].visible"/>-->
<!-- <el-table-column label="采集时间" align="center" prop="collectTime" width="180" v-if="columns[2].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.collectTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>-->
<el-table-column label="瞬时流量t/h" align="center" prop="fluxFlow" v-if="columns[2].visible"/>
<el-table-column label="累计流量t" align="center" prop="steamFlow" v-if="columns[3].visible"/>
<el-table-column label="瞬时热量" align="center" prop="heatInstantValue" v-if="columns[4].visible"/>
<el-table-column label="累计热量" align="center" prop="heatTotalValue" v-if="columns[5].visible"/>
<el-table-column label="温度(℃)" align="center" prop="temperature" v-if="columns[6].visible"/>
<el-table-column label="压力Mpa" align="center" prop="press" v-if="columns[7].visible"/>
<el-table-column label="密度" align="center" prop="density" v-if="columns[8].visible"/>
<el-table-column label="压力差值" align="center" prop="differencePress" v-if="columns[9].visible"/>
<el-table-column label="记录时间" align="center" prop="recordTime" width="180" v-if="columns[10].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordSteamInstant:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordSteamInstant:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<span v-if="expendSum!==null">{{expendSum}}</span>
</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="100px">
<el-form-item label="计量设备名称" prop="monitorCode">
<treeselect v-model="form.monitorCode" :options="baseMonitorInfoOptions" :normalizer="normalizer"
placeholder="请选择计量设备名称"
/>
</el-form-item>
<el-form-item label="采集时间" prop="collectTime">
<el-date-picker clearable
v-model="form.collectTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择采集时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="瞬时流量t/h" prop="fluxFlow">
<el-input v-model="form.fluxFlow" placeholder="请输入瞬时流量t/h"/>
</el-form-item>
<el-form-item label="累计流量t" prop="steamFlow">
<el-input v-model="form.steamFlow" placeholder="请输入累计流量t"/>
</el-form-item>
<el-form-item label="瞬时热量" prop="heatInstantValue">
<el-input v-model="form.heatInstantValue" placeholder="请输入瞬时热量"/>
</el-form-item>
<el-form-item label="累计热量" prop="heatTotalValue">
<el-input v-model="form.heatTotalValue" placeholder="请输入累计热量"/>
</el-form-item>
<el-form-item label="温度(℃)" prop="temperature">
<el-input v-model="form.temperature" placeholder="请输入温度(℃)"/>
</el-form-item>
<el-form-item label="压力Mpa" prop="press">
<el-input v-model="form.press" placeholder="请输入压力"/>
</el-form-item>
<el-form-item label="密度" prop="density">
<el-input v-model="form.density" placeholder="请输入密度"/>
</el-form-item>
<el-form-item label="压力差值" prop="differencePress">
<el-input v-model="form.differencePress" placeholder="请输入压力差值"/>
</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 {
listRecordSteamInstant,
getRecordSteamInstant,
delRecordSteamInstant,
addRecordSteamInstant,
updateRecordSteamInstant, getExpendSum
} from '@/api/ems/record/recordSteamInstant'
import { getMonitorInfoTree, listBaseMonitorInfo } from '@/api/ems/base/baseMonitorInfo'
import Treeselect from 'vue3-treeselect';
import 'vue3-treeselect/dist/vue3-treeselect.css';
import { parseTime } from '@/utils/ruoyi'
import DatePicker from 'vue2-datepicker';
import 'vue2-datepicker/index.css';
import 'vue2-datepicker/locale/zh-cn';
export default {
name: 'RecordSteamInstant',
components: {
Treeselect,
DatePicker
},
data() {
return {
//List
baseMonitorInfoOptions: [],
//List
monitorInfoOptions: [],
workUnitName: undefined,
//
baseMonitorInfoList: [],
monitorProps: {
children: 'children',
label: 'label'
},
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
recordSteamInstantList: [],
//Bigdecimal
expendSum: null,
//
title: '',
//
open: false,
//
daterangeCollectTime: [],
//
daterangeRecordTime: [],
//
timerangeRecordTime: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
monitorCode: null,
monitorName: null,
collectTime: null,
fluxFlow: null,
steamFlow: null,
heatInstantValue: null,
heatTotalValue: null,
temperature: null,
press: null,
density: null,
differencePress: null,
recordTime: null
},
//
form: {},
//
rules: {
/* objId: [
{ required: true, message: '自增标识不能为空', trigger: 'blur' }
]*/
},
columns: [
{ key: 0, label: `自增标识`, visible: false },
{ key: 1, label: `计量设备编号`, visible: true },
/* { key: 2, label: `采集时间`, visible: true },*/
{ key: 2, label: `瞬时流量t/h`, visible: true },
{ key: 3, label: `累计流量t`, visible: true },
{ key: 4, label: `瞬时热量`, visible: false },
{ key: 5, label: `累计热量`, visible: false },
{ key: 6, label: `温度(℃)`, visible: true },
{ key: 7, label: `压力`, visible: true },
{ key: 8, label: `密度`, visible: false },
{ key: 9, label: `压力差值`, visible: false },
{ key: 10, label: `记录时间`, visible: true },
/*{ key: 12, label: `计量设备名称`, visible: true }*/
],
lang: {
formatLocale: {
firstDayOfWeek: 1
},
monthBeforeYear: false
}
}
},
created() {
const nowDate = new Date();
const today = parseTime(new Date(), '{y}-{m}-{d}')
const lastDate = new Date();
lastDate.setDate(nowDate.getDate() - 1)
const yesterday = parseTime(lastDate, '{y}-{m}-{d}')
console.log(today,yesterday)
this.daterangeRecordTime[0] = yesterday+ ' 08:00:00'
this.daterangeRecordTime[1] = today + ' 08:00:00'
/* const today = new Date();
const yesterday = new Date(today);
yesterday.setDate(today.getDate() - 1);
//8
/!* this.timerangeRecordTime = ['08:30:00', '08:30:00']; *!/
this.timerangeRecordTime[0] = '08:00:00';
this.timerangeRecordTime[1] = '08:00:00';
this.daterangeRecordTime[0] = parseTime(yesterday, '{y}-{m}-{d}') ;
this.daterangeRecordTime[1] = parseTime(today, '{y}-{m}-{d}') ;*/
this.getTreeselect()
this.getTreeMonitorInfo()
this.getList()
},
watch: {
//
workUnitName(val) {
this.$refs.tree.filter(val)
}
},
methods: {
/** 转换计量设备信息数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children
}
return {
id: node.monitorCode,
label: node.monitorName,
children: node.children
}
},
/** 查询计量设备信息下拉树结构 新增用*/
getTreeMonitorInfo() {
listBaseMonitorInfo({ monitorType: 4 }).then(response => {
this.baseMonitorInfoOptions = []
const data = { objId: 0, monitorName: '顶级节点', children: [] }
data.children = this.handleTree(response.data, 'objId', 'parentId')
this.baseMonitorInfoOptions.push(data)
})
},
/** 查询蒸汽历史数据列表 */
getList() {
this.loading = true
this.queryParams.params = {}
/* if (null != this.daterangeCollectTime && '' != this.daterangeCollectTime) {
this.queryParams.params['beginCollectTime'] =this.daterangeCollectTime[0] + ' ' + this.timerangeRecordTime[0];
this.queryParams.params['endCollectTime'] =this.daterangeCollectTime[1] + ' ' + this.timerangeRecordTime[1];
}
if (null != this.daterangeRecordTime && '' != this.daterangeRecordTime) {
this.queryParams.params['beginRecordTime'] =this.daterangeRecordTime[0] + ' ' + this.timerangeRecordTime[0];
this.queryParams.params['endRecordTime'] = this.daterangeRecordTime[1] + 'T' + this.timerangeRecordTime[1];
}*/
if (this.daterangeRecordTime != null && '' != this.daterangeRecordTime) {
this.queryParams.params['beginRecordTime'] = this.daterangeRecordTime[0];
this.queryParams.params['endRecordTime'] = this.daterangeRecordTime[1] ;
}
listRecordSteamInstant(this.queryParams).then(response => {
this.recordSteamInstantList = response.rows
this.total = response.total
this.loading = false
})
//beginRecordTimeendRecordTimegetExpendSum
if (this.queryParams.monitorCode != null
&& this.queryParams.params['endRecordTime'] != null
&& this.queryParams.params['endRecordTime'] != null) {
getExpendSum(this.queryParams).then(response => {
//BigDecimal
this.expendSum = response;
/* console.log(response)
console.log(this.expendSum)
console.log(response.data)*/
})
}
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
monitorCode: null,
collectTime: null,
fluxFlow: null,
steamFlow: null,
heatInstantValue: null,
heatTotalValue: null,
temperature: null,
press: null,
density: null,
differencePress: null,
recordTime: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeCollectTime = []
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
},
/** 查询计量设备信息下拉树结构 */
getTreeselect() {
getMonitorInfoTree({ monitorType: 4 }).then(response => {
this.monitorInfoOptions = response.data
})
},
//
filterNode(value, data) {
if (!value) return true
return data.label.indexOf(value) !== -1
},
//
handleNodeClick(data) {
this.queryParams.monitorCode = data.code
this.handleQuery()
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加蒸汽历史数据'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const objId = row.objId || this.ids
getRecordSteamInstant(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) {
updateRecordSteamInstant(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addRecordSteamInstant(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 delRecordSteamInstant(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('ems/record/recordSteamInstant/export', {
...this.queryParams
}, `recordSteamInstant_${new Date().getTime()}.xlsx`)
}
}
}
</script>
<style scoped>
/* 选中节点的样式 */
/deep/ .el-tree .el-tree-node.is-current > .el-tree-node__content {
background-color: #67C23A !important; /* 选中节点的背景色 */
color: #303133 !important; /* 选中节点的文字颜色 */
padding: 0; /* 清除内边距 */
margin: 0; /* 清除外边距 */
z-index: 1; /* 确保在其他元素之上 */
}
/* 鼠标悬停时的样式 */
.el-tree .el-tree-node__content:hover {
background-color: #e6f7ff; /* 鼠标悬停时的背景色 */
}
</style>

@ -128,7 +128,7 @@
icon="Plus"
@click="handleAdd"
v-hasPermi="['ems/record:recordVibrationInstant:add']"
v-hasPermi="['ems:record:recordVibrationInstant:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
@ -139,7 +139,7 @@
:disabled="single"
@click="handleUpdate"
v-hasPermi="['ems/record:recordVibrationInstant:edit']"
v-hasPermi="['ems:record:recordVibrationInstant:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
@ -150,7 +150,7 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['ems/record:recordVibrationInstant:remove']"
v-hasPermi="['ems:record:recordVibrationInstant:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
@ -160,7 +160,7 @@
icon="Download"
@click="handleExport"
v-hasPermi="['ems/record:recordVibrationInstant:export']"
v-hasPermi="['ems:record:recordVibrationInstant:export']"
>导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
@ -192,14 +192,14 @@
type="text"
icon="Edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['ems/record:recordVibrationInstant:edit']"
v-hasPermi="['ems:record:recordVibrationInstant:edit']"
>修改</el-button>
<el-button
type="text"
icon="Delete"
@click="handleDelete(scope.row)"
v-hasPermi="['ems/record:recordVibrationInstant:remove']"
v-hasPermi="['ems:record:recordVibrationInstant:remove']"
>删除</el-button>
</template>
</el-table-column>

@ -77,7 +77,7 @@
icon="Plus"
@click="handleAdd"
v-hasPermi="['ems/record:recordWaterInstant:add']"
v-hasPermi="['ems:record:recordWaterInstant:add']"
>新增
</el-button>
</el-col>
@ -89,7 +89,7 @@
:disabled="single"
@click="handleUpdate"
v-hasPermi="['ems/record:recordWaterInstant:edit']"
v-hasPermi="['ems:record:recordWaterInstant:edit']"
>修改
</el-button>
</el-col>
@ -101,7 +101,7 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['ems/record:recordWaterInstant:remove']"
v-hasPermi="['ems:record:recordWaterInstant:remove']"
>删除
</el-button>
</el-col>
@ -112,7 +112,7 @@
icon="Download"
@click="handleExport"
v-hasPermi="['ems/record:recordWaterInstant:export']"
v-hasPermi="['ems:record:recordWaterInstant:export']"
>导出
</el-button>
</el-col>
@ -148,7 +148,7 @@
<!-- type="text"-->
<!-- icon="Edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordWaterInstant:edit']"-->
<!-- v-hasPermi="['ems:record:recordWaterInstant:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
@ -156,7 +156,7 @@
<!-- type="text"-->
<!-- icon="Delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordWaterInstant:remove']"-->
<!-- v-hasPermi="['ems:record:recordWaterInstant:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->

@ -1,473 +0,0 @@
<template>
<div class="app-container">
<el-row :gutter="28">
<el-col :span="4.3" :xs="24">
<div class="head-container">
<el-input
v-model="workUnitName"
placeholder="请输入计量设备名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
:data="monitorInfoOptions"
:props="monitorProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
node-key="id"
default-expand-all
highlight-current
@node-click="handleNodeClick"
/>
</div>
</el-col>
<el-col :span="19" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="100px"
>
<el-form-item label="采集时间">
<el-date-picker
v-model="daterangeCollectTime"
style="width: 340px"
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 label="记录时间">
<el-date-picker
v-model="daterangeRecordTime"
style="width: 340px"
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 label="采集方式" prop="collectType">
<el-select v-model="queryParams.collectType" placeholder="请选择采集方式" clearable>
<el-option
v-for="dict in dict.type.collect_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</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="['ems/record:recordWaterInstant: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="['ems/record:recordWaterInstant: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="['ems/record:recordWaterInstant: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="['ems/record:recordWaterInstant:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="recordWaterInstantList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<!-- <el-table-column label=" " align="center" prop="objId" v-if="columns[0].visible"/>-->
<el-table-column label="计量设备编号" align="center" prop="monitorCode" v-if="columns[1].visible"/>
<el-table-column label="计量设备名称" align="center" prop="monitorName" v-if="columns[7].visible"/>
<el-table-column label="采集时间" align="center" prop="collectTime" width="180" v-if="columns[2].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.collectTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="瞬时流量t/h" align="center" prop="fluxFlow" v-if="columns[3].visible"/>
<el-table-column label="累计流量t" align="center" prop="waterFlow" v-if="columns[4].visible"/>
<el-table-column label="记录时间" align="center" prop="recordTime" width="180" v-if="columns[5].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="采集方式" align="center" prop="collectType" v-if="columns[6].visible">
<template slot-scope="scope">
<dict-tag :options="dict.type.collect_type" :value="scope.row.collectType"/>
</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="['ems/record:recordWaterInstant:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordWaterInstant:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
</el-row>
<!-- 添加或修改水实时数据对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="计量设备名称" prop="monitorCode">
<treeselect v-model="form.monitorCode" :options="baseMonitorInfoOptions" :normalizer="normalizer"
placeholder="请选择计量设备名称"
/>
</el-form-item>
<el-form-item label="采集时间" prop="collectTime">
<el-date-picker clearable
v-model="form.collectTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择采集时间"
>
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="瞬时流量t/h" prop="fluxFlow">-->
<!-- <el-input v-model="form.fluxFlow" placeholder="请输入瞬时流量t/h"/>-->
<!-- </el-form-item>-->
<el-form-item label="累计流量t" prop="waterFlow">
<el-input-number v-model="form.waterFlow" placeholder="请输入累计流量t"/>
</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-item label="采集方式" prop="collectType">
<el-radio-group v-model="form.collectType" disabled>
<el-radio
v-for="dict in dict.type.collect_type"
:key="dict.value"
:label="parseInt(dict.value)"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</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 {
listRecordWaterInstant,
getRecordWaterInstant,
delRecordWaterInstant,
addRecordWaterInstant,
updateRecordWaterInstant
} from '@/api/ems/record/recordWaterInstant'
import { getMonitorInfoTree, listBaseMonitorInfo } from '@/api/ems/base/baseMonitorInfo'
import Treeselect from 'vue3-treeselect';
import 'vue3-treeselect/dist/vue3-treeselect.css';
import { parseTime } from '@/utils/ruoyi'
export default {
name: 'RecordWaterInstant',
dicts: ['collect_type'],
components: {
Treeselect
},
data() {
return {
//List
baseMonitorInfoOptions: [],
//List
monitorInfoOptions: [],
workUnitName: undefined,
//
baseMonitorInfoList: [],
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
recordWaterInstantList: [],
//
title: '',
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
monitorName: null,
monitorType: 3,
collectTime: null,
fluxFlow: null,
waterFlow: null,
recordTime: null,
collectType: null
},
//
daterangeCollectTime: [],
//
daterangeRecordTime: [],
//
form: {},
monitorProps: {
children: 'children',
label: 'label'
},
//
rules: {
objId: [
{ required: true, message: ' 不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `计量设备编号`, visible: true },
{ key: 2, label: `采集时间`, visible: true },
{ key: 3, label: `瞬时流量t/h`, visible: true },
{ key: 4, label: `累计流量t`, visible: true },
{ key: 5, label: `记录时间`, visible: true },
{ key: 6, label: `采集方式`, visible: true },
{ key: 7, label: `计量设备名称`, visible: true }
]
}
},
created() {
const nowDate = parseTime(new Date(), '{y}-{m}-{d}')
this.daterangeCollectTime[0] = nowDate + ' 00:00:00'
this.daterangeCollectTime[1] = nowDate + ' 23:59:59'
this.getTreeselect()
this.getTreeMonitorInfo()
this.getList()
},
watch: {
//
workUnitName(val) {
this.$refs.tree.filter(val)
}
},
methods: {
/** 查询计量设备信息下拉树结构 */
getTreeMonitorInfo() {
listBaseMonitorInfo({ monitorType: 3 }).then(response => {
this.baseMonitorInfoOptions = []
const data = { objId: 0, monitorName: '顶级节点', children: [] }
data.children = this.handleTree(response.data, 'objId', 'parentId')
this.baseMonitorInfoOptions.push(data)
})
},
/** 查询水实时数据列表 */
getList() {
this.loading = true
this.queryParams.params = {}
if (null != this.daterangeCollectTime && '' != this.daterangeCollectTime) {
this.queryParams.params['beginCollectTime'] = this.daterangeCollectTime[0]
this.queryParams.params['endCollectTime'] = this.daterangeCollectTime[1]
}
if (null != this.daterangeRecordTime && '' != this.daterangeRecordTime) {
this.queryParams.params['beginRecordTime'] = this.daterangeRecordTime[0]
this.queryParams.params['endRecordTime'] = this.daterangeRecordTime[1]
}
listRecordWaterInstant(this.queryParams).then(response => {
this.recordWaterInstantList = response.rows
this.total = response.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
monitorName: null,
collectTime: null,
fluxFlow: null,
waterFlow: null,
recordTime: null,
collectType: 1
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.monitorCode = null
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
getRecordWaterInstant(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) {
updateRecordWaterInstant(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addRecordWaterInstant(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 delRecordWaterInstant(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('ems/record/recordWaterInstant/export', {
...this.queryParams
}, `recordWaterInstant_${new Date().getTime()}.xlsx`)
},
/** 查询计量设备信息下拉树结构 */
getTreeselect() {
getMonitorInfoTree({ monitorType: 3 }).then(response => {
this.monitorInfoOptions = response.data
})
},
/** 转换计量设备信息数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children
}
return {
id: node.monitorCode,
label: node.monitorName,
children: node.children
}
},
//
filterNode(value, data) {
if (!value) return true
return data.label.indexOf(value) !== -1
},
//
handleNodeClick(data) {
this.queryParams.monitorCode = data.code
this.handleQuery()
}
}
}
</script>
Loading…
Cancel
Save