Commit e6735d75 authored by dupengyu's avatar dupengyu

- 轮询管理

- 告警
parent 4f6e02dd
......@@ -99,6 +99,15 @@ export function joblogList(data) {
data
})
}
export function selectByEquipldAndTime(data) {
return request({
url: '/device/joblog/selectByEquipIdAndTime',
method: 'post',
data
})
}
/* 执行器管理 */
export function jobgroupList(data) {
......
......@@ -19,6 +19,7 @@ import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels,
import DictTag from '@/components/DictTag'
import RightToolbar from '@/components/RightToolbar'
import Print from 'vue-print-nb'
import './utils/scroll.js'
// 字典数据组件
import DictData from '@/components/DictData'
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 @@
</template>
</el-table-column>
<el-table-column
prop="alarmthreshold"
prop="alarmThreshold"
label="告警触发值"
width="150"
align="center"
......@@ -136,7 +136,7 @@
v-if="scope.row.confirmStatus == 1"
type="text"
@click="eliminate(scope.row)"
>消除</el-button
>消除</el-button
>
</template>
</el-table-column>
......
......@@ -120,6 +120,7 @@
>
<el-form :model="manageFrom" ref="form" size="mini">
<el-form-item label="任务参数:">
<!-- disabled -->
<el-input
type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }"
......@@ -131,6 +132,7 @@
<el-form-item label="机器地址:">
<el-input
type="textarea"
disabled
:autosize="{ minRows: 2, maxRows: 4 }"
placeholder="请输入本次执行的机器地址,为空则从执行器获取"
v-model="manageFrom.addressList"
......@@ -235,7 +237,7 @@
trigger="hover"
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">
<pre>
输入内容为【秒 分 时 日 月 周 年】中间空格隔开
......@@ -336,7 +338,7 @@
<el-form-item label="运行模式" class="both">
<!-- 运行模式 BEAN -->
<el-select v-model="addFrom.glueType" placeholder="请选择">
<el-select disabled v-model="addFrom.glueType" placeholder="请选择">
<el-option
v-for="item in glueType"
:key="item.value"
......@@ -348,20 +350,40 @@
</el-form-item>
<el-form-item label="JobHandler" class="both">
<el-input
disabled
placeholder="请输入负责人"
:disabled="addFrom.glueType != 'BEAN'"
v-model="addFrom.executorHandler"
>
</el-input>
</el-form-item>
<el-form-item label="任务设备" class="one">
<el-select
v-model="addFrom.executorParam.equipId"
placeholder="请选择"
v-loadmore="loadMore"
>
<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-input
type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }"
placeholder="请输入本次执行的机器地址,为空则从执行器获取"
v-model="addFrom.executorParam"
<el-checkbox-group
v-model="addFrom.executorParam.params"
:min="0"
:max="100"
>
</el-input>
<el-checkbox
v-for="city in itemOptions"
:label="city"
:key="city"
>{{ city }}</el-checkbox
>
</el-checkbox-group>
</el-form-item>
<div class="mini-title">高级配置</div>
<el-form-item label="路由策略" class="both">
......@@ -446,11 +468,38 @@ import {
add,
update,
} from "@/api/job.js";
import { monitorEquiplist } from "../../setting/api.js";
import { successAlert, warningAlert } from "@/utils/alert";
export default {
data() {
return {
visible: false,
itemOptions: [
"测量周期",
"漏缆一般告警门限",
"漏缆重要告警门限",
"漏缆紧急告警门限",
"监测服务器IP地址",
"设备输出功率",
"设备的起始频率",
"设备的终止频率",
"上行漏缆1起始位置",
"上行漏缆1终止位置",
"上行漏缆1百米损耗",
"上行漏缆1相对传播速度",
"下行漏缆1起始位置",
"下行漏缆1终止位置",
"下行漏缆1百米损耗",
"下行漏缆1相对传播速度",
"上行漏缆2起始位置",
"上行漏缆2终止位置",
"上行漏缆2百米损耗",
"上行漏缆2相对传播速度",
"下行漏缆2起始位置",
"下行漏缆2终止位置",
"下行漏缆2百米损耗",
"下行漏缆2相对传播速度",
],
scheduleType: [
{
value: "NONE",
......@@ -578,14 +627,21 @@ export default {
executorHandler: "",
author: "",
},
addFrom: {},
addFrom: {
glueType: "BEAN",
executorHandler: "pollingHandler",
executorParam: {
equipId: "",
params: [],
},
},
params: {
current: 1,
size: 10,
},
resGroupList: [],
total: 0,
activeName:'1',
activeName: "1",
options: [
{
id: -1,
......@@ -600,33 +656,76 @@ export default {
label: "停止",
},
],
equipTableData: [],
page: {
currents: 1,
size: 10,
total: 100,
},
};
},
mounted() {
this.handleJobGroupList();
this.getTableData();
},
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() {
console.log(this.addFrom);
delete this.addFrom.addTime;
delete this.addFrom.updateTime;
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 = {
...this.addFrom,
...datas,
};
const params = new URLSearchParams(data).toString();
console.log("----------2***********--------------");
let res;
if (this.addFrom.id) {
res = await update(params);
} else {
res = await add(params);
}
console.log("----------3***********--------------");
if (res.code == 200) {
successAlert("操作成功");
this.addDialogVisible = false;
this.addFrom = {};
this.addFrom = {
executorParam: {
equipId: "",
params: [],
},
};
this.handleJobinfoList();
this.handleClose();
}
},
handleRemove() {
......@@ -711,6 +810,7 @@ export default {
},
handleCommand(e) {
this.manageFrom = e.data;
this.manageFrom.addressList = "http://127.0.0.1:9998";
// jobgroup/loadById
// /jobinfo/nextTriggerTime
switch (e.name) {
......@@ -731,8 +831,32 @@ export default {
}
break;
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.addFrom = datas;
this.$set(this.addFrom.executorParam, "equipId", equipId);
this.$set(this.addFrom.executorParam, "params", params);
break;
case "g":
this.handleRemove();
......
......@@ -70,7 +70,6 @@
<el-button type="text" @click="handleView(scope.row.triggerMsg)"
>查看</el-button
>
<!-- <div v-html="scope.row.triggerMsg"></div> -->
</template>
</el-table-column>
<el-table-column prop="handleTime" label="执行时间" align="center" />
......@@ -82,6 +81,13 @@
</template>
</el-table-column>
<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>
<Pagination
:limit="params.size"
......@@ -99,11 +105,24 @@
>
<div v-html="dialogInfo"></div>
</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>
</template>
<script>
import { jobgroupList, joblogList } from "@/api/job.js";
import { jobgroupList, joblogList, selectByEquipldAndTime } from "@/api/job.js";
export default {
data() {
return {
......@@ -116,6 +135,7 @@ export default {
tableData: [],
dialogInfo: "",
centerDialogVisible: false,
DialogVisible: false,
form: {
jobGroup: 0,
jobId: 0,
......@@ -128,6 +148,7 @@ export default {
},
total: 0,
dateRange: [],
dialogOpenInfo: "",
};
},
mounted() {
......@@ -157,6 +178,25 @@ export default {
this.dialogInfo = e;
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) {
this.params.size = pageData.size;
this.params.current = pageData.page;
......@@ -216,4 +256,9 @@ export default {
}
}
}
.boxlist{
max-height: 600px;
overflow: hidden;
overflow-y: auto;
}
</style>
\ No newline at end of file
......@@ -10,7 +10,7 @@ const name = defaultSettings.title || '漏缆故障定位监测系统' // page t
const port = process.env.port || process.env.npm_config_port || 8890 // dev port
// const href = 'http://101.126.159.207'
const href = 'http://127.0.0.1'
// const href = 'http://192.168.0.115'
// const href = 'http://192.168.0.104'
const rewriteDefaultConfig = {
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