dedsudiyu před 2 roky
rodič
revize
8da9e1b065
37 změnil soubory, kde provedl 6472 přidání a 4997 odebrání
  1. 73 0
      src/api/laboratory/subject.js
  2. 7 1
      src/api/system/user.js
  3. binární
      src/assets/ZDimages/icon_wd_zw.png
  4. binární
      src/assets/ZDimages/icon_znmj_lx.png
  5. binární
      src/assets/ZDimages/icon_znmj_zx.png
  6. binární
      src/assets/ZDimages/icon_zw_bk.png
  7. 2 2
      src/utils/LodopFuncs.js
  8. 144 172
      src/views/comprehensive/laboratoryManagement/accessAuthorization/application.vue
  9. 147 198
      src/views/comprehensive/laboratoryManagement/accessAuthorization/authorize.vue
  10. 40 38
      src/views/comprehensive/laboratoryManagement/accessAuthorization/index.vue
  11. 896 0
      src/views/comprehensive/laboratoryManagement/accessAuthorization/lookImpower.vue
  12. 306 0
      src/views/comprehensive/laboratoryManagement/accessAuthorization/lookImpowerSearch.vue
  13. 2 1
      src/views/comprehensive/laboratoryManagement/building/buildingDetails.vue
  14. 206 4
      src/views/comprehensive/laboratoryManagement/subject/deviceList.vue
  15. 103 42
      src/views/comprehensive/laboratoryManagement/subject/index.vue
  16. 1 1
      src/views/comprehensive/laboratoryManagement/subject/infoPageOne.vue
  17. 1093 1063
      src/views/comprehensive/personnel/student/addPage.vue
  18. 1229 1205
      src/views/comprehensive/personnel/teacher/addPage.vue
  19. 6 2
      src/views/gasManage3_0/manage/recognizerManage/recognizerManage.vue
  20. 1 1
      src/views/gasManage_syd/manage/infoRecord/alarmRecord.vue
  21. 1 1
      src/views/medicUniversity-3_1/chemicalManagement/chemicalLibrary/CabinetManagement/operationRecord.vue
  22. 3 3
      src/views/medicUniversity-3_1/chemicalManagement/chemicalLibrary/ChemicalInfo/listPage.vue
  23. 6 6
      src/views/medicUniversity-3_1/chemicalManagement/chemicalLibrary/msds/addPage.vue
  24. 2 1
      src/views/medicUniversity-3_1/chemicalManagement/chemicalProcurement/approvalProcess/index.vue
  25. 10 6
      src/views/medicUniversity-3_1/chemicalManagement/chemicalProcurement/purchaseRequisition/approvalPage.vue
  26. 1 0
      src/views/medicUniversity-3_1/chemicalManagement/chemicalProcurement/purchaseRequisition/index.vue
  27. 398 414
      src/views/medicUniversity-3_1/chemicalManagement/deviceManagement/SmartAccessControl/index.vue
  28. 847 793
      src/views/mine/index.vue
  29. 22 7
      src/views/newEvacuationBigData.vue
  30. 377 363
      src/views/secureAccess/approval/infoPage.vue
  31. 522 507
      src/views/secureAccess/whitelist/addPage.vue
  32. 10 154
      src/views/securityCheck/release/checkRecordInfoPage.vue
  33. 1 1
      src/views/securityCheck/release/index.vue
  34. 2 2
      src/views/securityCheck/release/listPage.vue
  35. 3 3
      src/views/studentViews/chemicalManagement/studentChemicalInfo/index.vue
  36. 10 6
      src/views/studentViews/chemicalManagement/studentPurchaseRequisition/approvalPage.vue
  37. 1 0
      src/views/studentViews/chemicalManagement/studentPurchaseRequisition/index.vue

+ 73 - 0
src/api/laboratory/subject.js

@@ -398,3 +398,76 @@ export function viewWarnMessage(query) {
   })
 }
 
+/* 智能门禁----------------- */
+
+//查询门禁授权列表
+export function getHaikangList(data) {
+  return request({
+    url: '/laboratory/haikang/user/subList?pageNum='+data.pageNum+'&pageSize='+data.pageSize,
+    method: 'post',
+    data: data,
+  })
+}
+//查询实验室已授权列表
+export function getHaikangUserList(data) {
+  return request({
+    url: '/laboratory/haikang/user/userList?pageNum='+data.pageNum+'&pageSize='+data.pageSize+'&startTime='+data.startTime+'&endTime='+data.endTime+'&searchValue='+data.searchValue+'&userType='+data.userType,
+    method: 'post',
+    data: data
+  })
+}
+//查询门禁授权类型
+export function getHaikangQueryTypes(data) {
+  return request({
+    url: '/laboratory/haikang/user/queryTypes',
+    method: 'post',
+    data: data
+  })
+}
+//新增用户授权
+export function AddImpowerHaikang(data) {
+  return request({
+    url: '/laboratory/haikang/user/add',
+    method: 'post',
+    data: data
+  })
+}
+//编辑用户授权
+export function editImpowerHaikang(data) {
+  return request({
+    url: '/laboratory/haikang/user/update',
+    method: 'post',
+    data: data
+  })
+}
+//新增用户授权
+export function retryImpowerHaikang(data) {
+  return request({
+    url: '/laboratory/haikang/user/retryAccredit',
+    method: 'post',
+    data: data
+  })
+}
+// 删除用户授权
+export function delUserHaikang(id) {
+  return request({
+    url: '/laboratory/haikang/user/' + id,
+    method: 'delete'
+  })
+}
+//门禁授权日志列表
+export function entranceUserLogList(query) {
+  return request({
+    url: '/laboratory/haikang/userLog/list',
+    method: 'get',
+    params: query
+  })
+}
+//门禁授权日志列表
+export function queryHardByTypeList(query) {
+  return request({
+    url: '/laboratory/hardware/queryHardByType',
+    method: 'get',
+    params: query
+  })
+}

+ 7 - 1
src/api/system/user.js

@@ -18,7 +18,13 @@ export function selectListUser(query) {
     params: query
   })
 }
