Jelajahi Sumber

报警主机添加页面代码提交

jingyuanchao 11 bulan lalu
induk
melakukan
2da52d3aac
2 mengubah file dengan 138 tambahan dan 7 penghapusan
  1. 10 1
      src/api/iot/deviceInfo.js
  2. 128 6
      src/views/iot/deviceInfo/dialog.addAlarmHost.vue

+ 10 - 1
src/api/iot/deviceInfo.js

@@ -30,7 +30,7 @@ export function getProductDisplayName(type) {
 }
 
 
-// 查询定时任务调度列表
+// 新增/编辑监控主机
 export function editDvrHostDevice(query) {
   return request({
     url: '/iot/deviceInfo/editDvrHostDevice',
@@ -38,3 +38,12 @@ export function editDvrHostDevice(query) {
     data: query
   })
 }
+
+// 新增/编辑报警主机
+export function editAlarmHostDevice(query) {
+  return request({
+    url: '/iot/deviceInfo/editAlarmHostDevice',
+    method: 'post',
+    data: query
+  })
+}

+ 128 - 6
src/views/iot/deviceInfo/dialog.addAlarmHost.vue

@@ -182,7 +182,7 @@
                                :max="16" label="描述文字" size="small"></el-input-number>
             </el-col>
           </el-row>
-          <el-table class="w-auto" height="350" border :data="formData.subSystemList">
+          <el-table class="w-auto" max-height="350" border :data="formData.subSystemList">
             <el-table-column label="子系统号" width="120" align="center">
               <template slot-scope="r">
                 <el-input v-model="r.row.subSystemIndex" maxlength="50" placeholder=""/>
@@ -202,13 +202,73 @@
                 </el-radio-group>
               </template>
             </el-table-column>
-            <el-table-column label="操作列表" width="140" align="center">
+            <el-table-column label="操作列表" width="90" align="center">
               <template slot-scope="r">
                 <btn-tip type="text" v-if="showSubSystemDeleted(r.row)" @click="deleteSunSystem(r.row, r.$index)">删除
                 </btn-tip>
               </template>
             </el-table-column>
           </el-table>
+          <el-divider class="sensor-divider"></el-divider>
+
+          <el-row :gutter="48" style="margin-top: 1px">
+            <el-col :span='12' style='text-align: left'> 报警输入</el-col>
+            <el-col :span='12' style='text-align: right'>
+              <span>报警输入数量 :</span>
+              <el-input-number style="margin-left: 15px" @change="inputSensorNumsChange" v-model="formData.inputSensorNums" :min="1"
+                               :max="16" label="描述文字" size="small"></el-input-number>
+            </el-col>
+          </el-row>
+          <el-table class="w-auto" max-height="350" border :data="formData.inputSensorList">
+            <el-table-column label="序号" width="120" align="center">
+              <template slot-scope="r">
+                <el-input v-model="r.row.inputSensorIndex" maxlength="50" placeholder=""/>
+              </template>
+            </el-table-column>
+
+            <el-table-column label="名称" align="center">
+              <template slot-scope="r">
+                <el-input v-model="r.row.subSystemName" maxlength="50" placeholder=""/>
+              </template>
+            </el-table-column>
+            <el-table-column label="网络模块" align="center" >
+              <template slot-scope="r">
+                <el-input v-model="r.row.moduleAddress" maxlength="50" placeholder="" disabled/>
+              </template>
+            </el-table-column>
+            <el-table-column label="子系统号" align="center">
+              <template slot-scope="r">
+                <el-input v-model="r.row.subSystemIndex" maxlength="50" placeholder=""/>
+              </template>
+            </el-table-column>
+            <el-table-column label="防区类型" align="center">
+              <template slot-scope="r">
+                  <el-select prop="sensorType" v-model="r.row.sensorType">
+                    <el-option
+                      v-for="dict in sensorTypeList"
+                      :key="dict.key"
+                      :label="dict.label"
+                      :value="dict.key"
+                    />
+                  </el-select>
+              </template>
+            </el-table-column>
+            <el-table-column label="是否启用" width="160" align="center">
+              <template slot-scope="r">
+                <el-radio-group v-model="r.row.enable">
+                  <el-radio :label="0">启用</el-radio>
+                  <el-radio :label="1">禁用</el-radio>
+                </el-radio-group>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作列表" width="90" align="center">
+              <template slot-scope="r">
+                <btn-tip type="text" v-if="showInputSensorDeleted(r.row)" @click="deleteInputSensor(r.row, r.$index)">删除
+                </btn-tip>
+              </template>
+            </el-table-column>
+          </el-table>
+
         </el-form>
       </div>
 
@@ -222,7 +282,7 @@
 
 <script>
 import {mapMutations, mapState} from "vuex";
-import {editDvrHostDevice, getProductDisplayName} from "@/api/iot/deviceInfo";
+import {editAlarmHostDevice, getProductDisplayName} from "@/api/iot/deviceInfo";
 import KSelect from "@/components/common/userselect.vue";
 import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
 import * as iotApi from "@/api/iot/alarmRule";
@@ -240,6 +300,23 @@ export default {
       productList: [],
       modelList: [],
       hostConnectList: [],
+      sensorTypeList: [
+        {key:'Other',label:'其他'},
+        {key:'Displacement',label:'位移'},
+        {key:'Broken',label:'破碎'},
+        {key:'Infrared',label:'红外'},
+        {key:'Soaking',label:'水浸'},
+        {key:'Shock',label:'震动'},
+        {key:'Tamper',label:'防拆'},
+        {key:'Humidity',label:'湿度'},
+        {key:'Temperature',label:'温度'},
+        {key:'Intrusion',label:'入侵'},
+        {key:'DoorSensor',label:'门磁'},
+        {key:'Smoke',label:'烟感'},
+        {key:'IMDualidentification',label:'红外微波双鉴'},
+        {key:'Microwave',label:'微波'},
+        {key:'EmergencyButton',label:'紧急按钮'},
+      ],
       hostDeviceTypeList: [
         {id: 17, label: 'ICP_CMS6_CHI_V1_00'},
         {id: 18, label: 'AMAX2000'},
@@ -310,12 +387,22 @@ export default {
         models: "",
         hostDeviceType: "",
         enable: 0,
+        subSystemNums: 1,
         subSystemList: [{
           subSystemIndex: 0,
-          subSystemName: '111',
+          subSystemName: '子系统1',
           enable: 0
         }],
-        subSystemNums: 1,
+        inputSensorNums: 1,
+        inputSensorList: [{
+          inputSensorIndex: 0,
+          inputSensorName: '',
+          moduleAddress: '0',
+          subSystemIndex: '0',
+          sensorType: 'Other',
+          enable: 0
+        }],
+
         ...other,
       };
     },
@@ -344,7 +431,7 @@ export default {
     async onSubmit() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
-          editDvrHostDevice(this.formData).then(r => {
+          editAlarmHostDevice(this.formData).then(r => {
             if (!this.formData.id) {
               this.$modal.msgSuccess("新增成功");
             } else {
@@ -500,6 +587,38 @@ export default {
         this.formData.subSystemList.pop();
       }
       this.formData.subSystemNums = this.formData.subSystemList.length;
+    },
+
+    deleteInputSensor(row, index) {
+      if (this.formData.inputSensorList.length === 1) {
+        return;
+      }
+      this.formData.inputSensorList.splice(index, 1);
+      this.formData.inputSensorNums = this.formData.inputSensorList.length;
+    },
+    showInputSensorDeleted(row) {
+      //如果当前元素在this.formData.subSystemList第一个的位置 不显示删除按钮
+      return this.formData.inputSensorList.indexOf(row) != 0;
+
+    },
+    inputSensorNumsChange(nums) {
+      while (this.formData.inputSensorList.length < nums) {
+        let end=this.formData.inputSensorList[this.formData.inputSensorList.length-1];
+
+        this.formData.inputSensorList.push({
+          inputSensorIndex: end.inputSensorIndex+1,
+          inputSensorName: '',
+          moduleAddress: '0',
+          subSystemIndex: '0',
+          sensorType: 'Other',
+          enable: 0
+        });
+      }
+
+      while (this.formData.inputSensorList.length > nums) {
+        this.formData.inputSensorList.pop();
+      }
+      this.formData.subSystemNums = this.formData.inputSensorList.length;
     }
   },
 };
@@ -509,4 +628,7 @@ export default {
 .custom-divider {
   margin-top: 1px;
 }
+.sensor-divider {
+  margin-top: 30px;
+}
 </style>