|
@@ -2,27 +2,54 @@
|
|
|
<div class="edu-training-edit">
|
|
<div class="edu-training-edit">
|
|
|
<DialogCom :title="title" :visible.sync="isShow" width="80%" @close="onWindowClose">
|
|
<DialogCom :title="title" :visible.sync="isShow" width="80%" @close="onWindowClose">
|
|
|
<el-form :model="formData" size="small" ref="form" :inline="true" label-position="right" label-width="160px"
|
|
<el-form :model="formData" size="small" ref="form" :inline="true" label-position="right" label-width="160px"
|
|
|
- label-suffix=":" :rules="rules">
|
|
|
|
|
|
|
+ label-suffix=":" :rules="rules">
|
|
|
|
|
+ <el-form-item label="机构名称">
|
|
|
|
|
+ <org-tree
|
|
|
|
|
+ v-model="formData.orgId"
|
|
|
|
|
+ @defaultKey="getDefaultKey"
|
|
|
|
|
+ @defaultOrg="getDefaultOrg"
|
|
|
|
|
+ @click="clickTreeNode"
|
|
|
|
|
+ :defaultCheckSub="false"
|
|
|
|
|
+ :showCheckSub="false"
|
|
|
|
|
+ wholeTree
|
|
|
|
|
+ ref="orgTree"
|
|
|
|
|
+ ></org-tree>
|
|
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="规则名称" prop="ruleName">
|
|
<el-form-item label="规则名称" prop="ruleName">
|
|
|
- <el-input v-model="formData.ruleName" placeholder="请输入规则名称" clearable maxlength="50" />
|
|
|
|
|
|
|
+ <el-input v-model="formData.ruleName" placeholder="请输入规则名称" clearable maxlength="50"/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item prop="iotCode" label="所属主机">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ prop="checkRole"
|
|
|
|
|
+ label="检查人员"
|
|
|
|
|
+ v-model="formData.iotCode"
|
|
|
|
|
+ placeholder="请选择所属主机"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="dict in hostConnectList"
|
|
|
|
|
+ :key="dict.value"
|
|
|
|
|
+ :label="dict.key"
|
|
|
|
|
+ :value="dict.value"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="描述" prop="taskName">
|
|
<el-form-item label="描述" prop="taskName">
|
|
|
- <el-input v-model="formData.ruleDesc" placeholder="请输入描述" clearable maxlength="50" />
|
|
|
|
|
|
|
+ <el-input v-model="formData.ruleDesc" placeholder="请输入描述" clearable maxlength="50"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="启用" prop="taskName">
|
|
<el-form-item label="启用" prop="taskName">
|
|
|
- <el-switch v-model="formData.enabled"> </el-switch>
|
|
|
|
|
|
|
+ <el-switch v-model="formData.enabled"></el-switch>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-tabs type="border-card" v-model="selectType" @tab-click="onTabClick">
|
|
<el-tabs type="border-card" v-model="selectType" @tab-click="onTabClick">
|
|
|
<el-tab-pane v-for="item in sourceTypeList" :label="item.sourceTypeDes" :key="item.sourceType + ''"
|
|
<el-tab-pane v-for="item in sourceTypeList" :label="item.sourceTypeDes" :key="item.sourceType + ''"
|
|
|
- :name="item.sourceType + ''"></el-tab-pane>
|
|
|
|
|
|
|
+ :name="item.sourceType + ''"></el-tab-pane>
|
|
|
|
|
|
|
|
<!-- 列表组件 -->
|
|
<!-- 列表组件 -->
|
|
|
<addCom ref="soruceRlueCom" :sourceType="selectType" :sourceTypeList="selectSystemFields"
|
|
<addCom ref="soruceRlueCom" :sourceType="selectType" :sourceTypeList="selectSystemFields"
|
|
|
- :datas="ruleExpresses"></addCom>
|
|
|
|
|
|
|
+ :datas="ruleExpresses"></addCom>
|
|
|
</el-tabs>
|
|
</el-tabs>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
<div slot="footer" class="dialog-footer">
|
|
|
- <br />
|
|
|
|
|
|
|
+ <br/>
|
|
|
<el-button @click="onHide">关闭</el-button>
|
|
<el-button @click="onHide">关闭</el-button>
|
|
|
<el-button @click="onOk">确认</el-button>
|
|
<el-button @click="onOk">确认</el-button>
|
|
|
</div>
|
|
</div>
|
|
@@ -32,12 +59,13 @@
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
import * as iotApi from "@/api/iot/alarmRule.js";
|
|
import * as iotApi from "@/api/iot/alarmRule.js";
|
|
|
-import { mapState, mapMutations } from "vuex";
|
|
|
|
|
|
|
+import {mapState} from "vuex";
|
|
|
|
|
+import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
|
|
|
import addCom from '@/views/warnRule/addDialogCom.vue'
|
|
import addCom from '@/views/warnRule/addDialogCom.vue'
|
|
|
import DataRangePicker from "@/components/dateTime/daterange.picker.vue";
|
|
import DataRangePicker from "@/components/dateTime/daterange.picker.vue";
|
|
|
-import { getAddAlarmRuleInit } from "../../api/iot/alarmRule";
|
|
|
|
|
|
|
+
|
|
|
export default {
|
|
export default {
|
|
|
- components: { DataRangePicker, addCom },
|
|
|
|
|
|
|
+ components: {DataRangePicker, addCom, OrgTree},
|
|
|
dicts: [
|
|
dicts: [
|
|
|
"core_registration_project",
|
|
"core_registration_project",
|
|
|
"core_check_type",
|
|
"core_check_type",
|
|
@@ -49,14 +77,16 @@ export default {
|
|
|
return {
|
|
return {
|
|
|
formData: {
|
|
formData: {
|
|
|
id: "",
|
|
id: "",
|
|
|
|
|
+ orgId: "",
|
|
|
ruleName: "",
|
|
ruleName: "",
|
|
|
ruleDesc: "",
|
|
ruleDesc: "",
|
|
|
enabled: true,
|
|
enabled: true,
|
|
|
},
|
|
},
|
|
|
|
|
+ hostConnectList: [],
|
|
|
ruleExpresses: {},
|
|
ruleExpresses: {},
|
|
|
rules: {
|
|
rules: {
|
|
|
ruleName: [
|
|
ruleName: [
|
|
|
- { required: true, message: "请输入规则名称", trigger: 'blur' }
|
|
|
|
|
|
|
+ {required: true, message: "请输入规则名称", trigger: 'blur'}
|
|
|
]
|
|
]
|
|
|
},
|
|
},
|
|
|
sourceTypeList: [],
|
|
sourceTypeList: [],
|
|
@@ -107,20 +137,22 @@ export default {
|
|
|
this.formData.ruleDesc = "";
|
|
this.formData.ruleDesc = "";
|
|
|
this.formData.enabled = true;
|
|
this.formData.enabled = true;
|
|
|
this.formData.id = "";
|
|
this.formData.id = "";
|
|
|
|
|
+ this.formData.orgId = this.$store.getters.orgId;
|
|
|
if (initData.data.sourceTypeList.length > 0) {
|
|
if (initData.data.sourceTypeList.length > 0) {
|
|
|
this.ruleExpresses = {};
|
|
this.ruleExpresses = {};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
this.isShow = true;
|
|
this.isShow = true;
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
|
|
+ } else {
|
|
|
this.title = "编辑告警规则";
|
|
this.title = "编辑告警规则";
|
|
|
if (ruleObj.iotAlarmRule == undefined) {
|
|
if (ruleObj.iotAlarmRule == undefined) {
|
|
|
this.$message("未获取到报警规则");
|
|
this.$message("未获取到报警规则");
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
this.formData.id = ruleObj.iotAlarmRule.id;
|
|
this.formData.id = ruleObj.iotAlarmRule.id;
|
|
|
|
|
+ this.formData.orgId = ruleObj.iotAlarmRule.orgId;
|
|
|
this.formData.ruleName = ruleObj.iotAlarmRule.name;
|
|
this.formData.ruleName = ruleObj.iotAlarmRule.name;
|
|
|
|
|
+ this.formData.iotCode = ruleObj.iotAlarmRule.iotCode;
|
|
|
this.formData.ruleDesc = ruleObj.iotAlarmRule.remark;
|
|
this.formData.ruleDesc = ruleObj.iotAlarmRule.remark;
|
|
|
this.formData.enabled = ruleObj.iotAlarmRule.enabled == 1 ? true : false;
|
|
this.formData.enabled = ruleObj.iotAlarmRule.enabled == 1 ? true : false;
|
|
|
this.ruleExpresses = this.convertToRuleExpresses(ruleObj.iotAlarmRuleExpressEditVosBySourceType);
|
|
this.ruleExpresses = this.convertToRuleExpresses(ruleObj.iotAlarmRuleExpressEditVosBySourceType);
|
|
@@ -157,8 +189,7 @@ export default {
|
|
|
if (exist == undefined) {
|
|
if (exist == undefined) {
|
|
|
item.operators = [];
|
|
item.operators = [];
|
|
|
item.sourceValues = [];
|
|
item.sourceValues = [];
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
|
|
+ } else {
|
|
|
if (exist.systemFields != undefined && exist.systemFields.length > 0) {
|
|
if (exist.systemFields != undefined && exist.systemFields.length > 0) {
|
|
|
|
|
|
|
|
let existField = exist.systemFields.find(fieldItem => fieldItem.sysFieldCode == item.fieldcode);
|
|
let existField = exist.systemFields.find(fieldItem => fieldItem.sysFieldCode == item.fieldcode);
|
|
@@ -221,6 +252,8 @@ export default {
|
|
|
submitData.enabled = this.formData.enabled ? 1 : 0;
|
|
submitData.enabled = this.formData.enabled ? 1 : 0;
|
|
|
submitData.isdeleted = 0;
|
|
submitData.isdeleted = 0;
|
|
|
submitData.type = "alarm";
|
|
submitData.type = "alarm";
|
|
|
|
|
+ submitData.orgId = this.formData.orgId;
|
|
|
|
|
+ submitData.iotCode = this.formData.iotCode;
|
|
|
submitData.iotAlarmRuleExpressDtoList = [];
|
|
submitData.iotAlarmRuleExpressDtoList = [];
|
|
|
|
|
|
|
|
for (let sourceTypeKey in this.ruleExpresses) {
|
|
for (let sourceTypeKey in this.ruleExpresses) {
|
|
@@ -232,8 +265,7 @@ export default {
|
|
|
let specItem = `${i.sourceType}_${i.fieldcode}_${i.value}`
|
|
let specItem = `${i.sourceType}_${i.fieldcode}_${i.value}`
|
|
|
if (this.sourceTypeDics[i.sourceType].specsListDic[specItem] == undefined) {
|
|
if (this.sourceTypeDics[i.sourceType].specsListDic[specItem] == undefined) {
|
|
|
i.valueText = i.value
|
|
i.valueText = i.value
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
|
|
+ } else {
|
|
|
i.valueText = this.sourceTypeDics[i.sourceType].specsListDic[specItem].value;
|
|
i.valueText = this.sourceTypeDics[i.sourceType].specsListDic[specItem].value;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -250,11 +282,32 @@ export default {
|
|
|
this.$emit("success");
|
|
this.$emit("success");
|
|
|
}
|
|
}
|
|
|
submit();
|
|
submit();
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
|
|
+ } else {
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
- }
|
|
|
|
|
|
|
+ },
|
|
|
|
|
+ getConnectHostOrg() {
|
|
|
|
|
+ if (!this.formData.orgId) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ iotApi.getConnectHostOrg(this.formData.orgId).then((response) => {
|
|
|
|
|
+ this.hostConnectList = response.data;
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ getDefaultOrg(org) {
|
|
|
|
|
+ this.orgName = org.name;
|
|
|
|
|
+ this.formData.orgId = org.id;
|
|
|
|
|
+ this.getConnectHostOrg();
|
|
|
|
|
+ },
|
|
|
|
|
+ getDefaultKey(key) {
|
|
|
|
|
+ this.formData.orgId = key;
|
|
|
|
|
+ this.getConnectHostOrg();
|
|
|
|
|
+ },
|
|
|
|
|
+ // 节点单击事件
|
|
|
|
|
+ clickTreeNode(data) {
|
|
|
|
|
+ this.formData.orgId = data.id;
|
|
|
|
|
+ this.getConnectHostOrg();
|
|
|
|
|
+ },
|
|
|
// 事件
|
|
// 事件
|
|
|
//apimark//
|
|
//apimark//
|
|
|
},
|
|
},
|
|
@@ -272,8 +325,9 @@ export default {
|
|
|
font-size: 16px;
|
|
font-size: 16px;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
color: white !important;
|
|
color: white !important;
|
|
|
- font-family: Arial, sans-serif;
|
|
|
|
|
|
|
+ font-family: Arial, sans-serif;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
/* 鼠标悬浮时样式 */
|
|
/* 鼠标悬浮时样式 */
|
|
|
::v-deep .el-tabs__item:hover {
|
|
::v-deep .el-tabs__item:hover {
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
@@ -281,7 +335,7 @@ export default {
|
|
|
font-size: 16px;
|
|
font-size: 16px;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
color: white !important;
|
|
color: white !important;
|
|
|
- font-family: Arial, sans-serif;
|
|
|
|
|
|
|
+ font-family: Arial, sans-serif;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
::v-deep .el-tabs__item {
|
|
::v-deep .el-tabs__item {
|
|
@@ -290,27 +344,29 @@ export default {
|
|
|
font-size: 16px;
|
|
font-size: 16px;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
|
|
|
|
|
- font-family: Arial, sans-serif;
|
|
|
|
|
|
|
+ font-family: Arial, sans-serif;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-::v-deep .el-tabs__nav-wrap{
|
|
|
|
|
|
|
+::v-deep .el-tabs__nav-wrap {
|
|
|
background-color: #d7d7d7 !important;
|
|
background-color: #d7d7d7 !important;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-::v-deep .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{
|
|
|
|
|
|
|
+::v-deep .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active {
|
|
|
background-color: #3a3b3b;
|
|
background-color: #3a3b3b;
|
|
|
}
|
|
}
|
|
|
-::v-deep .el-radio-button--medium .el-radio-button__inner{
|
|
|
|
|
|
|
+
|
|
|
|
|
+::v-deep .el-radio-button--medium .el-radio-button__inner {
|
|
|
opacity: 0.5;
|
|
opacity: 0.5;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner{
|
|
|
|
|
|
|
+::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
|
|
|
opacity: 1;
|
|
opacity: 1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
</style>
|
|
</style>
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
-.edu-training-edit {}
|
|
|
|
|
|
|
+.edu-training-edit {
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
.titleDiv {
|
|
.titleDiv {
|
|
|
margin-top: 20px;
|
|
margin-top: 20px;
|