设备控制日志·

master
lld 2026-02-01 01:39:02 +08:00
parent 5c79fc0740
commit 286b26076a
1 changed files with 208 additions and 155 deletions

View File

@ -1,46 +1,129 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="180px">
<el-row>
<el-row :gutter="20">
<el-col :span="6"><el-form-item label="大棚名称" prop="agriName">
<el-input
id="agriName" v-model="queryParams.agriName"
placeholder="请输入大棚名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item></el-col>
<el-col :span="6"><el-form-item label="imei" prop="imei">
<el-input
id="imei" v-model="queryParams.imei"
placeholder="请输入imei"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item></el-col>
<el-col :span="6"><el-form-item label="功能名称" prop="funcCode">
<el-select id="funcCode" v-model="queryParams.funcCode" placeholder="请选择功能名称" clearable>
<el-option
v-for="dict in dict.type.sys_func_code"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item></el-col>
<el-col :span="6"><el-form-item label="操作类型" prop="opType">
<el-select id="opType" v-model="queryParams.opType" placeholder="请选择操作类型" clearable>
<el-option
v-for="dict in dict.type.sys_status_list"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item></el-col>
</el-row>
</el-row>
<el-row :gutter="20">
<el-col :span="6"> <el-form-item label="操作来源" prop="opSource">
<el-select id="opSource" v-model="queryParams.opSource" placeholder="请选择操作来源" clearable>
<el-option
v-for="dict in dict.type.sys_op_source"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item></el-col>
<el-col :span="6"><el-form-item label="是否成功获取锁" prop="lockAcquired">
<el-select id="lockAcquired" v-model="queryParams.lockAcquired" placeholder="请选择是否成功获取锁" clearable>
<el-option
v-for="dict in dict.type.sys_exec_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item></el-col>
<el-col :span="6"> <el-form-item label="是否收到设备回执" prop="ackReceived">
<el-select id="ackReceived" v-model="queryParams.ackReceived" placeholder="请选择是否收到设备回执" clearable>
<el-option
v-for="dict in dict.type.sys_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item></el-col>
<el-col :span="6"><el-form-item label="MQTT发布成功" prop="ackSuc">
<el-select id="ackSuc" v-model="queryParams.ackSuc" placeholder="请选择MQTT发布成功" clearable>
<el-option
v-for="dict in dict.type.sys_exec_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item></el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="6"> <el-form-item label="设备控制锁是否释放成功" prop="isLockSuc">
<el-select id="isLockSuc" v-model="queryParams.isLockSuc" placeholder="请选择设备控制锁是否释放成功" clearable>
<el-option
v-for="dict in dict.type.sys_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6"> <el-form-item label="是否触发定时任务" prop="isTask">
<el-select id="isTask" v-model="queryParams.isTask" placeholder="请选择是否触发定时任务" clearable>
<el-option
v-for="dict in dict.type.sys_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item></el-col>
<el-col :span="6"><el-form-item label="最终执行结果" prop="execResult">
<el-select id="execResult" v-model="queryParams.execResult" placeholder="请选择最终执行结果" clearable>
<el-option
v-for="dict in dict.type.sys_exec_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item></el-col>
<el-col :span="6"> <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="['control:controllog: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="['control:controllog: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="['control:controllog:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
@ -49,56 +132,76 @@
@click="handleExport"
v-hasPermi="['control:controllog:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-form-item></el-col>
</el-row>
</el-form>
<el-table v-loading="loading" border :data="controllogList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键ID" align="center" prop="id" />
<el-table-column label="大棚名称" align="center" prop="agriName" />
<el-table-column label="imei" align="center" prop="imei" />
<el-table-column label="功能名称" align="center" prop="funcName" />
<el-table-column label="功能码" align="center" prop="funcCode" />
<el-table-column label="操作类型" align="center" prop="opType" />
<el-table-column label="操作来源" align="center" prop="opSource" />
<el-table-column label="指令" align="center" prop="payload" />
<el-table-column label="设备控制lock" align="center" prop="lockKey" />
<el-table-column label="是否成功获取锁" align="center" prop="lockAcquired" />
<el-table-column label="锁持有者" align="center" prop="lockHolder" />
<el-table-column label="当前任务队列情况" align="center" prop="taskStatus" />
<el-table-column label="是否收到设备回执" align="center" prop="ackReceived" />
<el-table-column label="设备控制是否成功" align="center" prop="ackSuc" />
<el-table-column label="设备控制锁是否释放成功" align="center" prop="isLockSuc" />
<el-table-column label="是否触发定时任务" align="center" prop="isTask" />
<el-table-column label="未触发原因" align="center" prop="noTaskReason" />
<el-table-column label="设备回执" align="center" prop="ack" />
<el-table-column label="自动关任务最终执行结果" align="center" prop="execResult" />
<el-table-column label="未执行原因" align="center" prop="skipReason" />
<el-table-column label="触发任务ID" align="center" prop="triggerTaskId" />
<el-table-column label="执行前读取的状态快照" align="center" prop="latestState" />
<el-table-column label="操作人" align="center" prop="createBy" />
<el-table-column label="操作时间" align="center" prop="createTime" width="180">
<el-table-column width="180" show-overflow-tooltip label="主键ID" align="center" prop="id" />
<el-table-column width="100" show-overflow-tooltip label="大棚名称" align="center" prop="agriName" />
<el-table-column width="180" show-overflow-tooltip label="imei" align="center" prop="imei" />
<el-table-column width="100" show-overflow-tooltip label="功能名称" align="center" prop="funcCode">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
<dict-tag :options="dict.type.sys_func_code" :value="scope.row.funcCode"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column show-overflow-tooltip label="操作类型" align="center" prop="opType">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['control:controllog:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['control:controllog:remove']"
>删除</el-button>
<dict-tag :options="dict.type.sys_status_list" :value="scope.row.opType"/>
</template>
</el-table-column>
<el-table-column width="100" show-overflow-tooltip label="操作来源" align="center" prop="opSource">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_op_source" :value="scope.row.opSource"/>
</template>
</el-table-column>
<el-table-column width="120" show-overflow-tooltip label="payload" align="center" prop="payload" />
<el-table-column show-overflow-tooltip label="是否成功获取锁" align="center" prop="lockAcquired">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_exec_result" :value="scope.row.lockAcquired"/>
</template>
</el-table-column>
<el-table-column width="160" show-overflow-tooltip label="锁持有者" align="center" prop="lockHolder" />
<el-table-column show-overflow-tooltip label="当前任务队列情况" align="center" prop="taskStatus" />
<el-table-column show-overflow-tooltip label="是否收到设备回执" align="center" prop="ackReceived">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_result" :value="scope.row.ackReceived"/>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip label="MQTT发布是否成功" align="center" prop="ackSuc">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_exec_result" :value="scope.row.ackSuc"/>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip label="设备控制锁是否释放成功" align="center" prop="isLockSuc">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_result" :value="scope.row.isLockSuc"/>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip label="是否触发定时任务" align="center" prop="isTask">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_result" :value="scope.row.isTask"/>
</template>
</el-table-column>
<el-table-column width="120" show-overflow-tooltip label="限位时间" align="center" prop="runTime" />
<el-table-column width="160" show-overflow-tooltip label="未触发原因" align="center" prop="noTaskReason" />
<el-table-column width="180" show-overflow-tooltip label="完整回执" align="center" prop="ack" />
<el-table-column show-overflow-tooltip label="最终执行结果" align="center" prop="execResult">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_exec_result" :value="scope.row.execResult"/>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip label="未执行/跳过原因" align="center" prop="skipReason" />
<el-table-column show-overflow-tooltip label="device:latest 状态快照" align="center" prop="latestState" />
<el-table-column show-overflow-tooltip label="备注" align="center" prop="remark" />
<el-table-column width="100" show-overflow-tooltip label="操作人" align="center" prop="createBy" />
<el-table-column width="180" show-overflow-tooltip label="操作时间" align="center" prop="createTime" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{m}:{s}') }}</span>
</template>
</el-table-column>
</el-table>
@ -110,24 +213,15 @@
: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>
<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 { listControllog, getControllog, delControllog, addControllog, updateControllog } from "@/api/control/controllog"
import { listControllog } from "@/api/control/controllog"
export default {
name: "Controllog",
dicts: ['sys_exec_result', 'sys_func_code', 'sys_result', 'sys_op_source', 'sys_status_list'],
data() {
return {
//
@ -152,6 +246,17 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
agriName: null,
imei: null,
funcCode: null,
opType: null,
opSource: null,
lockAcquired: null,
ackReceived: null,
ackSuc: null,
isLockSuc: null,
isTask: null,
execResult: null,
},
//
form: {},
@ -184,12 +289,10 @@ export default {
id: null,
agriName: null,
imei: null,
funcName: null,
funcCode: null,
opType: null,
opSource: null,
payload: null,
lockKey: null,
lockAcquired: null,
lockHolder: null,
taskStatus: null,
@ -197,11 +300,11 @@ export default {
ackSuc: null,
isLockSuc: null,
isTask: null,
runTime: null,
noTaskReason: null,
ack: null,
execResult: null,
skipReason: null,
triggerTaskId: null,
latestState: null,
remark: null,
version: null,
@ -228,56 +331,6 @@ export default {
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = "添加设备控制操作日志"
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const id = row.id || this.ids
getControllog(id).then(response => {
this.form = response.data
this.open = true
this.title = "修改设备控制操作日志"
})
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateControllog(this.form).then(response => {
this.$modal.msgSuccess("修改成功")
this.open = false
this.getList()
})
} else {
addControllog(this.form).then(response => {
if (response.code===200) {
this.$modal.msgSuccess("新增成功")
} else {
this.$modal.msgError("新增失败")
}
this.open = false
this.getList()
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids
this.$modal.confirm('是否确认删除设备控制操作日志编号为"' + ids + '"的数据项?').then(function() {
return delControllog(ids)
}).then(() => {
this.getList()
this.$modal.msgSuccess("删除成功")
}).catch(() => {})
},
/** 导出按钮操作 */
handleExport() {
this.download('control/controllog/export', {