浏览代码

Merge branch 'master' of http://192.168.1.43:3000/v3/v3-lab-web

dedsudiyu 1 年之前
父节点
当前提交
f957bfbb41

+ 8 - 0
src/api/commonality/noPermission.js

@@ -188,3 +188,11 @@ export function laboratorySubRelInfoList(data) {
     data: data
   })
 }
+//根据名称查询实验室列表
+export function systemSubjectGetList(data) {
+  return request({
+    url: '/system/subject/getList',
+    method: 'post',
+    data: data
+  })
+}

+ 92 - 0
src/api/iotDevice/index.js

@@ -459,3 +459,95 @@ export function iotNetworkDetail(data) {
     data: data
   })
 }
+
+//硬件分类-新增
+export function iotHardwareTypeAdd(data) {
+  return request({
+    url: '/iot/hardwareType/add',
+    method: 'post',
+    data: data
+  })
+}
+//硬件分类-编辑
+export function iotHardwareTypeUpdate(data) {
+  return request({
+    url: '/iot/hardwareType/update',
+    method: 'post',
+    data: data
+  })
+}
+//硬件分类-列表
+export function iotHardwareTypeList(data) {
+  return request({
+    url: '/iot/hardwareType/list',
+    method: 'post',
+    data: data
+  })
+}
+//硬件分类-删除
+export function iotHardwareTypeDelete(data) {
+  return request({
+    url: '/iot/hardwareType/delete',
+    method: 'post',
+    data: data
+  })
+}
+//硬件分类-详情
+export function iotHardwareTypeDetail(query) {
+  return request({
+    url: '/iot/hardwareType/detail',
+    method: 'get',
+    params: query
+  })
+}
+
+//硬件设备-新增
+export function iotHardwareAdd(data) {
+  return request({
+    url: '/iot/hardware/add',
+    method: 'post',
+    data: data
+  })
+}
+//硬件设备-编辑
+export function iotHardwareUpdate(data) {
+  return request({
+    url: '/iot/hardware/update',
+    method: 'post',
+    data: data
+  })
+}
+//硬件设备-列表
+export function iotHardwareList(data) {
+  return request({
+    url: '/iot/hardware/list',
+    method: 'post',
+    data: data
+  })
+}
+//硬件设备-删除
+export function iotHardwareDelete(data) {
+  return request({
+    url: '/iot/hardware/delete',
+    method: 'post',
+    data: data
+  })
+}
+//硬件设备-新增-获取硬件分类
+export function iotHardwareTypeFindHardwareType(data) {
+  return request({
+    url: '/iot/hardwareType/findHardwareType',
+    method: 'post',
+    data: data
+  })
+}
+//硬件设备-新增-根据类型查询物联设备
+export function iotDeviceFindByType(data) {
+  return request({
+    url: '/iot/device/findByType',
+    method: 'post',
+    data: data
+  })
+}
+
+

+ 45 - 59
src/views/iotDevice/hardwareManagement/hardwareClassification/index.vue

@@ -5,16 +5,16 @@
       <div class="page-form-title-box">
         <el-form :model="queryParams" class="form-box" ref="queryForm"
                  :inline="true" style="width:100%;">
-          <el-form-item label="" prop="queryParamsData1">
+          <el-form-item label="" prop="searchValue">
             <el-input
               maxLength="30"
-              v-model="queryParams.queryParamsData1"
+              v-model="queryParams.searchValue"
               placeholder="请输入名称或标识"
               style="width: 200px"
             />
           </el-form-item>
-          <el-form-item label="" prop="queryParamsData2">
-            <el-select v-model="queryParams.queryParamsData2" placeholder="请选择状态" style="width: 200px">
+          <el-form-item label="" prop="state">
+            <el-select v-model="queryParams.state" placeholder="请选择状态" style="width: 200px">
               <el-option
                 v-for="dict in optionList"
                 :key="dict.value"
@@ -34,9 +34,9 @@
       </div>
       <div class="page-content-box">
         <el-table class="table-box" v-loading="loading" border :data="dataList">
-          <el-table-column label="名称" prop="name"  show-overflow-tooltip/>
+          <el-table-column label="名称" prop="hardwareTypeName"  show-overflow-tooltip/>
           <el-table-column label="编号" prop="content" width="200" show-overflow-tooltip/>
-          <el-table-column label="标识" prop="content" width="200" show-overflow-tooltip/>
+          <el-table-column label="标识" prop="hardwareTypeKey" width="200" show-overflow-tooltip/>
           <el-table-column label="状态" prop="state" width="100" show-overflow-tooltip>
             <template slot-scope="scope">
               <el-switch
@@ -90,22 +90,22 @@
                :close-on-click-modal="false" :close-on-press-escape="false">
       <el-form :model="dialogForm" ref="dialogForm" :inline="true"
                :rules="dialogRules" class="addCheckPage-min" label-width="120px">
-        <el-form-item label="名称" prop="data1">
-          <el-input v-model="dialogForm.data1" placeholder="请输入名称" maxLength="10" style="width:320px;"/>
+        <el-form-item label="名称" prop="hardwareTypeName">
+          <el-input v-model="dialogForm.hardwareTypeName" placeholder="请输入名称" maxLength="10" style="width:320px;"/>
         </el-form-item>
-        <el-form-item label="标识" prop="data2">
-          <el-input v-model="dialogForm.data2" placeholder="请输入名称" maxLength="10" style="width:320px;"/>
+        <el-form-item label="标识" prop="hardwareTypeKey">
+          <el-input v-model="dialogForm.hardwareTypeKey" placeholder="请输入名称" maxLength="10" style="width:320px;"/>
         </el-form-item>
         <div>
-          <el-form-item label="关联继电器" prop="data3">
-            <el-radio-group v-model="dialogForm.data3">
+          <el-form-item label="关联继电器" prop="correlationRelay">
+            <el-radio-group v-model="dialogForm.correlationRelay">
               <el-radio :label="true" style="margin-left:20px;">是</el-radio>
               <el-radio :label="false">否</el-radio>
             </el-radio-group>
           </el-form-item>
         </div>
-        <el-form-item label="状态" prop="data4">
-          <el-radio-group v-model="dialogForm.data4">
+        <el-form-item label="状态" prop="state">
+          <el-radio-group v-model="dialogForm.state">
             <el-radio :label="true" style="margin-left:20px;">启用</el-radio>
             <el-radio :label="false">禁用</el-radio>
           </el-radio-group>
@@ -122,15 +122,15 @@
   </div>
 </template>
 <script>
