Quellcode durchsuchen

Merge branch 'VERSIONS-menJin' into SCHOOL-XiBeiNongLin

dedsudiyu vor 1 Woche
Ursprung
Commit
6e05e338df

+ 7 - 0
.env.production

@@ -59,3 +59,10 @@ VUE_APP_LOGIN_TYPE = 'certification'
 
 VUE_APP_OUT_URL = 'https://labcontrol.nwafu.edu.cn/api/auth/cas/logout'
 
+# #################### 校级管理员身份ID ####################
+
+VUE_APP_SCHOOL_ID = '1815293314666532865'
+
+# #################### 院级管理员身份ID ####################
+
+VUE_APP_COLLEGE_ID = '1815336278075838465'

+ 8 - 9
src/api/chemicalManage/index.js

@@ -661,13 +661,12 @@ export function chemicalStockStockCollectDetailsList(data) {
     data: data
   })
 }
-
-
-
-
-
-
-
-
-
+//根据code查询化学品类型
+export function systemDictChemicalType(query) {
+  return request({
+    url: '/system/dict/chemicalType',
+    method: 'get',
+    params: query
+  })
+}
 

+ 42 - 0
src/api/integratedManagement/index.js

@@ -861,3 +861,45 @@ export function laboratoryCameraRecordGetCameraRecord(data) {
     data: data
   })
 }
+//门禁授权列表
+export function laboratoryHaikangUserSubList(data) {
+  return request({
+    url: '/laboratory/haikang/user/subList',
+    method: 'post',
+    data: data
+  })
+}
+//门禁授权日志列表
+export function laboratoryLabHaikangUserLogList(data) {
+  return request({
+    url: '/laboratory/labHaikangUserLog/list',
+    method: 'post',
+    data: data
+  })
+}
+//查看门禁已授权列表
+export function laboratoryHaikangUserUserList(data) {
+  return request({
+    url: '/laboratory/haikang/user/userList',
+    method: 'post',
+    data: data
+  })
+}
+
+//人员授权同步
+export function laboratoryHaikangUserRetryAccredit(data) {
+  return request({
+    url: '/laboratory/haikang/user/retryAccredit',
+    method: 'post',
+    data: data
+  })
+}
+
+//实验室授权同步
+export function laboratoryHaikangUserSynchFaceCard(data) {
+  return request({
+    url: '/laboratory/haikang/user/synchFaceCard',
+    method: 'post',
+    data: data
+  })
+}

+ 34 - 0
src/api/secureAccess/index.js

@@ -156,3 +156,37 @@ export function laboratoryWhiteSubList(query) {
     params: query
   })
 }
+
+/************ 全局白名单配置 ************/
+//白名单列表
+export function labAllWhiteList(data) {
+  return request({
+    url: '/laboratory/labAllWhite/list',
+    method: 'post',
+    data: data
+  })
+}
+//新增全局白名单
+export function laboratoryLabAllWhiteAdd(data) {
+  return request({
+    url: '/laboratory/labAllWhite/add',
+    method: 'post',
+    data: data
+  })
+}
+//删除全局白名单
+export function laboratoryLabAllWhiteDelete(data) {
+  return request({
+    url: '/laboratory/labAllWhite/delete',
+    method: 'post',
+    data: data
+  })
+}
+//根据用户名查询不在全局白名单的用户
+export function laboratoryLabAllWhiteSelectUserNotAllWhite(data) {
+  return request({
+    url: '/laboratory/labAllWhite/selectUserNotAllWhite',
+    method: 'post',
+    data: data
+  })
+}

+ 1 - 1
src/layout/components/TopNav/index.vue

