huangmp 4 年 前
コミット
198e4a8908

+ 8 - 0
src/api/estate/useraccesspermissions.js

@@ -57,3 +57,11 @@ export const statistics = (params) => {
     }
   })
 }
+
+export const pushFace = (row) => {
+  return request({
+    url: '/api/cyzh-estate/useraccesspermissions/pushFace',
+    method: 'post',
+    data: row
+  })
+}

+ 9 - 6
src/components/device-door/comps/device-door-crud.vue

@@ -1,20 +1,20 @@
 <template>
   <div>
     <div style="display:flex;margin:6px;flex-wrap: wrap;overflow: hidden">
-      <el-tag size="mini" style="margin:4px" class="animate__animated animate__fadeInLeft animate__faster" @close="close(item)" closable v-for="(item,index) in selectionList" :key="index">{{item.name}}</el-tag>
+      <el-tag size="mini" type="info" style="margin:4px" class="animate__animated animate__fadeInDown animate__faster" @close="close(item)" closable v-for="(item,index) in selectionList" :key="index">{{item.name}}</el-tag>
     </div>
     <avue-crud :option="option" :table-loading="loading" :data="data" :page="page" :permission="permissionList"
       :before-open="beforeOpen" v-model="form" ref="crud" @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel"
       @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
       @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
       <template slot="menuLeft">
-        <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.facedevice_delete"
-          @click="handleDelete">删 除
-        </el-button>
+        <el-button @click="pushFace" size="mini" type="primary" v-if="$isNotEmpty(selectionList)">确认下发</el-button>
       </template>
       <template slot="menu" slot-scope="{row}">
         <el-button @click="openDoor(row)" size="small" type="text">远程开门</el-button>
       </template>
+
+
       <template slot="mapSelectForm" slot-scope="scope">
         <div>
           <el-button @click="mapVisible = true">选择地址</el-button>
@@ -33,9 +33,8 @@
         </select-dialog-residential>
       </template>
       <template slot="deviceStatus" slot-scope="{row}">
-        <el-tag v-if="row.deviceStatus === 0" type="warning">离线</el-tag>
+        <el-tag v-if="row.deviceStatus === 0" type="danger">离线</el-tag>
         <el-tag v-if="row.deviceStatus === 1" type="success">在线</el-tag>
-        <el-tag v-if="row.deviceStatus === 2" type="danger">异常</el-tag>
       </template>
     </avue-crud>
   </div>
@@ -284,6 +283,10 @@
       }
     },
     methods: {
+      pushFace(){
+        let deviceIds=this.selectionList.map(item=>item.id)
+        this.$emit("pushFace",deviceIds)
+      },
       openDoor(row) {
         remoteOpenDoor(row.id, true).then(res => {
           this.$message({

+ 34 - 3
src/components/device-door/device-door.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="page">
-    <el-dialog title="设备列表" :visible.sync="deviceShow" center :append-to-body="true" :modal-append-to-body="true" width="55%">
+    <el-dialog title="请选择要下发的设备" :visible.sync="deviceShow" center :append-to-body="true" :modal-append-to-body="true" width="55%">
       <div class="dialog">
         <!-- 区域begin -->
         <div class="classify" style="display:flex">
@@ -66,13 +66,14 @@
         <!-- 楼层end -->
 
         <!-- 设备 -->
-        <device-door-crud ref="deviceDoorCrud"></device-door-crud>
+        <device-door-crud ref="deviceDoorCrud"  @pushFace="pushFace"></device-door-crud>
       </div>
     </el-dialog>
   </div>
 </template>
 
 <script>
+  import {pushFace} from "@/api/estate/useraccesspermissions.js"
   import {
     getList as getResidentialList
   } from "@/api/community/residential.js"
@@ -99,10 +100,13 @@
     },
     data() {
       return {
+        //要下发的用户数据
+        userData:{},
+
         current:1,
         size:10,
 
-        deviceShow: true,
+        deviceShow: false,
         //区域
         residentialActiveId: -1,
         residentialList: [],
@@ -148,6 +152,33 @@
       },
     },
     methods: {
+      pushFace(deviceIds){
+        if (this.$isEmpty(deviceIds)) {
+          this.$message.error('请选择要下发的设备')
+          return
+        }
+        let params={
+          deviceIds:deviceIds.join(','),
+          userId:this.userData.id,
+          userType:this.userData.userType,
+          targetType:this.userData.targetType,
+          userFace:this.userData.userFace
+        }
+        pushFace(params).then(res=>{
+          console.log(res);
+        })
+      },
+      showDialog(data){
+        if (data.imgError===true) {
+          this.$message.error('下发失败,人脸照片加载错误')
+          return
+        }
+        this.userData=data
+        this.deviceShow=true
+      },
+      hideDialog(){
+        this.deviceShow=false
+      },
       //获取区域
       async fetchResidentialList() {
         let res = await getResidentialList(this.current, 5)

+ 28 - 5
src/views/smartaccess/comps/face-card.vue

@@ -27,7 +27,7 @@
           <!--人脸信息-->
           <div class="face-top">
             <div style="display: flex">
-              <el-image class="img" fit="cover" :src="handeData(item).img">
+              <el-image class="img" fit="cover" @error="item.imgError=true" :src="handeData(item).img">
                 <img slot="error" class="img"
                   src="https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png"></img>
               </el-image>
@@ -75,7 +75,7 @@
 
 
             <el-button v-else-if="handelStatus(item).txt == '审核通过' || menuObj.index==2"
-              @click.stop="pushFaceToDevice(item.id)" size="mini" round type="primary"
+              @click.stop="showDeviceDoorDialog(item)" size="mini" round type="primary"
               style="padding: 4px 8px;font-size: 12px;font-weight: 300">
               <span v-if="item.pushStatus == 0">下发人脸</span>
               <span v-if="item.pushStatus == 1">重新下发</span>
@@ -157,10 +157,14 @@
     <guest-form v-if="menuObj.index==1" ref="formRef" @reloadData="fetchData"></guest-form>
     <server-form v-if="menuObj.index==2" ref="formRef" @reloadData="fetchData"></server-form>
     <snap-form v-if="menuObj.index==3" ref="formRef" @reloadData="fetchData"></snap-form>
+    <device-door ref="deviceDoor"></device-door>
   </div>
 </template>
 <script>
-  import {getToken} from '@/util/auth';
+  import deviceDoor from "@/components/device-door/device-door.vue"
+  import {
+    getToken
+  } from '@/util/auth';
   import website from '@/config/website';
   //常驻人员
   import staffForm from "../form/staff.vue"
@@ -196,6 +200,7 @@
   export default {
     name: "face-card",
     components: {
+      deviceDoor,
       staffForm,
       guestForm,
       serverForm,
@@ -278,18 +283,22 @@
           let index = this.menuObj.index || 0
           switch (index) {
             case 0:
+              //下发人脸所需
+              data.userFace = data.face
               obj.img = data.face
               obj.name = data.realName
               obj.opinion = data.auditOpinion
               obj.content = data.enterpriseName || '暂无企业信息'
               break;
             case 1:
+              data.userFace = data.imageUri
               obj.img = data.imageUri
               obj.name = data.guestName
               obj.opinion = data.opinion
               obj.content = data.enterpriseName ? '拜访【' + data.enterpriseName + '】' : '暂无拜访企业信息'
               break;
             case 2:
+              data.userFace = data.faceUrl
               obj.img = data.faceUrl
               obj.name = data.name
               obj.opinion = data.remark ? '备注:' + data.remark : ''
@@ -377,8 +386,22 @@
         }
       },
       //下发人脸
-      pushFaceToDevice(id) {
-        this.$refs.formRef.pushUserFaceToDevice(id)
+      showDeviceDoorDialog(item) {
+        let index=this.menuObj.index || 0
+        if (index==0) {
+          //常驻人员
+          item.targetType=1 //人脸入库(设备库)类型 1:白名单 2:访客 3:黑名单
+          item.userType='QYYG_'  //用户类型,QYYG_:企业员工,FWY_:服务员,FK_:访客。ADMIN_:管理员
+        }else if (index==1) {
+          //来访人员
+          item.targetType=2
+          item.userType='FK_'
+        }else if (index==2) {
+          //服务人员
+          item.targetType=1
+          item.userType='FWY_'
+        }
+        this.$refs.deviceDoor.showDialog(item)
       },
       //禁用人脸
       deleteUserFaceFromDevice(id) {

+ 1 - 1
src/views/smartaccess/comps/menu-list.vue

@@ -64,7 +64,7 @@
             index: 2
           },
           {
-            name: '体温异常',
+            name: '抓拍记录',
             index: 3
           },
         ],