jingyuanchao 1 жил өмнө
parent
commit
acef015fcb

+ 11 - 1
src/api/iot/alarmRule.js

@@ -16,12 +16,14 @@ export function getAlarmRule(alarmRuleId) {
   })
 }
 
-export function getAlarmRules(alarmType, ruleName, pageIndex, pageSize) {
+export function getAlarmRules(alarmType,orgId,checkSub, ruleName, pageIndex, pageSize) {
   return request({
     url: `/iot/iot_alarm/getRules`,
     method: 'post',
     data: {
       ruleType:alarmType,
+      orgId:orgId,
+      checkSub:checkSub,
       ruleName:ruleName,
       pageNum:pageIndex,
       pageSize:pageSize,
@@ -98,4 +100,12 @@ export function dealAlarm(data) {
   });
 }
 
+// 保存或者更新告警规则
+export function getConnectHostOrg(orgId) {
+  return request({
+    url: `/iot/iot_alarm/getConnectHostOrg/${orgId}`,
+    method: 'get',
+  })
+}
+
 

+ 84 - 28
src/views/warnRule/dialog.vue

@@ -2,27 +2,54 @@
   <div class="edu-training-edit">
     <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"
-        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-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 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 label="启用" prop="taskName">
-          <el-switch v-model="formData.enabled"> </el-switch>
+          <el-switch v-model="formData.enabled"></el-switch>
         </el-form-item>
         <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 + ''"
-            :name="item.sourceType + ''"></el-tab-pane>
+                       :name="item.sourceType + ''"></el-tab-pane>
 
           <!-- 列表组件 -->
           <addCom ref="soruceRlueCom" :sourceType="selectType" :sourceTypeList="selectSystemFields"
-            :datas="ruleExpresses"></addCom>
+                  :datas="ruleExpresses"></addCom>
         </el-tabs>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <br />
+        <br/>
         <el-button @click="onHide">关闭</el-button>&nbsp;
         <el-button @click="onOk">确认</el-button>
       </div>
@@ -32,12 +59,13 @@
 
 <script>
 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 DataRangePicker from "@/components/dateTime/daterange.picker.vue";
-import { getAddAlarmRuleInit } from "../../api/iot/alarmRule";
+
 export default {
-  components: { DataRangePicker, addCom },
+  components: {DataRangePicker, addCom, OrgTree},
   dicts: [
     "core_registration_project",
     "core_check_type",
@@ -49,14 +77,16 @@ export default {
     return {
       formData: {
         id: "",
+        orgId: "",
         ruleName: "",
         ruleDesc: "",
         enabled: true,
       },
+      hostConnectList: [],
       ruleExpresses: {},
       rules: {
         ruleName: [
-          { required: true, message: "请输入规则名称", trigger: 'blur' }
+          {required: true, message: "请输入规则名称", trigger: 'blur'}
         ]
       },
       sourceTypeList: [],
@@ -107,20 +137,22 @@ export default {
         this.formData.ruleDesc = "";
         this.formData.enabled = true;
         this.formData.id = "";
+        this.formData.orgId = this.$store.getters.orgId;
         if (initData.data.sourceTypeList.length > 0) {
           this.ruleExpresses = {};
         }
 
         this.isShow = true;
-      }
-      else {
+      } else {
         this.title = "编辑告警规则";
         if (ruleObj.iotAlarmRule == undefined) {
           this.$message("未获取到报警规则");
           return;
         }
         this.formData.id = ruleObj.iotAlarmRule.id;
+        this.formData.orgId = ruleObj.iotAlarmRule.orgId;
         this.formData.ruleName = ruleObj.iotAlarmRule.name;
+        this.formData.iotCode = ruleObj.iotAlarmRule.iotCode;
         this.formData.ruleDesc = ruleObj.iotAlarmRule.remark;
         this.formData.enabled = ruleObj.iotAlarmRule.enabled == 1 ? true : false;
         this.ruleExpresses = this.convertToRuleExpresses(ruleObj.iotAlarmRuleExpressEditVosBySourceType);
@@ -157,8 +189,7 @@ export default {
       if (exist == undefined) {
         item.operators = [];
         item.sourceValues = [];
-      }
-      else {
+      } else {
         if (exist.systemFields != undefined && exist.systemFields.length > 0) {
 
           let existField = exist.systemFields.find(fieldItem => fieldItem.sysFieldCode == item.fieldcode);
@@ -221,6 +252,8 @@ export default {
             submitData.enabled = this.formData.enabled ? 1 : 0;
             submitData.isdeleted = 0;
             submitData.type = "alarm";
+            submitData.orgId = this.formData.orgId;
+            submitData.iotCode = this.formData.iotCode;
             submitData.iotAlarmRuleExpressDtoList = [];
 
             for (let sourceTypeKey in this.ruleExpresses) {
@@ -232,8 +265,7 @@ export default {
                   let specItem = `${i.sourceType}_${i.fieldcode}_${i.value}`
                   if (this.sourceTypeDics[i.sourceType].specsListDic[specItem] == undefined) {
                     i.valueText = i.value
-                  }
-                  else {
+                  } else {
                     i.valueText = this.sourceTypeDics[i.sourceType].specsListDic[specItem].value;
                   }
 
@@ -250,11 +282,32 @@ export default {
             this.$emit("success");
           }
           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//
   },
@@ -272,8 +325,9 @@ export default {
   font-size: 16px;
   font-weight: bold;
   color: white !important;
-  font-family:  Arial, sans-serif;
+  font-family: Arial, sans-serif;
 }
+
 /* 鼠标悬浮时样式 */
 ::v-deep .el-tabs__item:hover {
   cursor: pointer;
@@ -281,7 +335,7 @@ export default {
   font-size: 16px;
   font-weight: bold;
   color: white !important;
-  font-family:  Arial, sans-serif;
+  font-family: Arial, sans-serif;
 }
 
 ::v-deep .el-tabs__item {
@@ -290,27 +344,29 @@ export default {
   font-size: 16px;
   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;
 }
 
-::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;
 }
-::v-deep .el-radio-button--medium .el-radio-button__inner{
+
+::v-deep .el-radio-button--medium .el-radio-button__inner {
   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;
 }
 
 </style>
 <style lang="scss" scoped>
-.edu-training-edit {}
+.edu-training-edit {
+}
 
 .titleDiv {
   margin-top: 20px;

+ 34 - 4
src/views/warnRule/index.vue

@@ -23,7 +23,18 @@
                   </el-option>
                 </el-select>
               </el-form-item> -->
-
+              <el-form-item label="机构名称">
+                <org-tree
+                  v-model="queryParams.orgId"
+                  @defaultKey="getDefaultKey"
+                  @defaultOrg="getDefaultOrg"
+                  @checkChange="checkChange"
+                  @click="clickTreeNode"
+                  :defaultCheckSub="this.queryParams.checkSub"
+                  wholeTree
+                  ref="orgTree"
+                ></org-tree>
+              </el-form-item>
               <el-form-item label="规则名称" prop="ruleName">
                 <el-input v-model="queryParams.ruleName"> </el-input>
               </el-form-item>
@@ -108,14 +119,14 @@ import { listTask } from "@/api/core/task";
 import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
 import DialogInfo from "./dialog.vue";
 import { listPlanRole } from "@/api/core/edu/plan";
-import { formatTime } from "@/utils/ruoyi";
+import orgTree from "@/components/orgTree/orgQuerySelector.vue";
 import DataRangePicker from "@/components/dateTime/daterange.picker.vue";
 import relevanceDialog from "@/views/warnRule/relevanceDialog.vue";
 import { mapGetters } from "vuex";
 import * as iotApi from "@/api/iot/alarmRule.js";
 
 export default {
-  components: { OrgTree, DialogInfo, DataRangePicker, relevanceDialog },
+  components: { OrgTree, DialogInfo, DataRangePicker, relevanceDialog,orgTree },
   name: "Task",
   // dicts: ["sys_access_cycle"],
   dicts: ["sys_org_type", "plan_status"],
@@ -131,6 +142,8 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        checkSub: false,
+        orgId: "",
         ruleName: "",
       },
       alarmRules: [],
@@ -155,7 +168,7 @@ export default {
     /** 查询监控调阅任务列表 */
     async getList() {
       this.loading = true;
-      let rh = await iotApi.getAlarmRules("alarm", this.queryParams.ruleName, this.queryParams.pageNum, this.queryParams.pageSize);
+      let rh = await iotApi.getAlarmRules("alarm",this.queryParams.orgId,this.queryParams.checkSub, this.queryParams.ruleName, this.queryParams.pageNum, this.queryParams.pageSize);
       if (rh.code != 200) {
         this.$message("获取数据失败");
         this.loading = false;
@@ -285,6 +298,23 @@ export default {
       });
       return text;
     },
+    getDefaultOrg(org) {
+      this.orgName = org.name;
+    },
+    getDefaultKey(key) {
+      this.queryParams.orgId = key;
+      this.getList();
+    },
+    //单选框状态改变
+    checkChange(state) {
+      this.queryParams.checkSub = state;
+      this.handleQuery();
+    },
+    // 节点单击事件
+    clickTreeNode(data) {
+      this.queryParams.orgId = data.id;
+      this.handleQuery();
+    },
   },
 };
 </script>

+ 1 - 1
src/views/warnRule/relevanceDialogCom.vue

@@ -31,7 +31,7 @@
         </el-table>
       </div>
     </div>
-    <addrelvance ref="addrelvance" @addDevice="addDevice" :currentTempList="currentDevice.deviceTempList"></addrelvance>
+      <addrelvance ref="addrelvance" @addDevice="addDevice" :currentTempList="currentDevice.deviceTempList"></addrelvance>
   </div>
 </template>
 <script>