@@ -38,7 +38,7 @@ export default {
   data() {
     return {
       // 顶部栏初始数
-      visibleNumber: 5,
+      visibleNumber: 6,
       // 是否为首次加载
       isFrist: false,
       // 当前激活菜单的 index

+ 2 - 2
src/utils/index.js

@@ -413,8 +413,8 @@ export function controlsRestrictVerify(str) {
 export function itoOrVideoLimits(subAdminId) {
   console.log('subAdminId',subAdminId)
   let userInfo = JSON.parse(localStorage.getItem('user'));
-  let schoolId = '1815293314666532865';
-  let collegeId = '1815336278075838465';
+  let schoolId = process.env.VUE_APP_SCHOOL_ID;
+  let collegeId = process.env.VUE_APP_COLLEGE_ID;
   if(userInfo.position == null){
     //如果是管理员(系统用户)
     return true

+ 38 - 17
src/views/chemicalManage/basicManagement/chemicalInfo/index.vue

@@ -6,14 +6,14 @@
         <el-form :model="queryParams" class="form-box" ref="queryForm"
                  :inline="true" style="width:100%;">
           <el-form-item label="" prop="chemicalCategory">
-            <el-select v-model="queryParams.chemicalCategory" clearable placeholder="请选择类别" style="width: 200px">
-              <el-option
-                v-for="dict in optionListA"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-              />
-            </el-select>
+            <el-cascader
+              ref="queryParamsCascader"
+              @change="handleChange"
+              v-model="queryParams.chemicalCategory"
+              :options="optionListA"
+              :props="{ checkStrictly: true }"
+              :show-all-levels="true"
+            ></el-cascader>
           </el-form-item>
           <el-form-item label="" prop="chemicalLevel">
             <el-select v-model="queryParams.chemicalLevel" clearable placeholder="请选择级别" style="width: 200px">
@@ -56,9 +56,10 @@
           <el-table-column label="名称" prop="chemicalName"  show-overflow-tooltip/>
           <el-table-column label="CAS号" prop="casNum" width="200" show-overflow-tooltip/>
           <el-table-column label="类别" prop="chemicalCategoryName" width="200" show-overflow-tooltip/>
-          <el-table-column label="级别" prop="chemicalLevelName" width="200" show-overflow-tooltip/>
-          <el-table-column label="纯度" prop="chemicalPurity" width="200" show-overflow-tooltip/>
-          <el-table-column label="创建时间" prop="createTime" width="200" show-overflow-tooltip>
+          <el-table-column label="子类别" prop="chemicalCategoryClassName" width="200" show-overflow-tooltip/>
+          <el-table-column label="级别" prop="chemicalLevelName" width="100" show-overflow-tooltip/>
+          <el-table-column label="纯度" prop="chemicalPurity" width="160" show-overflow-tooltip/>
+          <el-table-column label="创建时间" prop="createTime" width="160" show-overflow-tooltip>
             <template slot-scope="scope">
               <span>{{ parseTime(scope.row.createTime,"{y}-{m}-{d} {h}:{i}") }}</span>
             </template>
@@ -105,7 +106,7 @@
 </template>
 <script>
   import { getDicts } from "@/api/commonality/noPermission";
-  import { chemicalChemicalList,chemicalChemicalDelete } from "@/api/chemicalManage/index";
+  import { chemicalChemicalList,chemicalChemicalDelete,systemDictChemicalType } from "@/api/chemicalManage/index";
   import addChemicals from "@/views/chemicalManage/components/addChemicals.vue";
   import importComponent from "@/components/importComponent/importComponent.vue";
   import exportComponent from "@/components/exportComponent/exportComponent.vue";
@@ -139,14 +140,14 @@
         //页面遮罩
         loading:false,
         //下拉列表数据
-        optionListA:[{value:true,label:'启用'},{value:false,label:'停用'}],
+        optionListA:[],
         optionListB:[{value:1,label:'管控'},{value:2,label:'非管控'}],
         //查询条件
         queryParams:{
           page:1,
           pageSize:20,
           searchValue:"",
-          chemicalCategory :null,
+          chemicalCategory :[],
           chemicalLevel :null,
         },
         selectedNum:0,
@@ -168,7 +169,7 @@
     methods: {
       //获取化学品类别
       getDicts(){
-        getDicts('chemicals_category').then(response => {
+        systemDictChemicalType({dictCode:'chemicals_category'}).then(response => {
           this.$set(this,'optionListA',response.data);
         });
       },
@@ -187,7 +188,7 @@
           page:1,
           pageSize:20,
           searchValue:"",
-          chemicalCategory :null,
+          chemicalCategory :[],
           chemicalLevel :null,
         });
         this.$set(this.exportConfig,'ids','');
@@ -199,8 +200,25 @@
       },
       //获取数据列表
       getList(){
+        let self = this;
         this.$set(this,'loading',true);
-        chemicalChemicalList(this.queryParams).then(response => {
+        let obj = {
+          page:this.queryParams.page,
+          pageSize:this.queryParams.pageSize,
+          searchValue:this.queryParams.searchValue,
+          chemicalLevel :this.queryParams.chemicalLevel,
+        };
+        if(this.queryParams.chemicalCategory[1]){
+          obj.chemicalCategory = this.queryParams.chemicalCategory[0]
+          obj.chemicalCategoryClass = this.queryParams.chemicalCategory[1]
+        }else if(this.queryParams.chemicalCategory[0]){
+          obj.chemicalCategory = this.queryParams.chemicalCategory[0]
+          obj.chemicalCategoryClass = null
+        }else{
+          obj.chemicalCategory = null
+          obj.chemicalCategoryClass = null
+        }
+        chemicalChemicalList(obj).then(response => {
           this.$set(this,'loading',false);
           this.$set(this,'dataList',response.data.records);
           this.$set(this,'total',response.data.total);
@@ -251,6 +269,9 @@
       getRowKeys(row) {
         return row.chemicalId
       },
+      handleChange(value, selectedData) {
+        this.$refs.queryParamsCascader.dropDownVisible = false;
+      },
     },
   }
 </script>

+ 50 - 17
src/views/chemicalManage/components/addChemicals.vue

@@ -36,14 +36,14 @@
         </el-form-item>
         <div>
           <el-form-item label="类别:" prop="chemicalCategory" label-width="130px">
-            <el-select v-model="dialogForm.chemicalCategory" placeholder="请选择类别" style="width: 245px">
-              <el-option
-                v-for="dict in categoryOptions"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-              />
-            </el-select>
+            <el-cascader
+              ref="addCascader"
+              @change="addHandleChange"
+              style="width:245px;"
+              v-model="dialogForm.chemicalCategory"
+              :options="categoryOptions"
+              :show-all-levels="false"
+            ></el-cascader>
           </el-form-item>
           <el-form-item label="级别:" prop="chemicalLevel" label-width="90px">
             <el-select v-model="dialogForm.chemicalLevel" placeholder="请选择级别" style="width: 245px">
@@ -120,7 +120,7 @@
 </template>
 <script>
   import { getDicts } from "@/api/commonality/noPermission";
-  import { chemicalChemicalAdd,chemicalChemicalUpdate,chemicalChemicalDetail } from "@/api/chemicalManage/index";
+  import { chemicalChemicalAdd,chemicalChemicalUpdate,chemicalChemicalDetail,systemDictChemicalType } from "@/api/chemicalManage/index";
   export default {
     name: 'addChemicals',
     data () {
@@ -135,7 +135,7 @@
         stateOfMatter:[],
         dialogForm:{
           chemicalName:null,
-          chemicalCategory:"1",
+          chemicalCategory:[],
           chemicalLevel:1,
           casNum:null,
           anotherName:null,
@@ -178,7 +178,7 @@
           this.initialize();
           this.$set(this,'dialogForm',{
             chemicalName:null,
-            chemicalCategory:'1',
+            chemicalCategory:[],
             chemicalLevel:1,
             casNum:null,
             anotherName:null,
@@ -191,10 +191,9 @@
           this.$set(this,'lookImgDialogType',true);
         }else if(type == 2){
           chemicalChemicalDetail({chemicalId:row.chemicalId}).then(response => {
-            this.$set(this,'dialogForm',{
+            let obj = {
               chemicalId:row.chemicalId,
               chemicalName:response.data.chemicalName,
-              chemicalCategory:response.data.chemicalCategory,
               chemicalLevel:response.data.chemicalLevel,
               casNum:response.data.casNum,
               anotherName:response.data.anotherName,
@@ -203,7 +202,13 @@
               depositRequire:response.data.depositRequire+'',
               depositUnit:response.data.depositUnit,
               relativeDensity:response.data.relativeDensity,
-            });
+            };
+            if(response.data.chemicalCategoryClass){
+              obj.chemicalCategory = [response.data.chemicalCategory,response.data.chemicalCategoryClass]
+            }else{
+              obj.chemicalCategory = [response.data.chemicalCategory]
+            }
+            this.$set(this,'dialogForm',obj);
             this.$set(this,'lookImgDialogTitle','编辑');
             this.$set(this,'lookImgDialogType',true);
           });
@@ -216,7 +221,7 @@
       //初始化
       initialize(){
         //化学品类别字典
-        getDicts('chemicals_category').then(response => {
+        systemDictChemicalType({dictCode:'chemicals_category'}).then(response => {
           this.$set(this,'categoryOptions',response.data);
         });
         //存放单位
@@ -226,6 +231,7 @@
       },
       //提交
       dialogSubmit(){
+        let self = this;
         this.$refs["dialogForm"].validate(valid => {
           if (valid) {
             if(this.dialogForm.casNum){//
@@ -235,14 +241,38 @@
                 return
               }
             }
+            let obj = JSON.parse(JSON.stringify(this.dialogForm))
+            if(obj.chemicalCategory[1]){
+              obj.chemicalCategoryClass = obj.chemicalCategory[1]
+              obj.chemicalCategory = obj.chemicalCategory[0]
+              for(let i=0; i<self.categoryOptions.length;i++){
+                if(self.categoryOptions[i].value == obj.chemicalCategory){
+                  for(let o=0;o<self.categoryOptions[i].children.length;o++){
+                    if(self.categoryOptions[i].children[o].value == obj.chemicalCategoryClass){
+                      obj.chemicalCategoryName = self.categoryOptions[i].label
+                      obj.chemicalCategoryClassName =self.categoryOptions[i].children[o].label
+                    }
+                  }
+                }
+              }
+            }else{
+              obj.chemicalCategoryClass = null;
+              obj.chemicalCategory = obj.chemicalCategory[0]
+              for(let i=0; i<self.categoryOptions.length;i++){
+                if(self.categoryOptions[i].value == obj.chemicalCategory){
+                  obj.chemicalCategoryName = self.categoryOptions[i].label
+                  obj.chemicalCategoryClassName = '';
+                }
+              }
+            }
             if(this.dialogForm.chemicalId){
-              chemicalChemicalUpdate(this.dialogForm).then(response => {
+              chemicalChemicalUpdate(obj).then(response => {
                 this.msgSuccess(response.message)
                 this.$parent.submitSuccessful();
                 this.addChemicalsOpen(3);
               });
             }else{
-              chemicalChemicalAdd(this.dialogForm).then(response => {
+              chemicalChemicalAdd(obj).then(response => {
                 this.msgSuccess(response.message)
                 this.$parent.submitSuccessful();
                 this.addChemicalsOpen(3);
@@ -250,6 +280,9 @@
             }
           }
         })
+      },
+      addHandleChange(value, selectedData) {
+        this.$refs.addCascader.dropDownVisible = false;
       }
     },
   }

+ 16 - 9
src/views/integratedManagement/laboratoryManagement/accessAuthorization/application.vue

@@ -26,15 +26,22 @@
           <p class="page-reset-common-style-button" @click="resetQuery">重置</p>
         </el-form>
         <el-table class="table-box" v-loading="loading" border :data="tableList">
-          <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="joinUserName" show-overflow-tooltip/>
+          <el-table-column label="类别" align="center" prop="userType" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <span>{{scope.row.userType == 0?'系统':(scope.row.userType == 1?'教职工':(scope.row.userType == 2?'学生':(scope.row.userType == 3?'大屏':'')))}}</span>
+            </template>
+          </el-table-column>
           <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-column label="操作时间" align="center" prop="createTime"  width="160px" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <span>{{parseTime(scope.row.createTime,'{y}-{m}-{d} {h}:{i}')}}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作人" align="center" prop="createName"  width="160px" show-overflow-tooltip/>
         </el-table>
         <pagination :page-sizes="[20, 30, 40, 50]"
                     v-show="total>0"
@@ -48,7 +55,7 @@
 </template>
 
 <script>
-import { applyList, entranceUserLogList } from '@/apiDemo/laboratory/subject'
+import { laboratoryLabHaikangUserLogList } from '@/api/integratedManagement/index'
 export default {
   name: "application",
   data(){
@@ -107,9 +114,9 @@ export default {
         this.queryParamsData.startTime = null;
         this.queryParamsData.endTime = null;
       }
-      entranceUserLogList(this.queryParamsData).then(response => {
-        this.tableList = response.rows;
-        this.total = response.total
+      laboratoryLabHaikangUserLogList(this.queryParamsData).then(response => {
+        this.tableList = response.data.records;
+        this.total = response.data.total
       });
     },
   }

+ 22 - 21
src/views/integratedManagement/laboratoryManagement/accessAuthorization/authorize.vue

@@ -1,6 +1,6 @@
 <!--门禁授权-->
 <template>
-  <div class="authorize">
+  <div class="app-container authorize">
     <div class="authorize-page" v-if="pageType == 1">
       <div class="title-box">
         <div>
@@ -32,37 +32,31 @@
               </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="" prop="zgType">
-            <el-select v-model="queryParamsData.state" placeholder="请选择分类" clearable size="small">
-              <el-option label="全部" value="" />
-              <el-option label="授权验证成功" :value=true />
-              <el-option label="授权验证失败" :value=false />
-            </el-select>
-          </el-form-item>
           <p class="page-inquire-common-style-button" @click="handleQuery" style="margin-right:10px;">查询</p>
           <p class="page-reset-common-style-button" @click="resetQuery">重置</p>
         </el-form>
         <el-table class="table-box" v-loading="loading" border :data="tableList">
           <el-table-column label="所属学院" align="left" prop="deptName" show-overflow-tooltip/>
           <el-table-column label="实验室" align="left" prop="subName" show-overflow-tooltip/>
-          <el-table-column label="位置" align="left" prop="posi"  show-overflow-tooltip/>
           <el-table-column label="实验室负责人" align="left" prop="adminName" show-overflow-tooltip/>
           <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>
+          <el-table-column label="状态" align="left" prop="online" >
+            <template slot-scope="scope">
+              <span>{{scope.row.online?'在线':'离线'}}</span>
             </template>
           </el-table-column>
-          <el-table-column label="操作" align="left" class-name="small-padding fixed-width"  width="120">
+          <el-table-column label="操作" align="left" class-name="small-padding fixed-width"  width="200">
             <template slot-scope="scope">
               <div class="table-button-box">
                 <p class="table-button-null"></p>
                 <p class="table-button-p"
-                   v-hasPermiRouter="['haikang:user:list']"
                    @click="handleClick('',scope.row,'detail')"
                 >查看授权</p>
+                <p class="table-button-p"
+                   @click="tableButton(scope.row)"
+                >同步数据</p>
                 <p class="table-button-null"></p>
               </div>
             </template>
@@ -81,7 +75,7 @@
 </template>
 
 <script>
-import { getHaikangList } from '@/apiDemo/laboratory/subject'
+import { laboratoryHaikangUserSubList,laboratoryHaikangUserSynchFaceCard } from '@/api/integratedManagement/index'
 import lookImpower from "./lookImpower.vue";
 export default {
   name: "authorize",
@@ -108,7 +102,7 @@ export default {
       total:10,
       tableList:[{}],
       //审批状态
-      optionsListTwo:[{code:null,name:'全部'},{code:0,name:'离线'},{code:2,name:'在线'}],
+      optionsListTwo:[{code:null,name:'全部'},{code:false,name:'离线'},{code:true,name:'在线'}],
       //详情
       pageData:{},
     }
@@ -120,15 +114,22 @@ export default {
     this.getList();
   },
   methods:{
+    tableButton(row){
+      let obj = {
+        hardId:row.hardId
+      };
+      laboratoryHaikangUserSynchFaceCard(obj).then(response => {
+        this.msgSuccess(response.message)
+        this.getList();
+      })
+    },
     handleClick(index,row,doType){
       if(doType=='detail'){
         this.pageType=2
-
         this.pageData=row
       }else if(doType=='back'){
         this.pageType=1
       }
-
     },
     //操作接口
     goPageButton(){
@@ -153,9 +154,9 @@ export default {
     //获取数据列表
     getList(){
       this.queryParamsData = JSON.parse(JSON.stringify(this.queryParams));
-      getHaikangList(this.queryParamsData).then(response => {
-        this.tableList = response.rows;
-        this.total = response.total
+      laboratoryHaikangUserSubList(this.queryParamsData).then(response => {
+        this.tableList = response.data.records;
+        this.total = response.data.total
       });
     },
   }

Datei-Diff unterdrückt, da er zu groß ist
+ 155 - 808
src/views/integratedManagement/laboratoryManagement/accessAuthorization/lookImpower.vue


+ 53 - 2
src/views/integratedManagement/laboratoryManagement/subject/addSubject.vue

@@ -86,8 +86,8 @@
             style="width:320px;"
             v-model="form.subArea"
             placeholder="请输入面积"
-            oninput="value=value.replace(/[^0-9.]/g,'')"
-            maxlength="4"
+            @input="handleAreaInput"
+            @blur="blurInput"
             size="small">
             <template slot="append">M²</template>
           </el-input>
@@ -488,6 +488,57 @@ import { chemicalMsdsEdit } from '@/api/chemicalManage'
         }
       },
       methods:{
+        blurInput(){
+          let filteredValue = this.form.subArea
+          // 2. 拆分整数和小数部分
+          const parts = filteredValue.split('.');
+          // 3. 处理小数部分规则
+          if (parts.length > 1) {
+            const decimalPart = parts[1].slice(0, 2);
+            // 规则1:小数部分不能是00
+            // 规则2:小数点后必须有数字
+            if (decimalPart === '0') {
+              filteredValue = parts[0];  // 转为整数
+            }else if (decimalPart === '00') {
+              filteredValue = parts[0];  // 转为整数
+            } else if (decimalPart === '') {
+              filteredValue = parts[0];  // 移除单独的小数点
+            } else {
+              filteredValue = `${parts[0]}.${decimalPart}`;
+            }
+          }
+          // 4. 处理纯0开头的整数(如00.12 → 0.12)
+          if (/^0+[1-9]/.test(filteredValue)) {
+            filteredValue = filteredValue.replace(/^0+/, '');
+          }
+
+          // 5. 更新数据
+          this.$nextTick(() => {
+            this.form.subArea = filteredValue;
+          });
+        },
+        handleAreaInput(value) {
+          // 1. 过滤非法字符并处理多个小数点
+          let filteredValue = value
+            .replace(/[^\d.]/g, '')            // 只保留数字和小数点
+            .replace(/(\..*)\./g, '$1')        // 禁止输入多个小数点
+            .replace(/^\./g, '0.')             // 小数点开头自动补零
+            .replace(/(-\d+\.\d{2})\d+/, '$1') // 禁止输入超过两位小数
+            .replace(/^(\d{4})\d+/, '$1') // 限制整数部分最多4位
+
+          // 2. 分离整数和小数部分处理
+          const parts = filteredValue.split('.')
+          if (parts.length > 1) {
+            // 截断小数部分到两位
+            parts[1] = parts[1].slice(0, 2)
+            filteredValue = parts.join('.')
+          }
+
+          // 3. 更新模型数据(需要 nextTick 保持光标位置)
+          this.$nextTick(() => {
+            this.form.subArea = filteredValue
+          })
+        },
         LevelClick(){
           if(!this.form.dynamicLeveling){
             this.$set(this,'dialogLevelVisible',true);

+ 3 - 3
src/views/safetyCheck/components/initiateInspect/historyRecordsComponent.vue

@@ -299,10 +299,10 @@
       }
       .for-img{
         cursor: pointer;
+        width:703px;
         display: block;
-        width:100px;
-        height:100px;
-        margin-right:20px;
+        overflow: hidden;
+        margin-bottom:20px;
       }
       .up-file-box{
         display: flex;

+ 8 - 9
src/views/safetyCheck/components/initiateInspect/initiateInspect.vue

@@ -1118,17 +1118,16 @@
             }
           }
           ::v-deep .snapshotManagement-for-img-box {
-            width: 80px;
-            height: 80px;
-            border-radius: 4px;
-            display: inline-block;
+            width:703px;
+            border-radius:4px;
+            display: block;
             overflow: hidden;
-            margin-right: 20px;
+            margin-right:20px;
+            margin-bottom:20px;
             position: relative;
-            .for-img {
-              width: 80px;
-              height: 80px;
-              display: inline-block;
+            .for-img{
+              width:703px;
+              display: block;
               overflow: hidden;
             }
             .for-del-button {

+ 12 - 13
src/views/safetyCheck/components/initiateInspect/recheckComponent.vue

@@ -124,13 +124,13 @@
                 { required: true, message: "请选择复查结果", trigger: "blur" },
                 { required: true, message: "请选择复查结果", validator: this.spaceJudgment, trigger: "blur" }
               ],
-              examineOpinion: [
-                { required: true, message: "请输入验证情况", trigger: "blur" },
-                { required: true, message: "请输入验证情况", validator: this.spaceJudgment, trigger: "blur" }
-              ],
-              examineUploadList: [
-                { required: true, message: "请上传现场照片", trigger: "blur" },
-              ],
+              // examineOpinion: [
+              //   { required: true, message: "请输入验证情况", trigger: "blur" },
+              //   { required: true, message: "请输入验证情况", validator: this.spaceJudgment, trigger: "blur" }
+              // ],
+              // examineUploadList: [
+              //   { required: true, message: "请上传现场照片", trigger: "blur" },
+              // ],
             });
           }
           this.$nextTick(()=>{
@@ -313,17 +313,16 @@
         }
       }
       ::v-deep .snapshotManagement-for-img-box{
-        width:80px;
-        height:80px;
+        width:703px;
         border-radius:4px;
-        display: inline-block;
+        display: block;
         overflow: hidden;
         margin-right:20px;
+        margin-bottom:20px;
         position: relative;
         .for-img{
-          width:80px;
-          height:80px;
-          display: inline-block;
+          width:703px;
+          display: block;
           overflow: hidden;
         }
         .for-del-button{

+ 5 - 6
src/views/safetyCheck/components/initiateInspect/rectificationComponent.vue

@@ -346,17 +346,16 @@
         }
       }
       ::v-deep .snapshotManagement-for-img-box{
-        width:80px;
-        height:80px;
+        width:703px;
         border-radius:4px;
-        display: inline-block;
+        display: block;
         overflow: hidden;
         margin-right:20px;
+        margin-bottom:20px;
         position: relative;
         .for-img{
-          width:80px;
-          height:80px;
-          display: inline-block;
+          width:703px;
+          display: block;
           overflow: hidden;
         }
         .for-del-button{

+ 5 - 6
src/views/safetyCheck/components/snapshotInfo.vue

@@ -821,17 +821,16 @@
         background: #fff;
       }
       ::v-deep .snapshotManagement-for-img-box{
-        width:80px;
-        height:80px;
+        width:703px;
         border-radius:4px;
-        display: inline-block;
+        display: block;
         overflow: hidden;
         margin-right:20px;
+        margin-bottom:20px;
         position: relative;
         .for-img{
-          width:80px;
-          height:80px;
-          display: inline-block;
+          width:703px;
+          display: block;
           overflow: hidden;
         }
         .for-del-button{

+ 5 - 6
src/views/safetyCheck/components/snapshotRectificationComponent.vue

@@ -346,17 +346,16 @@
         }
       }
       ::v-deep .snapshotManagement-for-img-box{
-        width:80px;
-        height:80px;
+        width:703px;
         border-radius:4px;
-        display: inline-block;
+        display: block;
         overflow: hidden;
         margin-right:20px;
+        margin-bottom:20px;
         position: relative;
         .for-img{
-          width:80px;
-          height:80px;
-          display: inline-block;
+          width:703px;
+          display: block;
           overflow: hidden;
         }
         .for-del-button{

+ 266 - 0
src/views/secureAccess/globalWhitelistConfiguration/index.vue

@@ -0,0 +1,266 @@
+<!-- 全局白名单配置 -->
+<template>
+  <div class="app-container globalWhitelistConfiguration">
+    <div class="page-container globalWhitelistConfigurationPage">
+      <div class="page-form-title-box">
+        <el-form :model="queryParams" class="form-box" ref="queryForm"
+                 :inline="true" style="width:100%;">
+          <el-form-item label="" prop="searchValue">
+            <el-input
+              maxLength="30"
+              v-model="queryParams.searchValue"
+              placeholder="姓名/工号/联系方式"
+              style="width: 200px"
+            />
+          </el-form-item>
+          <p class="page-inquire-common-style-button" @click="handleQuery">查询</p>
+          <p class="page-reset-common-style-button" @click="resetQuery">重置</p>
+          <p class="page-submit-common-style-button"
+             style="float: right;"
+             @click="dialogOpen"
+             v-hasPermiRouter="['lab:allWhite:add']"
+          >新增</p>
+        </el-form>
+      </div>
+      <div class="page-content-box">
+        <el-table class="table-box" v-loading="loading" border :data="dataList">
+          <el-table-column label="序号" type="index" width="60"/>
+          <el-table-column label="名称" prop="userName"  show-overflow-tooltip/>
+          <el-table-column label="工号" prop="account" width="200" show-overflow-tooltip/>
+          <el-table-column label="联系方式" prop="mobile" width="200" show-overflow-tooltip/>
+          <el-table-column label="部门" prop="deptName" width="200" show-overflow-tooltip/>
+          <el-table-column label="创建人" prop="createName" width="200" show-overflow-tooltip/>
+          <el-table-column label="创建时间" prop="createTime" width="200" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <span>{{ parseTime(scope.row.createTime,"{y}-{m}-{d} {h}:{i}") }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作" width="200" show-overflow-tooltip v-if="tableButtonType">
+            <template slot-scope="scope">
+              <div class="table-button-box">
+                <p class="table-button-null"></p>
+                <p class="table-button-p"
+                   @click="delRow(scope.row)"
+                   v-hasPermiRouter="['lab:allWhite:del']"
+                >删除</p>
+                <p class="table-button-null"></p>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination :page-sizes="[20, 30, 40, 50]"
+                    v-show="total>0"
+                    :total="total"
+                    :page.sync="queryParams.page"
+                    :limit.sync="queryParams.pageSize"
+                    @pagination="getList"
+        />
+      </div>
+    </div>
+    <!--新增弹窗-->
+    <el-dialog class="globalWhitelistConfiguration-dialog" title='设备地址' width="800px" append-to-body
+               :visible.sync="dialogType" v-if="dialogType" @close="dialogOff()"
+               :close-on-click-modal="false" :close-on-press-escape="false">
+      <el-form :model="dialogForm" ref="dialogForm" class="dialog-top-box" :inline="true" label-width="80px">
+        <el-form-item label="" prop="searchValue">
+          <el-input v-model="dialogForm.searchValue" placeholder="请输入姓名/工号检索人员" style="width:300px;"></el-input>
+        </el-form-item>
+        <p class="page-inquire-common-style-button" @click="dialogHandleQuery">查询</p>
+        <p class="page-reset-common-style-button" @click="dialogResetQuery">重置</p>
+      </el-form>
+      <div class="page-content-box dialog-center-box">
+        <el-table class="table-box table-null-img-20" highlight-current-row v-loading="loading" border :data="dialogDataList"
+                  @current-change="handleCurrentChange">
+          <el-table-column label="名称" prop="userName"  show-overflow-tooltip/>
+          <el-table-column label="工号" prop="account" width="200" show-overflow-tooltip/>
+          <el-table-column label="部门" prop="deptName" width="200" show-overflow-tooltip/>
+        </el-table>
+        <pagination :page-sizes="[20, 30, 40, 50]"
+                    v-show="dialogTotal>0"
+                    :total="dialogTotal"
+                    :page.sync="dialogForm.page"
+                    :limit.sync="dialogForm.pageSize"
+                    @pagination="dialogGetList"
+        />
+      </div>
+      <div slot="footer" class="dialog-footer dialog-footer-box">
+        <p class="dialog-footer-button-null"></p>
+        <p class="dialog-footer-button-info" @click="dialogOff()">取消</p>
+        <p class="dialog-footer-button-primary" @click="dialogSubmit">提交</p>
+        <p class="dialog-footer-button-null"></p>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+  import {
+    labAllWhiteList,
+    laboratoryLabAllWhiteAdd,
+    laboratoryLabAllWhiteDelete,
+    laboratoryLabAllWhiteSelectUserNotAllWhite,
+  } from "@/api/secureAccess/index";
+  export default {
+    name: 'index',
+    data () {
+      return {
+        tableButtonType:this.hasPermiDom(['lab:allWhite:del',]),
+        //页面遮罩
+        loading:false,
+        //查询条件
+        queryParams:{
+          page:1,
+          pageSize:20,
+          searchValue:"",
+        },
+        //列表数据
+        dataList:[],
+        //数据数量
+        total:0,
+        //弹窗相关
+        dialogDataList:[],
+        dialogTotal:0,
+        dialogType:false,
+        dialogForm:{
+          searchValue:'',
+          page:1,
+          pageSize:20,
+        },
+        currentRow:null,
+      }
+    },
+    created () {
+
+    },
+    mounted () {
+      this.getList();
+    },
+    methods: {
+      //选中
+      handleCurrentChange(val) {
+        this.$set(this,'currentRow',val);
+      },
+      //弹窗查询按钮
+      dialogHandleQuery(){
+        this.$set(this.dialogForm,'page',1);
+        this.$set(this,'currentRow',null);
+        this.dialogGetList();
+      },
+      //弹窗重置按钮
+      dialogResetQuery(){
+        this.$set(this,'dialogForm',{
+          page:1,
+          pageSize:20,
+          searchValue:"",
+        });
+        this.$set(this,'currentRow',null);
+        this.dialogGetList();
+      },
+      //弹层关闭
+      dialogOff(){
+        this.$set(this,'dialogType',false);
+      },
+      //弹层开启
+      dialogOpen(){
+        this.$set(this,'dialogForm',{
+          page:1,
+          pageSize:20,
+          searchValue:"",
+        });
+        this.dialogGetList();
+        this.$set(this,'currentRow',null);
+        this.$set(this,'dialogDataList',[]);
+        this.$set(this,'dialogTotal',0);
+        this.$set(this,'dialogType',true);
+      },
+      //弹层确定
+      dialogSubmit(){
+        if(!this.currentRow){
+          this.msgError('请选择人员')
+          return
+        }
+        let obj ={
+          userId: this.currentRow.userId,
+          userName: this.currentRow.userName,
+          deptId: this.currentRow.deptId,
+          deptName: this.currentRow.deptName,
+          mobile: this.currentRow.mobile,
+          account: this.currentRow.account,
+          userType: this.currentRow.userType,
+        };
+        laboratoryLabAllWhiteAdd(obj).then(response => {
+          this.msgSuccess(response.message)
+          this.resetQuery();
+          this.$set(this,'dialogType',false);
+        });
+      },
+      //弹层数据拉取
+      dialogGetList(){
+        laboratoryLabAllWhiteSelectUserNotAllWhite(this.dialogForm).then(response => {
+          this.$set(this,'dialogDataList',response.data.records);
+          this.$set(this,'dialogTotal',response.data.total);
+        });
+      },
+      //查询按钮
+      handleQuery(){
+        this.$set(this.queryParams,'page',1);
+        this.getList();
+      },
+      //重置按钮
+      resetQuery(){
+        this.$set(this,'queryParams',{
+          page:1,
+          pageSize:20,
+          searchValue:"",
+        });
+        this.getList();
+      },
+      //获取数据列表
+      getList(){
+        this.$set(this,'loading',true);
+        let obj = JSON.parse(JSON.stringify(this.queryParams))
+        labAllWhiteList(obj).then(response => {
+          this.$set(this,'loading',false);
+          this.$set(this,'dataList',response.data.records);
+          this.$set(this,'total',response.data.total);
+        });
+      },
+      //操作按钮
+      delRow(row){
+        let self = this;
+        //删除
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+        }).then(() => {
+          laboratoryLabAllWhiteDelete({id:row.id}).then(response => {
+            self.msgSuccess(response.message)
+            self.getList();
+          });
+        }).catch(() => {});
+      },
+    },
+  }
+</script>
+<style scoped lang="scss">
+  .globalWhitelistConfiguration{
+    .globalWhitelistConfigurationPage{
+
+    }
+  }
+</style>
+<style lang="scss">
+  .globalWhitelistConfiguration-dialog{
+    .el-dialog__body{
+      padding:20px;
+      .dialog-top-box{
+        padding:0 ;
+      }
+      .dialog-center-box{
+        height:400px;
+        padding:0 ;
+      }
+    }
+  }
+</style>