Commit e6735d75 authored by dupengyu's avatar dupengyu

- 轮询管理

- 告警
parent 4f6e02dd
...@@ -99,6 +99,15 @@ export function joblogList(data) { ...@@ -99,6 +99,15 @@ export function joblogList(data) {
data data
}) })
} }
export function selectByEquipldAndTime(data) {
return request({
url: '/device/joblog/selectByEquipIdAndTime',
method: 'post',
data
})
}
/* 执行器管理 */ /* 执行器管理 */
export function jobgroupList(data) { export function jobgroupList(data) {
......
...@@ -19,6 +19,7 @@ import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, ...@@ -19,6 +19,7 @@ import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels,
import DictTag from '@/components/DictTag' import DictTag from '@/components/DictTag'
import RightToolbar from '@/components/RightToolbar' import RightToolbar from '@/components/RightToolbar'
import Print from 'vue-print-nb' import Print from 'vue-print-nb'
import './utils/scroll.js'
// 字典数据组件 // 字典数据组件
import DictData from '@/components/DictData' import DictData from '@/components/DictData'
Vue.prototype.$ws = WS Vue.prototype.$ws = WS
......
import Vue from 'vue'
Vue.directive('loadmore', {
bind(el, binding) {
const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap')
SELECTWRAP_DOM.addEventListener('scroll', function () {
const CONDITION = this.scrollHeight - this.scrollTop <= this.clientHeight
if (CONDITION) {
binding.value()
}
})
}
})
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="alarmthreshold" prop="alarmThreshold"
label="告警触发值" label="告警触发值"
width="150" width="150"
align="center" align="center"
...@@ -136,7 +136,7 @@ ...@@ -136,7 +136,7 @@
v-if="scope.row.confirmStatus == 1" v-if="scope.row.confirmStatus == 1"
type="text" type="text"
@click="eliminate(scope.row)" @click="eliminate(scope.row)"
>消除</el-button >消除</el-button
> >
</template> </template>
</el-table-column> </el-table-column>
......
...@@ -120,6 +120,7 @@ ...@@ -120,6 +120,7 @@
> >
<el-form :model="manageFrom" ref="form" size="mini"> <el-form :model="manageFrom" ref="form" size="mini">
<el-form-item label="任务参数:"> <el-form-item label="任务参数:">
<!-- disabled -->
<el-input <el-input
type="textarea" type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }" :autosize="{ minRows: 2, maxRows: 4 }"
...@@ -131,6 +132,7 @@ ...@@ -131,6 +132,7 @@
<el-form-item label="机器地址:"> <el-form-item label="机器地址:">
<el-input <el-input
type="textarea" type="textarea"
disabled
:autosize="{ minRows: 2, maxRows: 4 }" :autosize="{ minRows: 2, maxRows: 4 }"
placeholder="请输入本次执行的机器地址,为空则从执行器获取" placeholder="请输入本次执行的机器地址,为空则从执行器获取"
v-model="manageFrom.addressList" v-model="manageFrom.addressList"
...@@ -235,7 +237,7 @@ ...@@ -235,7 +237,7 @@
trigger="hover" trigger="hover"
v-model="visible" v-model="visible"
> >
<el-tabs v-model="activeName" type="card" @tab-click="handleClick"> <el-tabs v-model="activeName" type="card">
<el-tab-pane label="秒" name="1"> <el-tab-pane label="秒" name="1">
<pre> <pre>
输入内容为【秒 分 时 日 月 周 年】中间空格隔开 输入内容为【秒 分 时 日 月 周 年】中间空格隔开
...@@ -336,7 +338,7 @@ ...@@ -336,7 +338,7 @@
<el-form-item label="运行模式" class="both"> <el-form-item label="运行模式" class="both">
<!-- 运行模式 BEAN --> <!-- 运行模式 BEAN -->
<el-select v-model="addFrom.glueType" placeholder="请选择"> <el-select disabled v-model="addFrom.glueType" placeholder="请选择">
<el-option <el-option
v-for="item in glueType" v-for="item in glueType"
:key="item.value" :key="item.value"
...@@ -348,20 +350,40 @@ ...@@ -348,20 +350,40 @@
</el-form-item> </el-form-item>
<el-form-item label="JobHandler" class="both"> <el-form-item label="JobHandler" class="both">
<el-input <el-input
disabled
placeholder="请输入负责人" placeholder="请输入负责人"
:disabled="addFrom.glueType != 'BEAN'"
v-model="addFrom.executorHandler" v-model="addFrom.executorHandler"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="任务参数" class="one"> <el-form-item label="任务设备" class="one">
<el-input <el-select
type="textarea" v-model="addFrom.executorParam.equipId"
:autosize="{ minRows: 2, maxRows: 4 }" placeholder="请选择"
placeholder="请输入本次执行的机器地址,为空则从执行器获取" v-loadmore="loadMore"
v-model="addFrom.executorParam"
> >
</el-input> <el-option
v-for="item in equipTableData"
:key="item.id"
:label="item.equipName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="任务参数" class="one">
<el-checkbox-group
v-model="addFrom.executorParam.params"
:min="0"
:max="100"
>
<el-checkbox
v-for="city in itemOptions"
:label="city"
:key="city"
>{{ city }}</el-checkbox
>
</el-checkbox-group>
</el-form-item> </el-form-item>
<div class="mini-title">高级配置</div> <div class="mini-title">高级配置</div>
<el-form-item label="路由策略" class="both"> <el-form-item label="路由策略" class="both">
...@@ -446,11 +468,38 @@ import { ...@@ -446,11 +468,38 @@ import {
add, add,
update, update,
} from "@/api/job.js"; } from "@/api/job.js";
import { monitorEquiplist } from "../../setting/api.js";
import { successAlert, warningAlert } from "@/utils/alert"; import { successAlert, warningAlert } from "@/utils/alert";
export default { export default {
data() { data() {
return { return {
visible: false, visible: false,
itemOptions: [
"测量周期",
"漏缆一般告警门限",
"漏缆重要告警门限",
"漏缆紧急告警门限",
"监测服务器IP地址",
"设备输出功率",
"设备的起始频率",
"设备的终止频率",
"上行漏缆1起始位置",
"上行漏缆1终止位置",
"上行漏缆1百米损耗",
"上行漏缆1相对传播速度",
"下行漏缆1起始位置",
"下行漏缆1终止位置",
"下行漏缆1百米损耗",
"下行漏缆1相对传播速度",
"上行漏缆2起始位置",
"上行漏缆2终止位置",
"上行漏缆2百米损耗",
"上行漏缆2相对传播速度",
"下行漏缆2起始位置",
"下行漏缆2终止位置",
"下行漏缆2百米损耗",
"下行漏缆2相对传播速度",
],
scheduleType: [ scheduleType: [
{ {
value: "NONE", value: "NONE",
...@@ -578,14 +627,21 @@ export default { ...@@ -578,14 +627,21 @@ export default {
executorHandler: "", executorHandler: "",
author: "", author: "",
}, },
addFrom: {}, addFrom: {
glueType: "BEAN",
executorHandler: "pollingHandler",
executorParam: {
equipId: "",
params: [],
},
},
params: { params: {
current: 1, current: 1,
size: 10, size: 10,
}, },
resGroupList: [], resGroupList: [],
total: 0, total: 0,
activeName:'1', activeName: "1",
options: [ options: [
{ {
id: -1, id: -1,
...@@ -600,33 +656,76 @@ export default { ...@@ -600,33 +656,76 @@ export default {
label: "停止", label: "停止",
}, },
], ],
equipTableData: [],
page: {
currents: 1,
size: 10,
total: 100,
},
}; };
}, },
mounted() { mounted() {
this.handleJobGroupList(); this.handleJobGroupList();
this.getTableData();
}, },
methods: { methods: {
handleChange(value) {
console.log(value);
this.addFrom.executorParam.params = value; // 直接更新数据模型
},
loadMore() {
if (this.page.currents * this.page.size >= this.page.total) return;
this.page.currents++;
this.getTableData();
},
getTableData() {
monitorEquiplist({
current: this.page.currents,
size: this.page.size,
}).then((res) => {
let list = this.equipTableData.concat(res.records);
this.equipTableData = list;
this.page.total = res.total;
});
},
async handleAdd() { async handleAdd() {
console.log(this.addFrom);
delete this.addFrom.addTime; delete this.addFrom.addTime;
delete this.addFrom.updateTime; delete this.addFrom.updateTime;
delete this.addFrom.glueUpdatetime; delete this.addFrom.glueUpdatetime;
console.log("----------1***********--------------");
let params1 = JSON.parse(
JSON.stringify(this.addFrom.executorParam.params)
).toString();
let datas = JSON.parse(JSON.stringify(this.addFrom));
datas.executorParam = `equipId:${this.addFrom.executorParam.equipId};\nparams:${params1}`;
if (!datas.childJobId) {
delete datas.childJobId;
}
let data = { let data = {
...this.addFrom, ...datas,
}; };
const params = new URLSearchParams(data).toString(); const params = new URLSearchParams(data).toString();
console.log("----------2***********--------------");
let res; let res;
if (this.addFrom.id) { if (this.addFrom.id) {
res = await update(params); res = await update(params);
} else { } else {
res = await add(params); res = await add(params);
} }
console.log("----------3***********--------------");
if (res.code == 200) { if (res.code == 200) {
successAlert("操作成功");
this.addDialogVisible = false; this.addDialogVisible = false;
this.addFrom = {}; this.addFrom = {
executorParam: {
equipId: "",
params: [],
},
};
this.handleJobinfoList(); this.handleJobinfoList();
this.handleClose();
} }
}, },
handleRemove() { handleRemove() {
...@@ -711,6 +810,7 @@ export default { ...@@ -711,6 +810,7 @@ export default {
}, },
handleCommand(e) { handleCommand(e) {
this.manageFrom = e.data; this.manageFrom = e.data;
this.manageFrom.addressList = "http://127.0.0.1:9998";
// jobgroup/loadById // jobgroup/loadById
// /jobinfo/nextTriggerTime // /jobinfo/nextTriggerTime
switch (e.name) { switch (e.name) {
...@@ -731,8 +831,32 @@ export default { ...@@ -731,8 +831,32 @@ export default {
} }
break; break;
case "f": case "f":
this.addFrom = e.data; let datas = JSON.parse(JSON.stringify(e.data));
let str = datas.executorParam;
let equipId = "";
let params = "";
if (datas.executorParam) {
console.log(str);
// 使用 split 方法分割字符串
let parts = str.split(";");
datas.executorParam = {};
// 遍历分割后的数组,提取 equipId 和 params
parts.forEach((part) => {
if (part.startsWith("equipId:")) {
equipId = part.split(":")[1];
} else if (part.startsWith("\nparams:")) {
params = part.split(":")[1].split(",");
}
});
}
this.addDialogVisible = true; this.addDialogVisible = true;
this.addFrom = datas;
this.$set(this.addFrom.executorParam, "equipId", equipId);
this.$set(this.addFrom.executorParam, "params", params);
break; break;
case "g": case "g":
this.handleRemove(); this.handleRemove();
......
...@@ -70,7 +70,6 @@ ...@@ -70,7 +70,6 @@
<el-button type="text" @click="handleView(scope.row.triggerMsg)" <el-button type="text" @click="handleView(scope.row.triggerMsg)"
>查看</el-button >查看</el-button
> >
<!-- <div v-html="scope.row.triggerMsg"></div> -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="handleTime" label="执行时间" align="center" /> <el-table-column prop="handleTime" label="执行时间" align="center" />
...@@ -82,6 +81,13 @@ ...@@ -82,6 +81,13 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="handleMsg" label="执行备注" align="center" /> <el-table-column prop="handleMsg" label="执行备注" align="center" />
<el-table-column prop="handleMsg" label="参数结果" align="center">
<template slot-scope="scope">
<el-button type="text" @click="handleOpenView(scope.row)"
>查看</el-button
>
</template>
</el-table-column>
</el-table> </el-table>
<Pagination <Pagination
:limit="params.size" :limit="params.size"
...@@ -99,11 +105,24 @@ ...@@ -99,11 +105,24 @@
> >
<div v-html="dialogInfo"></div> <div v-html="dialogInfo"></div>
</el-dialog> </el-dialog>
<el-dialog
title="参数结果"
:visible.sync="DialogVisible"
width="600px"
center
>
<div class="boxlist">
<div v-for="(item,index) in dialogOpenInfo" :key="index">
{{index}}: {{item}}
</div>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { jobgroupList, joblogList } from "@/api/job.js"; import { jobgroupList, joblogList, selectByEquipldAndTime } from "@/api/job.js";
export default { export default {
data() { data() {
return { return {
...@@ -116,6 +135,7 @@ export default { ...@@ -116,6 +135,7 @@ export default {
tableData: [], tableData: [],
dialogInfo: "", dialogInfo: "",
centerDialogVisible: false, centerDialogVisible: false,
DialogVisible: false,
form: { form: {
jobGroup: 0, jobGroup: 0,
jobId: 0, jobId: 0,
...@@ -128,6 +148,7 @@ export default { ...@@ -128,6 +148,7 @@ export default {
}, },
total: 0, total: 0,
dateRange: [], dateRange: [],
dialogOpenInfo: "",
}; };
}, },
mounted() { mounted() {
...@@ -157,6 +178,25 @@ export default { ...@@ -157,6 +178,25 @@ export default {
this.dialogInfo = e; this.dialogInfo = e;
this.centerDialogVisible = true; this.centerDialogVisible = true;
}, },
async handleOpenView(e) {
let equipId;
e.executorParam.split(";").forEach((part) => {
if (part.startsWith("equipId:")) {
equipId = part.split(":")[1];
}
});
let data = {
jobLogId: equipId,
time: e.triggerTime.toString(),
};
// return;
const res = await selectByEquipldAndTime(data);
console.log(res);
this.dialogOpenInfo = JSON.parse(res.receiveMessage);
console.log(this.dialogOpenInfo);
this.DialogVisible = true;
},
handlePageChange(pageData) { handlePageChange(pageData) {
this.params.size = pageData.size; this.params.size = pageData.size;
this.params.current = pageData.page; this.params.current = pageData.page;
...@@ -216,4 +256,9 @@ export default { ...@@ -216,4 +256,9 @@ export default {
} }
} }
} }
.boxlist{
max-height: 600px;
overflow: hidden;
overflow-y: auto;
}
</style> </style>
\ No newline at end of file
...@@ -10,7 +10,7 @@ const name = defaultSettings.title || '漏缆故障定位监测系统' // page t ...@@ -10,7 +10,7 @@ const name = defaultSettings.title || '漏缆故障定位监测系统' // page t
const port = process.env.port || process.env.npm_config_port || 8890 // dev port const port = process.env.port || process.env.npm_config_port || 8890 // dev port
// const href = 'http://101.126.159.207' // const href = 'http://101.126.159.207'
const href = 'http://127.0.0.1' const href = 'http://127.0.0.1'
// const href = 'http://192.168.0.115' // const href = 'http://192.168.0.104'
const rewriteDefaultConfig = { const rewriteDefaultConfig = {
changeOrigin: true, changeOrigin: true,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment