dedsudiyu hace 1 año
padre
commit
c249555dbc

+ 67 - 11
src/api/iotDevice/index.js

@@ -138,6 +138,22 @@ export function iotDeviceDataList(data) {
     data: data
   })
 }
+//物联设备-查询设备日志类型
+export function iotDeviceLogType(query) {
+  return request({
+    url: '/iot/device/log/type',
+    method: 'get',
+    params: query
+  })
+}
+//物联设备-根据设备ID查询设备日志
+export function iotDeviceLogList(data) {
+  return request({
+    url: '/iot/device/log/list',
+    method: 'post',
+    data: data
+  })
+}
 /************物联分类************/
 //物联分类列表
 export function iotTypeList(data) {
@@ -657,6 +673,46 @@ export function iotHardwareTypeGetTypeKey(query) {
     params: query
   })
 }
+//硬件分类-功能下拉列表
+export function iotHardwareFunctionDropList(data) {
+  return request({
+    url: '/iot/hardware/function/dropList',
+    method: 'post',
+    data: data
+  })
+}
+//硬件分类-功能列表
+export function iotHardwareFunctionList(data) {
+  return request({
+    url: '/iot/hardware/function/list',
+    method: 'post',
+    data: data
+  })
+}
+//硬件分类-功能新增
+export function iotHardwareFunctionAdd(data) {
+  return request({
+    url: '/iot/hardware/function/add',
+    method: 'post',
+    data: data
+  })
+}
+//硬件分类-功能编辑
+export function iotHardwareFunctionUpdate(data) {
+  return request({
+    url: '/iot/hardware/function/update',
+    method: 'post',
+    data: data
+  })
+}
+//硬件分类-功能删除
+export function iotHardwareFunctionDelete(data) {
+  return request({
+    url: '/iot/hardware/function/delete',
+    method: 'post',
+    data: data
+  })
+}
 /*********** 硬件设备 ************/
 //硬件设备-新增
 export function iotHardwareAdd(data) {
@@ -682,6 +738,14 @@ export function iotHardwareList(data) {
     data: data
   })
 }
