Browse Source

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

jingyuanchao 11 tháng trước cách đây
mục cha
commit
d93175a551

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

@@ -100,7 +100,7 @@ export function dealAlarm(data) {
   });
 }
 
-// 保存或者更新告警规则
+// 获取机构下所有主机信息 (下穿查询)
 export function getConnectHostOrg(orgId) {
   return request({
     url: `/iot/iot_alarm/getConnectHostOrg/${orgId}`,
@@ -108,6 +108,14 @@ export function getConnectHostOrg(orgId) {
   })
 }
 
+// 获取当前机构所有主机信息 (非下穿查询)
+export function getCurOrgConnectHost(orgId) {
+  return request({
+    url: `/iot/iot_alarm/getCurOrgConnectHost/${orgId}`,
+    method: 'get',
+  })
+}
+
 
 //告警类型下拉框
 export function deviceTypeList(type) {

+ 15 - 0
src/api/iot/deviceInfo.js

@@ -39,6 +39,14 @@ export function editDvrHostDevice(query) {
   })
 }
 
+// 监控主机详情
+export function dvrHostDeviceInfo(id) {
+  return request({
+    url: '/iot/deviceInfo/dvrHostDeviceInfo/'+id,
+    method: 'get',
+  })
+}
+
 // 新增/编辑报警主机
 export function editAlarmHostDevice(query) {
   return request({
@@ -47,3 +55,10 @@ export function editAlarmHostDevice(query) {
     data: query
   })
 }
+// 报警主机详情
+export function alarmHostDeviceInfo(id) {
+  return request({
+    url: '/iot/deviceInfo/alarmHostDeviceInfo/'+id,
+    method: 'get',
+  })
+}

+ 79 - 53
src/views/iot/deviceInfo/dialog.addAlarmHost.vue

@@ -110,7 +110,7 @@
             </el-col>
             <!-- 主机类型 -->
             <el-col :span="12">
-              <el-form-item label="主机类型" prop="hostDeviceType" v-show="formData.deviceProduct=='BOSCH_CMS'">
+              <el-form-item label="主机类型" prop="hostDeviceType" v-if="formData.deviceProduct=='BOSCH_CMS'">
                 <el-select style="width: 100%" v-model="formData.hostDeviceType" placeholder="请输入主机类型">
                   <el-option
                     v-for="item in hostDeviceTypeList"
@@ -129,13 +129,13 @@
             </el-col>
             <!-- 控制地址 -->
             <el-col :span="12">
-              <el-form-item label="控制地址" prop="iotAddress" v-show="formData.deviceProduct=='BOSCH_CMS'">
+              <el-form-item label="控制地址" prop="iotAddress" v-if="formData.deviceProduct=='BOSCH_CMS'">
                 <el-input v-model="formData.iotAddress" placeholder="请输入主机端口"/>
               </el-form-item>
             </el-col>
             <!-- 用户代码 -->
             <el-col :span="12">
-              <el-form-item label="用户代码" prop="deviceUserCode" v-show="formData.deviceProduct=='HengTong_CKWU01C'">
+              <el-form-item label="用户代码" prop="deviceUserCode" v-if="formData.deviceProduct=='HengTong_CKWU01C'">
                 <el-input v-model="formData.deviceUserCode" placeholder="请输入主机端口"/>
               </el-form-item>
             </el-col>
@@ -178,7 +178,8 @@
             <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="subSystemNumsChange" v-model="formData.subSystemNums" :min="1"
+              <el-input-number style="margin-left: 15px" @change="subSystemNumsChange" v-model="formData.subSystemNums"
+                               :min="1"
                                :max="16" label="描述文字" size="small"></el-input-number>
             </el-col>
           </el-row>
@@ -215,8 +216,9 @@
             <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-input-number style="margin-left: 15px" @change="inputSensorNumsChange"
+                               v-model="formData.inputSensorNums" :min="1"
+                               :max="20" label="描述文字" size="small"></el-input-number>
             </el-col>
           </el-row>
           <el-table class="w-auto" max-height="350" border :data="formData.inputSensorList">
@@ -228,10 +230,10 @@
 
             <el-table-column label="名称" align="center">
               <template slot-scope="r">
-                <el-input v-model="r.row.subSystemName" maxlength="50" placeholder=""/>
+                <el-input v-model="r.row.inputSensorName" maxlength="50" placeholder=""/>
               </template>
             </el-table-column>
-            <el-table-column label="网络模块" align="center" >
+            <el-table-column label="网络模块" align="center">
               <template slot-scope="r">
                 <el-input v-model="r.row.moduleAddress" maxlength="50" placeholder="" disabled/>
               </template>
@@ -243,14 +245,14 @@
             </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>
+                <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">
@@ -282,7 +284,7 @@
 
 <script>
 import {mapMutations, mapState} from "vuex";
-import {editAlarmHostDevice, getProductDisplayName} from "@/api/iot/deviceInfo";
+import {alarmHostDeviceInfo, 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";
@@ -301,21 +303,21 @@ export default {
       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:'紧急按钮'},
+        {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'},
@@ -331,8 +333,9 @@ export default {
         {id: 50, label: 'ICP_CMS40_CHI_V2_40'}
       ],
       formDataRules: {
-        deviceName: [{required: true, message: "请输入设备名称"}],
-        deviceProduct: [{required: true, message: "请选择产品类型"}],
+        deviceName: [{required: true, message: "请输入设备名称", trigger: 'blur'}],
+        deviceProduct: [{required: true, message: "请选择产品类型", trigger: 'blur'}],
+        iotCode: [{required: true, message: "请选择所属主机", trigger: 'blur'}],
         serverIp: [
           {required: true, message: '请输入主机Ip', trigger: 'blur'},
           {validator: this.validateIp, trigger: 'blur'}
@@ -341,15 +344,15 @@ export default {
           {required: true, message: '请输入主机端口', trigger: 'blur'},
           {validator: this.validatePort, trigger: 'blur'}
         ],
-        userName: [{required: true, message: "请输入用户名"}],
-        password: [{required: true, message: "请输入密码"}],
-        models: [{required: true, message: "请选择产品型号"}],
-        listenAddress: [{required: true, message: "请输入监听地址"}],
-        listenPort: [{required: true, message: "请输入监听端口"}],
-        hostDeviceType: [{required: true, message: "请输入主机类型"}],
-        iotAddress: [{required: true, message: "请输入主机端口"}],
-        deviceMac: [{required: true, message: "请输入MAC地址"}],
-        deviceUserCode: [{required: true, message: "请输入主机操作码"}],
+        userName: [{required: true, message: "请输入用户名", trigger: 'blur'}],
+        password: [{required: true, message: "请输入密码", trigger: 'blur'}],
+        models: [{required: true, message: "请选择产品型号", trigger: 'blur'}],
+        listenAddress: [{required: true, message: "请输入监听地址", trigger: 'blur'}],
+        listenPort: [{required: true, message: "请输入监听端口", trigger: 'blur'}],
+        hostDeviceType: [{required: true, message: "请输入主机类型", trigger: 'blur'}],
+        iotAddress: [{required: true, message: "请输入主机端口", trigger: 'blur'}],
+        deviceMac: [{required: true, message: "请输入MAC地址", trigger: 'blur'}],
+        deviceUserCode: [{required: true, message: "请输入主机操作码", trigger: 'blur'}],
       },
     };
   },
@@ -409,16 +412,24 @@ export default {
     async refresh(id, other) {
       if (!id) {
         this.reset(other);
+      } else {
+        alarmHostDeviceInfo(id).then((response) => {
+          this.formData = response.data;
+          this.initModels(this.formData.deviceProduct);
+        })
       }
     },
-    async show(orgId, name, other = {}) {
+    async show(id, orgId, name, other = {}) {
       this.formData = this.reset(other);
       this.formData.orgId = orgId;
       this.title = '新增' + name;
       this.initData();
-      this.$nextTick(() => {
-        this.$refs.form.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
-      });
+      if (id) {
+        this.title = '编辑' + name;
+        this.formData.id = id;
+        await this.refresh(id, other);
+      }
+
       this.isShow = true;
     },
     onHide() {
@@ -464,9 +475,9 @@ export default {
     },
     getConnectHostOrg() {
       if (!this.formData.orgId) {
-        return
+        return;
       }
-      iotApi.getConnectHostOrg(this.formData.orgId).then((response) => {
+      iotApi.getCurOrgConnectHost(this.formData.orgId).then((response) => {
         this.hostConnectList = response.data;
       });
     },
@@ -482,6 +493,16 @@ export default {
       }
       this.productChangeAndInitDta();
     },
+    initModels(item) {
+      // 找到选中的产品类型
+      let selectedProduct = this.productList.find(s => s.name === item);
+      if (selectedProduct) {
+        // 提取models字段并转换为数组
+        const models = JSON.parse(selectedProduct.models);
+        // 将提取的models数组赋值给modelList
+        this.modelList = models;
+      }
+    },
     validateIp(rule, value, callback) {
       if (!value) {
         return callback(new Error('请输入主机Ip'));
@@ -527,6 +548,10 @@ export default {
       return arr.includes(this.formData.deviceProduct);
     },
     productChangeAndInitDta() {
+      if (this.formData.id) {
+        //说明是编辑,可能存在原始数据,此处就不做自动填充
+        return;
+      }
       let deviceProduct = this.formData.deviceProduct;
       if (deviceProduct === "DaHua" || deviceProduct === "DaHuaAlarmHost") {
         this.formData.serverPort = "37777";
@@ -574,10 +599,10 @@ export default {
     },
     subSystemNumsChange(nums) {
       while (this.formData.subSystemList.length < nums) {
-        let end=this.formData.subSystemList[this.formData.subSystemList.length-1];
+        let end = this.formData.subSystemList[this.formData.subSystemList.length - 1];
 
         this.formData.subSystemList.push({
-          subSystemIndex: end.subSystemIndex+1,
+          subSystemIndex: Number(end.subSystemIndex) + 1,
           subSystemName: '',
           enable: 0
         });
@@ -603,10 +628,10 @@ export default {
     },
     inputSensorNumsChange(nums) {
       while (this.formData.inputSensorList.length < nums) {
-        let end=this.formData.inputSensorList[this.formData.inputSensorList.length-1];
+        let end = this.formData.inputSensorList[this.formData.inputSensorList.length - 1];
 
         this.formData.inputSensorList.push({
-          inputSensorIndex: end.inputSensorIndex+1,
+          inputSensorIndex: Number(end.inputSensorIndex) + 1,
           inputSensorName: '',
           moduleAddress: '0',
           subSystemIndex: '0',
@@ -628,6 +653,7 @@ export default {
 .custom-divider {
   margin-top: 1px;
 }
+
 .sensor-divider {
   margin-top: 30px;
 }

+ 33 - 14
src/views/iot/deviceInfo/dialog.addDvrHost.vue

@@ -131,11 +131,18 @@
 
 <script>
 import {mapMutations, mapState} from "vuex";
-import {addDvrHostDevice, editDvrHostDevice, getProductDisplayName, updateDvrHostDevice} from "@/api/iot/deviceInfo";
+import {
+  addDvrHostDevice,
+  dvrHostDeviceInfo,
+  editDvrHostDevice,
+  getProductDisplayName,
+  updateDvrHostDevice
+} from "@/api/iot/deviceInfo";
 import KSelect from "@/components/common/userselect.vue";
 import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
 import {addConfig, updateConfig} from "@/api/system/config";
 import * as iotApi from "@/api/iot/alarmRule";
+import {getCurOrgConnectHost} from "@/api/iot/alarmRule";
 
 export default {
   components: {KSelect, OrgTree},
@@ -150,8 +157,9 @@ export default {
       modelList: [],
       hostConnectList: [],
       formDataRules: {
-        deviceName: [{required: true, message: "请输入设备名称"}],
-        deviceProduct: [{required: true, message: "请选择产品类型"}],
+        deviceName: [{required: true, message: "请输入设备名称", trigger: 'blur'}],
+        deviceProduct: [{required: true, message: "请选择产品类型", trigger: 'blur'}],
+        iotCode: [{required: true, message: "请选择所属主机", trigger: 'blur'}],
         serverIp: [
           {required: true, message: '请输入主机Ip', trigger: 'blur'},
           {validator: this.validateIp, trigger: 'blur'}
@@ -160,9 +168,9 @@ export default {
           {required: true, message: '请输入主机端口', trigger: 'blur'},
           {validator: this.validatePort, trigger: 'blur'}
         ],
-        userName: [{required: true, message: "请输入用户名"}],
-        password: [{required: true, message: "请输入密码"}],
-        models: [{required: true, message: "请选择产品型号"}],
+        userName: [{required: true, message: "请输入用户名", trigger: 'blur'}],
+        password: [{required: true, message: "请输入密码", trigger: 'blur'}],
+        models: [{required: true, message: "请选择产品型号", trigger: 'blur'}],
       },
     };
   },
@@ -201,17 +209,28 @@ export default {
     async refresh(id, other) {
       if (!id) {
         this.reset(other);
+      }else {
+        dvrHostDeviceInfo( id).then((response) => {
+          this.formData =response.data;
+          if (!this.formData.models)
+          this.productChange(this.formData.deviceProduct);
+        })
       }
 
     },
-    async show(orgId, name, other = {}) {
+    async show(id,orgId, name, other = {}) {
       this.formData = this.reset(other);
       this.formData.orgId = orgId;
       this.title = '新增' + name;
-      this.initData();
-      this.$nextTick(() => {
+      await this.initData();
+      if (id){
+        this.title = '编辑' + name;
+        this.formData.id = id;
+        await this.refresh(id, other);
+      }
+      /*this.$nextTick(() => {
         this.$refs.form.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
-      });
+      });*/
       this.isShow = true;
     },
 
@@ -219,9 +238,9 @@ export default {
     onHide() {
       this.isShow = false;
       this.formData = this.reset();
-      this.$nextTick(() => {
+     /* this.$nextTick(() => {
         this.$refs.form.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
-      });
+      });*/
     },
     async onSubmit() {
       this.$refs["form"].validate((valid) => {
@@ -251,7 +270,7 @@ export default {
       }
       this.formData.orgId = data.id;
     },
-    initData() {
+    async initData() {
       getProductDisplayName('DVS').then((response) => {
         this.productList = response.data;
       })
@@ -261,7 +280,7 @@ export default {
       if (!this.formData.orgId) {
         return
       }
-      iotApi.getConnectHostOrg(this.formData.orgId).then((response) => {
+      iotApi.getCurOrgConnectHost(this.formData.orgId).then((response) => {
         this.hostConnectList = response.data;
       });
     },

+ 188 - 177
src/views/iot/deviceInfo/index.vue

@@ -1,133 +1,137 @@
 <template>
   <div class="app-container">
-      <div class="main-right-box">
-        <div class="main-search-box">
-          <el-tabs v-model="activeName" @tab-click="handleClick">
-            <el-tab-pane label="监控主机" name="dvs"></el-tab-pane>
-            <el-tab-pane label="报警主机" name="alarmHost"></el-tab-pane>
-            <el-tab-pane label="动环主机" name="fsu"></el-tab-pane>
-            <el-tab-pane label="对讲主机" name="talkDevice"></el-tab-pane>
-            <el-tab-pane label="门禁主机" name="doorDevice"></el-tab-pane>
-          </el-tabs>
-          <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
-            <el-form-item label="组织机构">
-              <org-tree
-                v-model="queryParams.orgId"
-                @defaultOrg="getDefaultOrg"
-                @checkChange="checkChange"
-                @click="clickTreeNode"
-                ref="orgTree"
-              ></org-tree>
-            </el-form-item>
+    <div class="main-right-box">
+      <div class="main-search-box">
+        <el-tabs v-model="activeName" @tab-click="handleClick">
+          <el-tab-pane label="监控主机" name="dvs"></el-tab-pane>
+          <el-tab-pane label="报警主机" name="alarmHost"></el-tab-pane>
+          <el-tab-pane label="动环主机" name="fsu"></el-tab-pane>
+          <el-tab-pane label="对讲主机" name="talkDevice"></el-tab-pane>
+          <el-tab-pane label="门禁主机" name="doorDevice"></el-tab-pane>
+        </el-tabs>
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
+          <el-form-item label="组织机构">
+            <org-tree
+              v-model="queryParams.orgId"
+              @defaultOrg="getDefaultOrg"
+              @checkChange="checkChange"
+              @click="clickTreeNode"
+              ref="orgTree"
+            ></org-tree>
+          </el-form-item>
 
-            <el-form-item label="设备名称" prop="deviceName">
-              <el-input clearable v-model="queryParams.deviceName" placeholder="请输入关键字" maxlength="50"
-                        @keyup.enter.native="handleQuery" />
-            </el-form-item>
+          <el-form-item label="设备名称" prop="deviceName">
+            <el-input clearable v-model="queryParams.deviceName" placeholder="请输入关键字" maxlength="50"
+                      @keyup.enter.native="handleQuery"/>
+          </el-form-item>
 
-            <el-form-item label="设备类型" prop="deviceType" label-width="80">
-              <el-select style="width: 100%;"  v-model="queryParams.deviceType" placeholder="设备类型"
-                         @change="searchChangeSelectDeviceType" clearable>
-                <el-option v-for="dict in deviceTypeSelectList" :key="dict.value" :label="dict.label"
-                           :value="`${dict.value}`"></el-option>
-              </el-select>
-            </el-form-item>
+          <el-form-item label="设备类型" prop="deviceType" label-width="80">
+            <el-select style="width: 100%;" v-model="queryParams.deviceType" placeholder="设备类型"
+                       @change="searchChangeSelectDeviceType" clearable>
+              <el-option v-for="dict in deviceTypeSelectList" :key="dict.value" :label="dict.label"
+                         :value="`${dict.value}`"></el-option>
+            </el-select>
+          </el-form-item>
 
-            <el-form-item label="网络状态" prop="netStatus" label-width="80" v-if="activeName!='fsu' ">
-              <el-select style="width: 100%;"  v-model="queryParams.netStatus" placeholder="网络状态"
-                         @change="searchChangeSelectNetStatus" clearable>
-                <el-option v-for="dict in netStatusList" :key="dict.value" :label="dict.label"
-                           :value="`${dict.value}`"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-form>
-          <el-row :gutter="10">
-            <el-col :span="1.5">
-              <el-button
-                type="primary"
-                icon="el-icon-search"
-                size="mini"
-                @click="handleQuery"
-              >搜索</el-button
-              >
-            </el-col>
-            <el-col :span="1.5">
-              <el-button
-                type="primary"
-                icon="el-icon-refresh"
-                size="mini"
-                @click="resetQuery"
-
-              >重置</el-button>
-            </el-col>
-            <el-col :span="1.5">
-              <el-button
-                type="primary"
-                icon="el-icon-refresh"
-                size="mini"
-                @click="addHost"
-                v-if="activeName !='fsu'"
-              >新增设备</el-button>
-            </el-col>
-            <right-toolbar
-              :showSearch.sync="showSearch"
-              @queryTable="getList"
-            ></right-toolbar>
-          </el-row>
-        </div>
-        <el-table
-          border
-          height="646"
-          size="small"
-          v-loading="loading"
-          :data="deviceInfoList"
-          @selection-change="handleSelectionChange"
+          <el-form-item label="网络状态" prop="netStatus" label-width="80" v-if="activeName!='fsu' ">
+            <el-select style="width: 100%;" v-model="queryParams.netStatus" placeholder="网络状态"
+                       @change="searchChangeSelectNetStatus" clearable>
+              <el-option v-for="dict in netStatusList" :key="dict.value" :label="dict.label"
+                         :value="`${dict.value}`"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+        <el-row :gutter="10">
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              icon="el-icon-search"
+              size="mini"
+              @click="handleQuery"
+            >搜索</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              icon="el-icon-refresh"
+              size="mini"
+              @click="resetQuery">重置
+            </el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              icon="el-icon-refresh"
+              size="mini"
+              @click="addHost"
+              v-if="activeName !='fsu'"
+            >新增设备
+            </el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch"  @queryTable="getList"></right-toolbar>
+        </el-row>
+      </div>
+      <el-table
+        border
+        height="646"
+        size="small"
+        v-loading="loading"
+        :data="deviceInfoList"
+        @selection-change="handleSelectionChange"
 
+      >
+        <!-- :header-cell-style="{backgroundColor:'#CCE8F7'}" -->
+        <!--<el-table-column type="selection" width="55" align="center" />-->
+        <el-table-column label="序号" align="center" min-width="50">
+          <template v-slot:default="scope">
+            <span v-text="getPageIndex(scope.$index)"> </span>
+          </template>
+        </el-table-column>
+        <el-table-column label="地区" align="center" prop="firstOrgName"/>
+        <el-table-column label="行社" align="center" prop="secondOrgName"/>
+        <el-table-column label="所属机构" align="center" prop="orgName"/>
+        <el-table-column label="设备类型" align="center" prop="deviceTypeName"/>
+        <el-table-column label="设备名称" align="center" prop="deviceName"/>
+        <el-table-column
+          label="网络状态"
+          align="center"
+          prop="netStatus"
+          v-if="activeName !== 'fsu'"
         >
-          <!-- :header-cell-style="{backgroundColor:'#CCE8F7'}" -->
-          <!--<el-table-column type="selection" width="55" align="center" />-->
-          <el-table-column label="序号" align="center" min-width="50">
-            <template v-slot:default="scope">
-              <span v-text="getPageIndex(scope.$index)"> </span>
-            </template>
-          </el-table-column>
-          <el-table-column label="地区" align="center" prop="firstOrgName" />
-          <el-table-column label="行社" align="center" prop="secondOrgName" />
-          <el-table-column label="所属机构" align="center" prop="orgName" />
-          <el-table-column label="设备类型" align="center" prop="deviceTypeName"  />
-          <el-table-column label="设备名称" align="center" prop="deviceName"  />
-          <el-table-column
-            label="网络状态"
-            align="center"
-            prop="netStatus"
-            v-if="activeName !== 'fsu'"
-          >
-            <template slot-scope="scope">
-              {{ getNetStatusDesc(scope.row)}}
-            </template>
-          </el-table-column>
-          <el-table-column
-            label="操作"
-            align="center"
-            class-name="small-padding fixed-width"
-          >
-            <template slot-scope="scope">
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-edit-outline"
-                @click="showDetail(scope.row)"
-              >详情</el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-        <pagination
-          :total="total"
-          :page.sync="queryParams.pageNum"
-          :limit.sync="queryParams.pageSize"
-          @pagination="getList"
-        />
-      </div>
+          <template slot-scope="scope">
+            {{ getNetStatusDesc(scope.row) }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="操作"
+          align="center"
+          class-name="small-padding fixed-width"
+        >
+          <template slot-scope="scope">
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-edit-outline"
+              @click="showDetail(scope.row)"
+            >详情
+            </el-button>
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-edit-outline"
+              @click="editDevice(scope.row)"
+            >编辑
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
     <detail-info-page ref="detailInfo"></detail-info-page>
     <add-dvr-host ref="addDvrHostDialog"></add-dvr-host>
     <add-alarm-host ref="addAlarmHostDialog"></add-alarm-host>
@@ -139,13 +143,12 @@ import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
 import detailInfoPage from "./detailDialog.vue"
 import addDvrHost from "./dialog.addDvrHost.vue"
 import addAlarmHost from "./dialog.addAlarmHost.vue"
-import { deptTreeSelect } from "@/api/system/public";
-import {
-  list,
-} from "@/api/iot/deviceInfo";
+import {deptTreeSelect} from "@/api/system/public";
+import {list,} from "@/api/iot/deviceInfo";
+
 export default {
   name: "IotDeviceInfo",
-  components: { OrgTree, detailInfoPage,addDvrHost,addAlarmHost},
+  components: {OrgTree, detailInfoPage, addDvrHost, addAlarmHost},
   data() {
     return {
       checkList: [],
@@ -157,49 +160,49 @@ export default {
         children: "children",
         label: "name",
       },
-      deviceTypeSelectList:[],
+      deviceTypeSelectList: [],
       //0:未知,1:在线,2:离线,3:异常
       netStatusList: [
-        { label: "未知", value: "0"},
-        { label: "在线", value: "1"},
-        { label: "离线", value: "2"},
-        { label: "异常", value: "3"},
+        {label: "未知", value: "0"},
+        {label: "在线", value: "1"},
+        {label: "离线", value: "2"},
+        {label: "异常", value: "3"},
       ],
       //监控主机下拉查询
       DvsDeviceTypeList: [
-        { label: "监控主机", value: "1"},
-        { label: "模拟摄像头", value: "2"},
-        { label: "数字摄像头", value: "3"}
+        {label: "监控主机", value: "1"},
+        {label: "模拟摄像头", value: "2"},
+        {label: "数字摄像头", value: "3"}
       ],
       //报警主机主机下拉查询
       AlarmHostDeviceTypeList: [
-        { label: "报警主机", value: "4"},
+        {label: "报警主机", value: "4"},
       ],
       //动环主机下拉查询
       FsuDeviceTypeList: [
-        { label: "动环主机", value: "5"},
-        { label: "烟雾传感器", value: "6"},
-        { label: "红外传感器", value: "7"},
-        { label: "温湿度传感器", value: "8"},
-        { label: "门磁传感器", value: "9"},
-        { label: "燃气传感器", value: "10"},
-        { label: "卷帘门传感器", value: "11"},
-        { label: "水浸传感器", value: "12"},
-        { label: "智能电表", value: "13"},
-        { label: "空调", value: "14"},
-        { label: "UPS", value: "15"},
-        { label: "DO8小时控电", value: "16"},
-        { label: "三相电电压传感器", value: "17"},
-        { label: "盗情传感器", value: "18"},
-        { label: "DO8小时采集", value: "21"},
+        {label: "动环主机", value: "5"},
+        {label: "烟雾传感器", value: "6"},
+        {label: "红外传感器", value: "7"},
+        {label: "温湿度传感器", value: "8"},
+        {label: "门磁传感器", value: "9"},
+        {label: "燃气传感器", value: "10"},
+        {label: "卷帘门传感器", value: "11"},
+        {label: "水浸传感器", value: "12"},
+        {label: "智能电表", value: "13"},
+        {label: "空调", value: "14"},
+        {label: "UPS", value: "15"},
+        {label: "DO8小时控电", value: "16"},
+        {label: "三相电电压传感器", value: "17"},
+        {label: "盗情传感器", value: "18"},
+        {label: "DO8小时采集", value: "21"},
       ],
       //动环主机下拉查询
       talkDeviceTypeList: [
-        { label: "对讲主机", value: "23"},
+        {label: "对讲主机", value: "23"},
       ],
       //动环主机下拉查询
       doorDeviceTypeList: [
-        { label: "门禁主机", value: "24"},
+        {label: "门禁主机", value: "24"},
       ],
       // 遮罩层
       loading: true,
@@ -248,7 +251,7 @@ export default {
   created() {
     this.getDeptTree();
     this.queryParams.deviceType = null;
-    this.queryParams.deviceTypeList = ["1","2","3"];
+    this.queryParams.deviceTypeList = ["1", "2", "3"];
     this.deviceTypeSelectList = this.DvsDeviceTypeList;
   },
 
@@ -260,18 +263,18 @@ export default {
   },
 
   methods: {
-    getNetStatusDesc(row){
-      if (row.deviceType === '2' || row.deviceType === '3'){
+    getNetStatusDesc(row) {
+      if (row.deviceType === '2' || row.deviceType === '3') {
         return "-";
-      }else {
+      } else {
         let val = row.netStatus;
-        if (val === '0'){
+        if (val === '0') {
           return "未知";
-        }else if(val === '1'){
+        } else if (val === '1') {
           return "在线";
-        }else if(val === '2'){
+        } else if (val === '2') {
           return "离线";
-        }else if(val === '3'){
+        } else if (val === '3') {
           return "异常";
         }
       }
@@ -283,19 +286,19 @@ export default {
     //切换tab栏刷新数据
     handleClick() {
       this.queryParams.deviceType = null;
-      if ("dvs" === this.activeName){
-        this.queryParams.deviceTypeList = ["1","2","3"];
+      if ("dvs" === this.activeName) {
+        this.queryParams.deviceTypeList = ["1", "2", "3"];
         this.deviceTypeSelectList = this.DvsDeviceTypeList;
-      }else if ("alarmHost" === this.activeName){
+      } else if ("alarmHost" === this.activeName) {
         this.queryParams.deviceTypeList = ["4"];
         this.deviceTypeSelectList = this.AlarmHostDeviceTypeList;
-      }else if ("fsu" === this.activeName){
-        this.queryParams.deviceTypeList = ["5","6","7","8","9","10","11","12","13","14","15","16","17","18","21"];
+      } else if ("fsu" === this.activeName) {
+        this.queryParams.deviceTypeList = ["5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "21"];
         this.deviceTypeSelectList = this.FsuDeviceTypeList;
-      }else if ("talkDevice" === this.activeName){
+      } else if ("talkDevice" === this.activeName) {
         this.queryParams.deviceTypeList = ["23"];
         this.deviceTypeSelectList = this.talkDeviceTypeList;
-      }else if ("doorDevice" === this.activeName){
+      } else if ("doorDevice" === this.activeName) {
         this.queryParams.deviceTypeList = ["24"];
         this.deviceTypeSelectList = this.doorDeviceTypeList;
       }
@@ -313,7 +316,7 @@ export default {
     },
     // 节点单击事件
     clickTreeNode(data) {
-      if(data==null){
+      if (data == null) {
         return;
       }
       this.queryParams.orgId = data.id;
@@ -380,15 +383,23 @@ export default {
         this.queryParams.netStatus = val;
       }
     },
-    showDetail(row){
-      this.$refs.detailInfo.show(row.id,row.deviceType);
+    showDetail(row) {
+      this.$refs.detailInfo.show(row.id, row.deviceType);
+    },
+    editDevice(row,other = {}) {
+      if (this.activeName == 'dvs') {
+        this.$refs.addDvrHostDialog.show(row.id,row.orgId, '监控主机', other = {});
+      }
+      if (this.activeName == 'alarmHost') {
+        this.$refs.addAlarmHostDialog.show(row.id,row.orgId, '报警主机', other = {});
+      }
     },
-    addHost(other = {}){
-      if (this.activeName=='dvs'){
-        this.$refs.addDvrHostDialog.show(this.queryParams.orgId,'监控主机',other = {});
+    addHost(other = {}) {
+      if (this.activeName == 'dvs') {
+        this.$refs.addDvrHostDialog.show(null,this.queryParams.orgId, '监控主机', other = {});
       }
-      if (this.activeName=='alarmHost'){
-        this.$refs.addAlarmHostDialog.show(this.queryParams.orgId,'报警主机',other = {});
+      if (this.activeName == 'alarmHost') {
+        this.$refs.addAlarmHostDialog.show(null,this.queryParams.orgId, '报警主机', other = {});
       }
 
     }