-  //import { getDicts } from "@/api/commonality/noPermission";
-  //import { systemUserSelect } from "@/api/commonality/permission";
-  //import { getInfo } from "@/api/basicsModules/index";
-  //import addPage from "./addPage.vue";
+import {
+  iotHardwareTypeAdd,
+  iotHardwareTypeUpdate,
+  iotHardwareTypeList,
+  iotHardwareTypeDelete
+} from '@/api/iotDevice/index'
+
   export default {
     name: 'index',
-    //components: {
-    //  addPage
-    //},
     data () {
       return {
         tableButtonType:this.hasPermiDom(['demo:demo:detail','demo:demo:edit','demo:demo:del',]),
@@ -144,8 +144,8 @@
         queryParams:{
           page:1,
           pageSize:20,
-          queryParamsData1:"",
-          queryParamsData2 :null,
+          searchValue:"",
+          state :null,
         },
         //列表数据
         dataList:[],
@@ -158,19 +158,19 @@
         dialogType:false,
         dialogForm:{},
         dialogRules:{
-          data1: [
+          hardwareTypeName: [
             { required: true, message: "请输入名称", trigger: "blur" },
             { required: true, message: "请输入名称", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data2: [
+          hardwareTypeKey: [
             { required: true, message: "请输入标识", trigger: "blur" },
             { required: true, message: "请输入标识", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data3: [
+          correlationRelay: [
             { required: true, message: "请选择是否关联", trigger: "blur" },
             { required: true, message: "请选择是否关联", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data4: [
+          state: [
             { required: true, message: "请选择状态", trigger: "blur" },
             { required: true, message: "请选择状态", validator: this.spaceJudgment, trigger: "blur" }
           ],
@@ -181,7 +181,7 @@
 
     },
     mounted () {
-      //this.getList();
+      this.getList();
     },
     methods: {
       //查询按钮
@@ -194,8 +194,8 @@
         this.$set(this,'queryParams',{
           page:1,
           pageSize:20,
-          queryParamsData1:"",
-          queryParamsData2 :null,
+          searchValue:"",
+          state :null,
         });
         this.getList();
       },
@@ -203,7 +203,7 @@
       getList(){
         this.$set(this,'loading',true);
         let obj = JSON.parse(JSON.stringify(this.queryParams))
-        getListFunction(obj).then(response => {
+        iotHardwareTypeList(obj).then(response => {
           this.$set(this,'loading',false);
           this.$set(this,'dataList',response.data.records);
           this.$set(this,'total',response.data.total);
@@ -225,7 +225,7 @@
             type: "warning"
           }).then(function() {
           }).then(() => {
-            deleteFunction({id:row.id}).then(response => {
+            iotHardwareTypeDelete({hardwareTypeId:row.hardwareTypeId}).then(response => {
               self.msgSuccess(response.message)
               self.getList();
             });
@@ -239,7 +239,7 @@
             type: "warning"
           }).then(function() {
           }).then(() => {
-            stateFunction({id:row.id,state:!row.state,}).then(response => {
+            iotHardwareTypeUpdate({hardwareTypeId:row.hardwareTypeId,state:!row.state,}).then(response => {
               self.msgSuccess(response.message)
               self.getList();
             });
@@ -259,14 +259,10 @@
       dialogFormReset(){
         this.$set(this,'dialogTitle','新增');
         this.$set(this,'dialogForm',{
-          name:"",
-          code:"",
-          attrName:"",
-          unit:"",
-          icon:"",
-          exceptionIcon:"",
-          sort:1,
-          state:true,
+          hardwareTypeName:"",
+          hardwareTypeKey:"",
+          correlationRelay:"",
+          state:"",
         });
         this.$set(this,'dialogType',true);
       },
@@ -275,30 +271,20 @@
         this.$refs["dialogForm"].validate(valid => {
           if (valid) {
             let obj = {
-              typeId:this.propsData.typeId,
-              typeKey:this.propsData.typeKey,
-              name:this.dialogForm.name,
-              code:this.dialogForm.code,
-              attrName:this.dialogForm.attrName,
-              unit:this.dialogForm.unit,
-              sort:this.dialogForm.sort,
-              threshhold:this.dialogForm.threshhold?this.dialogForm.threshhold:0,
-              isFluctuation:this.dialogForm.isFluctuation?this.dialogForm.isFluctuation:false,
-              fluctuationDirection:this.dialogForm.fluctuationDirection,
-              fluctuationRange:this.dialogForm.fluctuationRange?this.dialogForm.fluctuationRange:0,
-              remark:this.dialogForm.remark,
-              icon:this.dialogForm.icon,
-              exceptionIcon:this.dialogForm.exceptionIcon,
+              hardwareTypeId:this.dialogForm.hardwareTypeId,
+              hardwareTypeName:this.dialogForm.hardwareTypeName,
+              hardwareTypeKey:this.dialogForm.hardwareTypeKey,
+              correlationRelay:this.dialogForm.correlationRelay,
+              state:this.dialogForm.state,
             }
-            if(this.dialogForm.id){
-              obj.id = this.dialogForm.id;
-              iotAttributeUpdate(obj).then(response => {
+            if(this.dialogForm.hardwareTypeId){
+              iotHardwareTypeUpdate(obj).then(response => {
                 this.msgSuccess(response.message)
                 this.dialogOff();
                 this.getList();
               });
             }else{
-              iotAttributeAdd(obj).then(response => {
+              iotHardwareTypeAdd(obj).then(response => {
                 this.msgSuccess(response.message)
                 this.dialogOff();
                 this.getList();

+ 205 - 113
src/views/iotDevice/hardwareManagement/hardwareEquipment/index.vue

@@ -5,56 +5,64 @@
       <div class="page-form-title-box">
         <el-form :model="queryParams" class="form-box" ref="queryForm"
                  :inline="true" style="width:100%;">
-          <el-form-item label="" prop="queryParamsData1">
+          <el-form-item label="" prop="searchValue">
             <el-input
               maxLength="30"
-              v-model="queryParams.queryParamsData1"
+              v-model="queryParams.searchValue"
               placeholder="请输入名称或编号"
               style="width: 200px"
             />
           </el-form-item>
-          <el-form-item label="" prop="queryParamsData2">
-            <el-select v-model="queryParams.queryParamsData2" placeholder="请选择类型" style="width: 200px">
+          <el-form-item label="" prop="hardwareTypeId">
+            <el-select v-model="queryParams.hardwareTypeId" placeholder="请选择类型" style="width: 200px" @change="typeFun">
               <el-option
-                v-for="dict in optionList"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
+                v-for="dict in typeList"
+                :key="dict.hardwareTypeId"
+                :label="dict.hardwareTypeName"
+                :value="dict.hardwareTypeId"
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="" prop="queryParamsData3">
-            <el-select v-model="queryParams.queryParamsData3" placeholder="请选择学院" style="width: 200px">
+          <el-form-item label="" prop="deptId">
+            <el-select v-model="queryParams.deptId" placeholder="请选择学院" style="width: 200px">
               <el-option
-                v-for="dict in optionList"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
+                v-for="dict in deptOptions"
+                :key="dict.deptId"
+                :label="dict.deptName"
+                :value="dict.deptId"
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="" prop="queryParamsData4">
-            <el-select v-model="queryParams.queryParamsData4" placeholder="请选择实验室" style="width: 200px">
+          <el-form-item label="" prop="subjectId">
+            <el-select
+              style="width:200px;"
+              v-model="queryParams.subjectId"
+              filterable
+              remote
+              reserve-keyword
+              @change="subChange"
+              placeholder="请搜索选择实验室"
+              :remote-method="subSelectList">
               <el-option
-                v-for="dict in optionList"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-              />
+                v-for="item in subOptions"
+                :key="item.subId"
+                :label="item.subName"
+                :value="item.subId">
+              </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="" prop="queryParamsData5">
-            <el-select v-model="queryParams.queryParamsData5" placeholder="请选择工作状态" style="width: 200px">
+          <el-form-item label="" prop="operatingState">
+            <el-select v-model="queryParams.operatingState" placeholder="请选择工作状态" style="width: 200px">
               <el-option
-                v-for="dict in optionList"
+                v-for="dict in operatingStateList"
                 :key="dict.value"
                 :label="dict.label"
                 :value="dict.value"
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="" prop="queryParamsData6">
-            <el-select v-model="queryParams.queryParamsData6" placeholder="请选择状态" style="width: 200px">
+          <el-form-item label="" prop="state">
+            <el-select v-model="queryParams.state" placeholder="请选择状态" style="width: 200px">
               <el-option
                 v-for="dict in optionList"
                 :key="dict.value"
@@ -74,12 +82,21 @@
       </div>
       <div class="page-content-box">
         <el-table class="table-box" v-loading="loading" border :data="dataList">
-          <el-table-column label="设备名" prop="name"  show-overflow-tooltip/>
-          <el-table-column label="编号" prop="content" width="200" show-overflow-tooltip/>
-          <el-table-column label="设备类型" prop="content" width="200" show-overflow-tooltip/>
-          <el-table-column label="实验室" prop="content" width="200" show-overflow-tooltip/>
-          <el-table-column label="继电器" prop="content" width="200" show-overflow-tooltip/>
-          <el-table-column label="工作状态" prop="content" width="200" show-overflow-tooltip/>
+          <el-table-column label="设备名" prop="hardwareName"  show-overflow-tooltip/>
+          <el-table-column label="编号" prop="hardwareNo" width="200" show-overflow-tooltip/>
+          <el-table-column label="设备类型" prop="hardwareTypeName" width="200" show-overflow-tooltip/>
+          <el-table-column label="实验室" prop="subjectName" width="200" show-overflow-tooltip>
+            <template slot-scope="scope">{{scope.row.subjectName?scope.row.subjectName:'-'}}</template>
+          </el-table-column>
+          <el-table-column label="继电器" prop="relayNum" width="200" show-overflow-tooltip>
+            <template slot-scope="scope">{{scope.row.relayNum?scope.row.relayNum:'-'}}</template>
+          </el-table-column>
+          <el-table-column label="工作状态" prop="operatingState" width="200" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <span v-if="scope.row.operatingState" style="color: #0183FA">运行中</span>
+              <span v-if="!scope.row.operatingState">未运行</span>
+            </template>
+          </el-table-column>
           <el-table-column label="状态" prop="state" width="100" show-overflow-tooltip>
             <template slot-scope="scope">
               <el-switch
@@ -133,28 +150,28 @@
                :close-on-click-modal="false" :close-on-press-escape="false">
       <el-form :model="dialogForm" ref="dialogForm" :inline="true"
                :rules="dialogRules" class="addCheckPage-min" label-width="120px">
-        <el-form-item label="名称" prop="data1">
-          <el-input v-model="dialogForm.data1" placeholder="请输入名称" maxLength="10" style="width:320px;"/>
+        <el-form-item label="名称" prop="hardwareName">
+          <el-input v-model="dialogForm.hardwareName" placeholder="请输入名称" maxLength="10" style="width:320px;"/>
         </el-form-item>
-        <el-form-item label="编号" prop="data2">
-          <el-input v-model="dialogForm.data2" placeholder="请输入编号" maxLength="10" style="width:320px;"/>
+        <el-form-item label="编号" prop="hardwareNo">
+          <el-input v-model="dialogForm.hardwareNo" placeholder="请输入编号" maxLength="10" style="width:320px;"/>
         </el-form-item>
-        <el-form-item label="类型" prop="data3">
-          <el-select v-model="dialogForm.data3" placeholder="请选择类型" style="width: 320px">
+        <el-form-item label="类型" prop="hardwareTypeId">
+          <el-select v-model="dialogForm.hardwareTypeId" placeholder="请选择类型" style="width: 320px" @change="typeFun">
             <el-option
-              v-for="dict in optionList"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
+              v-for="dict in typeList"
+              :key="dict.hardwareTypeId"
+              :label="dict.hardwareTypeName"
+              :value="dict.hardwareTypeId"
             />
           </el-select>
         </el-form-item>
         <!--当前类型关联继电器才显示下列配置-->
-        <div>
-          <el-form-item label="实验室:" prop="data4">
+        <div v-if="dialogForm.correlationRelay">
+          <el-form-item label="实验室:" prop="subjectId">
             <el-select
               style="width:320px;"
-              v-model="dialogForm.data4"
+              v-model="dialogForm.subjectId"
               filterable
               remote
               reserve-keyword
@@ -169,20 +186,20 @@
               </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="继电器" prop="data5">
-            <el-select v-model="dialogForm.data5" placeholder="请选择继电器" style="width: 320px">
+          <el-form-item label="继电器" prop="relayId" >
+            <el-select v-model="dialogForm.relayId" placeholder="请选择继电器" style="width: 320px" @change="relayFun">
               <el-option
-                v-for="dict in optionList"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
+                v-for="dict in relayList"
+                :key="dict.id"
+                :label="dict.deviceName"
+                :value="dict.id"
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="端子" prop="data6">
-            <el-select v-model="dialogForm.data6" placeholder="请选择继电器端子" style="width: 320px">
+          <el-form-item label="端子" prop="relayBit">
+            <el-select v-model="dialogForm.relayBit" placeholder="请选择继电器" style="width: 320px">
               <el-option
-                v-for="dict in optionList"
+                v-for="dict in terminalList"
                 :key="dict.value"
                 :label="dict.label"
                 :value="dict.value"
@@ -190,8 +207,8 @@
             </el-select>
           </el-form-item>
         </div>
-        <el-form-item label="状态" prop="data7">
-          <el-radio-group v-model="dialogForm.data7">
+        <el-form-item label="状态" prop="state">
+          <el-radio-group v-model="dialogForm.state">
             <el-radio :label="true" style="margin-left:20px;">启用</el-radio>
             <el-radio :label="false">禁用</el-radio>
           </el-radio-group>
@@ -204,19 +221,19 @@
         <p class="dialog-footer-button-null"></p>
       </div>
     </el-dialog>
-    <!--<add-page :propsData="propsData" v-if="pageType === 2"></add-page>-->
   </div>
 </template>
 <script>
-  //import { getDicts } from "@/api/commonality/noPermission";
-  //import { systemUserSelect } from "@/api/commonality/permission";
-  //import { getInfo } from "@/api/basicsModules/index";
-  //import addPage from "./addPage.vue";
+import {
+  iotHardwareAdd,
+  iotHardwareUpdate,
+  iotHardwareList,
+  iotHardwareDelete, iotHardwareTypeFindHardwareType, iotDeviceFindByType
+} from '@/api/iotDevice/index'
+import { systemSubjectGetList } from '@/api/commonality/noPermission'
+import { getDeptDropList } from '@/api/commonality/permission'
   export default {
     name: 'index',
-    //components: {
-    //  addPage
-    //},
     data () {
       return {
         tableButtonType:this.hasPermiDom(['demo:demo:detail','demo:demo:edit','demo:demo:del',]),
@@ -226,13 +243,22 @@
         loading:false,
         //下拉列表数据
         optionList:[{value:true,label:'启用'},{value:false,label:'停用'}],
+        operatingStateList:[{value:true,label:'运行中'},{value:false,label:'未运行'}],
+        terminalList:[{value:1,label:'1'},{value:2,label:'2'},{value:3,label:'3'},{value:4,label:'4'},{value:5,label:'5'},{value:6,label:'6'},{value:7,label:'7'},{value:8,label:'8'}],
         //查询条件
         queryParams:{
           page:1,
           pageSize:20,
-          queryParamsData1:"",
-          queryParamsData2 :null,
+          searchValue:"",
+          deptId :null,
+          subjectId :null,
+          subjectName :null,
+          operatingState :null,
+          state :null,
         },
+        deptOptions:[],
+        typeList:[],//类型
+        relayList:[],//继电器
         //列表数据
         dataList:[],
         //数据数量
@@ -244,31 +270,31 @@
         dialogType:false,
         dialogForm:{},
         dialogRules:{
-          data1: [
+          hardwareName: [
             { required: true, message: "请输入名称", trigger: "blur" },
             { required: true, message: "请输入名称", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data2: [
+          hardwareNo: [
             { required: true, message: "请输入编号", trigger: "blur" },
             { required: true, message: "请输入编号", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data3: [
+          hardwareTypeId: [
             { required: true, message: "请选择类型", trigger: "blur" },
             { required: true, message: "请选择类型", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data4: [
+          subjectId: [
             { required: true, message: "请搜索选择实验室", trigger: "blur" },
             { required: true, message: "请搜索选择实验室", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data5: [
+          relayId: [
             { required: true, message: "请选择继电器", trigger: "blur" },
             { required: true, message: "请选择继电器", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data6: [
+          relayBit: [
             { required: true, message: "请选择继电器端子", trigger: "blur" },
             { required: true, message: "请选择继电器端子", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data7: [
+          state: [
             { required: true, message: "请选择状态", trigger: "blur" },
             { required: true, message: "请选择状态", validator: this.spaceJudgment, trigger: "blur" }
           ],
@@ -281,7 +307,9 @@
 
     },
     mounted () {
-      //this.getList();
+      this.getDeptDropList();
+      this.iotHardwareTypeFindHardwareType();
+      this.getList();
     },
     methods: {
       //查询按钮
@@ -294,27 +322,87 @@
         this.$set(this,'queryParams',{
           page:1,
           pageSize:20,
-          queryParamsData1:"",
-          queryParamsData2 :null,
+          searchValue:"",
+          hardwareTypeId :null,
+          deptId :null,
+          subjectId :null,
+          subjectName :null,
+          operatingState :null,
+          state :null,
         });
         this.getList();
       },
+      //查询学院列表
+      getDeptDropList(){
+        getDeptDropList({deptName:"",level:2,deptType:1}).then(response => {
+          this.$set(this, 'deptOptions', response.data)
+        });
+      },
+      //获取类型
+      iotHardwareTypeFindHardwareType(){
+        let obj={
+          searchValue:'',
+        }
+        iotHardwareTypeFindHardwareType(obj).then(response => {
+          this.$set(this,'typeList',response.data);
+        });
+      },
+      //类型选中
+      typeFun(){
+        for (let i=0;i<this.typeList.length;i++){
+            if(this.dialogForm.hardwareTypeId==this.typeList[i].hardwareTypeId){
+              this.$set(this.dialogForm,'correlationRelay',this.typeList[i].correlationRelay);
+              this.$set(this.dialogForm,'hardwareTypeName',this.typeList[i].hardwareTypeName);
+            }
+        }
+      },
+      //继电器
+      relayFun(){
+        for (let i=0;i<this.relayList.length;i++){
+          if(this.dialogForm.relayId==this.relayList[i].id){
+            this.$set(this.dialogForm,'relayNum',this.relayList[i].deviceNo);
+          }
+        }
+      },
+      //根据类型查询物联设备
+      iotDeviceFindByType(){
+        let obj={
+          searchValue:'',
+          subjectId:this.dialogForm.subjectId,
+          typeKey:'relay',//(relay 继电器,sensor 传感器)
+        }
+        iotDeviceFindByType(obj).then(response => {
+          this.$set(this,'relayList',response.data);
+        });
+      },
+
       //获取数据列表
       getList(){
         this.$set(this,'loading',true);
         let obj = JSON.parse(JSON.stringify(this.queryParams))
-        getListFunction(obj).then(response => {
+        iotHardwareList(obj).then(response => {
           this.$set(this,'loading',false);
           this.$set(this,'dataList',response.data.records);
           this.$set(this,'total',response.data.total);
         });
       },
+
       //操作按钮
       tableButton(type,row){
         let self = this;
         if(type == 3){
           //编辑
           let obj = JSON.parse(JSON.stringify(row))
+          this.subSelectList(obj.subjectName)
+          for (let i=0;i<this.typeList.length;i++){
+            if (obj.hardwareTypeId==this.typeList[i].hardwareTypeId){
+              obj.correlationRelay=this.typeList[i].correlationRelay
+            }
+          }
+          if (obj.correlationRelay){
+            //如果设备关联有继电器进行查询
+            this.iotDeviceFindByType()
+          }
           this.$set(this,'dialogForm',obj);
           this.$set(this,'dialogType',true);
         }else if(type == 4){
@@ -325,7 +413,7 @@
             type: "warning"
           }).then(function() {
           }).then(() => {
-            deleteFunction({id:row.id}).then(response => {
+            iotHardwareDelete({id:row.id}).then(response => {
               self.msgSuccess(response.message)
               self.getList();
             });
@@ -339,7 +427,7 @@
             type: "warning"
           }).then(function() {
           }).then(() => {
-            stateFunction({id:row.id,state:!row.state,}).then(response => {
+            iotHardwareUpdate({id:row.id,state:!row.state,}).then(response => {
               self.msgSuccess(response.message)
               self.getList();
             });
@@ -359,13 +447,16 @@
       dialogFormReset(){
         this.$set(this,'dialogTitle','新增');
         this.$set(this,'dialogForm',{
-          name:"",
-          code:"",
-          attrName:"",
-          unit:"",
-          icon:"",
-          exceptionIcon:"",
-          sort:1,
+          hardwareName:"",
+          hardwareNo:"",
+          hardwareTypeId:"",
+          hardwareTypeName:"",
+          correlationRelay:"",
+          subjectId:"",
+          subjectName:"",
+          relayId:"",
+          relayNum:'',
+          relayBit:'',
           state:true,
         });
         this.$set(this,'dialogType',true);
@@ -375,30 +466,27 @@
         this.$refs["dialogForm"].validate(valid => {
           if (valid) {
             let obj = {
-              typeId:this.propsData.typeId,
-              typeKey:this.propsData.typeKey,
-              name:this.dialogForm.name,
-              code:this.dialogForm.code,
-              attrName:this.dialogForm.attrName,
-              unit:this.dialogForm.unit,
-              sort:this.dialogForm.sort,
-              threshhold:this.dialogForm.threshhold?this.dialogForm.threshhold:0,
-              isFluctuation:this.dialogForm.isFluctuation?this.dialogForm.isFluctuation:false,
-              fluctuationDirection:this.dialogForm.fluctuationDirection,
-              fluctuationRange:this.dialogForm.fluctuationRange?this.dialogForm.fluctuationRange:0,
-              remark:this.dialogForm.remark,
-              icon:this.dialogForm.icon,
-              exceptionIcon:this.dialogForm.exceptionIcon,
+              id:this.dialogForm.id,
+              hardwareName:this.dialogForm.hardwareName,
+              hardwareNo:this.dialogForm.hardwareNo,
+              hardwareTypeId:this.dialogForm.hardwareTypeId,
+              hardwareTypeName:this.dialogForm.hardwareTypeName,
+              correlationRelay:this.dialogForm.correlationRelay,
+              subjectId:this.dialogForm.subjectId,
+              subjectName:this.dialogForm.subjectName,
+              relayId:this.dialogForm.relayId,
+              relayNum:this.dialogForm.relayNum,
+              relayBit:this.dialogForm.relayBit,
+              state:this.dialogForm.state,
             }
             if(this.dialogForm.id){
-              obj.id = this.dialogForm.id;
-              iotAttributeUpdate(obj).then(response => {
+              iotHardwareUpdate(obj).then(response => {
                 this.msgSuccess(response.message)
                 this.dialogOff();
                 this.getList();
               });
             }else{
-              iotAttributeAdd(obj).then(response => {
+              iotHardwareAdd(obj).then(response => {
                 this.msgSuccess(response.message)
                 this.dialogOff();
                 this.getList();
@@ -410,20 +498,24 @@
       //选中实验室
       subChange(val){
         let self = this;
-        // console.log(val)
-        // for(let i=0;i<self.optionsUser.length;i++){
-        //   if(self.optionsUser[i].userId == val){
-        //     this.$set(this,'shadeName',self.optionsUser[i].userName);
-        //     this.$set(this,'shadeMobile',self.optionsUser[i].mobile);
-        //   }
-        // }
+        console.log(val)
+        for(let i=0;i<self.subOptions.length;i++){
+          if(self.subOptions[i].subId == val){
+            this.$set(this.dialogForm,'subjectName',self.subOptions[i].subName);
+            this.$set(this.dialogForm,'subjectId',self.subOptions[i].subId);
+          }
+        }
+        if (this.dialogForm.correlationRelay){
+          //如果设备关联有继电器进行查询
+          this.iotDeviceFindByType()
+        }
       },
       //搜索实验室
       subSelectList(query){
         if (query !== '' && query.length>1) {
-          // systemUserSelectUser({"userName":query,'userType':'1'}).then(response => {
-          //   this.$set(this,'userOptions',response.data);
-          // });
+          systemSubjectGetList({"subName":query}).then(response => {
+            this.$set(this,'subOptions',response.data);
+          });
         } else {
           this.$set(this,'subOptions',[]);
         }