+//硬件设备-详情
+export function iotHardwareDetail(data) {
+  return request({
+    url: '/iot/hardware/detail',
+    method: 'post',
+    data: data
+  })
+}
 //硬件设备-删除
 export function iotHardwareDelete(data) {
   return request({
@@ -706,18 +770,10 @@ export function iotDeviceFindByType(data) {
     data: data
   })
 }
-//硬件设备-查询设备日志类型
-export function iotDeviceLogType(query) {
+//硬件设备-硬件日志
+export function iotHardwareLogList(data) {
   return request({
-    url: '/iot/device/log/type',
-    method: 'get',
-    params: query
-  })
-}
-//硬件设备-根据设备ID查询设备日志
-export function iotDeviceLogList(data) {
-  return request({
-    url: '/iot/device/log/list',
+    url: '/iot/hardware/log/list',
     method: 'post',
     data: data
   })

+ 478 - 0
src/views/iotDevice/hardwareManagement/hardwareClassification/functionPage.vue

@@ -0,0 +1,478 @@
+<template>
+  <div class="page-container hardwareClassification-functionPage">
+    <div class="table-title-box">
+      <el-form :model="queryParams" class="form-box" ref="queryForm"
+               :inline="true" style="width:100%;">
+        <el-form-item label="" prop="title" style="float: right">
+          <el-col :span="1.5" style="margin-right:10px;">
+            <p class="page-submit-common-style-button"
+               @click="dialogOpen"
+            >新增</p>
+          </el-col>
+        </el-form-item>
+      </el-form>
+    </div>
+    <div class="table-content-box">
+      <el-table class="table-box" v-loading="loading" border :data="dataList">
+        <el-table-column label="名称"  prop="name" width="150" show-overflow-tooltip/>
+        <el-table-column label="接口"  prop="reqApi" show-overflow-tooltip/>
+        <el-table-column label="参数"  prop="reqParams" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <span class="clickCopy" @click="clickCopy(scope.row.reqParams)">{{scope.row.reqParams}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="请求方式"  prop="reqMethod" width="150" show-overflow-tooltip/>
+        <el-table-column label="说明"  prop="remark" width="150" show-overflow-tooltip/>
+        <el-table-column label="状态"  prop="state" width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-switch
+              @click.native="tableButton(4,scope.row)"
+              class="switch captcha-img"
+              :active-value="true"
+              :inactive-value="false"
+              active-color="#0183FA"
+              inactive-color="#999"
+              v-model="scope.row.state"
+              active-text="启用"
+              inactive-text="停用"
+              disabled
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column label="创建时间"  prop="createTime" width="160" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.createTime,"{y}-{m}-{d} {h}:{i}") }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作"  class-name="small-padding fixed-width" width="140">
+          <template slot-scope="scope">
+            <div class="table-button-box">
+              <p class="table-button-null"></p>
+              <!--<p class="table-button-p"-->
+              <!--@click="tableButton(1,scope.row)"-->
+              <!--&gt;详情</p>-->
+              <p class="table-button-p"
+                 @click="tableButton(2,scope.row)"
+              >编辑</p>
+              <p class="table-button-p"
+                 @click="tableButton(3,scope.row)"
+              >删除</p>
+              <p class="table-button-null"></p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination :page-sizes="[20, 30, 40, 50]"
+                  v-show="total>0"
+                  :total="total"
+                  :page.sync="queryParams.page"
+                  :limit.sync="queryParams.pageSize"
+                  @pagination="getList"
+      />
+    </div>
+    <!--新增弹窗-->
+    <el-dialog class="hardwareClassification-functionPage-dialog" :title='dialogTitle' width="540px" append-to-body
+               :visible.sync="dialogType" v-if="dialogType" @close="dialogOff()"
+               :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="100px">
+        <el-form-item label="名称" prop="name">
+          <el-input v-model="dialogForm.name" placeholder="请输入名称" maxLength="20" style="width:320px;"/>
+        </el-form-item>
+        <el-form-item label="接口" prop="reqApi">
+          <el-input v-model="dialogForm.reqApi" placeholder="请输入接口" maxLength="100" style="width:320px;"/>
+        </el-form-item>
+        <el-form-item label="请求方式" prop="reqMethod">
+          <el-select v-model="dialogForm.reqMethod " placeholder="请选择请求方式" style="width: 320px">
+            <el-option label="get" value="GET"/>
+            <el-option label="post" value="POST"/>
+          </el-select>
+        </el-form-item>
+        <div class="form-flex-box">
+          <p class="form-title"><span>*</span>输入参数</p>
+          <div class="form-for-max-box">
+            <div class="form-for-box" v-for="(item,index) in dialogForm.reqParams">
+              <p class="form-index-p">{{index+1}}</p>
+              <div class="form-for-big-box">
+                <div class="form-for-min-box">
+                  <el-form-item label="" :prop="'reqParams.'+ index +'.keyName'" :rules="dialogRules.keyName">
+                    <el-input v-model="item.keyName" placeholder="请输入键" maxLength="20" style="width:150px;"/>
+                  </el-form-item>
+                  <el-form-item label="" :prop="'reqParams.'+ index +'.keyType'" :rules="dialogRules.keyType">
+                    <el-select v-model="item.keyType " placeholder="请选择类型" style="width: 120px">
+                      <el-option v-for="(optionItem,optionIndex) in optionList" :key="optionItem.value" :label="optionItem.label" :value="optionItem.value"/>
+                    </el-select>
+                  </el-form-item>
+                  <span class="el-icon-remove for-button-icon"
+                        style="color:#FF6666;"
+                        @click="delMin(index)"></span>
+                </div>
+                <el-form-item label="" v-if="item.keyType === 'argument'" :prop="'reqParams.'+ index +'.keyArgument'" :rules="dialogRules.keyArgument">
+                  <el-input v-model="item.keyArgument" placeholder="请输入参数" maxLength="100" style="width:280px;"/>
+                </el-form-item>
+                <el-form-item label="" v-if="item.keyType === 'file'" :prop="'reqParams.'+ index +'.keyFile'" :rules="dialogRules.keyFile">
+                  <el-upload
+                    class="hardwareClassification-functionPage-dialog-upload"
+                    style="height:40px;"
+                    :action="uploadFile"
+                    :show-file-list="false"
+                    :on-success="(res)=>handleAvatarSuccess(res,index)"
+                    :headers="headers"
+                    :before-upload="(file)=>beforeAvatarUpload(file)">
+                    <div class="up-box">
+                      <p class="up-text-p">{{item.keyFile}}</p>
+                      <p class="up-text-p" v-if="!item.keyFile">请点击上传文件</p>
+                    </div>
+                  </el-upload>
+                </el-form-item>
+              </div>
+            </div>
+          </div>
+          <span class="el-icon-circle-plus for-button-icon"
+                style="color:#0183FA;"
+                v-if="dialogForm.reqParams.length<5" @click="addMin"></span>
+        </div>
+        <el-form-item label="说明" prop="remark">
+          <el-input placeholder="请输入说明" maxLength='100' type="textarea" style="width:320px;"
+                    resize="none" v-model="dialogForm.remark" show-word-limit :autosize="{ minRows: 2, maxRows: 2}"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer dialog-footer-box">
+        <p class="dialog-footer-button-null"></p>
+        <p class="dialog-footer-button-info" @click="dialogOff()">取消</p>
+        <p class="dialog-footer-button-primary" @click="dialogSubmit">提交</p>
+        <p class="dialog-footer-button-null"></p>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { iotHardwareFunctionList,iotHardwareFunctionAdd,iotHardwareFunctionUpdate,iotHardwareFunctionDelete } from "@/api/iotDevice/index";
+  import { getToken } from "@/utils/auth";
+  export default {
+    name: 'functionPage',
+    data(){
+      const doubleCheck = (rule, value, callback) => {
+        let self = this;
+        let num = 0;
+        for(let i=0;i<self.dialogForm.reqParams.length;i++){
+          if(value == self.dialogForm.reqParams[i].keyName){
+            num++
+          }
+        }
+        if(num > 1){
+          return callback(new Error('参数重复'));
+        }else{
+          callback();
+        }
+      };
+      return{
+        //上传相关
+        uploadFile: this.uploadUrl(), // 上传的图片服务器地址
+        headers: {
+          Authorization:getToken(),
+        },
+        loading:false,
+        queryParams:{
+          typeId:this.$parent.propsData.hardwareTypeId,
+          page:1,
+          pageSize:20,
+          searchValue:"",
+          state :null,
+        },
+        dataList:[],
+        total:0,
+        //弹层
+        dialogTitle:null,
+        dialogType:false,
+        dialogForm:{
+          typeId:this.$parent.propsData.hardwareTypeId,
+          name:"",
+          reqApi:"",
+          reqMethod:null,
+          reqParams:[{
+            keyName:'',
+            keyType:'',
+            keyArgument:'',
+            keyFile:'',
+          }],
+          files:"",
+          remark:"",
+        },
+        dialogRules:{
+          name: [
+            { required: true, message: "请输入名称", trigger: "blur" },
+            { required: true, message: "请输入名称", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          reqApi: [
+            { required: true, message: "请输入接口", trigger: "blur" },
+            { required: true, message: "请输入接口", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          reqMethod: [
+            { required: true, message: "请选择请求方式", trigger: "blur" },
+            { required: true, message: "请选择请求方式", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          keyName: [
+            { required: true, message: "请输入键", trigger: "blur" },
+            { required: true, message: "请输入键", validator: this.spaceJudgment, trigger: "blur" },
+            { required: true, message: "参数重复", validator: doubleCheck, trigger: "blur" }
+          ],
+          keyType: [
+            { required: true, message: "请选择类型", trigger: "blur" },
+            { required: true, message: "请选择类型", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          keyFile: [
+            { required: true, message: "请上传文件", trigger: "blur" },
+            { required: true, message: "请上传文件", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          keyArgument: [
+            { required: true, message: "请输入参数", trigger: "blur" },
+            { required: true, message: "请输入参数", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+        },
+        optionList:[
+          { value:'data',label:'数据' },
+          { value:'argument',label:'参数' },
+          { value:'file',label:'文件' },
+        ],
+      }
+    },
+    created(){
+      this.getList();
+    },
+    mounted(){
+
+    },
+    methods:{
+      addMin(){
+        if(this.dialogForm.reqParams.length>4){
+          this.msgError('最多可添加5个参数')
+        }else{
+          this.dialogForm.reqParams.push({
+            keyName:'',
+            keyType:'',
+            keyArgument:'',
+            keyFile:'',
+          });
+        }
+      },
+      delMin(index){
+        this.dialogForm.reqParams.splice(index,1);
+      },
+      //弹层关闭
+      dialogOff(){
+        this.$set(this,'dialogType',false);
+      },
+      //弹层开启
+      dialogOpen(){
+        this.dialogFormReset();
+        this.$set(this,'dialogTitle','新增');
+        this.$set(this,'dialogType',true);
+      },
+      dialogFormReset(){
+        this.$set(this,'dialogForm',{
+          typeId:this.$parent.propsData.hardwareTypeId,
+          name:"",
+          reqApi:"",
+          reqMethod:null,
+          reqParams:[{
+            keyName:'',
+            keyType:'',
+            keyArgument:'',
+            keyFile:'',
+          }],
+          files:"",
+          remark:"",
+        });
+      },
+      //dialog提交按钮
+      dialogSubmit(){
+        this.$refs["dialogForm"].validate(valid => {
+          if (valid) {
+            let obj = JSON.parse(JSON.stringify(this.dialogForm))
+            obj.reqParams = JSON.stringify(obj.reqParams);
+            if(obj.id){
+              iotHardwareFunctionUpdate(obj).then(response => {
+                this.msgSuccess(response.message)
+                this.dialogOff();
+                this.getList();
+              });
+            }else{
+              iotHardwareFunctionAdd(obj).then(response => {
+                this.msgSuccess(response.message)
+                this.dialogOff();
+                this.getList();
+              });
+            }
+          }
+        })
+      },
+      //功能
+      getList(){
+        let obj = JSON.parse(JSON.stringify(this.queryParams))
+        iotHardwareFunctionList(obj).then(response => {
+          this.$set(this,'dataList',response.data.records);
+          this.$set(this,'total',response.data.total);
+        });
+      },
+      handleQuery(){
+        this.$set(this.queryParams,'page',1);
+        this.getList();
+      },
+      resetQuery(){
+        this.$set(this,'queryParams',{
+          typeId:this.$parent.propsData.hardwareTypeId,
+          page:1,
+          pageSize:20,
+          searchValue:"",
+          state :null,
+        });
+        this.getList();
+      },
+      //按钮
+      tableButton(type,row){
+        let self = this;
+        if(type == 1){
+          //详情
+        }else if(type == 2){
+          //编辑
+          let obj = JSON.parse(JSON.stringify(row));
+          obj.reqParams = JSON.parse(obj.reqParams);
+          this.$set(this,'dialogForm',obj);
+          this.$set(this,'dialogTitle','编辑');
+          this.$set(this,'dialogType',true);
+        }else if(type == 3){
+          //删除
+          this.$confirm('是否确认删除?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+          }).then(() => {
+            iotHardwareFunctionDelete({id:row.id}).then(response => {
+              self.msgSuccess(response.message)
+              self.getList();
+            });
+          }).catch(() => {});
+        }else if(type == 4){
+          let text = row.state  ? "停用" : "启用";
+          this.$confirm('是否确认' + text + '?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+          }).then(() => {
+            let obj = JSON.parse(JSON.stringify(row));
+            obj.state = !obj.state;
+            iotHardwareFunctionUpdate(obj).then(response => {
+              self.msgSuccess(response.message)
+              self.getList();
+            });
+          }).catch(() => {});
+        }
+      },
+      //上传相关
+      handleAvatarSuccess(res,index) {
+        this.$set(this.dialogForm.reqParams[index],'keyFile',res.data.url);
+      },
+      beforeAvatarUpload(file) {
+        return new Promise((resolve, reject) => {
+          if(file.size > 10500000){
+            this.msgError('上传大小不能超过10M')
+            this.$message.error('只能上传png/jpeg/gif格式图片');
+            reject();
+          }else{
+            resolve()
+          }
+        })
+      },
+    },
+  }
+</script>
+
+<style scoped lang="scss">
+  .hardwareClassification-functionPage{
+    flex:1;
+    display: flex;
+    flex-direction: column;
+    overflow: hidden;
+    .table-title-box{
+      margin-top:20px;
+    }
+    .table-content-box{
+      flex:1;
+      margin:0 20px 20px;
+      display: flex;
+      flex-direction: column;
+      overflow: hidden;
+    }
+  }
+</style>
+<style lang="scss">
+  .hardwareClassification-functionPage-dialog{
+    .form-flex-box{
+      display: flex;
+      .form-title{
+        width:90px;
+        font-size:14px;
+        color:#333;
+        line-height:40px;
+        text-align: right;
+        margin-right:10px;
+        margin-bottom:20px;
+        span{
+          color:#FF6666;
+          margin-right:4px;
+        }
+      }
+      .form-for-max-box{
+        .form-for-box{
+          display: flex;
+          .form-index-p{
+            width:20px;
+            height:20px;
+            line-height:22px;
+            font-size:16px;
+            margin:10px;
+            border-radius:50%;
+            text-align: center;
+            color:#fff;
+            background-color: #00a0e9;
+          }
+          .form-for-big-box{
+            .form-for-min-box{
+              display: flex;
+            }
+            .hardwareClassification-functionPage-dialog-upload{
+              .up-box{
+                border:1px solid #dedede;
+                border-radius:4px;
+                padding:0 15px;
+                color:#C0C4CC;
+                width:280px;
+                .up-text-p{
+                  text-align: left;
+                  width:250px;
+                  line-height:40px;
+                  display:block;
+                  overflow:hidden;
+                  text-overflow:ellipsis;
+                  white-space:nowrap;
+                }
+              }
+            }
+          }
+        }
+      }
+      .for-button-icon{
+        font-size:16px;
+        text-align: center;
+        line-height:20px;
+        width:20px;
+        height:20px;
+        margin:10px 10px 0 0;
+        cursor: pointer;
+      }
+    }
+  }
+</style>

+ 14 - 2
src/views/iotDevice/hardwareManagement/hardwareClassification/index.vue

@@ -64,6 +64,10 @@
             <template slot-scope="scope">
               <div class="table-button-box">
                 <p class="table-button-null"></p>
+                <p class="table-button-p"
+                   @click="tableButton(2,scope.row)"
+                   v-hasPermiRouter="['iot:hardwareType:detail']"
+                >详情</p>
                 <p class="table-button-p"
                    @click="tableButton(3,scope.row)"
                    v-hasPermiRouter="['iot:hardwareType:edit']"
@@ -86,6 +90,7 @@
         />
       </div>
     </div>
+    <infoPage v-if="pageType == 2" :propsData="propsData"></infoPage>
     <!--新增弹窗-->
     <el-dialog class="iotClassification-dialog" :title='dialogTitle' width="540px" append-to-body
                :visible.sync="dialogType" v-if="dialogType" @close="dialogOff()"
@@ -142,9 +147,12 @@ import {
   iotHardwareTypeGetTypeKey,
   iotTypeGetAllTypes
 } from '@/api/iotDevice/index'
-
+import infoPage from "./infoPage.vue"
   export default {
     name: 'index',
+    components: {
+      infoPage
+    },
     data () {
       return {
         tableButtonType:this.hasPermiDom(['iot:hardwareType:edit','iot:hardwareType:del',]),
@@ -260,7 +268,11 @@ import {
       //操作按钮
       tableButton(type,row){
         let self = this;
-        if(type == 3){
+        if(type == 2){
+          //详情
+          this.$set(this,'propsData',JSON.parse(JSON.stringify(row)));
+          this.$set(this,'pageType',2);
+        }if(type == 3){
           //编辑
           let obj = JSON.parse(JSON.stringify(row))
           this.$set(this,'dialogForm',obj);

+ 126 - 0
src/views/iotDevice/hardwareManagement/hardwareClassification/infoPage.vue

@@ -0,0 +1,126 @@
+<template>
+  <div class="page-container hardwareClassification-infoPage">
+    <div class="page-top-title-box">
+      <p class="page-top-title-name-p">{{propsData.hardwareTypeName}}详情</p>
+      <p class="page-top-title-out-p" @click="outButton">返回</p>
+    </div>
+    <div class="content-box">
+      <div class="text-box">
+        <div>
+          <p>标识:</p>
+          <p>{{propsData.hardwareTypeKey}}</p>
+        </div>
+        <div>
+          <p>状态:</p>
+          <p>{{propsData.state?'启用':'停用'}}</p>
+        </div>
+      </div>
+      <div class="table-button">
+        <div>
+          <p class="cursor-p" @click="tableClick(1)"
+             :class="tableType == 1? 'checkTableColor':''">功能</p>
+          <p :class="tableType == 1? 'checkTableBack':''"></p>
+        </div>
+        <div class="div-flex">
+          <p> </p>
+          <p></p>
+        </div>
+      </div>
+      <function-page v-if="tableType == 1"></function-page>
+    </div>
+  </div>
+</template>
+
+<script>
+  import functionPage from "./functionPage.vue";
+  export default {
+    name: 'infoPage',
+    components: {
+      functionPage,
+    },
+    props:{
+      propsData:{},
+    },
+    data(){
+      return{
+        tableType:1,
+      }
+    },
+    created(){
+
+    },
+    mounted(){
+
+    },
+    methods:{
+      //table切换
+      tableClick(type){
+        if(type != this.tableType){
+          this.$set(this,'tableType',type);
+        }
+      },
+      //返回按钮
+      outButton(){
+        this.$parent.tableButton('6')
+      },
+    },
+  }
+</script>
+
+<style scoped lang="scss">
+  .hardwareClassification-infoPage{
+    .content-box{
+      flex:1;
+      display: flex;
+      flex-direction: column;
+      overflow: hidden;
+      .text-box{
+        display: flex;
+        div{
+          display: flex;
+          width:400px;
+          p{
+            margin-top:10px;
+            line-height:40px;
+          }
+          p:nth-child(1){
+            width:122px;
+            text-align: right;
+          }
+          p:nth-child(2){
+
+          }
+        }
+      }
+      .table-button{
+        display: flex;
+        div{
+          width:180px;
+          p{
+            text-align: center;
+          }
+          p:nth-child(1){
+            height:60px;
+            line-height:60px;
+          }
+          p:nth-child(2){
+            height:2px;
+            background-color: #dedede;
+          }
+          .cursor-p{
+            cursor: pointer;
+          }
+          .checkTableColor{
+            color:#0045AF!important;
+          }
+          .checkTableBack{
+            background-color: #0045AF!important;
+          }
+        }
+        .div-flex{
+          flex:1;
+        }
+      }
+    }
+  }
+</style>

+ 260 - 0
src/views/iotDevice/hardwareManagement/hardwareEquipment/bottomModule/hardwareDebug.vue

@@ -0,0 +1,260 @@
+<template>
+  <div class="page-container hardwareEquipment-hardwareDebug">
+    <!--调试列表-->
+    <div class="debug-box scrollbar-box">
+      <div class="debug-for-max-box" v-for="(item,index) in debugDataList" :key="index">
+        <div class="type-icon-box">
+          <p :class="item.featureType === 0?'el-icon-warning colorC':(item.featureType === 1?'el-icon-success colorA':'el-icon-error colorB')"></p>
+        </div>
+        <div class="name-text-box">
+          <p>{{item.name}}</p>
+          <p>{{item.remark}}</p>
+        </div>
+        <div class="type-text-box">
+          <p :class="item.featureType === 0?'colorC':(item.featureType === 1?'colorA':'colorB')">
+            {{item.featureType === 0?'':(item.featureType === 1?'正常':'异常')}}
+          </p>
+        </div>
+        <div class="copy-box">
+          <p class="el-icon-tickets"
+             @click="lockInfo(item.response)"
+             v-if="item.featureType != 0"></p>
+        </div>
+        <div class="button-box">
+          <p :class="item.featureType === 0 ? 'buttonTypeA' : 'buttonTypeB'"
+             @click="debugButton(item,index)">
+            {{item.featureType === 0 ? '调试' : '复位'}}
+          </p>
+        </div>
+      </div>
+    </div>
+    <p class="hardwareDebug-null-p" v-if="!debugDataList[0]">未配置调试功能</p>
+    <!--查看结果-->
+    <public-log-dialog ref="publicLogDialog"></public-log-dialog>
+  </div>
+</template>
+
+<script>
+  import { iotHardwareFunctionDropList } from "@/api/iotDevice/index";
+  import { iotDebugFunctionGet,iotDebugFunctionPost } from "@/api/commonality/debugPermission";
+  import publicLogDialog from '@/components/publicLogDialog/publicLogDialog.vue'
+  export default {
+    name: 'hardwareDebug',
+    components: {
+      publicLogDialog
+    },
+    data(){
+      return{
+        //进度条数据
+        scheduleData:{
+          type:1,//0隐藏1诊断2调试
+          featureType:false,
+          debugType:false,
+          schedule:100,
+        },
+        //调试数据
+        debugDataList:[],
+        //调试方法数据
+        debugIndex:null,
+      }
+    },
+    created(){
+      this.initialize();
+    },
+    mounted(){
+
+    },
+    methods:{
+      //初始化
+      initialize(){
+        iotHardwareFunctionDropList({typeId:this.$parent.propsData.hardwareTypeId}).then(response => {
+          for(let i=0;i<response.data.length;i++){
+            response.data[i].featureType = 0;
+          }
+          this.$set(this,'debugDataList',response.data);
+        });
+      },
+      //调试功能接口
+      debugButton(item,index){
+        if(item.featureType === 0){
+          this.$set(this,'debugIndex',index);
+          let url = item.reqApi
+          let dataList = JSON.parse(item.reqParams);
+          let obj = {}
+          for(let i=0;i<dataList.length;i++){
+            if(dataList[i].keyType == 'data'){
+              obj[dataList[i].keyName] = this.$parent.propsData[dataList[i].keyName];
+            }else if(dataList[i].keyType == 'argument'){
+              obj[dataList[i].keyName] = dataList[i].keyArgument;
+            }else if(dataList[i].keyType == 'file'){
+              obj[dataList[i].keyName] = localStorage.getItem('fileBrowseEnvironment') + dataList[i].keyFile;
+            }
+          }
+          if(item.reqMethod == 'POST'){
+            iotDebugFunctionPost(url,obj).then(response => {
+              this.$set(this.debugDataList[this.debugIndex],'response',JSON.stringify(response));
+              if(response.code == 200){
+                this.$set(this.debugDataList[this.debugIndex],'featureType',1);
+              }else{
+                this.$set(this.debugDataList[this.debugIndex],'featureType',2);
+              }
+            });
+          }else if(item.reqMethod == 'GET'){
+            iotDebugFunctionGet(url,obj).then(response => {
+              this.$set(this.debugDataList[this.debugIndex],'response',JSON.stringify(response));
+              if(response.code == 200){
+                this.$set(this.debugDataList[this.debugIndex],'featureType',1);
+              }else{
+                this.$set(this.debugDataList[this.debugIndex],'featureType',2);
+              }
+            });
+          }
+        }else{
+          this.$set(this.debugDataList[index],'response','');
+          this.$set(this.debugDataList[index],'featureType',0);
+          this.$set(this,'debugIndex',null);
+        }
+      },
+      //查看结果
+      lockInfo(response){
+        this.$refs.publicLogDialog.publicLogDialogOpen(response);
+      },
+    },
+  }
+</script>
+
+<style scoped lang="scss">
+  .hardwareEquipment-hardwareDebug{
+    flex:1;
+    display: flex;
+    flex-direction: column;
+    overflow: hidden;
+    .debug-box{
+      padding:20px 20px;
+      .debug-for-max-box:nth-child(1){
+        border-top:1px solid #dedede;
+      }
+      .debug-for-max-box{
+        border:1px solid #dedede;
+        border-top:none;
+        display: flex;
+        .type-icon-box{
+          p{
+            text-align: center;
+            line-height:60px;
+            font-size:40px;
+            margin:0 30px;
+            width:60px;
+            height:60px;
+          }
+        }
+        .name-text-box{
+          flex:1;
+          padding:10px 0;
+          p:nth-child(1){
+            line-height:24px;
+            font-size:16px;
+            font-weight:700;
+          }
+          p:nth-child(2){
+            line-height:16px;
+            font-size:14px;
+          }
+        }
+        .type-text-box{
+          p{
+            font-size:18px;
+            width:200px;
+            line-height:60px;
+            font-weight:700;
+          }
+        }
+        .copy-box{
+          width:130px;
+          p{
+            margin:15px 50px;
+            height:30px;
+            line-height:30px;
+            font-size:24px;
+            width:30px;
+            text-align: center;
+            cursor: pointer;
+            border-radius:4px;
+            color:#999;
+          }
+        }
+        .button-box{
+          p{
+            margin:15px 20px;
+            height:30px;
+            line-height:30px;
+            font-size:14px;
+            width:100px;
+            text-align: center;
+            cursor: pointer;
+            border-radius:4px;
+          }
+          .buttonTypeA{
+            border:1px solid #0183FA;
+            background-color: #0183FA;
+            color:#fff;
+          }
+          .buttonTypeA:hover{
+            border:1px solid #0183FA;
+            background-color: #fff;
+            color:#0183FA;
+          }
+          .buttonTypeB{
+            border:1px solid #999999;
+            background-color: #999999;
+            color:#fff;
+          }
+          .buttonTypeB:hover{
+            border:1px solid #999999;
+            background-color: #fff;
+            color:#999999;
+          }
+        }
+        .colorA{
+          color:#24B276;
+        }
+        .colorB{
+          color:#FF6666;
+        }
+        .colorC{
+          color:#FF9000;
+        }
+      }
+    }
+    .hardwareDebug-null-p{
+      text-align: center;
+      color:#999;
+      font-size:18px;
+      line-height:400px;
+    }
+  }
+</style>
+<style lang="scss">
+  .hardwareEquipment-hardwareDebug-dialog{
+    .el-textarea.is-disabled .el-textarea__inner{
+      cursor: auto;
+      color:#666;
+    }
+    .copy-box{
+      margin-bottom:20px;
+      position:relative;
+      .copy-p{
+        position: absolute;
+        bottom:20px;
+        right:30px;
+        color:#999;
+        width: 24px;
+        height: 24px;
+        line-height: 24px;
+        text-align: center;
+        padding:0;
+        font-size:24px;
+      }
+    }
+  }
+</style>

+ 111 - 0
src/views/iotDevice/hardwareManagement/hardwareEquipment/bottomModule/hardwareLog.vue

@@ -0,0 +1,111 @@
+<template>
+  <div class="page-container hardwareEquipment-hardwareLog">
+    <div class="page-container iotHardwarePage">
+      <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="state">
+            <el-select v-model="queryParams.state" clearable placeholder="请选择状态" style="width: 200px">
+              <el-option label="成功" :value="true"/>
+              <el-option label="失败" :value="false"/>
+            </el-select>
+          </el-form-item>
+          <p class="page-inquire-common-style-button" @click="handleQuery">查询</p>
+          <p class="page-reset-common-style-button" @click="resetQuery">重置</p>
+        </el-form>
+      </div>
+      <div class="page-content-box">
+        <el-table class="table-box" border :data="dataList">
+          <el-table-column label="类型" prop="logType" width="160"  show-overflow-tooltip>
+            <template slot-scope="scope">
+              <span>{{scope.row.logType?'打开':'关闭'}}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="请求" prop="reqBody" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <span class="clickCopy" @click="clickCopy(scope.row.reqBody)">{{scope.row.reqBody}}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="状态"  prop="state" width="100" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <span>{{scope.row.state?'成功':'失败'}}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="时间" prop="createTime" width="200" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <span>{{ parseTime(scope.row.createTime,"{y}-{m}-{d} {h}:{i}") }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="备注" prop="remark" width="200" show-overflow-tooltip/>
+        </el-table>
+        <pagination :page-sizes="[10, 20, 30, 40]"
+                    v-show="total>0"
+                    :total="total"
+                    :page.sync="queryParams.page"
+                    :limit.sync="queryParams.pageSize"
+                    @pagination="getList"
+        />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import { iotHardwareLogList } from "@/api/iotDevice/index";
+  export default {
+    name: 'hardwareLog',
+    data(){
+      return{
+        //类型下拉列表数据
+        optionList:[],
+        //查询条件
+        queryParams:{
+          page:1,
+          pageSize:10,
+          state:null,
+        },
+        dataList:[],
+        total:0,
+      }
+    },
+    created(){
+      this.initialize();
+    },
+    mounted(){
+
+    },
+    methods:{
+      initialize(){
+        this.getList();
+      },
+      //查询按钮
+      handleQuery(){
+        this.$set(this.queryParams,'page',1);
+        this.getList();
+      },
+      //重置按钮
+      resetQuery(){
+        this.$set(this,'queryParams',{
+          page:1,
+          pageSize:10,
+          state:null,
+        });
+        this.getList();
+      },
+      getList(){
+        let obj = JSON.parse(JSON.stringify(this.queryParams))
+        obj.hardwareId = this.$parent.propsData.id;
+        iotHardwareLogList(obj).then(response =>{
+          this.$set(this,'dataList',response.data.records);
+          this.$set(this,'total',response.data.total);
+        })
+      },
+    },
+  }
+</script>
+
+<style scoped lang="scss">
+  .hardwareEquipment-hardwareLog{
+    overflow: hidden;
+  }
+</style>

+ 12 - 2
src/views/iotDevice/hardwareManagement/hardwareEquipment/index.vue

@@ -125,6 +125,10 @@
             <template slot-scope="scope">
               <div class="table-button-box">
                 <p class="table-button-null"></p>
+                <p class="table-button-p"
+                   @click="tableButton(7,scope.row)"
+                   v-hasPermiRouter="['iot:hardware:detail']"
+                >详情</p>
                 <p class="table-button-p"
                    @click="tableButton(3,scope.row)"
                    v-hasPermiRouter="['iot:hardware:edit']"
@@ -147,6 +151,7 @@
         />
       </div>
     </div>
+    <info-page v-if="pageType === 2" :propsData="propsData"></info-page>
     <!--新增弹窗-->
     <el-dialog class="iotClassification-dialog" :title='dialogTitle' width="540px" append-to-body
                :visible.sync="dialogType" v-if="dialogType" @close="dialogOff()"
@@ -219,12 +224,14 @@
     iotHardwareTypeFindHardwareType,
     iotDeviceFindByType,
     iotAttributeDetail
-
   } from '@/api/iotDevice/index'
   import { systemBuildingGetTreeList, laboratorySubRelInfoGetListByFloor } from '@/api/commonality/permission'
-
+  import infoPage from "./infoPage.vue";
   export default {
     name: 'index',
+    components: {
+      infoPage,
+    },
     data() {
       return {
         tableButtonType: this.hasPermiDom(['iot:hardware:edit', 'iot:hardware:del']),
@@ -497,6 +504,9 @@
           //返回并刷新
           this.$set(this, 'pageType', 1)
           this.getList()
+        }else if(type == 7){
+          this.$set(this,'propsData',JSON.parse(JSON.stringify(row)));
+          this.$set(this, 'pageType', 2)
         }
       },
       //**************************弹窗相关**************************

+ 233 - 0
src/views/iotDevice/hardwareManagement/hardwareEquipment/infoPage.vue

@@ -0,0 +1,233 @@
+<template>
+  <div class="page-container hardwareEquipment-infoPage">
+    <div class="page-top-title-box">
+      <p class="page-top-title-name-p">详情</p>
+      <p class="page-top-title-out-p" @click="backPage">返回</p>
+    </div>
+    <div class="content-box scrollbar-box">
+      <div class="info-max-box">
+        <div class="info-left-max-box">
+          <img src="@/assets/ZDimages/iotDevice/home_hardware_icon.png">
+          <p :class="newData.online?'onlineTypeA':'onlineTypeB'">{{newData.operatingState?'开启':'关闭'}}</p>
+        </div>
+        <div class="info-right-max-box scrollbar-box">
+          <div class="info-min-box">
+            <div>
+              <p>硬件ID:</p>
+              <p>{{newData.deviceId}}</p>
+            </div>
+          </div>
+          <div class="info-min-box">
+            <div>
+              <p>硬件名称:</p>
+              <p>{{newData.hardwareName}}</p>
+            </div>
+          </div>
+          <div class="info-min-box">
+            <div>
+              <p>硬件编号:</p>
+              <p>{{newData.deviceNo}}</p>
+            </div>
+          </div>
+          <div class="info-min-box">
+            <div>
+              <p>硬件类型:</p>
+              <p>{{newData.hardwareTypeName}}</p>
+            </div>
+          </div>
+          <div class="info-min-box">
+            <div>
+              <p>状态:</p>
+              <p>{{newData.state?'启用':'停用'}}</p>
+            </div>
+          </div>
+          <div class="info-min-box">
+            <div>
+              <p>创建时间:</p>
+              <p>{{parseTime(newData.createTime)}}</p>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="table-max-box">
+        <div class="table-button-box" @click="tableCheck(1)" :class="tableType==1?'check-table-box':''">
+          <p>日志</p>
+          <p></p>
+        </div>
+        <div class="table-button-box" @click="tableCheck(2)" :class="tableType==2?'check-table-box':''">
+          <p>调试</p>
+          <p></p>
+        </div>
+        <div class="table-null-box">
+          <p></p>
+          <p></p>
+        </div>
+      </div>
+      <div class="table-content-box" v-if="tableType == 1">
+        <hardware-log></hardware-log>
+      </div>
+      <div class="table-content-box" v-if="tableType == 2">
+        <hardware-debug></hardware-debug>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import hardwareLog from "./bottomModule/hardwareLog.vue";
+  import hardwareDebug from "./bottomModule/hardwareDebug.vue";
+  import { iotHardwareDetail } from '@/api/iotDevice/index'
+  export default {
+    name: 'infoPage',
+    components: {
+      hardwareLog,
+      hardwareDebug
+    },
+    props: {
+      propsData: {}
+    },
+    data() {
+      return {
+        tableType: 1,
+        newData: {},
+        models: []
+      }
+    },
+    created() {
+      this.initialize()
+    },
+    mounted() {
+
+    },
+    methods: {
+      tableCheck(type) {
+        if (this.tableType != type) {
+          this.$set(this, 'tableType', type)
+        }
+      },
+      //初始化
+      initialize() {
+        this.$set(this,'newData',this.propsData);
+      },
+      // 返回按钮
+      backPage() {
+        this.$parent.tableButton(6)
+      }
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  .hardwareEquipment-infoPage {
+    .content-box {
+      flex: 1;
+      display: flex;
+      flex-direction: column;
+      .info-max-box {
+        padding: 20px;
+        display: flex;
+        .info-left-max-box {
+          width: 180px;
+          height: 180px;
+          img {
+            width: 100px;
+            height: 100px;
+            margin: 20px 40px 0;
+          }
+          p {
+            width: 100px;
+            line-height: 30px;
+            height: 30px;
+            text-align: center;
+            font-size: 14px;
+            margin: 10px 40px 0;
+            border-radius: 4px;
+          }
+          .onlineTypeA {
+            background-color: #0183FA;
+            color: #fff;
+          }
+          .onlineTypeB {
+            background-color: #E65D6E;
+            color: #fff;
+          }
+        }
+        .info-right-max-box {
+          height: 180px;
+          padding: 20px 0;
+          .info-min-box {
+            width: 440px;
+            display: inline-block;
+            div {
+              display: flex;
+              padding: 10px;
+              p {
+                color: #333;
+                font-size: 14px;
+                line-height: 20px;
+              }
+              p:nth-child(1) {
+                width: 140px;
+                text-align: right;
+              }
+              p:nth-child(2) {
+                width: 300px;
+                word-wrap: break-word;
+                word-break: break-all;
+                overflow: hidden;
+              }
+            }
+          }
+        }
+      }
+      .table-max-box {
+        display: flex;
+        .table-button-box {
+          cursor: pointer;
+          display: flex;
+          height: 44px;
+          flex-direction: column;
+          p:nth-child(1) {
+            padding: 0 40px;
+            font-size: 14px;
+            line-height: 40px;
+            height: 40px;
+            text-align: center;
+          }
+          p:nth-child(2) {
+            height: 4px;
+            background-color: #dedede;
+          }
+        }
+        .table-null-box {
+          flex: 1;
+          display: flex;
+          height: 44px;
+          flex-direction: column;
+          p:nth-child(1) {
+            height: 40px;
+          }
+          p:nth-child(2) {
+            height: 4px;
+            background-color: #dedede;
+          }
+        }
+        .check-table-box {
+          p:nth-child(1) {
+            font-weight: 700;
+            color: #0045AF;
+          }
+          p:nth-child(2) {
+            background-color: #0045AF;
+          }
+        }
+      }
+      .table-content-box {
+        flex: 1;
+        flex-direction: column;
+        display: flex;
+        overflow: hidden;
+      }
+    }
+  }
+</style>

+ 1 - 9
src/views/iotDevice/intelligenceIot/iotHardware/infoPage.vue

@@ -19,7 +19,7 @@
           </div>
           <div class="info-min-box">
             <div>
-              <p>名称:</p>
+              <p>设备名称:</p>
               <p>{{newData.deviceName}}</p>
             </div>
           </div>
@@ -220,14 +220,6 @@
       backPage(){
         this.$parent.tableButton(6);
       },
-      /** 提交按钮 */
-      submitForm() {
-        this.$refs["form"].validate(valid => {
-          if (valid) {
-
-          }
-        })
-      }
     },
   }
 </script>

+ 5 - 5
src/views/secureAccess/accessRequirement/index.vue

@@ -18,11 +18,11 @@
           </div>
           <div class="for-button-box" v-if="tableButtonType">
             <div class="left-div"
-                 v-hasPermiRouter="['laboratory:materialdata:query','laboratory:materialdata:edit']"
+                 v-hasPermiRouter="['laboratory:materialdata:edit']"
                  @click="editItem(item)"><i class="el-icon-edit-outline"></i><p>编辑</p></div>
             <p class="border-p"></p>
             <div class="right-div"
-                 v-hasPermiRouter="['laboratory:materialdata:remove']"
+                 v-hasPermiRouter="['laboratory:materialdata:del']"
                  @click="delItem(item)"><i class="el-icon-delete"></i><p>删除</p></div>
           </div>
         </div>
@@ -31,7 +31,7 @@
                   v-show="total>0"
                   :total="total"
                   layout="total, prev, pager, next, sizes, jumper"
-                  :page.sync="queryParams.pageNum"
+                  :page.sync="queryParams.page"
                   :limit.sync="queryParams.pageSize"
                   @pagination="getList"
       />
@@ -50,12 +50,12 @@
     },
     data() {
       return {
-        tableButtonType:this.hasPermiDom(['laboratory:materialdata:query','laboratory:materialdata:edit','laboratory:materialdata:remove']),
+        tableButtonType:this.hasPermiDom(['laboratory:materialdata:edit','laboratory:materialdata:del']),
         pageType:1,
         propsData:{},
         // 查询参数
         queryParams: {
-          pageNum: 1,
+          page: 1,
           pageSize:20,
         },
         total:0,

+ 2 - 2
src/views/secureAccess/approval/failed.vue

@@ -26,7 +26,7 @@
                   v-show="total>0"
                   :total="total"
                   layout="total, prev, pager, next, sizes, jumper"
-                  :page.sync="queryParams.pageNum"
+                  :page.sync="queryParams.page"
                   :limit.sync="queryParams.pageSize"
                   @pagination="getList"
       />
@@ -51,7 +51,7 @@
         dataList: [],
         // 查询参数
         queryParams: {
-          pageNum: 1,
+          page: 1,
           pageSize:20,
           searchValue: null,
           userMajorId: null,

+ 7 - 5
src/views/secureAccess/approval/passed.vue

@@ -60,11 +60,12 @@
               <span>{{parseTime(scope.row.validBeginTime,'{y}-{m}-{d} {h}:{i}')}} 至 {{parseTime(scope.row.validEndTime,'{y}-{m}-{d} {h}:{i}')}}</span>
             </template>
           </el-table-column>
-          <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120">
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120" v-if="tableButtonType">
             <template slot-scope="scope">
               <div class="table-button-box">
                 <p class="table-button-null"></p>
                 <p class="table-button-p"
+                   v-hasPermiRouter="['laboratory:audit:detail']"
                    @click="goInfoPage(scope.row)">查看</p>
                 <p class="table-button-null"></p>
               </div>
@@ -75,7 +76,7 @@
                     v-show="total>0"
                     :total="total"
                     layout="total, prev, pager, next, sizes, jumper"
-                    :page.sync="queryParams.pageNum"
+                    :page.sync="queryParams.page"
                     :limit.sync="queryParams.pageSize"
                     @pagination="getList"
         />
@@ -103,6 +104,7 @@
     name: 'passed',
     data() {
       return {
+        tableButtonType:this.hasPermiDom(['laboratory:audit:detail']),
         pageType:1,
         // 遮罩层
         loading: true,
@@ -115,7 +117,7 @@
         majorList: [],//专业
         // 查询参数
         queryParams: {
-          pageNum: 1,
+          page: 1,
           pageSize: 20,
           searchValue: null,
           userMajorId: null,
@@ -159,13 +161,13 @@
       },
       /** 搜索按钮操作 */
       handleQuery() {
-        this.queryParams.pageNum = 1
+        this.queryParams.page = 1
         this.getList()
       },
       /** 重置按钮操作 */
       resetQuery() {
         this.$set(this, 'queryParams', {
-          pageNum: 1,
+          page: 1,
           searchValue: '',
           userMajorId: ''
         })

+ 5 - 3
src/views/secureAccess/approval/pending.vue

@@ -21,12 +21,13 @@
             <span>{{parseTime(scope.row.validBeginTime,"{y}-{m}-{d} {h}:{i}")}} 至 {{parseTime(scope.row.validEndTime,"{y}-{m}-{d} {h}:{i}")}}</span>
           </template>
         </el-table-column>
-        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120">
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120" v-if="tableButtonType">
           <template slot-scope="scope">
             <div class="table-button-box">
               <p class="table-button-null"></p>
               <p class="table-button-p"
                  @click="goInfoPage(scope.row)"
+                 v-hasPermiRouter="['laboratory:audit:edit']"
               >审核</p>
               <p class="table-button-null"></p>
             </div>
@@ -37,7 +38,7 @@
                   v-show="total>0"
                   :total="total"
                   layout="total, prev, pager, next, sizes, jumper"
-                  :page.sync="queryParams.pageNum"
+                  :page.sync="queryParams.page"
                   :limit.sync="queryParams.pageSize"
                   @pagination="getList"
       />
@@ -55,6 +56,7 @@
     name: "pending",
     data() {
       return {
+        tableButtonType:this.hasPermiDom(['laboratory:audit:edit']),
         pageType:1,
         // 遮罩层
         loading: true,
@@ -64,7 +66,7 @@
         dataList: [],
         // 查询参数
         queryParams: {
-          pageNum: 1,
+          page: 1,
           pageSize:20,
           searchValue: null,
           userMajorId: null,

+ 8 - 4
src/views/secureAccess/handle/index.vue

@@ -4,7 +4,8 @@
     <div class="page-container approval_handle-page" v-if="pageType == 1">
       <div class="top-click-img-box">
         <img src="@/assets/ZDimages/secureAccess/img_zrzgsq_bg.png" alt="">
-        <p @click="pageClick(2)">安全准入申请</p>
+        <p @click="pageClick(2)"
+           v-hasPermiRouter="['laboratory:apply:add']">安全准入申请</p>
       </div>
       <div class="page-content-box">
         <el-table class="table-box" v-loading="loading" border :data="dataList">
@@ -26,16 +27,18 @@
             </template>
           </el-table-column>
           <!--<el-table-column label="过期时间" align="left" prop="expirationDate" />-->
-          <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="150">
+          <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="150" v-if="tableButtonType">
             <template slot-scope="scope">
               <div class="table-button-box">
                 <p class="table-button-null"></p>
                 <p class="table-button-p"
                    @click="pageClick('3',scope.row)"
+                   v-hasPermiRouter="['laboratory:apply:detail']"
                 >查看</p>
                 <p class="table-button-p"
                    v-if="scope.row.auditStatus == 0 || scope.row.auditStatus == 1"
                    @click="handleDelete(scope.row)"
+                   v-hasPermiRouter="['laboratory:apply:del']"
                 >删除</p>
                 <p class="table-button-null"></p>
               </div>
@@ -46,7 +49,7 @@
                     v-show="total>0"
                     :total="total"
                     layout="total, prev, pager, next, sizes, jumper"
-                    :page.sync="queryParams.pageNum"
+                    :page.sync="queryParams.page"
                     :limit.sync="queryParams.pageSize"
                     @pagination="getList"
         />
@@ -70,6 +73,7 @@ export default {
   },
   data() {
     return {
+      tableButtonType:this.hasPermiDom(['laboratory:apply:detail','laboratory:apply:del']),
       //页面状态
       pageType:1,
       // 遮罩层
@@ -80,7 +84,7 @@ export default {
       total: 0,
       // 查询参数
       queryParams: {
-        pageNum: 1,
+        page: 1,
         pageSize:20,
       },
       //详情传参数据

+ 3 - 1
src/views/secureAccess/handle/infoPage.vue

@@ -5,7 +5,9 @@
     <div class="page-top-title-box">
       <p class="page-top-title-name-p">准入信息</p>
       <p class="page-top-title-out-p" @click="backPage">返回</p>
-      <p class="page-top-title-save-p" style="width:100px;" v-if="subjectData.labSecurityApply.auditStatus == 1" @click="backPageEdit()">重新申请</p>
+      <p class="page-top-title-save-p" style="width:100px;"
+         v-hasPermiRouter="['laboratory:apply:edit']"
+         v-if="subjectData.labSecurityApply.auditStatus == 1" @click="backPageEdit()">重新申请</p>
     </div>
     <div class="info-page-box scrollbar-box">
       <div class="admittance_info">

+ 7 - 7
src/views/secureAccess/whitelist/index.vue

@@ -22,7 +22,7 @@
               plain
               size="mini"
               @click="pageClick(2)"
-              v-hasPermiRouter="['laboratory:whitelist:add']"
+              v-hasPermiRouter="['laboratory:white:add']"
             >新增</el-button>
           </el-form-item>
         </el-form>
@@ -39,11 +39,11 @@
                 <p class="table-button-null"></p>
                 <p class="table-button-p"
                    @click="pageEditClick(2,scope.row)"
-                   v-hasPermiRouter="['laboratory:whitelist:query','laboratory:whitelist:edit']"
+                   v-hasPermiRouter="['laboratory:white:edit']"
                 >编辑</p>
                 <p class="table-button-p"
                    @click="delButton(scope.row)"
-                   v-hasPermiRouter="['laboratory:whitelist:remove']"
+                   v-hasPermiRouter="['laboratory:white:del']"
                 >移除</p>
                 <p class="table-button-null"></p>
               </div>
@@ -53,7 +53,7 @@
         <pagination :page-sizes="[20, 30, 40, 50]"
                     v-show="total>0"
                     :total="total"
-                    :page.sync="queryParams.pageNum"
+                    :page.sync="queryParams.page"
                     :limit.sync="queryParams.pageSize"
                     @pagination="getList"
         />
@@ -74,7 +74,7 @@
     name: "whitelist",
     data() {
       return {
-        tableButtonType:this.hasPermiDom(['laboratory:whitelist:query','laboratory:whitelist:edit','laboratory:whitelist:remove']),
+        tableButtonType:this.hasPermiDom(['laboratory:white:edit','laboratory:white:del']),
         pageType:1,
         // 遮罩层
         loading: false,
@@ -86,7 +86,7 @@
         dataList: [],
         // 查询参数
         queryParams: {
-          pageNum: 1,
+          page: 1,
           pageSize:20,
           searchValue: null,
         },
@@ -143,7 +143,7 @@
       },
       /** 搜索按钮操作 */
       handleQuery() {
-        this.queryParams.pageNum = 1;
+        this.queryParams.page = 1;
         this.getList();
       },
       /** 重置按钮操作 */