heyang 2 years ago
parent
commit
9c286434cb

+ 2 - 1
src/components/ZDcomponents/advancedSearch.vue

@@ -92,7 +92,8 @@ searchClick(type,data){
         <p class="advanced-button" @click="stateSwitch">高级搜索</p>
       </el-form-item>
       <el-form-item style="float: right" v-for="item in searchData.buttonList" >
-        <p v-if="item.type == 1" class="inquire-button-one" v-hasPermi="item.hasPermi" style="width:120px;" @click="buttonClick(item.parameter)">{{item.name}}</p>
+        <p v-if="item.type == 1 && item.isHasPermi" class="inquire-button-one" v-hasPermi="item.hasPermi" style="width:120px;" @click="buttonClick(item.parameter)">{{item.name}}</p>
+        <p v-if="!item.isHasPermi" class="inquire-button-one"  style="width:120px;" @click="buttonClick(item.parameter)">{{item.name}}</p>
         <div style="float: right;" v-if="item.type == 2">
           <el-dropdown @command="commandButton" v-hasPermi="item.hasPermi">
             <div class="form-dropdown-box">

+ 26 - 19
src/views/comprehensive/laboratoryManagement/accessAuthorization/lookImpower.vue

@@ -177,7 +177,7 @@
 </template>
 
 <script>
-import { listStudentUser, listTeacherUser } from '@/api/system/user_student'
+import { listUser} from '@/api/permissionRequired'
 import { listDepartments } from '@/api/system/dept'
 import advancedSearch from "@/components/ZDcomponents/advancedSearch.vue"
 import {
@@ -216,6 +216,7 @@ export default {
       dialogForm:{
         pageNum: 1,
         pageSize: 20,
+        userType: '',
         searchValue:'',
         deptId:'',
       },
@@ -246,24 +247,12 @@ export default {
       searchData:{
         buttonList:[//按钮数组没有则为空
           {
-            name:"新增教职工授权",//按钮名称 只有再状态 1 时需要
-            type:"1", //按钮类型 1.按钮 2.导入 3.导出
-            parameter:"addTeacher",//按钮字符用于返回方法时的判断
-            hasPermi:[''] // 权限字段 如果没有则传空字符 hasPermi:"",
-          },
-          {
-            name:"新增学生授权",//按钮名称 只有再状态 1 时需要
-            type:"1", //按钮类型 1.按钮 2.导入 3.导出
-            parameter:"addStudent",//按钮字符用于返回方法时的判断
-            hasPermi:[''] // 权限字段 如果没有则传空字符 hasPermi:"",
-          },
-          {
             name:"批量重试",//按钮名称 只有再状态 1 时需要
             type:"1", //按钮类型 1.按钮 2.导入 3.导出
             parameter:"batchAgain",//按钮字符用于返回方法时的判断
-            hasPermi:[''] // 权限字段 如果没有则传空字符 hasPermi:"",
+            hasPermi:[''], // 权限字段 如果没有则传空字符 hasPermi:"",
+            isHasPermi:false//判断是否需要使用权限字符
           },
-
         ],
         searchList:[//搜索数组
           {
@@ -436,7 +425,8 @@ export default {
         let _this=this;
         this.loading = true;
         if(_this.userType==1){
-          listStudentUser(this.addDateRange(this.dialogForm, this.dateRange)).then(response => {
+          this.dialogForm.userType=22
+          listUser(this.addDateRange(this.dialogForm, this.dateRange)).then(response => {
               this.dialogTable = response.rows;
               this.total = response.total;
               this.loading = false;
@@ -447,7 +437,8 @@ export default {
             }
           );
         }else if(_this.userType==2){
-          listTeacherUser(this.addDateRange(this.dialogForm, this.dateRange)).then(response => {
+          this.dialogForm.userType=11
+          listUser(this.addDateRange(this.dialogForm, this.dateRange)).then(response => {
               this.dialogTable = response.rows;
               this.total = response.total;
               this.loading = false;
@@ -691,8 +682,24 @@ export default {
     this.form.hardId=this.pageData.hardId;
     this.admittance=this.pageData.controlScope.search("1") != -1
     this.whiteList=this.pageData.controlScope.search("2") != -1
-    console.log('安全准入'+this.admittance)
-    console.log('白名单'+this.whiteList)
+    if(!this.admittance){//安全准入-学生授权
+      this.searchData.buttonList.unshift( {
+        name:"新增学生授权",//按钮名称 只有再状态 1 时需要
+        type:"1", //按钮类型 1.按钮 2.导入 3.导出
+        parameter:"addStudent",//按钮字符用于返回方法时的判断
+        hasPermi:[''], // 权限字段 如果没有则传空字符 hasPermi:"",
+        isHasPermi:false//判断是否需要使用权限字符
+      })
+    }
+    if(!this.whiteList){//白名单-教职工授权
+      this.searchData.buttonList.unshift({
+        name:"新增教职工授权",//按钮名称 只有再状态 1 时需要
+        type:"1", //按钮类型 1.按钮 2.导入 3.导出
+        parameter:"addTeacher",//按钮字符用于返回方法时的判断
+        hasPermi:[''], // 权限字段 如果没有则传空字符 hasPermi:"",
+        isHasPermi:false//判断是否需要使用权限字符
+      })
+    }
     this.listDepartments();
     this.getHaikangQueryTypes()
     this.getList()

+ 548 - 0
src/views/medicUniversity-3_1/chemicalManagement/deviceManagement/SmartAccessControl/index-jinan.vue

@@ -0,0 +1,548 @@
+<!--智能门禁-->
+<template>
+  <div class="app-container SmartAccessControl">
+    <el-form :model="queryParamsData" class="form-box" ref="queryForm" :inline="true">
+      <el-form-item label="关键字" prop="searchValue">
+        <el-input
+          maxLength="30"
+          v-model="queryParamsData.searchValue"
+          placeholder="门禁锁编号/实验室"
+          clearable
+          size="small"
+          style="width: 240px"
+        />
+      </el-form-item>
+      <el-form-item label="学院" prop="deptId">
+        <el-select v-model="queryParamsData.deptId" clearable placeholder="请选择学院">
+          <el-option
+            v-for="item in optionsListOne"
+            :key="item.deptId"
+            :label="item.deptName"
+            :value="item.deptId">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="状态" prop="useStatus">
+        <el-select v-model="queryParamsData.operate" clearable placeholder="请选择状态">
+          <el-option
+            v-for="item in optionsListTwo"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <p class="inquire-button-one" @click="handleQuery" style="margin-right:10px;">查询</p>
+        <p class="reset-button-one" @click="resetQuery">重置</p>
+      </el-form-item>
+      <el-form-item style="float: right;">
+        <el-col :span="1.5" v-hasPermi="['laboratory:hardware6:add']">
+          <p class="add-button-one-90"
+             @click="pageToggle(1)"
+          ><i class="el-icon-plus"></i>新增</p>
+        </el-col>
+      </el-form-item>
+    </el-form>
+    <el-table  border :data="tableList" ref="multipleTable">
+      <el-table-column label="门禁锁编号" align="center" prop="hardwareNum"/>
+      <el-table-column label="学院" align="center" prop="deptName" width="250"/>
+      <el-table-column label="实验室" align="center" prop="posi" width="250" show-overflow-tooltip/>
+      <el-table-column label="设备状态" align="center" prop="status" width="100">
+        <template slot-scope="scope">{{scope.row.operate.name}}</template>
+      </el-table-column>
+      <el-table-column label="创建人" align="center" prop="createBy" width="150"/>
+      <el-table-column label="创建时间" align="center" prop="createTime" width="250"/>
+      <el-table-column label="操作" align="center" width="140" class-name="small-padding fixed-width" v-if="tableButtonType">
+        <template slot-scope="scope">
+          <div class="button-box">
+            <p class="table-min-button" style="margin-right:10px;" v-hasPermi="['laboratory:hardware6:edit']" @click="pageToggle(2,scope.row)">编辑</p>
+            <p class="table-min-button" v-hasPermi="['laboratory:hardware6:remove']" @click="pageToggle(3,scope.row)">删除</p>
+          </div>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination :page-sizes="[20, 30, 40, 50]"
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!--新增/编辑-->
+    <el-dialog :title="dialogTitle" :visible.sync="addDialogType" v-if="addDialogType" width="520px" append-to-body class="add-dialog-box">
+      <el-form ref="form" :model="form" :rules="rules" label-width="110px">
+        <el-form-item label="实验室:" prop="subjectId">
+          <el-select
+            style="width:360px;"
+            v-model="form.subjectId"
+            filterable
+            remote
+            clearable
+            @focus="selectFocus"
+            reserve-keyword
+            @clear="clearClick"
+            placeholder="搜索选择实验室"
+            :remote-method="getSelectList"
+            :loading="loading">
+            <el-option
+              v-for="item in selectList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="门禁编号" prop="hardwareNum">
+          <el-input
+            style="width:320px;"
+            v-model="form.hardwareNum"
+            placeholder="请输入门禁编号"
+            maxlength="20"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="门禁名称" prop="name" >
+          <el-input
+            style="width:320px;"
+            v-model="form.name"
+            placeholder="请输入门禁名称"
+            maxlength="8"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="IP" prop="ipAddress" >
+          <el-input
+            style="width:320px;"
+            v-model="form.ipAddress"
+            placeholder="请输入IP"
+            maxlength="15"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="端口" prop="port" >
+          <el-input
+            style="width:320px;"
+            v-model="form.port"
+            placeholder="请输入端口"
+            maxlength="6"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="设备管理证号" prop="harUser" >
+          <el-input
+            style="width:320px;"
+            v-model="form.harUser"
+            placeholder="请输入设备管理证号"
+            maxlength="30"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="设备管理密码" prop="harPsw" >
+          <el-input
+            style="width:320px;"
+            v-model="form.harPsw"
+            placeholder="请输入设备管理密码"
+            maxlength="30"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="门禁权限" style="margin-bottom: 0">
+          <el-checkbox-group v-model="form.controlScope">
+            <el-checkbox label="1" >关联安全准入</el-checkbox>
+            <el-checkbox label="2">关联白名单</el-checkbox>
+          </el-checkbox-group>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { hxpSmartTerminal,filterDept,getSubList,addHxpSmartTerminal,putHxpSmartTerminal,getHxpSmartTerminal,delHxpSmartTerminal } from "@/api/medicUniversity-3_1/index";
+  import { listHardware, delHardware, addHardware, updateHardware } from "@/api/medicUniversity-3_1/index";
+  import { listDepartments } from "@/api/system/dept";
+  import { getToken } from "@/utils/auth";
+  export default {
+    name: "SmartAccessControl-jinan",
+    data() {
+      return {
+        // table操作按钮校验
+        tableButtonType:this.hasPermiDom(['laboratory:hardware6:edit','laboratory:hardware6:remove']),
+        //上传相关配置
+        uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/laboratory/hardware/importData", // 上传地址
+        headers: {
+          Authorization: "Bearer " + getToken(),
+        },
+        // 遮罩层
+        loading:false,
+        //页面状态
+        pageType:1,
+        // 搜索数据
+        queryParamsData:{
+          pageNum:1,
+          pageSize:20,
+        },
+        // 搜索实际发送数据
+        queryParams:{
+          pageNum:1,
+          pageSize:20,
+        },
+        //数据数量
+        total:0,
+        //数据数组
+        tableList:[],
+        //学院列表
+        optionsListOne:[],
+        //状态列表
+        optionsListTwo:[{id:"ONLINE",name:"在线"},{id:"OFFLINE",name:"离线"}],
+        //编辑新增相关
+        dialogTitle:"",
+        addDialogType:false,
+        form:{},
+        selectList:[],
+        selectListData:[],
+        rules:{
+          name: [
+            { required: true, trigger: "blur", message: "请输入门禁名称" },
+          ],
+          hardwareNum: [
+            { required: true, trigger: "blur", message: "最大20个字符,包含大小写字母、数字" },
+            { required: true, message: "最大20个字符,包含大小写字母、数字", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          subjectId: [
+            { required: true, trigger: "blur", message: "搜索选择实验室" },
+          ],
+          relayCode: [
+            { required: true, message: "请输入设备编号", trigger: "blur" },
+            { required: true, message: "请输入设备编号", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          bit: [
+            { required: true, message: "请输入路由", trigger: "blur" },
+            { required: true, message: "请输入路由", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          ipAddress: [
+            { required: true, message: "请输入IP", trigger: "blur" },
+            { required: true, message: "请输入IP", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          port: [
+            { required: true, message: "请输入端口", trigger: "blur" },
+            { required: true, message: "请输入端口", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+
+          harUser: [
+            { required: true, message: "请输入设备管理证号", trigger: "blur" },
+            { required: true, message: "请输入设备管理证号", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          harPsw: [
+            { required: true, message: "请输入设备管理密码", trigger: "blur" },
+            { required: true, message: "请输入设备管理密码", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+
+        },
+      };
+    },
+    created() {
+
+    },
+    mounted(){
+      this.filterDept();
+      this.listDepartments();
+      this.getList();
+    },
+    methods: {
+      selectFocus(){
+        if(!this.selectList[0]){
+          this.filterDept();
+        }
+      },
+      //获取学院列表
+      listDepartments(){
+        listDepartments().then(response => {
+          this.optionsListOne = response.data;
+        });
+      },
+      pageToggle(type,row){
+        let self = this;
+        if(type == 1){
+          //新增
+          this.dialogTitle = '新增';
+          this.$set(this,'form',{
+            subjectId:"",
+            hardwareNum:"",
+            name:"",
+            ipAddress:"",
+            port:"",
+            harUser:"",
+            harPsw:"",
+            controlScope:[],
+          });
+          this.clearClick();
+          this.addDialogType = true;
+        }else if(type == 2){
+          // 编辑
+          this.dialogTitle = '编辑';
+          this.$set(this,'form',JSON.parse(JSON.stringify(row)));
+          if(row.controlScope){
+            this.form.controlScope=row.controlScope.split(',')
+          }else{
+            this.form.controlScope=[]
+          }
+          this.clearClick();
+          this.addDialogType = true;
+        }else if(type == 3){
+          // 删除
+          this.$confirm('确认要删除吗?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            delHardware(row.id).then(response => {
+              if (response.code == 200){
+                self.msgSuccess(response.msg);
+                self.getList();
+              }
+            });
+          }).then(() => {
+          }).catch(() => {});
+        }
+      },
+      //查询当前院系
+      filterDept(){
+        filterDept().then(response => {
+          let idText = "";
+          for(let i=0;i<response.data.length;i++){
+            if(i==0){
+              idText = idText + response.data[i].deptId;
+            }else{
+              idText = idText +','+ response.data[i].deptId;
+            }
+          }
+          //查询院系下实验室
+          getSubList(idText).then(response => {
+            //当前列表
+            this.selectList = JSON.parse(JSON.stringify(response.data));
+            //原始列表数据
+            this.selectListData = JSON.parse(JSON.stringify(response.data));
+          });
+        });
+      },
+      /** 实验室-本地懒加载 */
+      getSelectList(val) {
+        let self = this;
+        let list = [];
+        for(let i=0;i<self.selectListData.length;i++){
+          if(self.selectListData[i].name.indexOf(val) != -1){
+            list.push(self.selectListData[i]);
+          }
+        }
+        this.selectList = JSON.parse(JSON.stringify(list))
+      },
+      //实验室选中清除
+      clearClick(){
+        this.selectList = JSON.parse(JSON.stringify(this.selectListData))
+      },
+      submitForm(){
+        this.$refs["form"].validate((valid) => {
+          if (valid) {
+            if(this.form.id){
+              //编辑
+              this.form.type = 10;
+              this.form.controlScope=this.form.controlScope.join(','),
+              updateHardware(this.form).then(response => {
+                if (response.code == 200){
+                  this.addDialogType = false;
+                  this.msgSuccess(response.msg);
+                  this.getList();
+                }
+              });
+            }else{
+              //新增
+              let obj = {
+                type:10,
+                subjectId:this.form.subjectId,
+                hardwareNum:this.form.hardwareNum,
+                name:this.form.name,
+                ipAddress:this.form.ipAddress,
+                port:this.form.port,
+                harUser:this.form.harUser,
+                harPsw:this.form.harPsw,
+                controlScope:this.form.controlScope.join(','),
+              }
+              addHardware(obj).then(response => {
+                if (response.code == 200){
+                  this.addDialogType = false;
+                  this.msgSuccess(response.msg);
+                  this.resetQuery();
+                }else if(response.code == 205){
+                  this.$confirm(response.msg, "警告", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                  }).then(() => {
+                    //  确定
+                    this.$router.push({ path: '/comprehensive/laboratoryManagement/accessAuthorization-jinan' });
+                  }).catch(function() {
+                    //  取消
+                  });
+                }
+              });
+            }
+          }
+        })
+      },
+      cancel(){
+        this.addDialogType = false;
+      },
+      //获取数据列表
+      getList(){
+        this.queryParamsData = JSON.parse(JSON.stringify(this.queryParams));
+        this.queryParamsData.type = 'HK_DOOR';
+        listHardware(this.queryParamsData).then(response => {
+          this.total = response.total;
+          this.tableList = response.rows;
+        });
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParamsData.pageNum = 1;
+        this.queryParamsData.pageSize = 20;
+        this.queryParams = JSON.parse(JSON.stringify(this.queryParamsData));
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.$set(this,'queryParamsData',{});
+        this.$set(this,'queryParams',{});
+        this.handleQuery();
+      },
+
+    },
+  }
+</script>
+
+<style scoped lang="scss">
+  .SmartAccessControl{
+    flex:1;
+    display: flex;
+    flex-direction: column;
+    overflow: hidden!important;
+    padding:20px !important;
+    p{
+      margin:0;
+      padding:0;
+    }
+    .form-box{
+      .form-dropdown-box{
+        display: flex;
+        margin:0;
+        padding:0 10px;
+        cursor: pointer;
+        height:40px;
+        img:nth-child(1){
+          width:16px;
+          height:16px;
+          margin-top:12px;
+        }
+        p{
+          width:47px;
+          text-align: center;
+          font-size:14px;
+          margin:0;
+          line-height:40px;
+        }
+        img:nth-child(3){
+          width:10px;
+          height:6px;
+          margin-top:17px;
+        }
+      }
+    }
+    .button-box{
+      display: flex;
+    }
+  }
+</style>
+<style lang="scss">
+  .import-dialog-box{
+    .import-dialog-upLoad-box{
+      .el-upload{
+        width:450px;
+        margin:0 55px;
+        .el-upload-dragger{
+          width:450px;
+          .el-icon-upload{
+            font-size:100px;
+            color:#CBE6FE;
+          }
+          .el-upload__text{
+            margin-top:20px;
+          }
+        }
+      }
+      .el-upload__tip{
+        margin-left:60px;
+        font-size:14px;
+        margin-top:10px;
+      }
+      .el-upload-text-box{
+        background: #F5F5F5;
+        border-radius: 10px;
+        margin:15px 30px 0;
+        padding:0 20px 15px;
+        overflow: hidden;
+        *{
+          margin:0;
+        }
+        .img-text-box{
+          display: flex;
+          margin-top:15px;
+          img{
+            width:16px;
+            height:16px;
+            margin-right:13px;
+          }
+          p{
+            height:16px;
+            line-height:16px;
+            font-size:12px;
+          }
+        }
+        .text-p{
+          margin-top:15px;
+          margin-left:29px;
+          height:16px;
+          line-height:16px;
+          font-size:12px;
+        }
+      }
+    }
+    .teacher-import-dialog-button-box{
+      display: flex;
+      width:190px;
+      margin:0 auto;
+      p{
+        width:70px;
+        height:30px;
+        line-height:30px;
+        font-size:14px;
+        margin:0 auto;
+      }
+    }
+    .teacher-import-dialog-position-box{
+      width:100%;
+      height:100%;
+      position: absolute;
+      top:0;
+      left:0;
+      z-index: 999;
+      background: rgba(255,255,255,0.4);
+      border-radius:20px;
+    }
+  }
+</style>