-
+//指纹-查询用户指纹录取数量
+export const fingerprintQuantity  = (data) => {
+  return request({
+    url: `/laboratory/haikang/userFinger/queryCount/`+data,
+    method: 'GET',
+  })
+};
 // 查询教职工列表-下拉列表
 export function selectTeacherList(query) {
   return request({

binární
src/assets/ZDimages/icon_wd_zw.png


binární
src/assets/ZDimages/icon_znmj_lx.png


binární
src/assets/ZDimages/icon_znmj_zx.png


binární
src/assets/ZDimages/icon_zw_bk.png


+ 2 - 2
src/utils/LodopFuncs.js

@@ -63,7 +63,7 @@ export function getLodop(oOBJECT,oEMBED){
         var isIE = (navigator.userAgent.indexOf('MSIE')>=0) || (navigator.userAgent.indexOf('Trident')>=0);
         if (needCLodop()) {
             try{ LODOP=getCLodop();} catch(err) {};
-            if (!LODOP && document.readyState!=="complete") {alert("C-Lodop没准备好,请稍后再试!"); return;};
+            if (!LODOP && document.readyState!=="complete") {console.log("C-Lodop没准备好,请稍后再试!"); return;};
             if (!LODOP) {
                 // if (isIE) document.write(strCLodopInstall); else
                 // document.documentElement.innerHTML=strCLodopInstall+document.documentElement.innerHTML;
@@ -117,6 +117,6 @@ export function getLodop(oOBJECT,oEMBED){
 
         //===========================================================
         return LODOP;
-    } catch(err) {alert("getLodop出错:"+err);};
+    } catch(err) {console.log("getLodop出错:"+err);};
 };
 

+ 144 - 172
src/views/comprehensive/laboratoryManagement/accessAuthorization/application.vue

@@ -1,14 +1,14 @@
-<!--申请-->
+<!--授权日志-->
 <template>
   <div class="application">
     <div class="application-page" v-if="pageType == 1">
       <div class="title-box">
-        <div @click="titleClick">
+        <div @click="titleClick(1)">
           <p>门禁授权</p>
           <p></p>
         </div>
-        <div>
-          <p class="top-p-color">授权申请</p>
+        <div @click="titleClick(2)">
+          <p>授权日志</p>
           <p class="bottom-p-color"></p>
         </div>
       </div>
@@ -22,64 +22,37 @@
               clearable
               size="small"/>
           </el-form-item>
-          <el-form-item label="状态" prop="status" label-width="50px">
-            <el-select v-model="queryParamsData.status" 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 label="申请时间" prop="subjectId" label-width="80px">
-            <el-date-picker
-              :clearable="false"
-              v-model="dateRange"
-              style="width: 240px;height:40px;"
-              value-format="yyyy-MM-dd"
-              type="daterange"
-              range-separator="-"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
-            ></el-date-picker>
-          </el-form-item>
-          <el-form-item style="float: right;">
-            <el-col :span="1.5">
-              <p class="inquire-button-one"
-                 style="width:100px;margin-right:0;"
-                 v-hasPermi="['smartlock:openDoorApply:add']"
-                 @click="goPageButton(2)"
-              >授权申请</p>
-            </el-col>
-          </el-form-item>
+          <!--          <el-form-item label="状态" prop="status" label-width="50px">-->
+          <!--            <el-select v-model="queryParamsData.operate" clearable placeholder="请选择状态">-->
+          <!--              <el-option-->
+          <!--                v-for="item in optionsListTwo"-->
+          <!--                :key="item.code"-->
+          <!--                :label="item.name"-->
+          <!--                :value="item.code">-->
+          <!--              </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>
         <el-table v-loading="loading" border :data="tableList">
-          <el-table-column label="申请时间" align="center" prop="creatTime" show-overflow-tooltip/>
-          <el-table-column label="申请实验室" align="center" prop="subjectName" show-overflow-tooltip/>
-          <el-table-column label="位置" align="center" prop="position" show-overflow-tooltip v-if="$store.state.settings.smartAlarmType == 1"/>
-          <el-table-column label="所属学院" align="center" prop="college" show-overflow-tooltip/>
-          <el-table-column label="授权人" align="center" prop="safeUserName"  width="160px" show-overflow-tooltip/>
-          <el-table-column label="失效时间" align="center" prop="loseTime" width="160px" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <span>{{scope.row.loseTime!=1?scope.row.loseTime:''}}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="状态" align="center" prop="applyStatus" width="180px" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <span>{{scope.row.applyStatus==1?'已授权':(scope.row.applyStatus==2?'已失效':'')}}</span>
-            </template>
-          </el-table-column>
+          <el-table-column label="名称" align="center" prop="nickName" show-overflow-tooltip/>
+          <el-table-column label="类别" align="center" prop="userType" show-overflow-tooltip/>
+          <el-table-column label="门禁" align="center" prop="hardName" show-overflow-tooltip/>
+          <el-table-column label="实验室" align="center" prop="subName" show-overflow-tooltip/>
+          <el-table-column label="实验室所属学院" align="center" prop="deptName" show-overflow-tooltip/>
+          <el-table-column label="实验室位置" align="center" prop="posi"  width="160px" show-overflow-tooltip/>
+          <el-table-column label="操作内容" align="center" prop="remark"  width="160px" show-overflow-tooltip/>
+          <el-table-column label="操作时间" align="center" prop="createTime"  width="160px" show-overflow-tooltip/>
+          <el-table-column label="操作人" align="center" prop="createBy"  width="160px" show-overflow-tooltip/>
         </el-table>
         <pagination :page-sizes="[20, 30, 40, 50]"
                     v-show="total>0"
                     :total="total"
-                    :page.sync="queryParams.pageNum"
-                    :limit.sync="queryParams.pageSize"
+                    :page.sync="queryParamsData.pageNum"
+                    :limit.sync="queryParamsData.pageSize"
                     @pagination="getList"/>
       </div>
     </div>
@@ -88,146 +61,145 @@
 </template>
 
 <script>
-  import { applyList } from "@/api/laboratory/subject";
-  import addPage from "./addPage.vue";
-  export default {
-    name: "application",
-    components: {
-      addPage
+import { applyList, entranceUserLogList } from '@/api/laboratory/subject'
+import addPage from "./addPage.vue";
+export default {
+  name: "application",
+  components: {
+    addPage
+  },
+  data(){
+    return{
+      pageType:1,
+      // table操作按钮校验
+      tableButtonType:this.hasPermiDom(['system:user_student:query','system:user_student:query']),
+      loading:false,
+      // 搜索数据
+      queryParamsData:{
+        pageNum:1,
+        pageSize:20,
+        searchValue:'',
+        operate:'',
+      },
+      // 搜索实际发送数据
+      queryParams:{
+        pageNum:1,
+        pageSize:20,
+      },
+      dateRange:[],
+      //数据数量
+      total:10,
+      tableList:[],
+      //审批状态
+      optionsListTwo:[{code:null,name:'全部'},{code:0,name:'离线'},{code:2,name:'在线'}],
+    }
+  },
+  created() {
+
+  },
+  mounted(){
+    this.getList();
+  },
+  methods:{
+    titleClick(type){
+      this.$parent.titleClick(type);
     },
-    data(){
-      return{
-        pageType:1,
-        // table操作按钮校验
-        tableButtonType:this.hasPermiDom(['system:user_student:query','system:user_student:query']),
-        loading:false,
-        // 搜索数据
-        queryParamsData:{
-          pageNum:1,
-          pageSize:20,
-        },
-        // 搜索实际发送数据
-        queryParams:{
-          pageNum:1,
-          pageSize:20,
-        },
-        dateRange:[],
-        //数据数量
-        total:10,
-        tableList:[],
-        //审批状态
-        optionsListTwo:[{id:'1',name:'已授权'},{id:'2',name:'已失效'}]
+    //页面状态切换
+    goPageButton(type){
+      if(type == 1){
+        this.pageType = 1;
+      }else if(type == 2){
+        this.pageType = 2;
+      }else if(type == 3){
+        this.resetQuery();
+        this.pageType = 1;
       }
     },
-    created() {
-
-    },
-    mounted(){
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParamsData.pageNum = 1;
+      this.queryParamsData.pageSize = 20;
       this.getList();
     },
-    methods:{
-      titleClick(){
-        this.$parent.titleClick(1);
-      },
-      //页面状态切换
-      goPageButton(type){
-        if(type == 1){
-          this.pageType = 1;
-        }else if(type == 2){
-          this.pageType = 2;
-        }else if(type == 3){
-          this.resetQuery();
-          this.pageType = 1;
-        }
-      },
-      /** 搜索按钮操作 */
-      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.$set(this,'dateRange',[]);
-        this.handleQuery();
-      },
-      //获取数据列表
-      getList(){
-        this.queryParamsData = JSON.parse(JSON.stringify(this.queryParams));
-        if(this.dateRange&&this.dateRange.length>0) {
-          this.queryParamsData.startTime = this.dateRange[0];
-          this.queryParamsData.endTime = this.dateRange[1];
-        } else {
-          this.queryParamsData.startTime = null;
-          this.queryParamsData.endTime = null;
-        }
-        applyList(this.queryParamsData).then(response => {
-          this.tableList = response.rows;
-          this.total = response.total
-        });
-      },
-    }
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.$set(this,'queryParamsData',{});
+      this.$set(this,'dateRange',[]);
+      this.handleQuery();
+    },
+    //获取数据列表
+    getList(){
+      if(this.dateRange&&this.dateRange.length>0) {
+        this.queryParamsData.startTime = this.dateRange[0];
+        this.queryParamsData.endTime = this.dateRange[1];
+      } else {
+        this.queryParamsData.startTime = null;
+        this.queryParamsData.endTime = null;
+      }
+      entranceUserLogList(this.queryParamsData).then(response => {
+        this.tableList = response.rows;
+        this.total = response.total
+      });
+    },
   }
+}
 </script>
 
 <style scoped lang="scss">
-  .application{
+.application{
+  flex:1;
+  display: flex;
+  flex-direction: column;
+  .application-page{
     flex:1;
     display: flex;
     flex-direction: column;
-    .application-page{
-      flex:1;
+    overflow: hidden;
+    .title-box{
       display: flex;
-      flex-direction: column;
-      overflow: hidden;
-      .title-box{
-        display: flex;
-        border-bottom:1px solid #E0E0E0;
-        margin-bottom:20px;
-        div{
-          height:80px;
-          margin-right:20px;
-          cursor: pointer;
-          p:nth-child(1){
-            font-size:18px;
-            text-align: center;
-            padding:0 20px;
-            margin-top:26px;
-          }
-          p:nth-child(2){
-            width:40px;
-            height:4px;
-            border-radius:40px;
-            margin:12px auto;
-          }
-          .top-p-color{
-            color: #0045AF;
-          }
-          .bottom-p-color{
-            background: #0045AF;
-          }
+      border-bottom:1px solid #E0E0E0;
+      margin-bottom:20px;
+      div{
+        height:80px;
+        margin-right:20px;
+        cursor: pointer;
+        p:nth-child(1){
+          font-size:18px;
+          text-align: center;
+          padding:0 20px;
+          margin-top:26px;
+        }
+        p:nth-child(2){
+          width:40px;
+          height:4px;
+          border-radius:40px;
+          margin:12px auto;
         }
-        .buttonTitleColorA{
-          color:#0045AF;
+        .top-p-color{
+          color: #0045AF;
         }
-        .buttonTitleColorB{
-          color:#999999;
+        .bottom-p-color{
+          background: #0045AF;
         }
       }
-      .application-min{
-        flex:1;
+      .buttonTitleColorA{
+        color:#0045AF;
+      }
+      .buttonTitleColorB{
+        color:#999999;
+      }
+    }
+    .application-min{
+      flex:1;
+      display: flex;
+      flex-direction: column;
+      overflow: hidden;
+      margin:0 20px!important;
+      .button-box{
         display: flex;
-        flex-direction: column;
-        overflow: hidden;
-        margin:0 20px!important;
-        .button-box{
-          display: flex;
-        }
       }
     }
   }
+}
 
 </style>

+ 147 - 198
src/views/comprehensive/laboratoryManagement/accessAuthorization/authorize.vue

@@ -1,4 +1,4 @@
-<!--授权-->
+<!--门禁授权-->
 <template>
   <div class="authorize">
     <div class="authorize-page" v-if="pageType == 1">
@@ -7,8 +7,8 @@
           <p class="top-p-color">门禁授权</p>
           <p class="bottom-p-color"></p>
         </div>
-        <div @click="titleClick">
-          <p>授权申请</p>
+        <div @click="titleClick(2)">
+          <p>授权日志</p>
           <p></p>
         </div>
       </div>
@@ -23,26 +23,21 @@
               size="small"/>
           </el-form-item>
           <el-form-item label="状态" prop="status" label-width="50px">
-            <el-select v-model="queryParamsData.applyStatus" clearable placeholder="请选择状态">
+            <el-select v-model="queryParamsData.operate" clearable placeholder="请选择状态">
               <el-option
                 v-for="item in optionsListTwo"
-                :key="item.id"
+                :key="item.code"
                 :label="item.name"
-                :value="item.id">
+                :value="item.code">
               </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="申请时间" prop="subjectId" label-width="80px">
-            <el-date-picker
-              :clearable="false"
-              v-model="dateRange"
-              style="width: 240px;height:40px;"
-              value-format="yyyy-MM-dd"
-              type="daterange"
-              range-separator="-"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
-            ></el-date-picker>
+          <el-form-item label="分类" prop="zgType" label-width="80px">
+            <el-select v-model="queryParamsData.leadAuditStaus" placeholder="请选择" clearable size="small">
+              <el-option label="全部" value="" />
+              <el-option label="授权验证成功" value="0" />
+              <el-option label="授权验证失败" value="1" />
+            </el-select>
           </el-form-item>
           <el-form-item>
             <p class="inquire-button-one" @click="handleQuery" style="margin-right:10px;">查询</p>
@@ -50,34 +45,28 @@
           </el-form-item>
         </el-form>
         <el-table v-loading="loading" border :data="tableList">
-          <el-table-column label="申请时间" align="center" prop="creatTime" show-overflow-tooltip/>
-          <el-table-column label="申请人" align="center" prop="userName" show-overflow-tooltip/>
-          <el-table-column label="共同申请人" align="center" prop="userName2" show-overflow-tooltip/>
-          <el-table-column label="申请实验室" align="center" prop="subjectName" show-overflow-tooltip/>
-          <el-table-column label="位置" align="center" prop="position" show-overflow-tooltip v-if="$store.state.settings.smartAlarmType == 1"/>
-          <el-table-column label="所属学院" align="center" prop="college" show-overflow-tooltip/>
-          <el-table-column label="授权人" align="center" prop="safeUserName"  width="160px" show-overflow-tooltip/>
-          <el-table-column label="失效时间" align="center" prop="approvalTime" width="160px" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <span>{{scope.row.loseTime!=1?scope.row.loseTime:''}}</span>
+          <el-table-column label="所属学院" align="left" prop="deptName" />
+          <el-table-column label="实验室" align="left" prop="subName" />
+          <el-table-column label="位置" align="left" prop="posi"  />
+          <el-table-column label="实验室负责人" align="left" prop="adminName" />
+          <el-table-column label="门禁" align="left" prop="hardName" />
+          <el-table-column label="授权人数" align="left" prop="available"  />
+          <el-table-column label="验证方式失败数" align="left" prop="failNum"  />
+          <el-table-column label="状态" align="left" prop="operate" >
+            <template slot-scope="scope" v-if="scope.row.operate">
+              <span>{{scope.row.operate.name}}</span>
             </template>
           </el-table-column>
-          <el-table-column label="状态" align="center" prop="applyStatus" width="180px" show-overflow-tooltip>
+          <el-table-column label="操作" align="left" class-name="small-padding fixed-width"  width="120">
             <template slot-scope="scope">
-              <span>{{scope.row.applyStatus==1?'已授权':(scope.row.applyStatus==2?'已失效':'')}}</span>
+              <div class="button-box">
+                <p class="table-min-button"
+                   v-hasPermi="['haikang:user:list']"
+                   @click="handleClick('',scope.row,'detail')"
+                >查看授权</p>
+              </div>
             </template>
           </el-table-column>
-          <!--<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="140" v-if="tableButtonType">-->
-            <!--<template slot-scope="scope">-->
-              <!--<div class="button-box">-->
-                <!--&lt;!&ndash;<p class="table-min-button"  @click="tableButtonClick(scope.row,1)">通过</p>&ndash;&gt;-->
-                <!--&lt;!&ndash;<p class="table-min-button"  @click="tableButtonClick(scope.row,2)">拒绝</p>&ndash;&gt;-->
-                <!--<p class="table-min-button" v-show="scope.row.applyStatus==1&&scope.row.safe" @click="tableButtonClick(scope.row,1)">通过</p>-->
-                <!--<p class="table-min-button" v-show="scope.row.applyStatus==1&&scope.row.safe" @click="tableButtonClick(scope.row,2)">拒绝</p>-->
-                <!--&lt;!&ndash;<p class="table-min-button" v-show="scope.row.applyStatus==2" @click="tableButtonClick(scope.row,3)">查看</p>&ndash;&gt;-->
-              <!--</div>-->
-            <!--</template>-->
-          <!--</el-table-column>-->
         </el-table>
         <pagination :page-sizes="[20, 30, 40, 50]"
                     v-show="total>0"
@@ -87,187 +76,147 @@
                     @pagination="getList"/>
       </div>
     </div>
-    <infoPage v-if="pageType == 2" :infoData="infoData"></infoPage>
+    <lookImpower v-if="pageType == 2" :pageData="pageData"></lookImpower>
   </div>
 </template>
 
 <script>
-  import { openDoorApplyList,postApproval,getOpenDoorApply } from "@/api/laboratory/subject";
-  import infoPage from "./infoPage.vue";
-  export default {
-    name: "authorize",
-    components: {
-      infoPage
-    },
-    data(){
-      return{
-        pageType:1,
-        // table操作按钮校验
-        tableButtonType:this.hasPermiDom(['system:user_student:query','system:user_student:query']),
-        loading:false,
-        // 搜索数据
-        queryParamsData:{
-          pageNum:1,
-          pageSize:20,
-        },
-        // 搜索实际发送数据
-        queryParams:{
-          pageNum:1,
-          pageSize:20,
-        },
-        dateRange:[],
-        //数据数量
-        total:10,
-        tableList:[],
-        //审批状态
-        optionsListTwo:[{id:'1',name:'已授权'},{id:'2',name:'已失效'}],
-        //详情
-        infoData:{},
+import { getHaikangList } from '@/api/laboratory/subject'
+import lookImpower from "./lookImpower.vue";
+export default {
+  name: "authorize",
+  components: {
+    lookImpower
+  },
+  data(){
+    return{
+      pageType:1,
+      loading:false,
+      // 搜索数据
+      queryParamsData:{
+        pageNum:1,
+        pageSize:20,
+        searchValue:'',
+        operate:'',
+      },
+      // 搜索实际发送数据
+      queryParams:{
+        pageNum:1,
+        pageSize:20,
+      },
+      //数据数量
+      total:10,
+      tableList:[{}],
+      //审批状态
+      optionsListTwo:[{code:null,name:'全部'},{code:0,name:'离线'},{code:2,name:'在线'}],
+      //详情
+      pageData:{},
+    }
+  },
+  created() {
+
+  },
+  mounted(){
+    this.getList();
+  },
+  methods:{
+    handleClick(index,row,doType){
+      if(doType=='detail'){
+        this.pageType=2
+
+        this.pageData=row
+        console.log(this.pageData)
+      }else if(doType=='back'){
+        this.pageType=1
       }
-    },
-    created() {
 
     },
-    mounted(){
+    //操作接口
+    goPageButton(){
+      this.pageType = 1;
+    },
+    titleClick(type){
+      this.$parent.titleClick(type);
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParamsData.pageNum = 1;
+      this.queryParamsData.pageSize = 20;
+      this.queryParams = JSON.parse(JSON.stringify(this.queryParamsData));
       this.getList();
     },
-    methods:{
-      //操作接口
-      tableButtonClick(item,type){
-        if(type == 1){
-          this.$confirm('确认要通过审批吗?', "警告", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning"
-          }).then(() => {
-            let obj = {
-              applyId:item.id,
-              approvaStatus:'1',
-            }
-            postApproval(obj).then((response) => {
-              this.msgSuccess(response.msg)
-              this.getList();
-            });
-          }).catch(function() {
-            //  取消
-          });
-        }else if(type == 2){
-          this.$confirm('确认要拒绝审批吗?', "警告", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning"
-          }).then(() => {
-            let obj = {
-              applyId:item.id,
-              approvaStatus:'2',
-            };
-            postApproval(obj).then((response) => {
-              this.msgSuccess(response.msg);
-              this.getList();
-            });
-          }).catch(function() {
-            //  取消
-          });
-        } else if(type == 3){
-          getOpenDoorApply(item.id).then((response) => {
-            this.infoData  = response.data;
-            this.pageType = 2;
-          });
-        }
-      },
-      goPageButton(){
-        this.pageType = 1;
-      },
-      titleClick(){
-        this.$parent.titleClick(2);
-      },
-      /** 搜索按钮操作 */
-      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.$set(this,'dateRange',[]);
-        this.handleQuery();
-      },
-      //获取数据列表
-      getList(){
-        this.queryParamsData = JSON.parse(JSON.stringify(this.queryParams));
-        if(this.dateRange&&this.dateRange.length>0) {
-          this.queryParamsData.startTime = this.dateRange[0];
-          this.queryParamsData.endTime = this.dateRange[1];
-        } else {
-          this.queryParamsData.startTime = null;
-          this.queryParamsData.endTime = null;
-        }
-        openDoorApplyList(this.queryParamsData).then(response => {
-          this.tableList = response.rows;
-          this.total = response.total
-        });
-      },
-    }
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.$set(this,'queryParamsData',{});
+      this.$set(this,'queryParams',{});
+      this.handleQuery();
+    },
+    //获取数据列表
+    getList(){
+      this.queryParamsData = JSON.parse(JSON.stringify(this.queryParams));
+      getHaikangList(this.queryParamsData).then(response => {
+        this.tableList = response.rows;
+        this.total = response.total
+      });
+    },
   }
+}
 </script>
 
 <style scoped lang="scss">
-  .authorize{
+.authorize{
+  flex:1;
+  display: flex;
+  flex-direction: column;
+  .authorize-page{
     flex:1;
     display: flex;
     flex-direction: column;
-    .authorize-page{
-      flex:1;
+    overflow: hidden;
+    .title-box{
       display: flex;
-      flex-direction: column;
-      overflow: hidden;
-      .title-box{
-        display: flex;
-        border-bottom:1px solid #E0E0E0;
-        margin-bottom:20px;
-        div{
-          height:80px;
-          margin-right:20px;
-          cursor: pointer;
-          p:nth-child(1){
-            font-size:18px;
-            text-align: center;
-            padding:0 20px;
-            margin-top:26px;
-          }
-          p:nth-child(2){
-            width:40px;
-            height:4px;
-            border-radius:40px;
-            margin:12px auto;
-          }
-          .top-p-color{
-            color: #0045AF;
-          }
-          .bottom-p-color{
-            background: #0045AF;
-          }
+      border-bottom:1px solid #E0E0E0;
+      margin-bottom:20px;
+      div{
+        height:80px;
+        margin-right:20px;
+        cursor: pointer;
+        p:nth-child(1){
+          font-size:18px;
+          text-align: center;
+          padding:0 20px;
+          margin-top:26px;
+        }
+        p:nth-child(2){
+          width:40px;
+          height:4px;
+          border-radius:40px;
+          margin:12px auto;
         }
-        .buttonTitleColorA{
-          color:#0045AF;
+        .top-p-color{
+          color: #0045AF;
         }
-        .buttonTitleColorB{
-          color:#999999;
+        .bottom-p-color{
+          background: #0045AF;
         }
       }
-      .authorize-min{
-        flex:1;
+      .buttonTitleColorA{
+        color:#0045AF;
+      }
+      .buttonTitleColorB{
+        color:#999999;
+      }
+    }
+    .authorize-min{
+      flex:1;
+      display: flex;
+      flex-direction: column;
+      overflow: hidden;
+      margin:0 20px!important;
+      .button-box{
         display: flex;
-        flex-direction: column;
-        overflow: hidden;
-        margin:0 20px!important;
-        .button-box{
-          display: flex;
-        }
       }
     }
   }
+}
 </style>

+ 40 - 38
src/views/comprehensive/laboratoryManagement/accessAuthorization/index.vue

@@ -1,52 +1,54 @@
 <template>
-    <div class="app-container accessAuthorization">
-      <!--授权-->
-      <authorize v-if="pageType == 1"></authorize>
-      <!--申请-->
-      <application v-if="pageType == 2"></application>
-    </div>
+  <div class="app-container accessAuthorization">
+    <!--门禁授权-->
+    <authorize v-if="pageType == 1"></authorize>
+    <!--授权日志-->
+    <application v-if="pageType == 2"></application>
+  </div>
 </template>
 
 <script>
-  import authorize from "./authorize.vue";
-  import application from "./application.vue";
-  export default {
-    name: "index",
-    components: {
-      authorize,
-      application
-    },
-    data(){
-      return{
-        pageType:1,
-      }
-    },
-    created() {
+import authorize from "./authorize.vue";
+import application from "./application.vue";
+
+export default {
+  name: "index",
+  components: {
+    authorize,
+    application,
+  },
+  data() {
+    return {
+      pageType: 1,
+    }
+  },
+  created() {
 
-    },
-    mounted(){
+  },
+  mounted() {
 
-    },
-    methods:{
-      //选项卡切换
-      titleClick(type){
-        if(this.pageType != type){
-          this.pageType = type
-        }
+  },
+  methods: {
+    //选项卡切换
+    titleClick(type) {
+      if (this.pageType != type) {
+        this.pageType = type
       }
     }
   }
+}
 </script>
 
 <style scoped lang="scss">
-  .accessAuthorization{
-    flex:1;
-    display: flex!important;
-    flex-direction: column;
-    overflow: hidden;
-    *{
-      margin:0;
-      font-weight:500;
-    }
+.accessAuthorization {
+  flex: 1;
+  display: flex !important;
+  flex-direction: column;
+  overflow: hidden;
+
+  * {
+    margin: 0;
+    font-weight: 500;
   }
+}
 </style>

+ 896 - 0
src/views/comprehensive/laboratoryManagement/accessAuthorization/lookImpower.vue

@@ -0,0 +1,896 @@
+<!--供应商管理-->
+<template>
+  <div class="supplier">
+    <div class="supplier-title">
+      <P>实验室名称-已授权列表 </P>
+      <p class="button-p reset-button-one" @click="backPage">返回</p>
+    </div>
+    <div class="supplier-page">
+      <advanced-search :searchData="searchData"></advanced-search>
+        <el-table  v-loading="loading"  ref="multipleTable2"  border tooltip-effect="dark" :row-key="getRowKeys2" :data="tableData"
+                  highlight-current-row @selection-change="handleSelectionChange2">
+          <el-table-column type="selection"  width="55" :reserve-selection="true" align="center"></el-table-column>
+        <el-table-column label="所属单位" align="left" prop="deptName"/>
+        <el-table-column label="姓名" align="left" prop="nickName"></el-table-column>
+        <el-table-column  align="left" prop="verifyMode">
+          <template slot-scope="scope" slot="header">
+            <span>验证方式
+              <el-tooltip class="item" effect="dark" placement="top-start">
+                <i class= 'el-icon-question' style="color:#E6A23C; margin-left:5px;font-size: 16px;'"></i>
+                <div style="width: 200px;" slot="content">红色:表示此验证方式失败<br/>绿色表示此验证方式成功</div>
+              </el-tooltip>
+            </span>
+          </template>
+          <template slot-scope="scope">
+              <span  v-for="item in scope.row.verifyList" :class="item.verifyStatus?'verify-green':'verify-red'">{{item.name}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="授权状态" align="left" prop="isretry">
+          <template slot-scope="scope">
+            <span v-if="scope.row.state">成功</span>
+            <span v-if="!scope.row.state">失败</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="类别" align="left" prop="userType"></el-table-column>
+        <el-table-column label="授权时间" align="left" prop="verifyTime"></el-table-column>
+        <el-table-column label="授权人" align="left" prop="verifyUser"></el-table-column>
+        <el-table-column label="失效时间" align="left" prop="invalidTime" width="250">
+          <template slot-scope="scope">
+            <el-date-picker
+              :disabled="(scope.row.userType=='学生' && admittance) || (scope.row.userType=='教师' && whiteList)"
+              :picker-options="pickerOptions0"
+              v-model="scope.row.invalidTime"
+              value-format="yyyy-MM-dd"
+              type="date"
+              placeholder="请选择失效时间">
+            </el-date-picker>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="220">
+          <template slot-scope="scope">
+            <div class="button-box" style="display: flex;justify-content: flex-start;">
+              <p class="table-min-button" v-if="(scope.row.userType=='学生' && !admittance && !scope.row.isretry) || (scope.row.userType=='教师' && !whiteList) && !scope.row.isretry" style="color: #333;cursor: text" @click="handleClick('',scope.row,'again')">手动<i style="color: #0183FA;cursor: pointer;font-style: normal;text-decoration:underline" @click="handleClick('',scope.row,'retry')">重试</i></p>
+              <p class="table-min-button" v-if="scope.row.userType=='学生' && admittance"  style="color: #333;cursor: text" @click="handleClick('',scope.row,'again')"  >安全准入<i style="color: #0183FA;cursor: pointer;font-style: normal;text-decoration:underline" @click="handleClick('',scope.row,'retry')" v-if="!scope.row.isretry">重试</i></p>
+              <p class="table-min-button" v-if="scope.row.userType=='教师' && whiteList" style="color: #333;cursor: text" @click="handleClick('',scope.row,'again')" >白名单<i style="color: #0183FA;cursor: pointer;font-style: normal;text-decoration:underline" @click="handleClick('',scope.row,'retry')" v-if="!scope.row.isretry">重试</i></p>
+              <p class="table-min-button" v-if="(scope.row.userType=='学生' && !admittance) || (scope.row.userType=='教师' && !whiteList)"@click="handleClick('',scope.row,'delete')">删除</p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="display: flex;height:32px;margin-top:15px;">
+        <div style="flex:5;">
+          <pagination :page-sizes="[20, 30, 40, 50]"
+                      v-show="total>0"
+                      :total="total"
+                      style="margin:0;"
+                      :page.sync="queryParams.pageNum"
+                      :limit.sync="queryParams.pageSize"
+                      @pagination="getList"
+          />
+        </div>
+      </div>
+      <div style="text-align: center;">
+        <el-button class="color_ff back_one" style="width: 300px;" @click="loseTimeSubmitForm()">确定</el-button>
+      </div>
+
+    </div>
+    <!--关联实验室弹框-->
+    <el-dialog :title=dialogTitle @close="handleClose" :visible.sync="dialogVisible" width="80%">
+      <el-form :model="dialogForm" ref="dialogForm" :inline="true" label-width="140px">
+        <el-form-item label="关键字" prop="name" >
+          <el-input
+            v-model="dialogForm.searchValue"
+            placeholder="请输入名称/联系方式"
+            clearable
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="所属单位" prop="deptId" label-width="80px">
+          <el-select v-model="dialogForm.deptId" clearable placeholder="请选择学院">
+            <el-option
+              v-for="item in collegeOptions"
+              :key="item.deptId"
+              :label="item.deptName"
+              :value="item.deptId">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" style="margin-left:20px;" @click="onSearch">查询</p>
+          <p class="reset-button-one" style="margin-left:20px;" @click="resetForm">重置</p>
+        </el-form-item>
+      </el-form>
+      <div class="btn_list">
+        <i class="el-icon-warning"></i>
+        <i>已选择 {{labWhiteJoinSubList.length}} 项目</i>
+        <i @click="toggleSelection(dialogTable)">全选本页</i>
+        <i></i>
+        <i @click="toggleSelection()">清除选项</i>
+      </div>
+      <el-table ref="multipleTable"  border tooltip-effect="dark" :row-key="getRowKeys" :data="dialogTable"
+                highlight-current-row @selection-change="handleSelectionChange" style="cursor: pointer;height:500px;">
+        <el-table-column type="selection"  width="55" :reserve-selection="true" align="center"></el-table-column>
+        <el-table-column label="所属单位" align="left" prop="deptName"/>
+        <el-table-column label="姓名" align="left" prop="nickName" />
+        <el-table-column label="导师" align="left" prop="tutorUserName" v-if="userType==1"/>
+        <el-table-column label="专业" align="left" prop="major" v-if="userType==1"/>
+        <el-table-column label="身份" align="left" prop="positionName" v-if="userType==2"/>
+        <el-table-column label="验证方式" align="left" prop="verifyMode">
+          <template slot-scope="scope">
+            <el-select v-model="scope.row.verifyMode" @change="verifyModeFun(scope.row)" clearable >
+              <el-option
+                v-for="item in verifyWayList"
+                :key="item.key"
+                :label="item.value"
+                :value="item.key">
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column label="失效时间" align="left" prop="invalidTime">
+          <template slot-scope="scope">
+            <el-date-picker
+              @blur="invalidTimeFun(scope.row,$event)"
+              :picker-options="pickerOptions0"
+              v-model="scope.row.invalidTime"
+              value-format="yyyy-MM-dd"
+              type="date"
+              placeholder="请选择失效时间">
+            </el-date-picker>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination :page-sizes="[20, 30, 40, 50]"
+                  v-show="total>0"
+                  :total="total"
+                  :page.sync="dialogForm.pageNum"
+                  :limit.sync="dialogForm.pageSize"
+                  @pagination="getUserList"
+      />
+      <div class="configuration">
+        <el-form  :model="configuration" ref="queryForm" :inline="true" v-if="unifyDeploy">
+          <el-form-item label="验证方式:" prop="name">
+            <el-select v-model="configuration.verifyMode" clearable >
+              <el-option
+                v-for="item in verifyWayList"
+                :key="item.key"
+                :label="item.value"
+                :value="item.key">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="失效时间:" prop="name">
+            <el-date-picker
+              :picker-options="pickerOptions0"
+              v-model="configuration.invalidTime"
+              value-format="yyyy-MM-dd"
+              type="date"
+              placeholder="请选择失效时间">
+            </el-date-picker>
+          </el-form-item>
+        </el-form>
+        <p :class="unifyDeploy?'add-button-one-120':'inquire-button-one'"  @click="unifyDeployFun()">{{unifyDeploy?'取消统一配置':'统一配置'}}</p>
+        <el-button class="color_ff back_one" @click="submitForm()">确定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listUser} from '@/api/permissionRequired'
+import { listDepartments } from '@/api/system/dept'
+import advancedSearch from "@/components/ZDcomponents/advancedSearch.vue"
+import {
+  AddImpowerHaikang,
+  delUserHaikang,
+  editImpowerHaikang,
+  getHaikangQueryTypes,
+  getHaikangUserList, retryImpowerHaikang
+} from '@/api/laboratory/subject'
+
+export default {
+  name: "Approval",
+
+  components: {
+    advancedSearch
+  },
+  props:{
+    pageData:{},
+  },
+  data() {
+    return {
+      loading:false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        searchValue:'',
+        userType:'',
+        hardId:'',
+        startTime:'',
+        endTime:'',
+      },
+      total:0,
+      tableData:[],
+      dateRange:[],
+      dialogForm:{
+        pageNum: 1,
+        pageSize: 20,
+        userType: '',
+        searchValue:'',
+        deptId:'',
+      },
+      dialogTitle:'选择学生',
+      dialogVisible:false,
+      collegeOptions:[],//学院
+      labWhiteJoinSubList:[],
+      dialogTable:[],
+      radioList:[],
+      userType:1,//判断是学生 1 教职工2
+      verifyWayList:[],
+      configuration:{
+        invalidTime:'',
+        verifyMode:'',
+      },
+      unifyDeploy:false,
+      //提交
+      form:{},
+      // 设置只能选择当前日期及之后的日期
+      pickerOptions0: {
+        disabledDate(time) {
+          return time.getTime() < Date.now();//如果没有后面的-8.64e7就是不可以选择今天的
+        }
+      },
+      impowerList:[],//授权列表选中
+      admittance:false,//智能门禁有没有勾选安全准入
+      whiteList:false,//智能门禁有没有勾选白名单
+      searchData:{
+        buttonList:[//按钮数组没有则为空
+          {
+            name:"批量重试",//按钮名称 只有再状态 1 时需要
+            type:"1", //按钮类型 1.按钮 2.导入 3.导出
+            parameter:"batchAgain",//按钮字符用于返回方法时的判断
+            hasPermi:"", // 权限字段 如果没有则传空字符 hasPermi:"",
+            isHasPermi:false//判断是否需要使用权限字符
+          },
+        ],
+        searchList:[//搜索数组
+          {
+            name:"关键字",//描述名称
+            key:"searchValue",//键名 用于返回数据
+            value:"",//内容 用于组件内绑定数据
+            placeholder:"请输入姓名/工号/学号",//输入提示
+            level:"1",//1.普通搜索 2.高级搜索  普通搜索默认会在高级搜索时显示
+            type:"1",//类型 1.input 2.select 3.TimePicker
+            universal:'20',//通用参数 input时为最大长度 //TimePicker时可不传
+            width:'260',//el-form-item 长度 可传可不传 不传时input/select默认180长度 TimePicker默认240长度
+          },
+          {
+            name:"类别",//描述名称
+            key:"userType",//键名 用于返回数据
+            value:"",//内容 用于组件内绑定数据
+            placeholder:"请选择类别",//输入提示
+            level:"1",//1.普通搜索 2.高级搜索  普通搜索默认会在高级搜索时显示
+            type:"2",//类型 1.input 2.select 3.TimePicker
+            universal:[ //通用参数 select时为列表数据 //TimePicker时可不传
+              {label:"学生",value:"22"},{label:"教师",value:"11"},
+            ],
+            width:'175',//el-form-item 长度 可传可不传 不传时input/select默认180长度 TimePicker默认240长度
+          },
+          {
+            name:"授权时间段",//描述名称
+            key:"dateRange",//键名 用于返回数据
+            value:"",//内容 用于组件内绑定数据
+            placeholder:"请选择",//输入提示
+            level:"2",//1.普通搜索 2.高级搜索  普通搜索默认会在高级搜索时显示
+            type:"3",//类型 1.input 2.select 3.TimePicker
+            width:'260',//el-form-item 长度 可传可不传 不传时input/select默认180长度 TimePicker默认240长度
+          },
+          {
+            name:"分类",//描述名称
+            key:"state",//键名 用于返回数据
+            value:"",//内容 用于组件内绑定数据
+            placeholder:"请选择分类",//输入提示
+            level:"2",//1.普通搜索 2.高级搜索  普通搜索默认会在高级搜索时显示
+            type:"2",//类型 1.input 2.select 3.TimePicker
+            universal:[ //通用参数 select时为列表数据 //TimePicker时可不传
+              {label:"全部",value:""},{label:"授权验证成功",value:true},{label:"授权验证失败",value:false},
+            ],
+            width:'175',//el-form-item 长度 可传可不传 不传时input/select默认180长度 TimePicker默认240长度
+          },
+        ],
+      },
+    };
+
+
+  },
+  methods: {
+
+      //弹出层表格里验证方式改变重新赋值
+      verifyModeFun(d){
+        let _this=this;
+        this.dialogTable.forEach(function(item,index){
+          if(item.userId==d.userId){
+            _this.$set(_this.dialogTable,index,d)
+          }
+        })
+      },
+      //弹出层表格里失效时间改变重新赋值
+        invalidTimeFun(item,e){
+          this.dialogTable.splice(1,0);
+
+      },
+    //获取当前日期
+      getdate() {
+        const dates = new Date()
+        dates.setMonth(dates.getMonth() + 1)
+        var pastMonth = dates.getMonth() + 1
+        var pastDay = dates.getDate()
+        if (pastMonth >= 1 && pastMonth <= 9) {
+          pastMonth = '0' + pastMonth
+        }
+        if (pastDay >= 0 && pastDay <= 9) {
+          pastDay = '0' + pastDay
+        }
+        const endDate = dates.getFullYear() + '-' + pastMonth + '-' + pastDay
+        return endDate
+      },
+      //查询
+      onSearch() {
+        this.dialogForm.pageNo = 1;
+        this.getUserList();
+      },
+      //重置
+      resetForm() {
+        this.dialogForm.searchValue = '';
+        this.dialogForm.deptId = '';
+        this.onSearch();
+      },
+      //统一配置
+      unifyDeployFun(){
+          this.unifyDeploy=!this.unifyDeploy
+          if(this.unifyDeploy==false){
+            this.configuration.invalidTime='';
+            this.configuration.verifyMode='';
+          }
+      },
+      getRowKeys(row) {
+        return row.userId;   //指定row-key的一个标识
+      },
+      getRowKeys2(row) {
+        return row.id;   //指定row-key的一个标识
+      },
+      //监听关联记录弹窗关闭
+      handleClose(){
+        console.log('弹窗关闭');
+        this.$refs.multipleTable.clearSelection();
+        this.dialogForm.searchValue='';
+        this.dialogForm.pageNum=1;
+        this.dialogForm.deptId='';
+        this.configuration.invalidTime='';
+        this.configuration.verifyMode='';
+      },
+      //取消选中
+      toggleSelection(rows) {
+        let _this=this;
+        if (rows) {
+          rows.forEach(row => {
+            this.$refs.multipleTable.toggleRowSelection(row,true);
+          });
+
+        } else {
+          this.$refs.multipleTable.clearSelection();
+        }
+      },
+      //选中实验室
+      handleSelectionChange(val){
+        let _this=this;
+        this.labWhiteJoinSubList=[];
+        this.labWhiteJoinSubList=val;
+
+      },
+     //已授权列表
+      handleSelectionChange2(val){
+        let _this=this;
+        this.impowerList=[];
+        this.impowerList=val;
+
+      },
+
+      handleClick(index,row,doType){
+        let _this=this;
+        if(doType=='delete'){//删除
+          let _this=this
+          console.log(row)
+          this.$confirm('是否确认删除['+row.nickName+']门禁授权?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            delUserHaikang(row.id).then( response => {
+              _this.msgSuccess("删除成功");
+              _this.getList();
+            });
+          }).then(() => {
+            _this.getList();
+
+          }).catch(() => {});
+        }else if(doType=='retry'){
+          let arr=[];
+          arr.push({'id':row.id})
+          _this.retryImpowerHaikang(arr)
+        }
+      },
+      //获取学院列表
+      listDepartments(){
+        listDepartments().then(response => {
+          this.collegeOptions = response.data;
+        });
+      },
+      /** 弹框查询列表 */
+      getUserList() {//type 1学生 2教职工
+        let _this=this;
+        this.loading = true;
+        if(_this.userType==1){
+          this.dialogForm.userType=22
+          listUser(this.addDateRange(this.dialogForm, this.dateRange)).then(response => {
+              this.dialogTable = response.rows;
+              this.total = response.total;
+              this.loading = false;
+              this.dialogTable.forEach(function(item) {
+                  item.verifyMode='faceOrFpOrCardOrPw'
+                  item.invalidTime=_this.getdate()
+              })
+            }
+          );
+        }else if(_this.userType==2){
+          this.dialogForm.userType=11
+          listUser(this.addDateRange(this.dialogForm, this.dateRange)).then(response => {
+              this.dialogTable = response.rows;
+              this.total = response.total;
+              this.loading = false;
+              this.dialogTable.forEach(function(item) {
+                item.verifyMode='faceOrFpOrCardOrPw'
+                item.invalidTime=_this.getdate()
+              })
+            }
+          );
+
+        }
+      },
+      /** 查询门禁授权类型 */
+      getHaikangQueryTypes(){
+        getHaikangQueryTypes().then(response => {
+          if(response.code==200){
+            this.verifyWayList=response.data
+          }
+        });
+      },
+
+      //返回
+      backPage(){
+        this.$parent.handleClick('','','back');
+        this.$parent.getList();
+      },
+      //父组件必要此方法用于接收参数
+      searchClick(type,data){
+        let _this = this;
+        if(type == 1){ //type  1.查询
+          console.log(data);
+          this.queryParams = JSON.parse(JSON.stringify(data));
+          if(data.dateRange){
+            this.queryParams.startTime = data.dateRange[0];
+            this.queryParams.endTime = data.dateRange[1];
+            delete this.queryParams.dateRange
+          }else{
+            delete this.queryParams.dateRange
+          }
+          this.queryParams.hardId=this.pageData.hardId;
+          this.queryParams.pageNum = 1;
+          this.queryParams.pageSize = 20;
+          this.getList();
+        }else if(type == 2) { //type  1.重置
+          this.queryParams = {
+            pageNum: 1,
+            pageSize: 20,
+          };
+          this.getList();
+        }else if(type=='addStudent'){
+          _this.unifyDeploy=false;
+          _this.dialogVisible=true;
+          _this.dialogTitle='选择学生';
+          _this.userType=1;
+          this.getUserList();
+        }else if(type=='addTeacher'){
+          _this.unifyDeploy=false;
+          _this.dialogVisible=true;
+          _this.dialogTitle='选择教职工';
+          _this.userType=2;
+          this.getUserList();
+        }else if(type=='batchAgain'){
+          if(_this.impowerList.length<=0){
+            _this.msgError("请选择需要授权的数据!");
+          }else{
+            let arr=[];
+            this.impowerList.forEach(function(item){
+              arr.push({'id':item.id})
+            })
+            _this.retryImpowerHaikang(arr)
+
+          }
+
+        }
+      },
+      getList(){
+        let _this=this;
+        getHaikangUserList(_this.queryParams).then( response => {
+          let res=response.rows;
+          _this.tableData=res;
+          _this.total=response.total;
+          //先判断是或还是+,如果是或,判断有哪几种,并且判断每种显示红色还是绿色,如果是加,判断是否每个都是true,如果有一个不是那就是红色,入股都是那是绿色
+
+          _this.tableData.forEach(function(item) {
+            let verifyList=[];
+            let isVerify=true;//判断验证方式显示颜色
+            let isretry=true;//判断是否需要显示重试按钮
+            let impowerStatus=false;//授权状态
+            if(item.verifyMode.indexOf('或')!=-1){//或
+
+              if(item.verifyMode.search('密码')!=-1){
+                verifyList.push({verifyStatus:item.state,name:'密码'})
+                if(!item.state){
+                  isretry=false
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              if(item.verifyMode.search('人脸')!=-1){
+                verifyList.push({verifyStatus:item.ifFace,name:'人脸'})
+                if(!item.ifFace){
+                  isretry=false
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              if(item.verifyMode.search('刷卡')!=-1){
+                verifyList.push({verifyStatus:item.ifCard,name:'刷卡'})
+                if(!item.ifCard){
+                  isretry=false
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              if(item.verifyMode.search('指纹')!=-1){
+                verifyList.push({verifyStatus:item.ifFinger,name:'指纹'})
+                if(!item.ifFinger){
+                  isretry=false
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              item.verifyList=verifyList;
+              item.isretry=isretry;
+              item.impowerStatus=impowerStatus;
+
+            }else if(item.verifyMode.indexOf('+')!=-1){//+
+
+              if(item.verifyMode.search('密码')!=-1){
+                if(!item.state){
+                  isVerify=false;
+                  isretry=false;
+                  impowerStatus=false;
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              if(item.verifyMode.search('人脸')!=-1){
+                if(!item.ifFace){
+                  isVerify=false;
+                  isretry=false;
+                  impowerStatus=false;
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              if(item.verifyMode.search('刷卡')!=-1){
+                if(!item.ifCard){
+                  isVerify=false;
+                  isretry=false;
+                  impowerStatus=false;
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              if(item.verifyMode.search('指纹')!=-1){
+                if(!item.ifFinger){
+                  isVerify=false;
+                  isretry=false;
+                  impowerStatus=false;
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              verifyList.push({verifyStatus:isVerify,name:item.verifyMode})
+              item.verifyList=verifyList;
+              item.isretry=isretry;
+              item.impowerStatus=impowerStatus;
+            }else{//其他单个
+              if(item.verifyMode.search('密码')!=-1){
+                verifyList.push({verifyStatus:item.state,name:'密码'})
+                if(!item.state){
+                  isretry=false
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              if(item.verifyMode.search('人脸')!=-1){
+                verifyList.push({verifyStatus:item.ifFace,name:'人脸'})
+                if(!item.ifFace){
+                  isretry=false
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              if(item.verifyMode.search('刷卡')!=-1){
+                verifyList.push({verifyStatus:item.ifCard,name:'刷卡'})
+                if(!item.ifCard){
+                  isretry=false
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              if(item.verifyMode.search('指纹')!=-1){
+                verifyList.push({verifyStatus:item.ifFinger,name:'指纹'})
+                if(!item.ifFinger){
+                  isretry=false
+                }else{
+                  impowerStatus=true;
+                }
+              }
+              item.verifyList=verifyList;
+              item.isretry=isretry;
+              item.impowerStatus=impowerStatus;
+            }
+          })
+          console.log(_this.tableData)
+        });
+      },
+      //失效时间修改后提交
+      loseTimeSubmitForm(){
+        let _this=this;
+        let arr=[];
+        _this.tableData.forEach(function(item2) {
+          arr.push({'invalidTime':item2.invalidTime,'userId':item2.userId,'verifyMode':item2.verifyMode,id:item2.id})
+        })
+        _this.form.detailList=arr;
+        setTimeout(function () {
+          editImpowerHaikang(_this.form).then(response => {
+            if(response.code==200){
+              _this.msgSuccess("修改成功");
+              _this.getList();
+            }
+          });
+        },100)
+      },
+      //重试
+      retryImpowerHaikang(arr){
+        let _this=this;
+        _this.form.detailList=arr;
+        retryImpowerHaikang(_this.form).then(response => {
+          if(response.code==200){
+            _this.msgSuccess("重试成功");
+            _this.dialogVisible=false;
+            _this.$refs.multipleTable2.clearSelection();
+            _this.getList();
+          }else if(response.code==205){
+            _this.$confirm(response.msg, "警告", {
+              confirmButtonText: "确定",
+              cancelButtonText: "取消",
+              type: "warning"
+            }).then(function() {
+              _this.dialogVisible=false;
+              _this.getList();
+            }).then(() => {
+              _this.dialogVisible=false;
+              _this.getList();
+            }).catch(() => {});
+          }
+        });
+      },
+      /* 新增授权*/
+      submitForm(){
+        let _this=this;
+        let arr=[];
+        if(this.labWhiteJoinSubList.length>0){
+          if(_this.configuration.invalidTime && _this.configuration.verifyMode){//统一配置
+            this.labWhiteJoinSubList.forEach(function(item){
+              arr.push({'invalidTime':_this.configuration.invalidTime,'userId':item.userId,'verifyMode':_this.configuration.verifyMode})
+            })
+          }else{
+            this.labWhiteJoinSubList.forEach(function(item){
+              arr.push({'invalidTime':item.invalidTime,'userId':item.userId,'verifyMode':item.verifyMode})
+            })
+          }
+          _this.form.detailList=arr;
+          AddImpowerHaikang(_this.form).then(response => {
+            if(response.code==200){
+              _this.msgSuccess("新增成功");
+              _this.dialogVisible=false;
+              _this.getList();
+            }else if(response.code==205){
+              _this.$confirm(response.msg, "警告", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+              }).then(function() {
+                _this.dialogVisible=false;
+                _this.getList();
+              }).then(() => {
+                _this.dialogVisible=false;
+                _this.getList();
+              }).catch(() => {});
+            }
+          });
+        }else{
+          this.msgError("请先选择人员!");
+        }
+
+
+
+      },
+  },
+  mounted() {
+    this.queryParams.hardId=this.pageData.hardId;
+    this.form.hardId=this.pageData.hardId;
+    this.admittance=this.pageData.controlScope.search("1") != -1
+    this.whiteList=this.pageData.controlScope.search("2") != -1
+
+    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//判断是否需要使用权限字符
+      })
+    }
+    console.log( this.searchData.buttonList)
+    this.listDepartments();
+    this.getHaikangQueryTypes()
+    this.getList()
+  }
+};
+</script>
+
+<style lang="scss">
+.supplier{
+  flex:1;
+  display: flex;
+  flex-direction: column;
+
+  /*顶部*/
+  .supplier-title{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    height: 90px;
+    p:nth-child(1){
+      line-height:60px;
+      color: #0045AF;
+      font-size:14px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+  }
+  .supplier-page{
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+   // box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+    padding:20px 20px 20px!important;
+    border-radius:10px;
+  }
+  /*弹框*/
+  .btn_list{
+    width: 100%;
+    height: 40px;
+    background: rgba(1,131,250,0.1);
+    border-radius: 6px;
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    margin-bottom: 32px;
+    >i{
+      font-style: normal;
+      display: inline-block;
+      cursor: pointer;
+    }
+    >i:nth-of-type(1){
+      font-size: 20px;
+      color: #0045AF;
+      margin: 0 16px 0 14px;
+    }
+    >i:nth-of-type(2){
+      font-size: 16px;
+      font-family: Source Han Sans CN;
+      font-weight: bold;
+      color: #999999;
+      line-height: 16px;
+    }
+    >i:nth-of-type(3){
+      font-size: 16px;
+      font-family: Source Han Sans CN;
+      font-weight: bold;
+      color: #0045AF;
+      line-height: 16px;
+      margin: 0 28px 0 46px;
+    }
+    >i:nth-of-type(4){
+      font-size: 16px;
+      font-family: Source Han Sans CN;
+      font-weight: bold;
+      color: #0045AF;
+      line-height: 16px;
+    }
+    >i:nth-of-type(5){
+      font-size: 16px;
+      font-family: Source Han Sans CN;
+      font-weight: bold;
+      color: #FFA312;
+      line-height: 16px;
+      margin: 0 40px 0 28px;
+    }
+    .bottom-button-box{
+      display: flex;
+      width:220px;
+      margin: 0;
+      p{
+        font-size:14px;
+        height:30px;
+        width:100px;
+        line-height:30px;
+        text-align: center;
+        border-radius:4px;
+      }
+      p:nth-child(1){
+        border:1px solid #E0E0E0;
+        margin-right:20px;
+      }
+      p:nth-child(2){
+        border:1px solid #0045AF;
+      }
+    }
+  }
+  .configuration{
+    height: 70px;
+    display: flex;
+    justify-content: flex-end;
+    align-items: center;
+    border-top: 1px solid #D8D8D8;
+    .el-form-item{
+      margin-bottom: 0!important;
+    }
+  }
+  /*验证方式*/
+  .verify-green{
+    color: #46D417;
+    margin-right: 10px;
+  }
+  .verify-red{
+    color: #FF0000;
+    margin-right: 10px;
+  }
+}
+</style>

+ 306 - 0
src/views/comprehensive/laboratoryManagement/accessAuthorization/lookImpowerSearch.vue

@@ -0,0 +1,306 @@
+<!--
+=========================示例说明=========================
+<advanced-search :searchData="searchData"></advanced-search>
+import advancedSearch from "@/components/ZDcomponents/advancedSearch.vue"
+components: {
+  addPage,
+  advancedSearch
+},
+=========================必要参数=========================
+searchData:{
+  buttonList:[//按钮数组没有则为空
+    {
+      name:"新增",//按钮名称 只有再状态 1 时需要
+      type:"1", //按钮类型 1.按钮 2.导入 3.导出
+      parameter:"add",//按钮字符用于返回方法时的判断
+      hasPermi:['laboratory:gradeManage:add'] // 权限字段 如果没有则传空字符 hasPermi:"",
+    },
+    {
+      name:"导入",//按钮名称 只有再状态 1 时需要
+      type:"2", //按钮类型 1.按钮 2.导入 3.导出
+      parameter:"import",//按钮字符用于返回方法时的判断
+      hasPermi:['laboratory:gradeManage:import'] // 权限字段 如果没有则传空字符 hasPermi:"",
+    },
+    {
+      name:"导出",//按钮名称 只有再状态 1 时需要
+      type:"3", //按钮类型 1.按钮 2.导入 3.导出
+      parameter:"export",//按钮字符用于返回方法时的判断
+      hasPermi:['laboratory:gradeManage:export'] // 权限字段 如果没有则传空字符 hasPermi:"",
+    }
+  ],
+  searchList:[//搜索数组
+    {
+      name:"名称",//描述名称
+      key:"name",//键名 用于返回数据
+      value:"",//内容 用于组件内绑定数据
+      placeholder:"请输入名称",//输入提示
+      level:"1",//1.普通搜索 2.高级搜索  普通搜索默认会在高级搜索时显示
+      type:"1",//类型 1.input 2.select 3.TimePicker
+      universal:'10',//通用参数 input时为最大长度 //TimePicker时可不传
+      universal:[ //通用参数 select时为列表数据 //TimePicker时可不传
+        {label:"全部",value:""},{label:"开启",value:"1"},{label:"关闭",value:"0"},
+      ],
+      labelWidth:'100px',//label-width宽度  可传可不传 不传时为默认宽度
+      width:'200',//el-form-item 长度 可传可不传 不传时input/select默认180长度 TimePicker默认240长度
+    }
+  ]
+}
+=========================必要方法=========================
+//父组件必要此方法用于接收参数
+searchClick(type,data){
+  if(type == 1){ //type  1.查询
+    this.queryParams = JSON.parse(JSON.stringify(data));
+    this.queryParams.pageNum = 1;
+    this.queryParams.pageSize = 20;
+    this.getList();
+  }else if(type == 2){ //type  1.重置
+    this.queryParams = {
+      pageNum : 1,
+      pageSize:20,
+    };
+    this.getList();
+  }else if(type == 'add'){ //type  其他 自定义按钮
+    this.clickPageType(2);
+  }else if(type == 'import'){ //如果按钮类型是2或者3 这里data也会返回数据
+    console.log('data',data)
+  }else if(type == 'export'){ //如果按钮类型是2或者3 这里data也会返回数据
+    console.log('data',data)
+  }
+},
+-->
+
+<template>
+  <div class="advancedSearchMaxBigBox">
+    <el-form ref="queryForm" :inline="true" v-if="!searchState">
+      <el-form-item :label="item.name" :label-width="item.labelWidth?item.labelWidth:'px'" prop="searchValue" v-for="item in searchData.searchList" v-if="item.level == 1">
+        <el-input v-if="item.type == 1" v-model="item.value" :maxlength="item.universal" :placeholder="item.placeholder" clearable
+                  :style="item.width?'width:'+item.width+'px;':'width: 180px;'"/>
+        <el-select v-if="item.type == 2" v-model="item.value" :placeholder="item.placeholder" clearable
+                   :style="item.width?'width:'+item.width+'px;':'width: 180px;'">
+          <el-option :key="minItem.value" :label="minItem.label" :value="minItem.value" v-for="minItem in item.universal"></el-option>
+        </el-select>
+        <el-date-picker v-if="item.type == 3" v-model="item.value" :clearable="false" value-format="yyyy-MM-dd"
+                        :style="item.width?'width:'+item.width+'px;':'width: 240px;'"
+                        type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <p class="inquire-button-one" @click="buttonClick(1)">查询</p>
+        <p class="reset-button-one" @click="buttonClick(2)">重置</p>
+      </el-form-item>
+      <el-form-item>
+        <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 && !item.hasPermi" class="inquire-button-one" style="width:120px;" @click="buttonClick(item.parameter)">{{item.name}}</p>
+        <p v-if="item.type == 1 && item.hasPermi" class="inquire-button-one" v-hasPermi="item.hasPermi" 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">
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_dr.png">
+              <p>导入</p>
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{item:item,command:1}">下载模板</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{item:item,command:2}">导入数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </div>
+        <div style="float: right; "  v-if="item.type == 3">
+          <el-dropdown @command="commandButton" v-hasPermi="item.hasPermi">
+            <div class="form-dropdown-box">
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_sc.png">
+              <p>导出</p>
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{item:item,command:1}">导出全部数据</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{item:item,command:2}">导出选中数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </div>
+      </el-form-item>
+    </el-form>
+    <el-form ref="queryForm" :inline="true" v-if="searchState">
+      <el-form-item :label="item.name" :label-width="item.labelWidth?item.labelWidth:'px'" prop="searchValue" v-for="item in searchData.searchList" >
+        <el-input v-if="item.type == 1" v-model="item.value" :maxlength="item.universal" :placeholder="item.placeholder" clearable
+                  :style="item.width?'width:'+item.width+'px;':'width: 180px;'"/>
+        <el-select v-if="item.type == 2" v-model="item.value" :placeholder="item.placeholder" clearable
+                   :style="item.width?'width:'+item.width+'px;':'width: 180px;'">
+          <el-option :key="minItem.value" :label="minItem.label" :value="minItem.value" v-for="minItem in item.universal"></el-option>
+        </el-select>
+        <el-date-picker v-if="item.type == 3" v-model="item.value" :clearable="false" value-format="yyyy-MM-dd"
+                        :style="item.width?'width:'+item.width+'px;':'width: 240px;'"
+                        type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期">
+        </el-date-picker>
+      </el-form-item>
+    </el-form>
+    <div class="advanced-max-big-box" v-if="searchState">
+      <div class="left-advanced-box"></div>
+      <div class="center-advanced-box">
+        <p class="inquire-button-one" @click="buttonClick(1)">查询</p>
+        <p class="reset-button-one" @click="buttonClick(2)">重置</p>
+      </div>
+      <div class="right-advanced-box">
+        <span class="ordinary-button" @click="stateSwitch">普通搜索</span>
+      </div>
+      <div v-for="item in searchData.buttonList">
+        <p v-if="item.type == 1" class="inquire-button-one"
+           v-hasPermi="item.hasPermi" style="width:120px;float: right;" @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">
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_dr.png">
+              <p>导入</p>
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{item:item,command:1}">下载模板</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{item:item,command:2}">导入数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </div>
+        <div style="float: right; "  v-if="item.type == 3">
+          <el-dropdown @command="commandButton" v-hasPermi="item.hasPermi">
+            <div class="form-dropdown-box">
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_sc.png">
+              <p>导出</p>
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{item:item,command:1}">导出全部数据</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{item:item,command:2}">导出选中数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "advancedSearch",
+  props:{
+    searchData:{}
+  },
+  data() {
+    return {
+      searchState:false,
+    }
+  },
+  created() {
+
+  },
+  mounted(){
+
+  },
+  methods: {
+    //普通/高级状态切换
+    stateSwitch(){
+      this.searchState = !this.searchState;
+    },
+    //导出/导入按钮
+    commandButton(data){
+      this.$parent.searchClick(data.item.parameter,data.command);
+    },
+    //按钮方法
+    buttonClick(type){
+      let self = this;
+      if(type == '1'){
+        //查找
+        let obj = {};
+        for(let i=0;i<self.searchData.searchList.length;i++){
+          if(self.searchState){
+            //高级搜索
+            obj[self.searchData.searchList[i].key] = self.searchData.searchList[i].value;
+          }else{
+            //普通搜索
+            if(self.searchData.searchList[i].level == '1'){
+              obj[self.searchData.searchList[i].key] = self.searchData.searchList[i].value;
+            }
+          }
+        }
+        self.$parent.searchClick(type,obj);
+      }else if(type == '2'){
+        //返回
+        for(let i=0;i<self.searchData.searchList.length;i++){
+          self.searchData.searchList[i].value = '';
+        }
+        self.$parent.searchClick(type);
+      }else{
+        self.$parent.searchClick(type);
+      }
+    },
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.advancedSearchMaxBigBox{
+  margin:0 20px;
+  .advanced-button{
+    margin:0 20px;
+    cursor: pointer;
+    line-height:40px;
+    font-weight:500;
+    font-size:14px;
+    color:#0183FA;
+  }
+  .advanced-max-big-box{
+    display: flex;
+    padding-bottom:20px;
+    padding-right:10px;
+    font-size:14px;
+    .left-advanced-box{
+      flex:1;
+    }
+    .center-advanced-box{
+
+    }
+    .right-advanced-box{
+      flex:1;
+      .ordinary-button{
+        margin:0 20px;
+        cursor: pointer;
+        line-height:40px;
+        font-weight:500;
+        font-size:14px;
+        color:#0183FA;
+      }
+    }
+  }
+  .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;
+    }
+  }
+}
+</style>
+<style lang="scss">
+.advancedSearchMaxBigBox{
+  .el-range-editor--medium.el-input__inner{
+    height:40px;
+  }
+}
+</style>

+ 2 - 1
src/views/comprehensive/laboratoryManagement/building/buildingDetails.vue

@@ -58,8 +58,9 @@
                      :style="'line-height:'+(item.w>item.h?item.h-4:item.w-4)+'px;'"
                      @contextmenu="(contextmenu)=>boxRightClick(contextmenu,item,index)"
                      @mousedown.stop="(MouseEvent)=>dragDown(MouseEvent,index)">
-                  {{item.roomNum&&item.type == 1?item.roomNum:(!item.roomNum&&item.type == 1?'配置房间':'')}}
+                  {{item.roomNum&&item.type == 1?item.roomNum:(!item.roomNum&&item.type == 1?'右键配置':'')}}
                 </div>
+                <!--这里要改找志蔚-->
                 <p class="center-right-p"
                    @mousedown.stop="(MouseEvent)=>zoomDownX(MouseEvent,index,2)"></p>
               </div>

+ 206 - 4
src/views/comprehensive/laboratoryManagement/subject/deviceList.vue

@@ -23,6 +23,33 @@
       <p class="add-for-p" @click="addData(1)"><i class="el-icon-plus"></i>添加传感器</p>
     </div>
     <div class="title-box">
+      <p class="left-title">智能门禁</p>
+    </div>
+    <div class="for-max-box">
+      <div class="for-big-box" v-for="(item,index) in listHK" :key="index" style="width: 350px">
+        <p class="for-title-p">{{item.type.name}}-{{item.name}}</p>
+        <div class="for-text-box">
+          <p>门禁编号:</p>
+          <el-tooltip class="item" effect="dark" :content="item.hardwareNum" placement="top">
+            <p>{{item.hardwareNum}}</p>
+          </el-tooltip>
+        </div>
+        <div class="for-text-box">
+          <p>门禁授权:</p>
+          <el-checkbox-group v-model="item.controlScope==null?[]:item.controlScope.split(',')" style="margin-top: 6px" disabled>
+            <el-checkbox label="1" style="margin-right: 8px">关联安全准入</el-checkbox>
+            <el-checkbox label="2">关联白名单</el-checkbox>
+          </el-checkbox-group>
+        </div>
+        <div class="for-button-box">
+          <p @click="editData('editEntrance',item)"><i class="el-icon-edit-outline"></i>编辑</p>
+          <p></p>
+          <p @click="delEntrance(item)"><i class="el-icon-delete"></i>删除</p>
+        </div>
+      </div>
+      <p class="add-for-p" @click="addData('addEntrance')" style="width: 350px;height: 158px;" v-if="listHK.length<3"><i class="el-icon-plus"></i>添加智能门禁</p>
+    </div>
+    <div class="title-box">
       <p class="left-title">一体机</p>
     </div>
     <div class="for-max-box">
@@ -165,7 +192,6 @@
           <el-form-item label="设备路由" prop="bit">
             <el-input v-model="form.bit" oninput="value=value.replace(/[^0-9.]/g,'')" maxlength="2" placeholder="请输入路由" style="width:320px;"></el-input>
           </el-form-item>
-
           <el-form-item label="设备参数" prop="configName" v-if="form.hardwareType == 2">
             <el-input v-model="form.configName" maxlength="30" placeholder="请输入设备参数" style="width:320px;"></el-input>
           </el-form-item>
@@ -179,6 +205,69 @@
                       maxlength="30" style="width:320px;"/>
           </el-form-item>
         </div>
+        <div v-if="upType == 'addEntrance'||  upType=='editEntrance'">
+          <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>
+          <p style="margin:0 20px 0 104px;color: #FD2A2A;">关联之后申请安全准入或者白名单后自动授权门禁,不关联则需要单独授权门禁</p>
+        </div>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="cancel">取 消</el-button>
@@ -204,14 +293,14 @@ export default {
       listYtj:[],  //一体机
       listkzsb:[],
       listSpjk:[],   //摄像头
+      listHK:[],//智能门禁
       form:{
-
       },
       // 表单校验
       rules: {
         name:[
-          {required: true, message: '一体机名称不能为空', trigger: 'blur'},
-          { required: true, message: "一体机名称不能为空", validator: this.spaceJudgment, trigger: "blur" }
+          {required: true, message: '请输入名称', trigger: 'blur'},
+          { required: true, message: "请输入名称", validator: this.spaceJudgment, trigger: "blur" }
         ],
         type:[
           {required: true, message: '类型不能为空', trigger: 'blur'}
@@ -238,6 +327,24 @@ export default {
           { 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" }
+        ],
+
       },
       //提交类型
       upType:"",
@@ -285,10 +392,33 @@ export default {
           }else if(this.upType == 8){
             //编辑控制设备
             this.putHardwareThree();
+          }else if(this.upType == 'addEntrance'){
+            //新增智能门禁
+            this.addEntrance();
+          }else if(this.upType == 'editEntrance'){
+            //编辑智能门禁
+            this.editEntrance();
           }
         }
       });
     },
+    //删除智能门禁
+    delEntrance(item){
+      this.$confirm('确认要删除该智能门禁?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        //  确定
+        delHardware(item.id).then((response) => {
+          this.msgSuccess(response.msg)
+          this.addType = false;
+          this.listBySubjectId();
+        });
+      }).catch(function() {
+        //  取消
+      });
+    },
     //新增摄像头
     addHardwareThree(){
       let obj = {
@@ -488,6 +618,57 @@ export default {
         //  取消
       });
     },
+    //新增智能门禁
+    addEntrance(){
+      let obj = {
+        type:11,
+        subjectId:this.subjectData.id,
+        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.msgSuccess(response.msg)
+          this.addType = false;
+          this.listBySubjectId();
+        }else if(response.code==205){
+          this.$confirm(response.msg, "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(() => {
+            //  确定
+            this.$router.push({ path: '/comprehensive/laboratoryManagement/accessAuthorization-KDNH' });
+          }).catch(function() {
+            //  取消
+          });
+        }
+      });
+    },
+    //编辑智能门禁
+    editEntrance(){
+      let obj = {
+        id:this.form.id,
+        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(','),
+        subjectId:this.subjectData.id
+      }
+      putHardware(obj).then(response => {
+        this.msgSuccess(response.msg)
+        this.addType = false;
+        this.listBySubjectId();
+      });
+    },
     //添加
     addData(type){
       // this.resetForm("form");
@@ -524,6 +705,17 @@ export default {
         this.$set(this,'form',{
           hardwareNum:"",
         });
+      }else if(type == 'addEntrance'){
+        this.title = '新增智能门禁';
+        this.$set(this,'form',{
+          hardwareNum:"",
+          name:"",
+          ipAddress:"",
+          port:"",
+          harUser:"",
+          harPsw:"",
+          controlScope:[],
+        });
       }
       this.addType = true;
       this.upType = type;
@@ -546,6 +738,15 @@ export default {
       }else if(type == 8){
         this.title = '编辑摄像头';
         this.$set(this,'form',JSON.parse(JSON.stringify(row)));
+      }else if(type == 'editEntrance'){
+        this.title = '编辑智能门禁';
+        this.$set(this,'form',JSON.parse(JSON.stringify(row)));
+        if(row.controlScope){
+          this.form.controlScope=row.controlScope.split(',')
+        }else{
+          this.form.controlScope=[]
+        }
+
       }
       this.addType = true;
       this.upType = type;
@@ -561,6 +762,7 @@ export default {
         this.$set(this,'listYtj',response.data.listYtj);
         this.$set(this,'listkzsb',response.data.listkzsb);
         this.$set(this,'listSpjk',response.data.listSpjk);
+        this.$set(this,'listHK',response.data.listHK);
       });
     },
     //返回上一页

+ 103 - 42
src/views/comprehensive/laboratoryManagement/subject/index.vue

@@ -42,19 +42,12 @@
               </template>
             </el-table-column>
             <el-table-column label="实验室名称" align="left" prop="name" width="230" show-overflow-tooltip/>
-            <el-table-column label="位置" align="left" prop="name" width="160" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{scope.row.buildName}}{{scope.row.floorName}}{{scope.row.room}}
-              </template>
-            </el-table-column>
-            <!--<el-table-column label="类型" align="left" prop="moldName" width="100" show-overflow-tooltip/>-->
-            <el-table-column label="安全分类" align="left" prop="typeName" width="100" show-overflow-tooltip/>
-            <el-table-column label="安全分级" align="left" prop="levelName" width="80" show-overflow-tooltip>
+            <el-table-column label="分类/分级" align="left" prop="levelName" width="120" show-overflow-tooltip>
               <template slot-scope="scope">
+                <span >{{scope.row.typeName}}/</span>
                 <span :style="'color:'+scope.row.fiedColor+';'">{{scope.row.levelName}}</span>
               </template>
             </el-table-column>
-            <el-table-column label="重大危险源辨识指标" align="left" prop="riskIndicator" width="150" show-overflow-tooltip/>
             <el-table-column label="学院" align="left" prop="deptName" width="150" show-overflow-tooltip/>
             <el-table-column label="实验室责任人" align="left" prop="adminName" width="120" show-overflow-tooltip/>
             <el-table-column label="安全责任人" align="left" prop="safeUserName" width="200" show-overflow-tooltip/>
@@ -91,6 +84,7 @@
             <div :class="rightButtonType == 2 ? 'buttonColorA' : 'buttonColorB'" @click="rightButtonClick(2)">物联控制</div>
             <div :class="rightButtonType == 3 ? 'buttonColorA' : 'buttonColorB'" @click="rightButtonClick(3)">视频监控</div>
             <div :class="rightButtonType == 4 ? 'buttonColorA' : 'buttonColorB'" @click="rightButtonClick(4)">智能声光报警器</div>
+            <div :class="rightButtonType == 5 ? 'buttonColorA' : 'buttonColorB'" @click="rightButtonClick(5)">智能门禁</div>
           </div>
           <!--传感器-->
           <div class="bottom-max-box" :class="rightButtonType == 4?'overflow-box':''">
@@ -99,7 +93,6 @@
               <div class="sensor-for-max-box" v-if="checkedSubject.sensorFunctionStatusList[0]">
                 <div class="sensor-for-big-box"
                      :class="item.type == 1 ? 'sensor-color-a' : (item.type == 2 ? 'sensor-color-b' : 'sensor-color-c')"
-                     v-if="item.funNum != 'huoyan'"
                      v-for="(item,index) in checkedSubject.sensorFunctionStatusList" :key="index">
                   <div class="sensor-for-min-box">
                     <img src="@/assets/ZDimages/subject/icon_bj_wd.png" v-if="item.funNum == 'wendu'">
@@ -135,9 +128,9 @@
             <div class="bottom-switch-box" v-if="rightButtonType == 2">
               <p class="top-title">当前位置:{{checkedSubject.subAddrr.buildName}}{{checkedSubject.subAddrr.floorName}}</p>
               <div class="switch-for-max-box" v-show="checkedSubject.labHardwareVOList" v-hasPermi="['laboratory:subcontrol:set']">
-                <div class="switch-for-big-box" v-for="(item,index) in checkedSubject.labHardwareVOList" :key="index" v-if="item.isPcfire != 1">
+                <div class="switch-for-big-box" v-for="(item,index) in checkedSubject.labHardwareVOList" :key="index">
                   <div class="switch-for-min-box" v-if="item.hardwareTypeEnum.enumName == 'SWITCH'">
-                    <p class="switch-for-min-title">{{item.hardwareName?item.hardwareName:item.hardwareTypeEnum.hardwareTypeName}}</p>
+                    <p class="switch-for-min-title">电源控制</p>
                     <el-switch
                       v-if="item.state.code == 3||item.state.code == 4"
                       class="switch"
@@ -152,9 +145,9 @@
                     <p class="switch-null-p" v-else>{{item.state.name}}</p>
                   </div>
                   <div class="switch-for-min-box" v-if="item.hardwareTypeEnum.enumName == 'AI_VENTILATION'">
-                    <p class="switch-for-min-title">{{item.hardwareName?item.hardwareName:item.hardwareTypeEnum.hardwareTypeName}}</p>
+                    <p class="switch-for-min-title">智能通风</p>
                     <el-switch
-                      v-if="(item.state.code == 3||item.state.code == 4) && item.pcType != 1"
+                      v-if="item.state.code == 3||item.state.code == 4"
                       class="switch"
                       @click.native="changeIsNeedCaptcha(item)"
                       v-model="item.state.code"
@@ -164,8 +157,7 @@
                       inactive-text="关"
                       disabled>
                     </el-switch>
-                    <p class="switch-null-p" v-if="(item.state.code != 3&&item.state.code != 4) && item.pcType != 1">{{item.state.name}}</p>
-                    <p class="switch-button-p" v-if="item.pcType == 1" @click="switchButton(item.id)">操作</p>
+                    <p class="switch-null-p" v-else>{{item.state.name}}</p>
                   </div>
                   <!--<div class="switch-for-min-box" v-if="item.hardwareTypeEnum.enumName == 'ONE_MACHINE'">-->
                   <!--<p class="switch-for-min-title">广播系统</p>-->
@@ -180,8 +172,7 @@
               <p class="top-title">当前位置:{{checkedSubject.subAddrr.buildName}}{{checkedSubject.subAddrr.floorName}}</p>
               <div class="video-for-max-box" v-if="checkedSubject.videoData[0]">
                 <div class="switch-for-big-box" v-for="(item,index) in checkedSubject.videoData" :key="index">
-                  <video :id="item.divId" ref="videoRef" autoplay controls :poster="videoCover"
-                         muted width="490px" height="262px"></video>
+                  <video :id="item.divId" ref="videoRef" autoplay controls  muted width="490px" height="262px"></video>
                   <p class="el-icon-full-screen position-p" @click="videoFullScreen(index)"></p>
                 </div>
               </div>
@@ -232,6 +223,19 @@
                 @pagination="getHxpAlarmRecordNoAuthList"
               />
             </div>
+            <div class="bottom-entrance-box" v-if="rightButtonType == 5">
+              <div class="entrance" v-for="(item,index) in entranceList" v-if="item.operate">
+                <p :class="item.operate.code==2?'entrance_l_yes':'entrance_l_no'">{{item.operate.code==2?'在线':'离线'}}</p>
+                <img class="entrance_c" v-if="item.operate.code==2" src="@/assets/ZDimages/icon_znmj_zx.png">
+                <img class="entrance_c" v-if="item.operate.code!=2"  src="@/assets/ZDimages/icon_znmj_lx.png">
+                <div class="entrance_r">
+                  <p>门禁名称:{{item.name}}</p>
+                  <p>门禁编号:{{item.hardwareNum}}</p>
+                </div>
+              </div>
+              <img class="null-data-img" src="@/assets/ZDimages/null-data.png" v-if="entranceList.length<=0">
+              <p class="null-text-p" v-if="entranceList.length<=0">暂无智能门禁信息,请在更多操作-物联设备配置中进行添加</p>
+            </div>
           </div>
         </div>
       </div>
@@ -272,6 +276,7 @@ import {
   updateSubject,
   mangerVoice,
   startUrl,
+  queryHardByTypeList, getHaikangUserList
 } from '@/api/laboratory/subject'
 import { filterDept } from "@/api/medicUniversity-3_1/index";
 import addSubject from "./addSubject.vue";
@@ -280,7 +285,6 @@ import admissionConfiguration from "./admissionConfiguration.vue";
 import associationConfiguration from "./associationConfiguration.vue";
 import infoPage from "./infoPage.vue";
 import { getHxpAlarmRecordNoAuthList,getEnablelist } from "@/api/medicUniversity-3_1/index";
-import { controlSwitch } from "@/api/laboratory/hardware";
 export default {
   filters:{
     ellipsis(value){
@@ -301,7 +305,6 @@ export default {
   },
   data(){
     return{
-      videoCover:window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + localStorage.getItem('videoCover'),
       pageType:1,
       // 遮罩层
       loading: true,
@@ -339,6 +342,19 @@ export default {
       subId:"",
       open:false,
       form:{},
+      //智能门禁
+      entranceList:[
+        {
+          status:1,
+          name:'门禁名称',
+          num:'XD12345678912'
+        },
+        {
+          status:0,
+          name:'门禁名称',
+          num:'XD12345678912'
+        }
+      ],
       rules:{
         txt:[
           {required: true, message: '请输入播放文字', trigger: 'blur'},
@@ -376,6 +392,7 @@ export default {
     this.getDeptList();
     // this.subscriptionMQTT();
     this.getList();
+    // this.queryHardByTypeList();
   },
   methods:{
     goAlarmRecord(){
@@ -383,20 +400,17 @@ export default {
         path: `/chemicalLibrary/alarmRecord`,
       })
     },
-    //通风橱开关
-    switchButton(id){
-      let self = this;
-      this.$confirm(`是否确认操作此设备`, "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning"
-      }).then(async () => {
-        controlSwitch({id:id}).then(response => {
-          self.msgSuccess(response.msg);
-        });
-      }).catch(() => {
-
-      })
+    //智能门禁
+    queryHardByTypeList(){
+      let _this=this;
+      let obj={
+        subjectId:'85',
+        type:'HK_DOOR',
+      }
+      queryHardByTypeList(obj).then( response => {
+        let res=response.data;
+        _this.entranceList=res;
+      });
     },
     //报警器开启关闭方法
     changeIsNeedCaptchaAlarm(row){
@@ -734,6 +748,8 @@ export default {
           }else{
             this.$set(this.checkedSubject,'videoData',[]);
           }
+        }else if(type==5){
+          this.queryHardByTypeList();
         }
       }
     },
@@ -902,7 +918,7 @@ export default {
           // console.log("MQTT----message",data)
           if(data.data.subId){
             //传感器
-            console.log("传感器",data);
+            // console.log("传感器",data.data.subId,'---------',data);
             if(self.checkedSubject.id){
               if(data.data.subId&&data.data.subId == self.checkedSubject.id){
                 self.$set(self.checkedSubject,'sensorFunctionStatusList',data.data.functionStatuses);
@@ -917,7 +933,7 @@ export default {
             }
           }else{
             //硬件
-            console.log("硬件",data);
+            // console.log("硬件",data);
             for (let i = 0; i < data.data.length; i++) {
               if (self.checkedSubject.labHardwareVOList) {
                 for (let k = 0; k < self.checkedSubject.labHardwareVOList.length; k++) {
@@ -1226,12 +1242,6 @@ export default {
                   line-height:58px;
                   color:#999;
                 }
-                .switch-button-p{
-                  font-size:16px;
-                  line-height:58px;
-                  color:#0183fa;
-                  cursor: pointer;
-                }
                 .switch-for-min-button{
                   width:70px;
                   height:30px;
@@ -1349,6 +1359,57 @@ export default {
             }
           }
         }
+        /*智能门禁*/
+        .bottom-entrance-box{
+          background: #fff;
+          width:510px;
+          border: 1px solid #E0E0E0;
+          border-radius: 0 10px 10px 10px;
+          .entrance{
+            display: flex;
+            justify-content: flex-start;
+            border: 1px solid #E0E0E0;
+            .entrance_l_yes{
+              width: 60px;
+              height: 30px;
+              background: rgba(1,131,250,0.2);
+              border-radius: 0px 0px 20px 0px;
+              font-size: 14px;
+              font-weight: 400;
+              color: #0183FA;
+              line-height: 30px;
+              text-align: center;
+            }
+            .entrance_l_no{
+              width: 60px;
+              height: 30px;
+              background: rgba(224,224,224,0.2);
+              border-radius: 0px 0px 20px 0px;
+              font-size: 14px;
+              font-weight: 400;
+              color: #666666;
+              line-height: 30px;
+              text-align: center;
+            }
+            .entrance_c{
+              width: 50px;
+              height: 50px;
+              margin: 20px 0 8px 44px;
+            }
+            .entrance_r{
+              margin-left: 30px;
+              >p{
+                font-size: 12px;
+                font-weight: 400;
+                color: #333333;
+                line-height: 20px;
+              }
+              >p:nth-of-type(1){
+                margin: 20px 0 10px 0;
+              }
+            }
+          }
+        }
         .null-data-img{
           width:137px;
           height:137px;

+ 1 - 1
src/views/comprehensive/laboratoryManagement/subject/infoPageOne.vue

@@ -19,7 +19,7 @@
               </div>
             </div>
             <div class="right-code-img" @click="clickCode">
-              <vue-qr style="display: block;height:60px;width:60px;cursor:pointer;margin:0 10px 0 0;" :text="newData.qrCode" :size="300" @click="clickCode"></vue-qr>
+              <vue-qr style="display: block;height:60px;width:60px;cursor:pointer;margin:0 10px 0 0;" :text="newData.qrCodeUrl" :size="300" @click="clickCode"></vue-qr>
             </div>
           </div>
           <div class="user-max-box">

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1093 - 1063
src/views/comprehensive/personnel/student/addPage.vue


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1229 - 1205
src/views/comprehensive/personnel/teacher/addPage.vue


+ 6 - 2
src/views/gasManage3_0/manage/recognizerManage/recognizerManage.vue

@@ -28,7 +28,7 @@
     <el-table border v-loading="loading" :data="sensorList">
       <el-table-column label="设备编号" align="left" 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="position" width="250" show-overflow-tooltip/>
       <el-table-column label="设备状态" align="center" prop="status">
         <template slot-scope="scope">
           <el-switch
@@ -344,6 +344,10 @@ export default {
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
+      if(row.onOff == 1){
+        this.msgError("修改检测门前请先关闭设备");
+        return
+      }
       let _this=this;
       this.open = true;
       this.title = "修改识别器";
@@ -390,7 +394,7 @@ export default {
           if (this.form.id != null) {
             this.form.senseState = null
             recognizerAnew(this.form).then(response => {
-              this.msgSuccess("修改成功");
+              this.msgSuccess("修改成功,请重新开启设备");
               this.open = false;
               this.getList();
             });

+ 1 - 1
src/views/gasManage_syd/manage/infoRecord/alarmRecord.vue

@@ -6,7 +6,7 @@
         <el-form-item label="关键字">
           <el-input
             v-model="queryParams.searchValue"
-            placeholder="姓名/联系方式"
+            placeholder="识别码"
             clearable
             maxLength="30"
             size="small"

+ 1 - 1
src/views/medicUniversity-3_1/chemicalManagement/chemicalLibrary/CabinetManagement/operationRecord.vue

@@ -95,7 +95,7 @@
     data() {
       return {
         //操作方式
-        optionsList:[{id:1,name:"入库"},{id:2,name:"出库"},{id:3,name:"领用"},{id:4,name:"归还"},{id:5,name:"系统"}],
+        optionsList:[{id:1,name:"入库"},{id:2,name:"出库"},{id:3,name:"领用"},{id:4,name:"归还"},{id:0,name:"系统"}],
         // 搜索数据
         queryParamsData:{
           pageNum:1,

+ 3 - 3
src/views/medicUniversity-3_1/chemicalManagement/chemicalLibrary/ChemicalInfo/listPage.vue

@@ -41,9 +41,9 @@
         <el-table-column label="化学品编号" align="center" prop="joinNum"  show-overflow-tooltip/>
         <el-table-column label="容量规格" align="center" prop="chemicalAmountUnit"  show-overflow-tooltip/>
         <el-table-column label="容器规格" align="center" prop="tare"  show-overflow-tooltip/>
-        <el-table-column label="过期时间" align="center" prop="expireTime"  show-overflow-tooltip>
-          <template slot-scope="scope">{{scope.row.expireTime?scope.row.expireTime:'未设定'}}</template>
-        </el-table-column>
+        <!--<el-table-column label="过期时间" align="center" prop="expireTime"  show-overflow-tooltip>-->
+          <!--<template slot-scope="scope">{{scope.row.expireTime?scope.row.expireTime:'未设定'}}</template>-->
+        <!--</el-table-column>-->
         <el-table-column label="化学品柜" align="center" prop="cabinetName"  show-overflow-tooltip/>
         <el-table-column label="柜锁名称" align="center" prop="lockName"  show-overflow-tooltip v-if="$store.state.settings.smartAlarmType == 1"/>
         <el-table-column label="化学品柜位置" align="center" prop="posi"  show-overflow-tooltip/>

+ 6 - 6
src/views/medicUniversity-3_1/chemicalManagement/chemicalLibrary/msds/addPage.vue

@@ -36,16 +36,16 @@
         // 表单校验
         rules: {
           name:[
-            {required: true, message: '请输入危险品名称', trigger: 'blur'},
-            { required: true, message: "请输入危险品名称", validator: this.spaceJudgment, trigger: "blur" }
+            {required: true, message: '请输入化学品名称', trigger: 'blur'},
+            { required: true, message: "请输入化学品名称", validator: this.spaceJudgment, trigger: "blur" }
           ],
           code:[
-            {required: true, message: '请输入编号', trigger: 'blur'},
-            { required: true, message: "请输入危险品名称", validator: this.spaceJudgment, trigger: "blur" }
+            {required: true, message: '请输入化学品编号', trigger: 'blur'},
+            { required: true, message: "请输入化学品编号", validator: this.spaceJudgment, trigger: "blur" }
           ],
           content:[
-            {required: true, message: '请输入详情', trigger: 'blur'},
-            { required: true, message: "请输入危险品名称", validator: this.spaceJudgmentHTML, trigger: "blur" }
+            {required: true, message: '请输入化学品详情', trigger: 'blur'},
+            { required: true, message: "请输入化学品详情", validator: this.spaceJudgmentHTML, trigger: "blur" }
           ],
         },
       };

+ 2 - 1
src/views/medicUniversity-3_1/chemicalManagement/chemicalProcurement/approvalProcess/index.vue

@@ -83,7 +83,8 @@
           <p class="title-p">已选:</p>
           <div class="big-box scrollbar-box">
             <div class="user-for-box" v-for="(item,index) in userDialogRightList.actAudituserInfo" :key="index">
-              <img :src="item.avatar">
+              <img v-if="item.avatar" :src="item.avatar">
+              <img v-if="!item.avatar" src="@/assets/ZDimages/tx_cion.png">
               <p>{{item.nickName}}</p>
               <p class="el-icon-circle-close" @click="delRightUser(index)"></p>
             </div>

+ 10 - 6
src/views/medicUniversity-3_1/chemicalManagement/chemicalProcurement/purchaseRequisition/approvalPage.vue

@@ -98,8 +98,8 @@
             <div class="approval-for-box-min">
               <div class="left-max-box">
                 <div class="left-top-box">
-                  <img src="">
-                  <!--<img src="">-->
+                  <img v-if="dataInfo.avatar" :src="dataInfo.avatar">
+                  <img v-if="!dataInfo.avatar" src="@/assets/ZDimages/tx_cion.png">
                   <div class="left-top-text-box">
                     <p>发起申请</p>
                     <p>{{dataInfo.applyUserName}}</p>
@@ -118,7 +118,8 @@
               <div class="left-max-box">
                 <div class="left-top-box" v-if="item.auditType == 1">
                   <img v-if="item.actApplytaskNodeList[1]" src="@/assets/ZDimages/medicUniversity-3_1/icon_cgsq_ycsp.png">
-                  <img v-if="!item.actApplytaskNodeList[1]" :src="item.actApplytaskNodeList[0].applyUserList[0].avatar">
+                  <img v-if="!item.actApplytaskNodeList[1]&&item.actApplytaskNodeList[0].applyUserList[0].avatar" :src="item.actApplytaskNodeList[0].applyUserList[0].avatar">
+                  <img v-if="!item.actApplytaskNodeList[1]&&!item.actApplytaskNodeList[0].applyUserList[0].avatar" src="@/assets/ZDimages/tx_cion.png">
                   <div class="left-top-text-box">
                     <p>{{item.actApplytaskNodeList[1]?'依次审批':item.actApplytaskNodeList[0].applyUserList[0].postName}}</p>
                     <p>{{item.approvalName}}</p>
@@ -126,7 +127,8 @@
                 </div>
                 <div class="left-top-box" v-if="item.auditType == 2">
                   <img v-if="item.actApplytaskNodeList[0].applyUserList[1]" src="@/assets/ZDimages/medicUniversity-3_1/icon_cgsq_ycsp.png">
-                  <img v-if="!item.actApplytaskNodeList[0].applyUserList[1]" :src="item.actApplytaskNodeList[0].applyUserList[0].avatar">
+                  <img v-if="!item.actApplytaskNodeList[0].applyUserList[1]&&item.actApplytaskNodeList[0].applyUserList[0].avatar" :src="item.actApplytaskNodeList[0].applyUserList[0].avatar">
+                  <img v-if="!item.actApplytaskNodeList[0].applyUserList[1]&&!item.actApplytaskNodeList[0].applyUserList[0].avatar" src="@/assets/ZDimages/tx_cion.png">
                   <div class="left-top-text-box">
                     <p>{{item.actApplytaskNodeList[0].applyUserList[1]?'或签':item.actApplytaskNodeList[0].applyUserList[0].postName}}</p>
                     <p>{{item.approvalName}}</p>
@@ -140,7 +142,8 @@
               <div class="right-max-box" v-if="item.auditType == 1">
                 <div class="right-for-name-box" v-for="(minItem,minIndex) in item.actApplytaskNodeList" :key="minIndex">
                   <div class="right-for-name-box-min">
-                    <img :src="minItem.applyUserList[0].avatar">
+                    <img v-if="minItem.applyUserList[0].avatar" :src="minItem.applyUserList[0].avatar">
+                    <img v-if="!minItem.applyUserList[0].avatar" src="@/assets/ZDimages/tx_cion.png">
                     <p>{{minItem.applyUserList[0].id==userId?'我':minItem.applyUserList[0].name}}</p>
                     <img class="right-min-img" src="@/assets/ZDimages/medicUniversity-3_1/icon_bz_1.png" v-if="minItem.nodeStatus == 1&&minIndex!=item.actApplytaskNodeList.length-1">
                     <img class="right-min-img" src="@/assets/ZDimages/medicUniversity-3_1/icon_bz_2.png" v-if="!minItem.nodeStatus == 1&&minIndex!=item.actApplytaskNodeList.length-1">
@@ -153,7 +156,8 @@
               <div class="right-max-box" v-if="item.auditType == 2">
                 <div class="right-for-name-box" v-for="(minItem,minIndex) in item.actApplytaskNodeList[0].applyUserList" :key="minIndex">
                   <div class="right-for-name-box-min">
-                    <img :src="minItem.avatar">
+                    <img v-if="minItem.avatar" :src="minItem.avatar">
+                    <img v-if="!minItem.avatar" src="@/assets/ZDimages/tx_cion.png">
                     <p>{{minItem.id==userId?'我':minItem.name}}</p>
                     <img class="right-min-img" src="@/assets/ZDimages/medicUniversity-3_1/icon_bz_1.png" v-if="item.actApplytaskNodeList[0].applyUserid == minItem.id&&minIndex!=item.actApplytaskNodeList[0].applyUserList.length-1">
                     <img class="right-min-img" src="@/assets/ZDimages/medicUniversity-3_1/icon_bz_2.png" v-if="item.actApplytaskNodeList[0].applyUserid != minItem.id&&minIndex!=item.actApplytaskNodeList[0].applyUserList.length-1">

+ 1 - 0
src/views/medicUniversity-3_1/chemicalManagement/chemicalProcurement/purchaseRequisition/index.vue

@@ -259,6 +259,7 @@
                 let obj = {
                   chemicalId:parseInt(response.data.actHxpapplyDetailList[i].chemicalId),
                   chemicalName:response.data.actHxpapplyDetailList[i].chemicalName,
+                  applyUnit:response.data.actHxpapplyDetailList[i].applyUnit,
                   list:[],
                 }
                 maxObj.maxList.push(obj);

+ 398 - 414
src/views/medicUniversity-3_1/chemicalManagement/deviceManagement/SmartAccessControl/index.vue

@@ -6,7 +6,7 @@
         <el-input
           maxLength="30"
           v-model="queryParamsData.searchValue"
-          placeholder="设备编号/实验室"
+          placeholder="门禁锁编号/实验室"
           clearable
           size="small"
           style="width: 240px"
@@ -43,29 +43,16 @@
           ><i class="el-icon-plus"></i>新增</p>
         </el-col>
       </el-form-item>
-      <el-form-item style="float: right;">
-        <el-dropdown @command="importButton" v-hasPermi="['laboratory:hardware6:import']">
-          <div class="form-dropdown-box">
-            <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_dr.png">
-            <p>导入</p>
-            <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
-          </div>
-          <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{command:1}">下载模板</el-dropdown-item>
-            <el-dropdown-item style="margin:0 10px;color:#666;" :command="{command:2}">导入数据</el-dropdown-item>
-          </el-dropdown-menu>
-        </el-dropdown>
-      </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="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="createTime" width="250"/>
       <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">
@@ -76,53 +63,16 @@
       </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"
+                v-show="total>0"
+                :total="total"
+                :page.sync="queryParamsData.pageNum"
+                :limit.sync="queryParamsData.pageSize"
+                @pagination="getList"
     />
-    <!--导入窗口-->
-    <el-dialog title="导入数据" :visible.sync="importOpen" @close="importOpenOff" width="600px" append-to-body class="import-dialog-box">
-      <div class="el-upload__text" style="margin:0 0 20px 58px;">提示:导入后的数据将覆盖原有数据</div>
-      <el-upload
-        class="import-dialog-upLoad-box"
-        :drag="true"
-        :data="upImportData"
-        :action="uploadImgUrl"
-        :show-file-list="false"
-        :on-success="handleAvatarSuccess"
-        :headers="headers"
-        :before-upload="beforeAvatarUpload">
-        <i class="el-icon-upload"></i>
-        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-        <!--<div class="el-upload__tip" slot="tip">-->
-        <!--<el-checkbox v-model="upImportData.upDate">是否更新已经存在的数据</el-checkbox>-->
-        <!--</div>-->
-        <div class="el-upload__tip" slot="tip">数据导入模板.xlsx<span style="color:#0183FA;cursor: pointer" @click="importTemplate">下载</span></div>
-        <div class="el-upload-text-box" slot="tip" v-if="getImportData.downFile">
-          <div class="img-text-box">
-            <img src="@/assets/ZDimages/personnelManagement/icon_dr_wj.png">
-            <p>{{getImportData.textName}}</p>
-          </div>
-          <p class="text-p">数据导入成功 <span style="color:#0183FA;">{{getImportData.successNum}}</span> 条,失败 <span style="color:#FF6464 ;">{{getImportData.failureNum}}</span> 条</p>
-          <div class="img-text-box">
-            <img src="@/assets/ZDimages/personnelManagement/icon_dr_sj.png">
-            <p style="color:#0183FA;cursor: pointer;" @click="failureExcel">点击下载失败数据报表</p>
-          </div>
-        </div>
-      </el-upload>
-      <div slot="footer" class="teacher-import-dialog-button-box">
-        <p class="inquire-button-one" @click="importOpenOff">确定</p>
-      </div>
-      <div class="teacher-import-dialog-position-box" v-if="loading"></div>
-    </el-dialog>
+
     <!--新增/编辑-->
     <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="hardwareNum">
-          <el-input v-model="form.hardwareNum" placeholder="最大20个字符,包含大小写字母、数字" onkeyup="value=value.replace(/[^\w\.\/]/ig,'')" maxlength="20" style="width:360px;"/>
-        </el-form-item>
         <el-form-item label="实验室:" prop="subjectId">
           <el-select
             style="width:360px;"
@@ -144,6 +94,66 @@
             </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>
@@ -154,174 +164,191 @@
 </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",
-    data() {
-      return {
-        // table操作按钮校验
-        tableButtonType:this.hasPermiDom(['laboratory:hardware6:edit','laboratory:hardware6:remove']),
-        //上传相关配置
-        uploadImgUrl: window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/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:"离线"}],
-        //导入弹层开关
-        importOpen:false,
-        //导入数据
-        upImportData:{
-          sysUserEnable:true,
-          upDate:false,
-          terminalType:'AI_DOORLOCK',
-        },
-        getImportData:{
-          downFile:false,
-          successNum:0,
-          failureNum:0,
-          textName:"",
-        },
-        //编辑新增相关
-        dialogTitle:"",
-        addDialogType:false,
-        form:{},
-        selectList:[],
-        selectListData:[],
-        rules:{
-          hardwareNum: [
-            { required: true, trigger: "blur", message: "最大20个字符,包含大小写字母、数字" },
-            { required: true, message: "最大20个字符,包含大小写字母、数字", validator: this.spaceJudgment, trigger: "blur" }
-          ],
-          subjectId: [
-            { required: true, trigger: "blur", message: "搜索选择实验室" },
-          ],
-        },
-      };
-    },
-    created() {
+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,
+      },
+      //数据数量
+      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();
+      }
     },
-    mounted(){
-      this.filterDept();
-      this.listDepartments();
-      this.getList();
+    //获取学院列表
+    listDepartments(){
+      listDepartments().then(response => {
+        this.optionsListOne = response.data;
+      });
     },
-    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:[],
         });
-      },
-      pageToggle(type,item){
-        let self = this;
-        if(type == 1){
-          //新增
-          this.dialogTitle = '新增';
-          this.$set(this,'form',{
-            hardwareNum:"",
-            subjectId:""
-          });
-          this.clearClick();
-          this.addDialogType = true;
-        }else if(type == 2){
-          // 编辑
-          this.dialogTitle = '编辑';
-          let obj = {
-            id:item.id,
-            subjectId:item.subjectId,
-            hardwareNum:item.hardwareNum,
-          };
-          this.$set(this,'form',obj);
-          this.clearClick();
-          this.addDialogType = true;
-        }else if(type == 3){
-          // 删除
-          this.$confirm('确认要删除吗?', "警告", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning"
-          }).then(function() {
-            delHardware(item.id).then(response => {
-              if (response.code == 200){
-                self.msgSuccess(response.msg);
-                self.getList();
-              }
-            });
-          }).then(() => {
-          }).catch(() => {});
+        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=[]
         }
-      },
-      //查询当前院系
-      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;
+        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();
             }
-          }
-          //查询院系下实验室
-          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]);
+        }).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;
           }
         }
-        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 = "AI_DOORLOCK";
+        //查询院系下实验室
+        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 = 11;
+            this.form.controlScope=this.form.controlScope.join(','),
               updateHardware(this.form).then(response => {
                 if (response.code == 200){
                   this.addDialogType = false;
@@ -329,228 +356,185 @@
                   this.getList();
                 }
               });
-            }else{
-              //新增
-              this.form.type = "AI_DOORLOCK";
-              addHardware(this.form).then(response => {
-                if (response.code == 200){
-                  this.addDialogType = false;
-                  this.msgSuccess(response.msg);
-                  this.resetQuery();
-                }
-              });
-            }
-          }
-        })
-      },
-      cancel(){
-        this.addDialogType = false;
-      },
-      //获取数据列表
-      getList(){
-        this.queryParamsData = JSON.parse(JSON.stringify(this.queryParams));
-        this.queryParamsData.type = 'AI_DOORLOCK';
-        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();
-      },
-      //导入页面关闭
-      importOpenOff(){
-        this.importOpen = false;
-        this.getImportData.downFile = false;
-        this.getImportData.successNum = 0;
-        this.getImportData.failureNum = 0;
-        this.getImportData.textName = "";
-      },
-      /** 导入按钮操作 */
-      importButton(item){
-        if(item.command == 1){
-          //  下载模板
-          this.download('/laboratory/hardware/importTemplate', {}, `导入模板.xlsx`)
-        }else if(item.command == 2){
-          //  导入数据
-          console.log('导入数据');
-          this.importOpen = true;
-        }
-      },
-      /** 下载模板操作 */
-      importTemplate() {
-        this.download('/laboratory/hardware/importTemplate', {}, `导入模板.xlsx`)
-      },
-      /*下载失败列表*/
-      failureExcel(){
-        this.download('/laboratory/hardware/importErrorData', {}, `失败报表.xlsx`)
-      },
-      //****************************************导入功能**************************************
-      handleAvatarSuccess(res, file) {
-        if(res.code == 200){
-          if(res.data.downFile){
-            this.getImportData.downFile = res.data.downFile
-            this.getImportData.successNum = res.data.successNum
-            this.getImportData.failureNum = res.data.failureNum
           }else{
-            this.msgSuccess(res.msg);
-            this.importOpen = false;
-            this.resetQuery();
+            //新增
+            let obj = {
+              type:11,
+              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-KDNH' });
+                }).catch(function() {
+                  //  取消
+                });
+              }
+            });
           }
-          // this.getImportData.downFile = res.data.downFile
-          // this.getImportData.successNum = res.data.successNum
-          // this.getImportData.failureNum = res.data.failureNum
-          // this.importOpen = false;
-          // this.getList();
-        }else{
-          this.msgError(res.msg);
         }
-        this.loading = false;
-      },
-      beforeAvatarUpload(file) {
-        let type = false;
-        console.log('file',file);
-        if (file.type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || file.type == 'application/vnd.ms-excel') {
-          this.getImportData.textName = file.name;
-          type = true;
-          this.loading = true;
-        }else{
-          this.msgError('只能上传xls/xlsx格式文件')
-          type = false;
-        }
-        return type;
-      },
+      })
     },
-  }
+    cancel(){
+      this.addDialogType = false;
+    },
+    //获取数据列表
+    getList(){
+      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.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.$set(this,'queryParamsData',{});
+      this.handleQuery();
+    },
+
+  },
+}
 </script>
 
 <style scoped lang="scss">
-  .SmartAccessControl{
-    flex:1;
-    display: flex;
-    flex-direction: column;
-    overflow: hidden!important;
-    padding:20px !important;
-    p{
+.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;
-    }
-    .form-box{
-      .form-dropdown-box{
-        display: flex;
+      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;
-        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;
-        }
+        line-height:40px;
+      }
+      img:nth-child(3){
+        width:10px;
+        height:6px;
+        margin-top:17px;
       }
     }
-    .button-box{
-      display: flex;
-    }
   }
+  .button-box{
+    display: flex;
+  }
+}
 </style>
 <style lang="scss">
-  .import-dialog-box{
-    .import-dialog-upLoad-box{
-      .el-upload{
+.import-dialog-box{
+  .import-dialog-upLoad-box{
+    .el-upload{
+      width:450px;
+      margin:0 55px;
+      .el-upload-dragger{
         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-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__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;
       }
-      .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;
-          }
+      .img-text-box{
+        display: flex;
+        margin-top:15px;
+        img{
+          width:16px;
+          height:16px;
+          margin-right:13px;
         }
-        .text-p{
-          margin-top:15px;
-          margin-left:29px;
+        p{
           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;
+      .text-p{
+        margin-top:15px;
+        margin-left:29px;
+        height:16px;
+        line-height:16px;
+        font-size:12px;
       }
     }
-    .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;
+  }
+  .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>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 847 - 793
src/views/mine/index.vue


+ 22 - 7
src/views/newEvacuationBigData.vue

@@ -206,7 +206,7 @@
               <div class="radio-button-box scrollbar-box">
                 <p class="horn-for-p" @click="checkTrumpet(index)" :class="item.type?'check-p':''"
                    v-for="(item,index) in trumpetList" :key="index">{{item.name}}</p>
-                <p v-if="!trumpetList[0]" style="line-height:180px;font-size:16px;color:#fff;text-align: center">暂无数据</p>
+                <p v-if="!trumpetList[0]" style="line-height:60px;font-size:16px;color:#fff;text-align: center">暂无数据</p>
               </div>
               <div class="radio-text-box scrollbar-box">
                 <div v-for="(item,index) in radioTextList" :key="index">
@@ -282,7 +282,7 @@
               <div class="horn-max-big-box-two-left scrollbar-box">
                 <p class="horn-for-p" @click="checkTrumpet(index)" :class="item.type?'check-p':''"
                    v-for="(item,index) in trumpetList" :key="index">{{item.name}}</p>
-                <p v-if="!trumpetList[0]" style="line-height:180px;font-size:16px;color:#fff;text-align: center">暂无数据</p>
+                <p v-if="!trumpetList[0]" style="line-height:60px;font-size:16px;color:#fff;text-align: center">暂无数据</p>
               </div>
               <div class="horn-max-big-box-two-right">
                 <div class="radio-text-box scrollbar-box">
@@ -1064,9 +1064,10 @@
       //喇叭操作
       checkTrumpet(index){
         let self = this;
-        for(let i=0;i<self.trumpetList.length;i++){
-          self.trumpetList[i].type = i == index;
-        }
+        self.trumpetList[index].type = !self.trumpetList[index].type
+        // for(let i=0;i<self.trumpetList.length;i++){
+        //   self.trumpetList[i].type = i == index;
+        // }
       },
       //发送消息到喇叭
       addHxpChemical(){
@@ -1074,11 +1075,25 @@
         let obj = {
           floorId:this.floorId,
           messageContext:this.inputText,
+          playVo:[],
         };
         let num = 0;
         for(let i=0;i<self.trumpetList.length;i++){
           if(self.trumpetList[i].type){
-            obj.playVo=[{
+            // obj.playVo=[{
+            //   sn:self.trumpetList[i].deviceSn,
+            //   port:self.trumpetList[i].port,
+            //   deviceIp:self.trumpetList[i].deviceIp,
+            //   type:"",
+            //   name:"",
+            //   speed:"",
+            //   params:{
+            //     tid:"",
+            //     vol:self.trumpetList[i].deviceVol,
+            //     urls:[]
+            //   }
+            // }];
+            obj.playVo.push({
               sn:self.trumpetList[i].deviceSn,
               port:self.trumpetList[i].port,
               deviceIp:self.trumpetList[i].deviceIp,
@@ -1090,7 +1105,7 @@
                 vol:self.trumpetList[i].deviceVol,
                 urls:[]
               }
-            }];
+            })
             num++
           }
         }

+ 377 - 363
src/views/secureAccess/approval/infoPage.vue

@@ -6,13 +6,13 @@
       <p class="button-p reset-button-one" @click="backPage">返回</p>
     </div>
     <!--<div class="item-max-box" style="margin-top:30px;">-->
-      <!--<div class="item-title-box">{{subjectData.labSecurityApply.userType == '11'?'教师信息(关联教师信息材料):':(subjectData.labSecurityApply.userType == '22'?'学生信息(关联学生信息材料):':'')}}</div>-->
-      <!--<div class="item-user-box">-->
-        <!--<div>姓名:{{subjectData.labSecurityApply.userName}}</div>-->
-        <!--<div>{{subjectData.labSecurityApply.userType == '11'?'工号:':(subjectData.labSecurityApply.userType == '22'?'学号:':'')}}{{subjectData.labSecurityApply.userNumber}}</div>-->
-        <!--<div>学院:{{subjectData.labSecurityApply.deptName}}</div>-->
-        <!--<div v-if="subjectData.labSecurityApply.userType == '22'">专业:{{subjectData.labSecurityApply.major}}</div>-->
-      <!--</div>-->
+    <!--<div class="item-title-box">{{subjectData.labSecurityApply.userType == '11'?'教师信息(关联教师信息材料):':(subjectData.labSecurityApply.userType == '22'?'学生信息(关联学生信息材料):':'')}}</div>-->
+    <!--<div class="item-user-box">-->
+    <!--<div>姓名:{{subjectData.labSecurityApply.userName}}</div>-->
+    <!--<div>{{subjectData.labSecurityApply.userType == '11'?'工号:':(subjectData.labSecurityApply.userType == '22'?'学号:':'')}}{{subjectData.labSecurityApply.userNumber}}</div>-->
+    <!--<div>学院:{{subjectData.labSecurityApply.deptName}}</div>-->
+    <!--<div v-if="subjectData.labSecurityApply.userType == '22'">专业:{{subjectData.labSecurityApply.major}}</div>-->
+    <!--</div>-->
     <!--</div>-->
     <div class="admittance_info">
       <li>申请实验室:<i>{{subjectData.labSecurityApply.laboratoryDeptName}}-{{subjectData.labSecurityApply.subjectName}}</i></li>
@@ -44,56 +44,56 @@
           <el-checkbox  @change="checkedImg(minItem)" v-if="isLook" >{{minItem.name}}</el-checkbox>
           <i v-if="!isLook" >{{minItem.name}}</i>
           <i class="file_list_look" @click="lookFile(minItem)">查看</i>
-<!--          <a class="file_list_look" :href="item2.dataUrl.split(';')[1].replace(/,/g,'')" target="_blank">查看</a>-->
+          <!--          <a class="file_list_look" :href="item2.dataUrl.split(';')[1].replace(/,/g,'')" target="_blank">查看</a>-->
           <i v-if="isLook" class="file_list_look" @click="handleExport(1,minItem)">下载</i>
         </div>
       </div>
       <div class="item-title-box" v-if="subjectData.labSecurityApply.auditStatus!=2">审核备注:</div>
       <el-input type="textarea" style="margin-top: 20px" v-model="rejectCause" placeholder="请输入审核备注" maxlength="50" v-if="subjectData.labSecurityApply.auditStatus!=2"/>
-     <div class="btn_list">
-       <p v-if="isLook" class="button-p reset-button-one" style="width:100px;" @click="handleExport(2,'')">打包下载</p>
-       <p v-if="isLook&&subjectData.labSecurityApply.auditStatus!=2" class="inquire-button-one" style="width:100px;" @click="backPage()">确定</p>
-       <p v-if="!isLook" class="button-p reset-button-one" style="width:100px;" @click="auditClick(1)">驳回</p>
-       <p v-if="!isLook" class="inquire-button-one" style="width:100px;" @click="auditClick(2)">通过</p>
-     </div>
+      <div class="btn_list">
+        <p v-if="isLook" class="button-p reset-button-one" style="width:100px;" @click="handleExport(2,'')">打包下载</p>
+        <p v-if="isLook&&subjectData.labSecurityApply.auditStatus!=2" class="inquire-button-one" style="width:100px;" @click="backPage()">确定</p>
+        <p v-if="!isLook" class="button-p reset-button-one" style="width:100px;" @click="auditClick(1)">驳回</p>
+        <p v-if="!isLook" class="inquire-button-one" style="width:100px;" @click="auditClick(2)">通过</p>
+      </div>
     </div>
     <div v-for="(item,index) in subjectData.listTemp" :key="index">
-<!--      <div class="item-max-box" style="margin-top:30px;" v-if="item.materialType==2&&item.relationType==1">
-        <div class="item-title-box">{{subjectData.labSecurityApply.userType == '11'?'教师信息(关联教师信息材料):':(subjectData.labSecurityApply.userType == '22'?'学生信息(关联学生信息材料):':'')}}</div>
-        <div class="item-user-box">
-          <div>
-            <p>姓名:</p>
-            <p>{{subjectData.labSecurityApply.userName}}</p>
-          </div>
-          <div>
-            <p>{{subjectData.labSecurityApply.userType == '11'?'工号:':(subjectData.labSecurityApply.userType == '22'?'学号:':'')}}</p>
-            <p>{{subjectData.labSecurityApply.userNumber}}</p>
-          </div>
-          <div>
-            <p>学院:</p>
-            <p>{{subjectData.labSecurityApply.deptName}}</p>
-          </div>
-          <div v-if="subjectData.labSecurityApply.userType == '22'">
-            <p>专业:</p>
-            <p>{{subjectData.labSecurityApply.userMajor}}</p>
-          </div>
-        </div>
-      </div>-->
-<!--      <div class="item-max-box" v-if="item.materialType==2&&item.relationType==2&&subjectData.labSecurityApply.userType == '22'">
-        <div class="item-title-box">安全考试证书:</div>
-        <img v-if="subjectData.listcert[0]" class="item-img-box" :src="subjectData.listcert[0].cert_url">
-        <p v-if="!subjectData.listcert[0]" style="margin-left:40px;color:#999;font-size:14px;">暂无证书</p>
-      </div>
-      <div class="item-max-box" v-if="item.materialType==1">
-        <div class="item-title-box">{{item.materialName}}:</div>
-        <div class="item-for-text-box">
-          <p :class="iframeSrc[index].forIndex == minIndex ?'color-p':''" v-for="(minItem,minIndex) in item.upList" @click="forClick(minItem,minIndex,index)">{{minItem.name}}</p>
-        </div>
-        <iframe
-          class="item-html-box"
-          :src="iframeSrc[index].url" scrolling="auto" frameborder="0">
-        </iframe>
-      </div>-->
+      <!--      <div class="item-max-box" style="margin-top:30px;" v-if="item.materialType==2&&item.relationType==1">
+              <div class="item-title-box">{{subjectData.labSecurityApply.userType == '11'?'教师信息(关联教师信息材料):':(subjectData.labSecurityApply.userType == '22'?'学生信息(关联学生信息材料):':'')}}</div>
+              <div class="item-user-box">
+                <div>
+                  <p>姓名:</p>
+                  <p>{{subjectData.labSecurityApply.userName}}</p>
+                </div>
+                <div>
+                  <p>{{subjectData.labSecurityApply.userType == '11'?'工号:':(subjectData.labSecurityApply.userType == '22'?'学号:':'')}}</p>
+                  <p>{{subjectData.labSecurityApply.userNumber}}</p>
+                </div>
+                <div>
+                  <p>学院:</p>
+                  <p>{{subjectData.labSecurityApply.deptName}}</p>
+                </div>
+                <div v-if="subjectData.labSecurityApply.userType == '22'">
+                  <p>专业:</p>
+                  <p>{{subjectData.labSecurityApply.userMajor}}</p>
+                </div>
+              </div>
+            </div>-->
+      <!--      <div class="item-max-box" v-if="item.materialType==2&&item.relationType==2&&subjectData.labSecurityApply.userType == '22'">
+              <div class="item-title-box">安全考试证书:</div>
+              <img v-if="subjectData.listcert[0]" class="item-img-box" :src="subjectData.listcert[0].cert_url">
+              <p v-if="!subjectData.listcert[0]" style="margin-left:40px;color:#999;font-size:14px;">暂无证书</p>
+            </div>
+            <div class="item-max-box" v-if="item.materialType==1">
+              <div class="item-title-box">{{item.materialName}}:</div>
+              <div class="item-for-text-box">
+                <p :class="iframeSrc[index].forIndex == minIndex ?'color-p':''" v-for="(minItem,minIndex) in item.upList" @click="forClick(minItem,minIndex,index)">{{minItem.name}}</p>
+              </div>
+              <iframe
+                class="item-html-box"
+                :src="iframeSrc[index].url" scrolling="auto" frameborder="0">
+              </iframe>
+            </div>-->
     </div>
 
     <!-- 添加或修改安全准入申请材料配置对话框 -->
@@ -120,267 +120,320 @@
 let Base64 = require('js-base64').Base64;
 import {downloadwBatch, getDetails, laboratoryApply} from "@/api/laboratory/approval";
 import {optionHazard} from "@/api/laboratory/hazard";
-  export default {
-    name: "info-page",
-    props:{
-      infoData: {},
-    },
-    data() {
-      return {
-        pageType:false,
-        forIndex:0,
-        subjectData:{},
-        iframeSrc:[],
-        open:false,
-        form:{},
-        checkList:[],
-        rejectCause:'',//审核备注
-        isLook:false,//判断是查看还是审核
-        //打包下载查询参数
-        packDown:{
-          userName:'',
-          userNumber:'',
-          subjectName:'',
-          fileList:'',
-
-        },
-        mrList:[],
-        // 表单校验
-        rules: {
-          name: [
-            { required: true, message: "请输入检查项名称", trigger: "blur" },
-            { required: true, message: "请输入检查项名称", validator: this.spaceJudgment, trigger: "blur" }
-          ],
-          code: [
-            { required: true, message: "请输入条款号", trigger: "blur" },
-            { required: true, message: "请输入条款号", validator: this.spaceJudgment, trigger: "blur" }
-          ],
-        },
-      };
-    },
-    created() {
+export default {
+  name: "info-page",
+  props:{
+    infoData: {},
+  },
+  data() {
+    return {
+      pageType:false,
+      forIndex:0,
+      subjectData:{},
+      iframeSrc:[],
+      open:false,
+      form:{},
+      checkList:[],
+      rejectCause:'',//审核备注
+      isLook:false,//判断是查看还是审核
+      //打包下载查询参数
+      packDown:{
+        userName:'',
+        userNumber:'',
+        subjectName:'',
+        fileList:'',
 
-      if(this.infoData.type==0){
-        this.isLook=false;
+      },
+      mrList:[],
+      // 表单校验
+      rules: {
+        name: [
+          { required: true, message: "请输入检查项名称", trigger: "blur" },
+          { required: true, message: "请输入检查项名称", validator: this.spaceJudgment, trigger: "blur" }
+        ],
+        code: [
+          { required: true, message: "请输入条款号", trigger: "blur" },
+          { required: true, message: "请输入条款号", validator: this.spaceJudgment, trigger: "blur" }
+        ],
+      },
+    };
+  },
+  created() {
 
-      }else if(this.infoData.type==1){
-        this.isLook=true;
-      }
-      this.getDetails();
+    if(this.infoData.type==0){
+      this.isLook=false;
 
+    }else if(this.infoData.type==1){
+      this.isLook=true;
+    }
+    this.getDetails();
 
-    },
-    methods: {
-      lookFile(item){
-        let visitUrl=window.location.href.split('://')[0]+'://'+this.judgmentNetworkReturnAddress()+'/admin/'+item.url;
-        console.log(visitUrl)
-        window.open(localStorage.getItem('filePreviewUrl') + '/onlinePreview?url='+encodeURIComponent(Base64.encode(visitUrl)));
 
-      },
-      /** 导出按钮操作 */
-      handleExport(type,item) {
-        console.log(item)
-        if(type==1){//单个
-          this.packDown.userName=this.subjectData.sysUser.nickName
-          this.packDown.userNumber=this.subjectData.sysUser.userName
-          this.packDown.subjectName=this.subjectData.labSecurityApply.subjectName
-          let visitUrl=item.name+';'+item.url+',';
+  },
+  methods: {
+    lookFile(item){
+      let visitUrl=window.location.href.split('://')[0]+'://'+process.env.VUE_APP_BASE_API+'/admin/'+item.url;
+      console.log(visitUrl)
+      window.open(localStorage.getItem('filePreviewUrl') + '/onlinePreview?url='+encodeURIComponent(Base64.encode(visitUrl)));
 
-          this.packDown.fileList=visitUrl
+    },
+    /** 导出按钮操作 */
+    handleExport(type,item) {
+      console.log(item)
+      if(type==1){//单个
+        this.packDown.userName=this.subjectData.sysUser.nickName
+        this.packDown.userNumber=this.subjectData.sysUser.userName
+        this.packDown.subjectName=this.subjectData.labSecurityApply.subjectName
+        let visitUrl=item.name+';'+item.url+',';
 
-          this.download('/laboratory/apply/downloadwBatch', {
-            ...this.packDown
-          }, this.packDown.userName+'_'+this.packDown.userNumber+'_'+this.packDown.subjectName+`.zip`)
+        this.packDown.fileList=visitUrl
 
+        this.download('/laboratory/apply/downloadwBatch', {
+          ...this.packDown
+        }, this.packDown.userName+'_'+this.packDown.userNumber+'_'+this.packDown.subjectName+`.zip`)
 
 
 
 
-        }else if(type==2){// 打包下载
-          console.log(this.mrList)
-          if(this.mrList.length<=0){
-            this.msgInfo("请先勾选需要打包下载的文件!");
-          }else{
-            let list=[];
-            this.mrList.forEach(function (item){
-                list.push(item+',')
-            })
-            console.log(list)
-            this.packDown.userName=this.subjectData.sysUser.nickName
-            this.packDown.userNumber=this.subjectData.sysUser.userName
-            this.packDown.subjectName=this.subjectData.labSecurityApply.subjectName
-            this.packDown.fileList= list.join('@@')
 
+      }else if(type==2){// 打包下载
+        console.log(this.mrList)
+        if(this.mrList.length<=0){
+          this.msgInfo("请先勾选需要打包下载的文件!");
+        }else{
+          let list=[];
+          this.mrList.forEach(function (item){
+            list.push(item+',')
+          })
+          console.log(list)
+          this.packDown.userName=this.subjectData.sysUser.nickName
+          this.packDown.userNumber=this.subjectData.sysUser.userName
+          this.packDown.subjectName=this.subjectData.labSecurityApply.subjectName
+          this.packDown.fileList= list.join('@@')
 
 
-            this.download('/laboratory/apply/downloadwBatch', {
-              ...this.packDown
-            }, this.packDown.userName+'_'+this.packDown.userNumber+'_'+this.packDown.subjectName+`.zip`)
-          }
 
+          this.download('/laboratory/apply/downloadwBatch', {
+            ...this.packDown
+          }, this.packDown.userName+'_'+this.packDown.userNumber+'_'+this.packDown.subjectName+`.zip`)
         }
 
+      }
 
-      },
-      checkedImg(item){
-        console.log(item)
-        if(event.target.checked==false){
-          this.mrList.splice(this.mrList.indexOf(item.url),1);
-        }else{
-          this.mrList.push(item.name+';'+item.url)
-        }
-        console.log(this.mrList)
 
+    },
+    checkedImg(item){
+      console.log(item)
+      if(event.target.checked==false){
+        this.mrList.splice(this.mrList.indexOf(item.url),1);
+      }else{
+        this.mrList.push(item.name+';'+item.url)
+      }
+      console.log(this.mrList)
 
-      },
-      //审核按钮
-      auditClick(type){
-        let self = this;
-        if(type == 1){
-          this.open = true;
-        }else if(type == 2){
-          this.$confirm('是否确认审核?', "", {
+
+    },
+    //审核按钮
+    auditClick(type){
+      let self = this;
+      if(type == 1){
+        this.open = true;
+      }else if(type == 2){
+        this.$confirm('是否确认审核?', "", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          self.laboratoryApply(type);
+        }).then(() => {}).catch(() => {});
+      }
+    },
+    laboratoryApply(type){
+      let obj = {
+        id:this.infoData.list.id,
+        auditStatus:type,
+        rejectCause:this.rejectCause
+      };
+      if(type == 1){
+        obj.rejectCause = this.form.rejectCause;
+        obj.rejectMaterial = this.checkList + '';
+      }
+      laboratoryApply(obj).then(response => {
+        if(response.code==200){
+          this.msgSuccess("操作成功");
+          this.$parent.tableClick(1);
+        }else if(response.code==205){
+          this.$confirm(response.msg, "警告", {
             confirmButtonText: "确定",
             cancelButtonText: "取消",
             type: "warning"
-          }).then(function() {
-            self.laboratoryApply(type);
-          }).then(() => {}).catch(() => {});
+          }).then(() => {
+            //  确定
+            this.$router.push({ path: '/comprehensive/laboratoryManagement/accessAuthorization-KDNH' });
+          }).catch(function() {
+            //  取消
+            this.$parent.tableClick(1);
+          });
         }
-      },
-      laboratoryApply(type){
-        let obj = {
-          id:this.infoData.list.id,
-          auditStatus:type,
-          rejectCause:this.rejectCause
-        };
-        if(type == 1){
-          obj.rejectCause = this.form.rejectCause;
-          obj.rejectMaterial = this.checkList + '';
-        }
-        laboratoryApply(obj).then(response => {
-          this.msgSuccess("操作成功");
-          this.$parent.tableClick(1);
-        })
-      },
-      //点击切换文件
-      forClick(item,index,bigIndex){
-        this.iframeSrc[bigIndex].forIndex = index;
-        this.iframeSrc[bigIndex].url = this.urlJudge(item.url)
-      },
-      //获取数据
-      getDetails(){
-        let self = this;
-        getDetails({id:this.infoData.list.id}).then(response => {
-          let dataList = [];
-          for(let i=0;i<response.data.listTemp.length;i++){
-            if(response.data.listTemp[i].materialType == 2 && response.data.listTemp[i].materialType == 2){
-              dataList.unshift(response.data.listTemp[i]);
-            }
+      })
+    },
+    //点击切换文件
+    forClick(item,index,bigIndex){
+      this.iframeSrc[bigIndex].forIndex = index;
+      this.iframeSrc[bigIndex].url = this.urlJudge(item.url)
+    },
+    //获取数据
+    getDetails(){
+      let self = this;
+      getDetails({id:this.infoData.list.id}).then(response => {
+        let dataList = [];
+        for(let i=0;i<response.data.listTemp.length;i++){
+          if(response.data.listTemp[i].materialType == 2 && response.data.listTemp[i].materialType == 2){
+            dataList.unshift(response.data.listTemp[i]);
           }
-          for(let i=0;i<response.data.listTemp.length;i++){
-            if(response.data.listTemp[i].materialType == 1){
-              dataList.push(response.data.listTemp[i]);
-            }
+        }
+        for(let i=0;i<response.data.listTemp.length;i++){
+          if(response.data.listTemp[i].materialType == 1){
+            dataList.push(response.data.listTemp[i]);
           }
-          for(let i=0;i<response.data.listTemp.length;i++){
-            if(response.data.listTemp[i].materialType == 2 && response.data.listTemp[i].materialType == 1){
-              dataList.unshift(response.data.listTemp[i]);
-            }
+        }
+        for(let i=0;i<response.data.listTemp.length;i++){
+          if(response.data.listTemp[i].materialType == 2 && response.data.listTemp[i].materialType == 1){
+            dataList.unshift(response.data.listTemp[i]);
           }
-          this.$set(response.data,'listTemp',dataList);
-          let newList = [];
-          for(let i=0;i<response.data.listTemp.length;i++){
-            if(response.data.listTemp[i].materialType == 1){
-              let maxList = [];
-              for(let o=0;o<response.data.listTemp[i].listMr.length;o++){
-                let bigList = response.data.listTemp[i].listMr[o].dataUrl.split(',');
-                for(let x=0;x<bigList.length;x++){
-                  if(bigList[x]){
-                    let minList = bigList[x].split(';');
-                    let obj = {
-                      name:minList[0],
-                      url:minList[1],
-                    };
-                    maxList.push(obj);
-                  }
-                }
-              }
-              response.data.listTemp[i].upList = maxList;
-              let obj ={};
-              if(maxList.length>0){
-                 obj = {
-                  forIndex:0,
-                  url:this.urlJudge(maxList[0].url)
+        }
+        this.$set(response.data,'listTemp',dataList);
+        let newList = [];
+        for(let i=0;i<response.data.listTemp.length;i++){
+          if(response.data.listTemp[i].materialType == 1){
+            let maxList = [];
+            for(let o=0;o<response.data.listTemp[i].listMr.length;o++){
+              let bigList = response.data.listTemp[i].listMr[o].dataUrl.split(',');
+              for(let x=0;x<bigList.length;x++){
+                if(bigList[x]){
+                  let minList = bigList[x].split(';');
+                  let obj = {
+                    name:minList[0],
+                    url:minList[1],
+                  };
+                  maxList.push(obj);
                 }
               }
-              newList.push(obj);
-            }else{
-              let obj = {
-                forIndex:"",
-                url:""
+            }
+            response.data.listTemp[i].upList = maxList;
+            let obj ={};
+            if(maxList.length>0){
+              obj = {
+                forIndex:0,
+                url:this.urlJudge(maxList[0].url)
               }
-              newList.push(obj);
             }
+            newList.push(obj);
+          }else{
+            let obj = {
+              forIndex:"",
+              url:""
+            }
+            newList.push(obj);
           }
-          this.$set(this,"iframeSrc",newList);
-          this.$set(this,"subjectData",response.data);
-          //审核备注
-          if(this.isLook){
-
-            this.rejectCause=response.data.labSecurityApply.rejectCause
-          }
-          this.$forceUpdate()
-          this.pageType = true;
-        })
-      },
-      //返回
-      backPage(){
+        }
+        this.$set(this,"iframeSrc",newList);
+        this.$set(this,"subjectData",response.data);
+        //审核备注
         if(this.isLook){
-          this.$parent.tableClick(2);
-        }else{
-          this.$parent.tableClick(1);
+
+          this.rejectCause=response.data.labSecurityApply.rejectCause
         }
+        this.$forceUpdate()
+        this.pageType = true;
+      })
+    },
+    //返回
+    backPage(){
+      if(this.isLook){
+        this.$parent.tableClick(2);
+      }else{
+        this.$parent.tableClick(1);
+      }
 
-      },
-    }
-  };
+    },
+  }
+};
 </script>
 
 <style scoped lang="scss">
-  .info-page {
-    flex:1;
-    display: flex!important;
-    flex-direction: column;
-    /*box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);*/
-    /*border-radius:10px;*/
-    .top-title-box{
-      display: flex;
-      border-bottom: 1px solid #E0E0E0;
-      /*padding-top:20px;*/
-      p:nth-child(1){
-        flex: 1;
-        line-height:60px;
-        color: #0045AF;
-        font-size:18px;
-        margin:0 0 0 40px;
-      }
-      p:nth-child(2){
-        margin-right:20px;
-      }
-      p:nth-child(3){
-        margin-right:20px;
-      }
-      p:nth-child(4){
-        margin-right:20px;
+.info-page {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  /*box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);*/
+  /*border-radius:10px;*/
+  .top-title-box{
+    display: flex;
+    border-bottom: 1px solid #E0E0E0;
+    /*padding-top:20px;*/
+    p:nth-child(1){
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 0 0 40px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+    p:nth-child(4){
+      margin-right:20px;
+    }
+  }
+  /*准入信息*/
+  .admittance_info{
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    padding-left: 80px;
+    box-sizing: border-box;
+    >li{
+      list-style-type:none;
+      font-size: 16px;
+      font-family: Microsoft YaHei;
+      font-weight: 500;
+      color: #999999;
+      line-height: 70px;
+      margin-right: 20px;
+      >i{
+        margin-left: 10px;
+        display: inline-block;
+        font-style:normal;
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 500;
+        color: #333333;
+        line-height: 70px;
       }
     }
-    /*准入信息*/
-    .admittance_info{
+  }
+  /*准入材料*/
+  .admittance_materials{
+    padding-left: 40px;
+    box-sizing: border-box;
+    .admittance_materials_title{
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+
+      border-bottom: 1px solid #E0E0E0;
+      margin-top: 0;
+    }
+    .identity{
       display: flex;
       justify-content: flex-start;
       flex-wrap: wrap;
-      padding-left: 80px;
+      padding-left: 40px;
       box-sizing: border-box;
       >li{
         list-style-type:none;
@@ -402,113 +455,74 @@ import {optionHazard} from "@/api/laboratory/hazard";
         }
       }
     }
-    /*准入材料*/
-    .admittance_materials{
-      padding-left: 40px;
+    .file_list{
+      padding-left: 80px;
       box-sizing: border-box;
-      .admittance_materials_title{
-        flex: 1;
-        line-height:60px;
-        color: #0045AF;
-        font-size:18px;
-
-        border-bottom: 1px solid #E0E0E0;
-        margin-top: 0;
+      >i{
+        font-style: normal;
+        font-size: 14px;
+        font-family: Microsoft YaHei;
+        font-weight: bold;
+        color: #0183FA;
+        line-height: 70px;
       }
-      .identity{
-        display: flex;
-        justify-content: flex-start;
-        flex-wrap: wrap;
+      .file_list_look{
         padding-left: 40px;
-        box-sizing: border-box;
-        >li{
-          list-style-type:none;
-          font-size: 16px;
-          font-family: Microsoft YaHei;
-          font-weight: 500;
-          color: #999999;
-          line-height: 70px;
-          margin-right: 20px;
-          >i{
-            margin-left: 10px;
-            display: inline-block;
-            font-style:normal;
-            font-size: 16px;
-            font-family: Microsoft YaHei;
-            font-weight: 500;
-            color: #333333;
-            line-height: 70px;
-          }
-        }
+        cursor: pointer;
+        font-style: normal;
+        font-size: 14px;
+        font-family: Microsoft YaHei;
+        font-weight: bold;
+        color: #0183FA;
+        line-height: 70px;
       }
-      .file_list{
-        padding-left: 80px;
-        box-sizing: border-box;
-        >i{
-          font-style: normal;
-          font-size: 14px;
-          font-family: Microsoft YaHei;
-          font-weight: bold;
-          color: #0183FA;
-          line-height: 70px;
-        }
-        .file_list_look{
-          padding-left: 40px;
-          cursor: pointer;
-          font-style: normal;
-          font-size: 14px;
-          font-family: Microsoft YaHei;
-          font-weight: bold;
-          color: #0183FA;
-          line-height: 70px;
-        }
 
-      }
-      .btn_list{
-        text-align: center;
-        margin-top: 40px;
-        >p{
-          margin-right: 20px;
-        }
-      }
     }
-    .item-max-box{
-      .item-title-box{
-        margin-left:50px;
-        font-size:16px;
-        line-height:80px;
+    .btn_list{
+      text-align: center;
+      margin-top: 40px;
+      >p{
+        margin-right: 20px;
       }
-      .item-user-box{
+    }
+  }
+  .item-max-box{
+    .item-title-box{
+      margin-left:50px;
+      font-size:16px;
+      line-height:80px;
+    }
+    .item-user-box{
+      display: flex;
+      margin-left:65px;
+      div{
         display: flex;
-        margin-left:65px;
-        div{
-          display: flex;
-          margin-right:60px;
-          font-size:14px;
-        }
-      }
-      .item-img-box{
-        width:240px;
-        margin-left:50px;
+        margin-right:60px;
+        font-size:14px;
       }
-      .item-for-text-box{
-        margin-left:77px;
-        p{
-          display: inline-block;
-          font-size:14px;
-          line-height:40px;
-          margin:0 57px 0 0;
-        }
-        .color-p{
-          color:#0045AF;
-        }
+    }
+    .item-img-box{
+      width:240px;
+      margin-left:50px;
+    }
+    .item-for-text-box{
+      margin-left:77px;
+      p{
+        display: inline-block;
+        font-size:14px;
+        line-height:40px;
+        margin:0 57px 0 0;
       }
-      .item-html-box{
-        margin:20px 0 40px 58px;
-        width:900px;
-        height:900px;
-        background: #F5F5F5;
+      .color-p{
+        color:#0045AF;
       }
     }
+    .item-html-box{
+      margin:20px 0 40px 58px;
+      width:900px;
+      height:900px;
+      background: #F5F5F5;
+    }
   }
+}
 </style>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 522 - 507
src/views/secureAccess/whitelist/addPage.vue


+ 10 - 154
src/views/securityCheck/release/checkRecordInfoPage.vue

@@ -1,153 +1,7 @@
 <!--检查记录详情-->
 <template>
   <div class="checkRecordInfoPage" v-if="pageType">
-    <!--<div class="top-steps-box">-->
-      <!--<el-steps :active="active">-->
-        <!--<el-step :title="textOne" icon="el-icon-circle-check"></el-step>-->
-        <!--<el-step :title="textTwo" :class="newData.zgStatus == 2?'zgStatusColor':''" :icon="newData.zgStatus == 2?'el-icon-circle-close':'el-icon-circle-check'"></el-step>-->
-        <!--<el-step :title="textTree" icon="el-icon-circle-check"></el-step>-->
-      <!--</el-steps>-->
-    <!--</div>-->
-    <!--<div class="top-text-steps-box">-->
-      <!--<div class="top-text-steps-left">-->
-        <!--<p>检查时间:{{newData.createTime}}</p>-->
-        <!--<p>截止整改时间:{{newData.zgjzTime}}</p>-->
-        <!--<p v-if="newData.firstTime">首次查看报告时间:{{newData.firstTime}}</p>-->
-      <!--</div>-->
-      <!--<div class="top-text-steps-center">-->
-        <!--<p v-if="newData.zgqrTime">整改时间:{{newData.zgqrTime}}</p>-->
-        <!--<p v-if="newData.zgbhTime">驳回时间:{{newData.zgbhTime}}</p>-->
-      <!--</div>-->
-    <!--</div>-->
-    <!--<div class="center-info-box scrollbar-box">-->
-      <!--<div class="center-info-top-box">-->
-        <!--<div class="center-left-box">-->
-          <!--<img src="@/assets/newImages/icon_7.png">-->
-          <!--<div>-->
-            <!--<p>{{newData.zgType == 0?'一般整改':(newData.zgType == 1?'重大整改':'')}}</p>-->
-            <!--<p>{{newData.jcDwName}}</p>-->
-          <!--</div>-->
-        <!--</div>-->
-        <!--<div class="center-center-box">-->
-          <!--<img src="@/assets/newImages/icon_8.png">-->
-          <!--<div>-->
-            <!--<p>{{newData.laboratoryName}}</p>-->
-            <!--<p>{{newData.buildingName}}{{newData.fjNumber}}</p>-->
-          <!--</div>-->
-        <!--</div>-->
-        <!--<div class="center-right-box">-->
-          <!--<img src="@/assets/newImages/icon_9.png">-->
-          <!--<div>-->
-            <!--<p>{{newData.fzrName}}</p>-->
-            <!--<p>{{newData.fzrLxfs}}</p>-->
-          <!--</div>-->
-        <!--</div>-->
-      <!--</div>-->
-      <!--<div class="text-box" v-if="newData.zgStatus == 2 || newData.zgStatus == 4">-->
-        <!--<p>{{newData.zgStatus == 2?'驳回原因':(newData.zgStatus == 4?'整改结果':'')}}:</p>-->
-        <!--<p>{{newData.zgStatus == 2?newData.fbYy:(newData.zgStatus == 4?newData.zgJg:'')}}</p>-->
-      <!--</div>-->
-      <!--<p class="center-info-title" v-if="newData.zgStatus==0">隐患信息</p>-->
-      <!--<p class="center-info-title" v-if="newData.zgStatus==1 || newData.zgStatus==2">整改信息</p>-->
-      <!--<p class="center-info-title" v-if="newData.zgStatus==3 || newData.zgStatus==4">已整改信息</p>-->
-      <!--<div class="center-for-box" v-for="(item,index) in newData.detailsList" :key="index" v-if="item.isZg != 1">-->
-        <!--<div class="center-for-left-box">-->
-          <!--<p class="for-title-p">{{item.jcxName}}</p>-->
-          <!--<div class="for-text-box" v-if="item.isLingshi == 1">-->
-            <!--<p>条款:</p>-->
-            <!--<p>临时检查项</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box" v-if="item.isLingshi == 0">-->
-            <!--<p>条款:</p>-->
-            <!--<p>{{item.allCheckOptionName}}</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box">-->
-            <!--<p>隐患描述:</p>-->
-            <!--<p>{{item.yhMs}}</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box" v-if="item.isZg == 0 && newData.zgType == 0">-->
-            <!--<p>整改描述:</p>-->
-            <!--<p>{{item.zgMs}}</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box" v-if="item.isZg == 0 && newData.zgType == 1">-->
-            <!--<p>原因分析:</p>-->
-            <!--<p>{{item.zgYyfx}}</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box" v-if="item.isZg == 0 && newData.zgType == 1">-->
-            <!--<p>整改措施:</p>-->
-            <!--<p>{{item.zgCs}}</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box" v-if="item.isZg == 1">-->
-            <!--<p>证明信息:</p>-->
-            <!--<p>{{item.zmClMs}}</p>-->
-          <!--</div>-->
-        <!--</div>-->
-        <!--<div class="center-for-right-box">-->
-          <!--<div class="for-img-max-box">-->
-            <!--<p class="for-img-max-title-p" v-if="!item.yhImg[0]">未上传隐患照片</p>-->
-            <!--<p class="for-img-max-title-p" v-if="item.yhImg[0]">整改前照片:</p>-->
-            <!--<div class="for-img-box">-->
-              <!--<img v-for="(itemImg,imgIndex) in item.yhImg" :key="imgIndex" :src="itemImg" @click="lockImg(1,itemImg)">-->
-            <!--</div>-->
-          <!--</div>-->
-          <!--<div class="for-img-max-box" v-if="item.yhZghImg">-->
-            <!--<p class="for-img-max-title-p">整改后照片:</p>-->
-            <!--<div class="for-img-box">-->
-              <!--<img v-for="(itemImg,imgIndex) in item.yhZghImg" :key="imgIndex" :src="itemImg" @click="lockImg(2,itemImg)">-->
-            <!--</div>-->
-          <!--</div>-->
-        <!--</div>-->
-      <!--</div>-->
-      <!--<p class="center-info-title" v-if="newData.zgStatus==3">未整改信息</p>-->
-      <!--<div class="center-for-box" v-for="(item,index) in newData.detailsList" :key="index" v-if="item.isZg == 1">-->
-        <!--<div class="center-for-left-box">-->
-          <!--<p class="for-title-p">{{item.jcxName}}</p>-->
-          <!--<div class="for-text-box" v-if="item.isLingshi == 1">-->
-            <!--<p>条款:</p>-->
-            <!--<p>临时检查项</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box" v-if="item.isLingshi == 0">-->
-            <!--<p>条款:</p>-->
-            <!--<p>{{item.allCheckOptionName}}</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box">-->
-            <!--<p>隐患描述:</p>-->
-            <!--<p>{{item.yhMs}}</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box" v-if="item.isZg == 0 && newData.zgType == 0">-->
-            <!--<p>整改描述:</p>-->
-            <!--<p>{{item.zgMs}}</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box" v-if="item.isZg == 0 && newData.zgType == 1">-->
-            <!--<p>原因分析:</p>-->
-            <!--<p>{{item.zgYyfx}}</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box" v-if="item.isZg == 0 && newData.zgType == 1">-->
-            <!--<p>整改措施:</p>-->
-            <!--<p>{{item.zgCs}}</p>-->
-          <!--</div>-->
-          <!--<div class="for-text-box" v-if="item.isZg == 1">-->
-            <!--<p>证明信息:</p>-->
-            <!--<p>{{item.zmClMs}}</p>-->
-          <!--</div>-->
-        <!--</div>-->
-        <!--<div class="center-for-right-box">-->
-          <!--<div class="for-img-max-box">-->
-            <!--<p class="for-img-max-title-p" v-if="!item.yhImg[0]">未上传隐患照片</p>-->
-            <!--<p class="for-img-max-title-p" v-if="item.yhImg[0]">整改前照片:</p>-->
-            <!--<div class="for-img-box">-->
-              <!--<img v-for="(itemImg,imgIndex) in item.yhImg" :key="imgIndex" :src="itemImg" @click="lockImg(1,itemImg)">-->
-            <!--</div>-->
-          <!--</div>-->
-          <!--<div class="for-img-max-box" v-if="item.zmClImg">-->
-            <!--<p class="for-img-max-title-p">证明材料:</p>-->
-            <!--<div class="for-img-box">-->
-              <!--<img v-for="(itemImg,imgIndex) in item.zmClImg" :key="imgIndex" :src="itemImg" @click="lockImg(3,itemImg)">-->
-            <!--</div>-->
-          <!--</div>-->
-        <!--</div>-->
-      <!--</div>-->
-    <!--</div>--><!--标题部分-->
+    <!--标题部分-->
     <div class="top-title-box">
       <p class="title-p">发布详情</p>
       <p class="button-p reset-button-one" @click="backPage">返回</p>
@@ -232,7 +86,7 @@
                 <div class="center-info-for-big-flex-left-box">
                   <p class="center-info-for-big-flex-left-title">隐患照片:</p>
                   <div class="center-info-for-big-flex-left-img-box" v-if="item.yhImg[0]">
-                    <img :src="item" v-for="(item,index) in item.yhImg" :key="index" @click="lockImg(item)">
+                    <img :src="item" v-for="(item,index) in item.yhImg" :key="index" @click="lockImg(1,item)">
                   </div>
                   <p v-if="!item.yhImg[0]">未上传照片</p>
                 </div>
@@ -251,7 +105,7 @@
                   </div>
                 </div>
               </div>
-              <div class="center-info-for-min-box" :class="" v-if="item.detailslogList[0]">
+              <div class="center-info-for-min-box" v-if="item.detailslogList[0]">
                 <!--整改循环-->
                 <div class="center-info-for-min" v-for="(minItme,minIndex) in item.detailslogList" :key="minIndex" v-if="minIndex == 0 || item.allDataType">
                   <div class="center-info-for-min-left-box">
@@ -274,7 +128,7 @@
                     <div class="for-min-img-box">
                       <p class="for-min-img-box-left-title">整改照片:</p>
                       <div class="for-min-img-box-left-img-box" v-if="minItme.yhZghImg[0]">
-                        <img :src="minItemMin" v-for="(minItemMin,minIndexMin) in item.yhZghImg" :key="minIndexMin" @click="lockImg(minItemMin)">
+                        <img :src="minItemMin" v-for="(minItemMin,minIndexMin) in item.yhZghImg" :key="minIndexMin" @click="lockImg(2,minItemMin)">
                       </div>
                       <p v-if="!item.yhZghImg[0]">未上传照片</p>
                     </div>
@@ -330,7 +184,7 @@
                 <div class="center-info-for-big-flex-left-box">
                   <p class="center-info-for-big-flex-left-title">隐患照片:</p>
                   <div class="center-info-for-big-flex-left-img-box" v-if="item.yhImg[0]">
-                    <img :src="item" v-for="(item,index) in item.yhImg" :key="index" @click="lockImg(item)">
+                    <img :src="item" v-for="(item,index) in item.yhImg" :key="index" @click="lockImg(1,item)">
                   </div>
                   <p v-if="!item.yhImg[0]">未上传照片</p>
                 </div>
@@ -372,7 +226,7 @@
                     <div class="for-min-img-box">
                       <p class="for-min-img-box-left-title">整改照片:</p>
                       <div class="for-min-img-box-left-img-box" v-if="minItme.yhZghImg[0]">
-                        <img :src="minItemMin" v-for="(minItemMin,minIndexMin) in minItme.yhZghImg" :key="minIndexMin" @click="lockImg(minItemMin)">
+                        <img :src="minItemMin" v-for="(minItemMin,minIndexMin) in minItme.yhZghImg" :key="minIndexMin" @click="lockImg(2,minItemMin)">
                       </div>
                       <p v-if="!minItme.yhZghImg[0]">未上传照片</p>
                     </div>
@@ -428,7 +282,7 @@
                 <div class="center-info-for-big-flex-left-box">
                   <p class="center-info-for-big-flex-left-title">隐患照片:</p>
                   <div class="center-info-for-big-flex-left-img-box" v-if="item.yhImg[0]">
-                    <img :src="item" v-for="(item,index) in item.yhImg" :key="index" @click="lockImg(item)">
+                    <img :src="item" v-for="(item,index) in item.yhImg" :key="index" @click="lockImg(1,item)">
                   </div>
                   <p v-if="!item.yhImg[0]">未上传照片</p>
                 </div>
@@ -470,7 +324,7 @@
                     <div class="for-min-img-box">
                       <p class="for-min-img-box-left-title">整改照片:</p>
                       <div class="for-min-img-box-left-img-box" v-if="minItme.yhZghImg[0]">
-                        <img :src="minItemMin" v-for="(minItemMin,minIndexMin) in item.yhZghImg" :key="minIndexMin" @click="lockImg(minItemMin)">
+                        <img :src="minItemMin" v-for="(minItemMin,minIndexMin) in item.yhZghImg" :key="minIndexMin" @click="lockImg(2,minItemMin)">
                       </div>
                       <p v-if="!item.yhZghImg[0]">未上传照片</p>
                     </div>
@@ -740,6 +594,8 @@
       },
       //查看图片
       lockImg(type,url){
+        console.log(type)
+        console.log(url)
         if(type == 1){
           this.imgTitle = "整改前照片";
         }else if(type == 2){

+ 1 - 1
src/views/securityCheck/release/index.vue

@@ -11,7 +11,7 @@
             size="small"
           />
         </el-form-item>
-        <el-form-item label="检查时间" label-width="70px">
+        <el-form-item label="发布时间" label-width="70px">
           <el-date-picker
             :clearable="false"
             v-model="dateRange"

+ 2 - 2
src/views/securityCheck/release/listPage.vue

@@ -66,8 +66,8 @@
           <p class="reset-button-one" @click="backPage"><i class="el-icon-arrow-left"></i>返回</p>
         </el-form-item>
       </el-form>
-      <el-table v-loading="loading" border :data="checkRecordList" @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55" align="center"/>
+      <el-table v-loading="loading" border :data="checkRecordList">
+<!--        <el-table-column type="selection" width="55" align="center"/>-->
         <!--<el-table-column type="selection" width="55" align="center" />-->
         <!--<el-table-column label="创建人id" align="center" prop="id" />-->
         <el-table-column label="整改状态" align="left" prop="zgStatus" width="120">

+ 3 - 3
src/views/studentViews/chemicalManagement/studentChemicalInfo/index.vue

@@ -39,9 +39,9 @@
         <el-table-column label="化学品名" align="center" prop="chemicalName" width="130px" show-overflow-tooltip/>
         <el-table-column label="容量规格" align="center" prop="chemicalAmountUnit" width="150px" show-overflow-tooltip/>
         <el-table-column label="容器规格" align="center" prop="tare" width="150px" show-overflow-tooltip/>
-        <el-table-column label="过期时间" align="center" prop="expireTime" width="150px" show-overflow-tooltip>
-          <template slot-scope="scope">{{scope.row.expireTime?scope.row.expireTime:'未设定'}}</template>
-        </el-table-column>
+        <!--<el-table-column label="过期时间" align="center" prop="expireTime" width="150px" show-overflow-tooltip>-->
+          <!--<template slot-scope="scope">{{scope.row.expireTime?scope.row.expireTime:'未设定'}}</template>-->
+        <!--</el-table-column>-->
         <el-table-column label="化学品柜" align="center" prop="cabinetName" width="130px" show-overflow-tooltip/>
         <el-table-column label="柜锁名称" align="center" prop="lockName" width="150px" show-overflow-tooltip v-if="$store.state.settings.smartAlarmType == 1"/>
         <el-table-column label="位置" align="center" prop="posi" show-overflow-tooltip/>

+ 10 - 6
src/views/studentViews/chemicalManagement/studentPurchaseRequisition/approvalPage.vue

@@ -62,8 +62,8 @@
             <div class="approval-for-box-min">
               <div class="left-max-box">
                 <div class="left-top-box">
-                  <img src="">
-                  <!--<img src="">-->
+                  <img v-if="dataInfo.avatar" :src="dataInfo.avatar">
+                  <img v-if="!dataInfo.avatar" src="@/assets/ZDimages/tx_cion.png">
                   <div class="left-top-text-box">
                     <p>发起申请</p>
                     <p>{{dataInfo.applyUserName}}</p>
@@ -82,7 +82,8 @@
               <div class="left-max-box">
                 <div class="left-top-box" v-if="item.auditType == 1">
                   <img v-if="item.actApplytaskNodeList[1]" src="@/assets/ZDimages/medicUniversity-3_1/icon_cgsq_ycsp.png">
-                  <img v-if="!item.actApplytaskNodeList[1]" :src="item.actApplytaskNodeList[0].applyUserList[0].avatar">
+                  <img v-if="!item.actApplytaskNodeList[1]&&item.actApplytaskNodeList[0].applyUserList[0].avatar" :src="item.actApplytaskNodeList[0].applyUserList[0].avatar">
+                  <img v-if="!item.actApplytaskNodeList[1]&&!item.actApplytaskNodeList[0].applyUserList[0].avatar" src="@/assets/ZDimages/tx_cion.png">
                   <div class="left-top-text-box">
                     <p>{{item.actApplytaskNodeList[1]?'依次审批':item.actApplytaskNodeList[0].applyUserList[0].postName}}</p>
                     <p>{{item.approvalName}}</p>
@@ -90,7 +91,8 @@
                 </div>
                 <div class="left-top-box" v-if="item.auditType == 2">
                   <img v-if="item.actApplytaskNodeList[0].applyUserList[1]" src="@/assets/ZDimages/medicUniversity-3_1/icon_cgsq_ycsp.png">
-                  <img v-if="!item.actApplytaskNodeList[0].applyUserList[1]" :src="item.actApplytaskNodeList[0].applyUserList[0].avatar">
+                  <img v-if="!item.actApplytaskNodeList[0].applyUserList[1]&&item.actApplytaskNodeList[0].applyUserList[0].avatar" :src="item.actApplytaskNodeList[0].applyUserList[0].avatar">
+                  <img v-if="!item.actApplytaskNodeList[0].applyUserList[1]&&!item.actApplytaskNodeList[0].applyUserList[0].avatar" src="@/assets/ZDimages/tx_cion.png">
                   <div class="left-top-text-box">
                     <p>{{item.actApplytaskNodeList[0].applyUserList[1]?'或签':item.actApplytaskNodeList[0].applyUserList[0].postName}}</p>
                     <p>{{item.approvalName}}</p>
@@ -104,7 +106,8 @@
               <div class="right-max-box" v-if="item.auditType == 1">
                 <div class="right-for-name-box" v-for="(minItem,minIndex) in item.actApplytaskNodeList" :key="minIndex">
                   <div class="right-for-name-box-min">
-                    <img :src="minItem.applyUserList[0].avatar">
+                    <img v-if="minItem.applyUserList[0].avatar" :src="minItem.applyUserList[0].avatar">
+                    <img v-if="!minItem.applyUserList[0].avatar" src="@/assets/ZDimages/tx_cion.png">
                     <p>{{minItem.applyUserList[0].name}}</p>
                     <img class="right-min-img" src="@/assets/ZDimages/medicUniversity-3_1/icon_bz_1.png" v-if="minItem.nodeStatus == 1&&minIndex!=item.actApplytaskNodeList.length-1">
                     <img class="right-min-img" src="@/assets/ZDimages/medicUniversity-3_1/icon_bz_2.png" v-if="!minItem.nodeStatus == 1&&minIndex!=item.actApplytaskNodeList.length-1">
@@ -117,7 +120,8 @@
               <div class="right-max-box" v-if="item.auditType == 2">
                 <div class="right-for-name-box" v-for="(minItem,minIndex) in item.actApplytaskNodeList[0].applyUserList" :key="minIndex">
                   <div class="right-for-name-box-min">
-                    <img :src="minItem.avatar">
+                    <img v-if="minItem.avatar" :src="minItem.avatar">
+                    <img v-if="!minItem.avatar" src="@/assets/ZDimages/tx_cion.png">
                     <p>{{minItem.name}}</p>
                     <img class="right-min-img" src="@/assets/ZDimages/medicUniversity-3_1/icon_bz_1.png" v-if="item.actApplytaskNodeList[0].applyUserid == minItem.id&&minIndex!=item.actApplytaskNodeList[0].applyUserList.length-1">
                     <img class="right-min-img" src="@/assets/ZDimages/medicUniversity-3_1/icon_bz_2.png" v-if="item.actApplytaskNodeList[0].applyUserid != minItem.id&&minIndex!=item.actApplytaskNodeList[0].applyUserList.length-1">

+ 1 - 0
src/views/studentViews/chemicalManagement/studentPurchaseRequisition/index.vue

@@ -214,6 +214,7 @@
                 let obj = {
                   chemicalId:parseInt(response.data.actHxpapplyDetailList[i].chemicalId),
                   chemicalName:response.data.actHxpapplyDetailList[i].chemicalName,
+                  applyUnit:response.data.actHxpapplyDetailList[i].applyUnit,
                   list:[],
                 }
                 maxObj.maxList.push(obj);