|
|
@@ -111,7 +111,7 @@
|
|
|
</el-descriptions>
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
- <el-col :span="12" style="padding-right: 5px;margin-top: 10px">
|
|
|
+ <el-col :span="12" style="padding-right: 5px;margin-top: 10px" v-if="objId != null">
|
|
|
<el-card>
|
|
|
<template #header>
|
|
|
<div class="card-header">
|
|
|
@@ -121,7 +121,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
- <el-table :data="tjdata">
|
|
|
+ <el-table :data="tjdata" @cell-click="selectRow">
|
|
|
<el-table-column label="过滤方式" prop="filterWay"></el-table-column>
|
|
|
<el-table-column label="过滤算法" prop="filterAlgorithm"></el-table-column>
|
|
|
<el-table-column prop="sn" label="操作">
|
|
|
@@ -137,7 +137,8 @@
|
|
|
</el-button>
|
|
|
<el-popconfirm title="确定删除该编码?" @confirm="">
|
|
|
<template #reference>
|
|
|
- <el-button link><el-tooltip effect="dark" content="删除"><el-icon @click="godelRuleFilter(scope.row)">
|
|
|
+ <el-button link><el-tooltip effect="dark" content="删除"><el-icon
|
|
|
+ @click="godelRuleFilter(scope.row)">
|
|
|
<Delete />
|
|
|
</el-icon></el-tooltip></el-button>
|
|
|
</template>
|
|
|
@@ -150,22 +151,47 @@
|
|
|
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
- <el-col :span="12" style="padding-left: 5px;margin-top: 10px">
|
|
|
+ <el-col :span="12" style="padding-left: 5px;margin-top: 10px" v-if="objId != null">
|
|
|
<el-card>
|
|
|
<template #header>
|
|
|
<div class="card-header">
|
|
|
- <span>执行</span>
|
|
|
+ <span>执行({{ filterObj.name }})</span>
|
|
|
<div>
|
|
|
- <el-button type="primary" plain>添加</el-button>
|
|
|
+ <el-button type="primary" plain @click="goAddRuleEXecute">添加</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
<el-table :data="zxdata">
|
|
|
- <el-table-column label="设备"></el-table-column>
|
|
|
- <el-table-column label="执行动作"></el-table-column>
|
|
|
- <el-table-column label="操作"></el-table-column>
|
|
|
+ <el-table-column label="设备">
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{ getDeviceName(scope.row) }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="执行动作" prop="executeAction"></el-table-column>
|
|
|
+ <el-table-column label="操作">
|
|
|
+ <template #default="scope">
|
|
|
+ <div>
|
|
|
+ <el-button link @click="
|
|
|
+ ">
|
|
|
+ <el-tooltip effect="dark" content="编辑">
|
|
|
+ <el-icon @click="goupdateExecute(scope.row)">
|
|
|
+ <Edit />
|
|
|
+ </el-icon>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-button>
|
|
|
+ <el-popconfirm title="确定删除该编码?" @confirm="">
|
|
|
+ <template #reference>
|
|
|
+ <el-button link><el-tooltip effect="dark" content="删除"><el-icon
|
|
|
+ @click="godelRuleExecute(scope.row)">
|
|
|
+ <Delete />
|
|
|
+ </el-icon></el-tooltip></el-button>
|
|
|
+ </template>
|
|
|
+ </el-popconfirm>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
</el-table>
|
|
|
-
|
|
|
+ <!-- goupdateExecute -->
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -189,8 +215,6 @@
|
|
|
<el-input v-model="ruleFilterParam.formula" placeholder="请输入公式" />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
-
|
|
|
-
|
|
|
<template #footer>
|
|
|
<span class="dialog-footer">
|
|
|
<el-button @click="dialogFormVisible = false">取消</el-button>
|
|
|
@@ -200,6 +224,33 @@
|
|
|
</span>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <el-dialog v-model="dialogFormExVisible" :title="dialogExTitle">
|
|
|
+ <el-form :model="ruleExecuteParam">
|
|
|
+ <el-form-item label="名称" label-width="140px">
|
|
|
+ <el-input v-model="ruleExecuteParam.name" placeholder="请输入名称" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="设备" label-width="140px">
|
|
|
+ <el-select v-model="ruleExecuteParam.equipmentId" value-key="id" filterable placeholder="Select">
|
|
|
+ <el-option v-for="item in deviceList" :key="item.id" :label="item.name" :value="item.id" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="执行动作" label-width="140px">
|
|
|
+ <el-input v-model="ruleExecuteParam.executeAction" placeholder="请输入执行动作" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="备注" label-width="140px">
|
|
|
+ <el-input v-model="ruleExecuteParam.remark" placeholder="请输入备注" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <span class="dialog-footer">
|
|
|
+ <el-button @click="dialogFormExVisible = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="saveRuleExecute()">
|
|
|
+ 确认
|
|
|
+ </el-button>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -209,7 +260,10 @@ import { useRoute, useRouter } from "vue-router";
|
|
|
import { listEquipmentSbook } from "@/api/data/equipmentSbook";
|
|
|
import { listSensor, addSensor } from "@/api/data/sensor"
|
|
|
import { addRule, getRule, updateRule } from "@/api/data/rule"
|
|
|
-import { addRuleFilter, getRuleFilter, updateRuleFilter, listRuleFilter,delRuleFilter } from "@/api/data/ruleFilter"
|
|
|
+import { addRuleFilter, getRuleFilter, updateRuleFilter, listRuleFilter, delRuleFilter } from "@/api/data/ruleFilter"
|
|
|
+import { addRuleExecute, getRuleExecute, updateRuleExecute, listRuleExecute, delRuleExecute } from "@/api/data/ruleExecute"
|
|
|
+
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
|
|
|
|
|
|
const route = useRoute();
|
|
|
@@ -222,6 +276,8 @@ const zxdata = ref([]);
|
|
|
const deviceList = ref([]);
|
|
|
const sensorList = ref([]);
|
|
|
const dialogFormVisible = ref(false)
|
|
|
+const dialogFormExVisible = ref(false)
|
|
|
+const dialogExTitle = ref("添加执行动作")
|
|
|
const dialogTitle = ref("添加条件")
|
|
|
const ruleFilterParam = ref({
|
|
|
id: null,
|
|
|
@@ -233,6 +289,18 @@ const ruleFilterParam = ref({
|
|
|
formula: ''
|
|
|
})
|
|
|
|
|
|
+const ruleExecuteParam = ref({
|
|
|
+ id: null,
|
|
|
+ ruleId: null,
|
|
|
+ filterId: null,
|
|
|
+ name: '',
|
|
|
+ equipmentId: "",
|
|
|
+ executeAction: "",
|
|
|
+ remark: ''
|
|
|
+})
|
|
|
+
|
|
|
+const filterObj = ref({ id: null, name: "" })
|
|
|
+
|
|
|
const ruleParam = ref({
|
|
|
id: "",
|
|
|
sn: "",
|
|
|
@@ -252,6 +320,15 @@ const getEquipmentSbookList = () => {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+const getDeviceName = (item) => {
|
|
|
+ for (var index in deviceList.value) {
|
|
|
+ if (deviceList.value[index].id = item.equipmentId) {
|
|
|
+ return deviceList.value[index].name;
|
|
|
+ }
|
|
|
+ return item.equipmentId;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
const selectEquipment = (value) => {
|
|
|
console.log(value);
|
|
|
var obj = {
|
|
|
@@ -311,15 +388,44 @@ const saveRuleFilter = () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+const saveRuleExecute = () => {
|
|
|
+ if (ruleExecuteParam.value.id != null) {
|
|
|
+ ruleExecuteParam.value.ruleId = objId;
|
|
|
+ ruleExecuteParam.value.filterId = filterObj.value.id
|
|
|
+ updateRuleExecute(ruleExecuteParam.value).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ getRuleExecuteList();
|
|
|
+ dialogFormExVisible.value = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ ruleExecuteParam.value.ruleId = objId;
|
|
|
+ ruleExecuteParam.value.filterId = filterObj.value.id
|
|
|
+ addRuleExecute(ruleExecuteParam.value).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ getRuleExecuteList();
|
|
|
+ dialogFormExVisible.value = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const goupdateExecute = (item) => {
|
|
|
+ dialogExTitle.value = "修改执行动作"
|
|
|
+ getRuleExecute(item.id).then(res => {
|
|
|
+ ruleExecuteParam.value = res.data
|
|
|
+ dialogFormExVisible.value = true;
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
const goupdate = (item) => {
|
|
|
- console.log(item)
|
|
|
+ dialogTitle.value = "修改条件"
|
|
|
getRuleFilter(item.id).then(res => {
|
|
|
ruleFilterParam.value = res.data
|
|
|
dialogFormVisible.value = true;
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-
|
|
|
const addFilter = () => {
|
|
|
ruleFilterParam.value = {
|
|
|
id: null,
|
|
|
@@ -339,16 +445,64 @@ const getFilterList = () => {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-const godelRuleFilter = (item) =>{
|
|
|
- delRuleFilter(item.id).then(res=>{
|
|
|
- if(res.code == 200){
|
|
|
- getFilterList();
|
|
|
- }
|
|
|
+const godelRuleFilter = (item) => {
|
|
|
+ delRuleFilter(item.id).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ getFilterList();
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const godelRuleExecute = (item) => {
|
|
|
+ delRuleExecute(item.id).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ getRuleExecuteList();
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const openMessage = () => {
|
|
|
+ ElMessage({
|
|
|
+ message: '请选择规则条件',
|
|
|
+ type: 'warning',
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const goAddRuleEXecute = () => {
|
|
|
+ ruleExecuteParam.value = {
|
|
|
+ id: null,
|
|
|
+ ruleId: null,
|
|
|
+ executeId: null,
|
|
|
+ name: '',
|
|
|
+ equipmentId: "",
|
|
|
+ execute_action: "",
|
|
|
+ remark: ''
|
|
|
+ }
|
|
|
+ if (filterObj.value.id != null) {
|
|
|
+ dialogFormExVisible.value = true
|
|
|
+ } else {
|
|
|
+ openMessage();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const selectRow = (row, column, event) => {
|
|
|
+ filterObj.value.id = row.id;
|
|
|
+ filterObj.value.name = row.filterWay;
|
|
|
+ console.log(filterObj.value)
|
|
|
+ getRuleExecuteList();
|
|
|
+}
|
|
|
+
|
|
|
+const getRuleExecuteList = () => {
|
|
|
+ listRuleExecute({ filterId: filterObj.value.id, pageSize: 10000 }).then(res => {
|
|
|
+ console.log(res);
|
|
|
+ zxdata.value = res.rows;
|
|
|
})
|
|
|
}
|
|
|
|
|
|
getEquipmentSbookList();
|
|
|
-getFilterList();
|
|
|
+if (objId != null) {
|
|
|
+ getFilterList();
|
|
|
+}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
@@ -363,4 +517,8 @@ getFilterList();
|
|
|
display: inline-flex;
|
|
|
max-width: 160px;
|
|
|
}
|
|
|
+
|
|
|
+.el-table .success-row {
|
|
|
+ --el-table-tr-bg-color: var(--el-color-success-light-9);
|
|
|
+}
|
|
|
</style>
|