瀏覽代碼

一脸通

huangmp 4 年之前
父節點
當前提交
615e3805e9

+ 0 - 8
package-lock.json

@@ -4946,14 +4946,6 @@
         "stream-shift": "^1.0.0"
       }
     },
-    "e-vue-contextmenu": {
-      "version": "0.1.3",
-      "resolved": "https://registry.nlark.com/e-vue-contextmenu/download/e-vue-contextmenu-0.1.3.tgz",
-      "integrity": "sha1-/eMlKLbhybjzkq678TndMFtgUbc=",
-      "requires": {
-        "vue": "^2.6.6"
-      }
-    },
     "easy-stack": {
       "version": "1.0.1",
       "resolved": "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.1.tgz",

File diff suppressed because it is too large
+ 0 - 0
public/cdn/avue/2.8.12/index.css


File diff suppressed because it is too large
+ 0 - 0
public/cdn/element-ui/2.15.1/theme-chalk/index.css


二進制
public/img/test/face.jpg


+ 20 - 0
src/api/enterprise/staff.js

@@ -48,6 +48,14 @@ export const update = (row) => {
   })
 }
 
+export const submit = (row) => {
+  return request({
+    url: '/api/cyzh-enterprise/staff/update',
+    method: 'post',
+    data: row
+  })
+}
+
 export const pushUserFace = (ids) => {
   return request({
     url: '/api/cyzh-enterprise/staff/pushUserFace',
@@ -94,3 +102,15 @@ export const staffStat = (id) => {
     method: 'get',
   })
 }
+
+export const getStaffXFList = (current,size,params) => {
+  return request({
+    url: '/api/cyzh-enterprise/staff/getStaffXFList',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}

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

@@ -48,3 +48,12 @@ export const update = (row) => {
   })
 }
 
+export const statistics = (params) => {
+  return request({
+    url: '/api/cyzh-estate/userfacepermissions/statistics',
+    method: 'get',
+    params: {
+      ...params,
+    }
+  })
+}

+ 0 - 4
src/components/staff/review-staff.vue

@@ -117,7 +117,6 @@
     methods: {
       reviewauditStatus(auditStatus, loading ){
         this.reviewDetail.auditStatus = auditStatus;
-
         update(this.reviewDetail).then(() => {
           this.reviewVisible = false;
           this.$message({
@@ -134,9 +133,6 @@
           loading();
           console.log(error);
         });
-
-
-        // this.$emit('reviewemit', this.reviewDetail);
       }
 
     }

+ 3 - 1
src/components/staff/staffDetail.vue

@@ -9,6 +9,9 @@
   export default {
     props: {
       detailForm: {},
+    },
+    created() {
+      
     },
     data() {
       return {
@@ -63,4 +66,3 @@
 <style scoped>
 
 </style>
-

+ 21 - 0
src/main.js

@@ -221,6 +221,27 @@ Vue.prototype.$isNotEmpty=function(value){
 	return true;
 }
 
+
+
+/**
+ * 对象深拷贝
+ */
+Vue.prototype.$deepClone=(obj)=>{
+	// 对常见的“非”值,直接返回原来值
+	if([null, undefined, NaN, false].includes(obj)) return obj;
+    if(typeof obj !== "object" && typeof obj !== 'function') {
+		//原始类型直接返回
+        return obj;
+    }
+    var o = Object.prototype.toString.call(obj) === '[object Array]' ? [] : {};
+    for(let i in obj) {
+        if(obj.hasOwnProperty(i)){
+            o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i];
+        }
+    }
+    return o;
+};
+
 new Vue({
   router,
   store,

+ 2 - 2
src/page/index/index.vue

@@ -1,11 +1,11 @@
 <template>
-  <div class="avue-contail" :class="{'avue--collapse':isCollapse}">
+  <div class="avue-contail"  :class="{'avue--collapse':isCollapse}">
     <div class="avue-header">
       <!-- 顶部导航栏 -->
       <top ref="top" />
     </div>
 
-    <div class="avue-layout" style="background-color: #042352;">
+    <div class="avue-layout" style="background-color: #042352;" >
       <!-- 左侧导航栏 -->
       <div v-show="menuIndex != 0" style="background-color: #16488B;"
         class="animate__animated avue-left animate__faster"

+ 3 - 2
src/page/index/sidebar/index.vue

@@ -42,7 +42,8 @@
   };
 </script>
 <style scoped>
- .el-menu-item.is-active {
-    background-color: #3b8ff4 !important;
+  /deep/ .el-menu-item.is-active {
+    border-left: 4px solid #02eeff;
+    background-color: #3b8ff4;
   }
 </style>

+ 505 - 0
src/views/dashboard/onefaceaccess/comps/face-card.vue

@@ -0,0 +1,505 @@
+<template>
+  <div>
+    <menu-list @actived="actived"></menu-list>
+    <div class="card" v-loading="loading">
+      <!-- 首个卡片 -->
+      <div class="box-card box-first">
+        <div class="top">
+          <div class="item" v-for="(item, index) in dataList" :key="index">
+            <div>{{item.label}}</div>
+            <div>
+              <avue-count-up :end="item.value"></avue-count-up>
+            </div>
+          </div>
+        </div>
+        <div class="bottom">
+          <el-button @click="addBtnFunc" round size="medium" style="width:60%" icon="el-icon-plus">
+            <span v-if="$isEmpty(menuObj.index)">新增常驻人员</span>
+            <span v-if="menuObj.index==1">新增来访人员</span>
+            <span v-if="menuObj.index==2">新增服务人员</span>
+            <span v-if="menuObj.index==3">新增体温异常人员</span>
+          </el-button>
+        </div>
+      </div>
+      <!-- list -->
+      <div @click="$refs.staffForm.showDialog(item)" class="box-card" v-for="(item, index) in list" :key="index">
+        <div class="box-face">
+          <!--人脸信息-->
+          <div class="face-top">
+            <div style="display: flex">
+              <el-image class="img" fit="cover" :src="handeData(item).img">
+                <img slot="error" class="img"
+                  src="https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png"></img>
+              </el-image>
+              <div class="center name">{{handeData(item).name}}</div>
+            </div>
+            <div class="center" @click.stop="">
+              <el-dropdown>
+                <i class="el-icon-s-operation operation"></i>
+                <el-dropdown-menu slot="dropdown">
+                  <el-dropdown-item @click.native="dropdownClick(item,item1.name)"
+                    v-for="(item1,index1) in operationList" :key="index1" :icon="item1.icon">
+                    {{item1.name}}
+                  </el-dropdown-item>
+                </el-dropdown-menu>
+              </el-dropdown>
+            </div>
+          </div>
+          <!--公司-->
+          <div class="face-center">
+            <div class="company">
+              {{handeData(item).companyName}}
+            </div>
+            <div class="time">
+              {{item.createTime}} 加入
+            </div>
+          </div>
+          <!--底部-->
+          <div class="face-bottom">
+            <div class="status-text" :style="{color:handelStatus(item).color}">
+              {{handelStatus(item).txt}}
+            </div>
+
+
+            <el-button-group v-if="handelStatus(item).txt == '待审核'">
+              <el-button type="danger" @click.stop="$refs.staffForm.auditref(item,2)"
+                style="padding: 4px 0px;width:48px;font-size: 12px;font-weight: 300;border-color:#F56C6C" size="mini">
+                不通过
+              </el-button>
+              <el-button type="success" @click.stop="$refs.staffForm.auditref(item,1)"
+                style="padding: 4px 0px;width:48px;font-size: 12px;font-weight: 300;background-color:#19be6b;border-color:#19be6b"
+                size="mini">通过</el-button>
+            </el-button-group>
+
+
+            <el-button v-else-if="handelStatus(item).txt == '审核通过'" @click.stop="pushFaceToDevice(item.id)" 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>
+            </el-button>
+
+            <div v-else-if="handelStatus(item).txt == '审核不通过'" class="text-cut"
+              style="font-size:12px;color:#999;width:70%;text-align: right">
+              {{handeData(item).opinion}}
+            </div>
+            
+          </div>
+        </div>
+      </div>
+      <!-- 占位 -->
+      <span style="background-color:transparent;" class="box-card" v-if="lastShow" v-for="(item, index) in lastList"
+        :key="index"></span>
+    </div>
+    <div class="pagination" v-if="total>size">
+      <el-pagination background layout="prev, pager, next" :page-size="size" :total="total"
+        @current-change="currentChange">
+      </el-pagination>
+    </div>
+
+    <staff-form ref="staffForm" @reloadData="fetchData"></staff-form>
+
+  </div>
+</template>
+<script>
+  import staffForm from "../form/staff.vue"
+
+  import {
+    getList as getStaffList,
+    getStaffXFList
+  } from "@/api/enterprise/staff";
+  import menuList from "./menu-list.vue"
+  import {
+    statistics
+  } from "@/api/estate/useraccesspermissions";
+  import {
+    getList as getGuestList
+  } from "@/api/estate/guestrecord.js";
+  export default {
+    name: "face-card",
+    props: {
+      row: {
+        type: Number,
+        default: 6,
+      },
+    },
+    components: {
+      staffForm,
+      menuList
+    },
+    data() {
+      return {
+        loading: true,
+
+        //默认第一个常驻人员
+        menuObj: {},
+        statuObj: {},
+
+        current: 1,
+        size: 17,
+        total: 0,
+        list: [],
+        dataList: [{
+            label: '待审核',
+            value: 0
+          },
+          {
+            label: '待下发',
+            value: 0
+          },
+          {
+            label: '已下发',
+            value: 0
+          }
+        ],
+        operationList: [{
+            icon: 'el-icon-view',
+            name: '详情'
+          },
+          {
+            icon: 'el-icon-edit',
+            name: '编辑'
+          },
+          {
+            icon: 'el-icon-delete',
+            name: '删除'
+          },
+          {
+            icon: 'el-icon-remove-outline',
+            name: '禁用'
+          }
+        ]
+      };
+    },
+    computed: {
+      lastList() {
+        let len = this.list.length + 1;
+        return this.row - (len % this.row);
+      },
+      lastShow() {
+        let len = this.list.length + 1;
+        return len % this.row > 0;
+      },
+      handeData() {
+        return data => {
+          let obj = {
+            img: '',
+            name: '',
+            companyName: '',
+            opinion: ''
+          }
+          let index = this.menuObj.index || 0
+          switch (index) {
+            case 0:
+              obj.img = data.face
+              obj.name = data.realName
+              obj.opinion = data.auditOpinion
+              obj.companyName = data.enterpriseName || '暂无企业信息'
+              break;
+            case 1:
+              obj.img = data.imageUri
+              obj.name = data.guestName
+              obj.opinion = data.opinion
+              obj.companyName = data.enterpriseName ? '访问【' + data.enterpriseName + '】' : '暂无访问企业信息'
+              break;
+            default:
+              break;
+          }
+          return obj
+        }
+      },
+      handelStatus() {
+        return data => {
+          let obj = {}
+          if (data.auditStatus == 0 || data.checkState == 0) {
+            obj.txt = '待审核'
+            obj.color = '#ff9900'
+          } else if (data.auditStatus == 1 || data.checkState == 1) {
+            obj.txt = '审核通过'
+            obj.color = '#19be6b'
+          } else if (data.auditStatus == 2 || data.checkState == 2) {
+            obj.txt = '审核不通过'
+            obj.color = '#fa3534'
+          }
+          return obj;
+        }
+      }
+    },
+    created() {
+      this.fetchData()
+    },
+    methods: {
+      addBtnFunc() {
+        let index = this.menuObj.index || 0
+        switch (index) {
+          case 0:
+            this.$refs.staffForm.showAddForm()
+            break;
+          default:
+            break;
+        }
+      },
+      dropdownClick(item, name) {
+        if (name == '详情') {
+          this.$refs.staffForm.showDialog(item)
+        } else if (name == '编辑') {
+          this.$refs.staffForm.showDialog(item, false)
+        } else if (name == '删除') {
+          this.$refs.staffForm.rowDel(item.id)
+        } else if (name == '禁用') {
+          this.deleteUserFaceFromDevice(item.id)
+        }
+      },
+      //下发人脸
+      pushFaceToDevice(id) {
+        this.$refs.staffForm.pushUserFaceToDevice(id)
+      },
+      //禁用人脸
+      deleteUserFaceFromDevice(id) {
+        this.$refs.staffForm.deleteUserFaceFromDevice(id)
+      },
+      actived(e) {
+        this.current = 1
+        this.size = 17
+        this.menuObj = e.menuObj
+        this.statuObj = e.statusObj
+        this.fetchData()
+      },
+      fetchData() {
+        this.loading = true
+        let index = this.menuObj.index || 0
+        //获取统计数据
+        this.getStatistics(index)
+        //获取列表数据
+        if (index == 0) {
+          //常驻人员
+          this.getStaffList()
+        } else if (index == 1) {
+          //来访人员
+          this.getGuestList()
+        } else if (index == 2) {
+          //服务人员
+        } else if (index == 3) {
+          //体温异常
+        }
+      },
+      currentChange(current) {
+        this.current = current
+        this.fetchData()
+      },
+      //获取数据统计
+      async getStatistics(type) {
+        let params = {
+          type
+        }
+        let data = (await statistics(params)).data.data
+        //待审核
+        this.dataList[0].value = data.waitCount
+        //待下发
+        this.dataList[1].value = data.dxfCount
+        //已下发
+        this.dataList[2].value = data.yxfCount
+      },
+      //获取访客人员列表
+      async getGuestList() {
+        let params = {}
+        let data = {}
+        let index = this.statuObj.index
+        if (index == 4 || index == 5) {
+          console.log("已下发");
+        } else {
+          params.auditStatus = this.statuObj.value
+          data = (await getGuestList(this.current, this.size, params)).data.data
+        }
+        this.list = data.records
+        this.total = data.total
+        this.loading = false
+      },
+      //获取常驻人员数据列表
+      async getStaffList() {
+        let params = {}
+        let data = {}
+        let index = this.statuObj.index
+        if (index == 4 || index == 5) {
+          params.type = this.statuObj.value
+          data = (await getStaffXFList(this.current, this.size, params)).data.data
+          data.records.forEach(item => {
+            //下发状态
+            item.pushStatus = this.statuObj.value
+          })
+
+        } else {
+          params.auditStatus = this.statuObj.value
+          data = (await getStaffList(this.current, this.size, params)).data.data
+        }
+        this.list = data.records
+        this.total = data.total
+        this.loading = false
+      }
+    }
+
+  };
+</script>
+
+<style scoped lang="scss">
+  .pagination {
+    padding: 20px 0;
+    display: flex;
+    justify-content: flex-end;
+  }
+
+  .card {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-between;
+    justify-items: center;
+  }
+
+  .operation {
+    color: #cccccc;
+    font-size: 22px
+  }
+
+  .operation-content {
+    cursor: pointer;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    font-size: 14px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    color: #666666;
+  }
+
+  .operation-list {
+    cursor: pointer;
+  }
+
+  .operation-list:active {
+    transform: scale(1.05);
+  }
+
+  .center {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+
+  .box-card {
+    cursor: pointer;
+    background-color: #fff;
+    width: calc(16.7% - 10px);
+    margin: 5px 0;
+    height: 210px;
+    border-radius: 0;
+    border: none;
+  }
+
+  .box-first {
+    display: flex;
+    flex-direction: column;
+
+    .top {
+      height: 55%;
+      display: flex;
+      justify-content: space-around;
+      border-bottom: 1px solid #F0F0F0;
+
+      .item {
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        align-items: center;
+
+        div:first-child {
+          font-size: 14px;
+          font-family: Microsoft YaHei;
+          font-weight: 400;
+          color: #999999;
+        }
+
+        div:last-child {
+          margin-top: 10px;
+          font-size: 20px;
+          font-family: Microsoft YaHei;
+          font-weight: bold;
+          color: #282d30;
+        }
+      }
+    }
+
+    .bottom {
+      height: 45%;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+    }
+  }
+
+  .box-face {
+    padding: 20px;
+    height: 100%;
+    box-sizing: border-box;
+
+    .face-top {
+      display: flex;
+      height: 25%;
+      justify-content: space-between;
+
+      .img {
+        border-radius: 50%;
+        width: 38px;
+        height: 38px;
+        border-radius: 50%;
+      }
+
+      .name {
+        margin-left: 10px;
+        font-size: 14px;
+        font-family: Microsoft YaHei;
+        font-weight: bold;
+        color: #282D30;
+      }
+    }
+
+    .face-center {
+      margin-top: 10px;
+      padding: 0 10px;
+      text-align: left;
+      height: 50%;
+
+      .company {
+        font-size: 14px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
+      }
+
+      .time {
+        margin-top: 10px;
+        font-size: 12px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #999999;
+      }
+    }
+
+    .face-bottom {
+      display: flex;
+      align-items: flex-start;
+      justify-content: space-between;
+      height: 25%;
+      padding: 0 10px;
+
+      .status-text {
+        font-size: 12px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
+        opacity: 1;
+      }
+
+      .func-btn {}
+    }
+  }
+</style>

+ 2 - 2
src/views/dashboard/onefaceaccess/comps/function_list.vue

@@ -367,8 +367,8 @@
           {
             name: '体温异常',
             num: 12344,
-            bg: '/img/face/tw_bg.png',
-            icon: '/img/face/tw.png',
+            bg: '/img/face/tw1_bg.png',
+            icon: '/img/face/tw1.png',
             color: '#5dd2d3'
           }
         ]

+ 134 - 0
src/views/dashboard/onefaceaccess/comps/menu-list.vue

@@ -0,0 +1,134 @@
+<template>
+  <div>
+    <div class="menu">
+      <el-menu :default-active="menuIndex" mode="horizontal" @select="handleSelect">
+        <el-menu-item :index="item.index" v-for="(item,index) in menuList" :key="index">{{item.name}}</el-menu-item>
+      </el-menu>
+    </div>
+
+    <div class="person-status">
+      <div class="title">人员状态:</div>
+      <div class="status" @click="select(item,index)" v-for="(item,index) in status" :key="index">
+        <el-button size="mini" style="border-radius: 0" :type="statusIndex==index?'primary':''">{{item.name}}
+        </el-button>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: "menu-list",
+    data() {
+      return {
+        menuIndex: 0,
+        menuList: [{
+            name: '常驻人员',
+            index: 0
+          },
+          {
+            name: '来访人员',
+            index: 1
+          },
+          {
+            name: '服务人员',
+            index: 2
+          },
+          {
+            name: '体温异常',
+            index: 3
+          },
+        ],
+        statusIndex: 0,
+        status: []
+      };
+    },
+    created() {
+      this.fetchStatus()
+    },
+    methods: {
+      select(item, index) {
+        this.statusIndex = index
+        this.emitFunc()
+      },
+      emitFunc() {
+        let obj = {
+          menuObj: this.menuList[this.menuIndex],
+          statusObj: this.status[this.statusIndex]
+        }
+        this.$emit('actived', obj)
+      },
+      handleSelect(index) {
+        this.menuIndex = index
+        this.statusIndex = 0
+        this.fetchStatus()
+        this.emitFunc()
+      },
+      fetchStatus() {
+        //常驻人员
+        if (this.menuIndex == 0) {
+          this.status = [{
+              index: 0,
+              name: '全部',
+              value: null
+            },
+            {
+              index: 1,
+              name: '待审核',
+              value: 0
+            },
+            {
+              index: 2,
+              name: '审核通过',
+              value: 1
+            },
+            {
+              index: 3,
+              name: '审核不通过',
+              value: 2
+            },
+            {
+              index: 4,
+              name: '待下发',
+              value: 0
+            },
+            {
+              index: 5,
+              name: '已下发',
+              value: 1
+            }
+          ]
+        }
+      },
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  .menu {
+    background-color: #fff;
+    width: 100%;
+    box-sizing: border-box;
+    border-bottom: 1px solid #e8e8e8
+  }
+
+  .person-status {
+    display: flex;
+    padding: 20px;
+    background-color: #fff;
+    font-size: 14px;
+
+    .title {
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      font-family: Microsoft YaHei;
+      font-weight: 400;
+      color: #333333;
+    }
+
+    .status {
+      margin: 0 5px;
+    }
+  }
+</style>

+ 308 - 0
src/views/dashboard/onefaceaccess/form/staff.vue

@@ -0,0 +1,308 @@
+<template>
+  <div>
+    <el-dialog :modal-append-to-body="true" :append-to-body="true" title="详情" center :visible.sync="dialogShow"
+      width="50%" :close-on-click-modal="false" top="4%">
+      <avue-form ref="avueForm" :option="option" v-model="model" @submit="submit"></avue-form>
+      <div v-if="model&&model.auditStatus==0">
+        <el-row>
+          <el-col span="24" align="right">
+            <el-button type="success" icon="el-icon-check" size="small" @click="audit(1)">通过</el-button>
+            <el-button type="danger" icon="el-icon-delete" size="small" @click="audit(2)">不通过</el-button>
+          </el-col>
+        </el-row>
+      </div>
+    </el-dialog>
+
+
+    <el-dialog title="审核意见" :visible.sync="auditDialogShow" width="30%" :modal-append-to-body="true"
+      :append-to-body="true" center>
+      <el-input v-model="auditOpinion" placeholder="请输入审核意见(选填)"></el-input>
+      <span slot="footer" class="dialog-footer">
+        <el-button v-if="auditObj.auditStatus==1" type="success" @click="doAudit" style="background-color:#19be6b">确定审核通过</el-button>
+        <el-button v-if="auditObj.auditStatus==2" type="danger"  @click="doAudit">
+          确定审核不通过</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+  import {
+    remove,
+    update,
+    pushUserFace,
+    deleteUserFace
+  } from "@/api/enterprise/staff";
+  export default {
+    data() {
+      return {
+        isAdd: false,
+        //审核意见
+        auditObj: {},
+        auditDialogShow: false,
+        auditOpinion: '',
+
+        dialogShow: false,
+        type: 0,
+        model: {},
+        option: {
+          detail: true,
+          labelWidth: 110,
+          group: [{
+            icon: 'el-icon-s-custom',
+            label: '个人信息',
+            prop: 'group1',
+            column: [{
+                label: "人脸信息",
+                prop: "face",
+                type: "upload",
+                listType: 'picture-img',
+                rules: [{
+                  required: true,
+                  message: "请上传人脸信息",
+                  trigger: "blur"
+                }],
+                propsHttp: {
+                  res: "data",
+                  url: "link"
+                },
+                action: "/api/blade-resource/oss/endpoint/put-file",
+                span: 12
+              },
+              {
+                label: '姓名',
+                prop: 'realName',
+                rules: [{
+                  required: true,
+                  message: "请输入真实姓名",
+                  trigger: "blur"
+                }],
+                span: 12
+              }, {
+                label: '性别',
+                prop: 'sex',
+                type: 'select',
+                dicData: [{
+                    label: '男',
+                    value: 1
+                  },
+                  {
+                    label: '女',
+                    value: 2
+                  },
+                  {
+                    label: '未知',
+                    value: -1
+                  }
+                ],
+                span: 12
+              }, {
+                label: '手机号',
+                prop: 'phone',
+                span: 12,
+                rules: [{
+                  required: true,
+                  message: "请输入手机号",
+                  trigger: "blur"
+                }],
+              },
+              {
+                label: '身份证号',
+                prop: 'idcard',
+                span: 12,
+
+              },
+              {
+                label: '创建方式',
+                prop: 'createType',
+                type: 'select',
+                dicData: [{
+                    label: '后台创建',
+                    value: 0
+                  },
+                  {
+                    label: '小程序创建',
+                    value: 1
+                  },
+                ],
+                span: 12
+              },
+            ]
+          }, {
+            icon: 'el-icon-s-home',
+            label: '企业信息',
+            prop: 'group2',
+            column: [{
+                label: "所属园区",
+                prop: "agencyId",
+                type: "select",
+                overHidden: true,
+                remote: true,
+                cascaderItem: ['enterpriseId'],
+                dicUrl: '/api/cyzh-community/agency/list?size=100',
+                dicFormatter: (res) => {
+                  return res.data.records;
+                },
+                props: {
+                  label: "name",
+                  value: "id"
+                },
+                rules: [{
+                  required: true,
+                  message: "请选择所属园区",
+                  trigger: "blur"
+                }],
+                viewDisplay: false
+              },
+              {
+                label: "所属企业",
+                prop: "enterpriseId",
+                type: "select",
+                overHidden: true,
+                dicUrl: '/api/cyzh-enterprise/enterprise/list?size=100&agencyId={{key}}',
+                dicFormatter: (res) => {
+                  return res.data.records;
+                },
+                props: {
+                  label: "enterpriseName",
+                  value: "id"
+                },
+                rules: [{
+                  required: true,
+                  message: "请输入所属企业",
+                  trigger: "blur"
+                }],
+                viewDisplay: false
+              }
+            ]
+          }, {
+            icon: 'el-icon-warning',
+            label: '其他信息',
+            prop: 'group1',
+            column: [{
+              size: 'mini',
+              gutter: 10,
+              label: '备注信息',
+              prop: 'remarks',
+              span: 12
+            }, {
+              readonly: true,
+              size: 'mini',
+              gutter: 10,
+              label: '审核意见',
+              prop: 'auditOpinion',
+              span: 12
+            }]
+          }]
+        }
+      }
+    },
+    methods: {
+      //下发人脸
+      pushUserFaceToDevice(id) {
+        pushUserFace(id).then(res => {
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+        })
+      },
+      //禁用人脸
+      deleteUserFaceFromDevice(id) {
+        this.$confirm("确定禁用人脸吗?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            return deleteUserFace(id);
+          })
+          .then(() => {
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      showDialog(model, detail = true) {
+        this.model = model
+        this.option.detail = detail
+        this.dialogShow = true
+        this.isAdd = false
+      },
+      showAddForm() {
+        this.dialogShow = true
+        this.option.detail = false
+        this.$refs.avueForm.resetForm()
+        this.model = {}
+        this.isAdd = true
+      },
+      submit(form, done) {
+        let data = this.$deepClone(form)
+        if (this.isAdd) {
+          data.id = ''
+        }
+        update(data).then(() => {
+          done();
+          this.dialogShow = false;
+          this.$refs.avueForm.resetForm()
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          this.$emit('reloadData')
+        }, error => {
+          window.console.log(error);
+        });
+      },
+      rowDel(id) {
+        this.$confirm("确定删除该条数据?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            return remove(id);
+          })
+          .then(() => {
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$emit('reloadData')
+          });
+      },
+      audit(auditStatus) {
+        this.auditObj = this.$deepClone(this.model)
+        this.auditObj.auditStatus = auditStatus;
+        this.dialogShow = false;
+        setTimeout(() => {
+          this.auditDialogShow = true
+        }, 300)
+      },
+      //给外部调用的审核
+      auditref(obj, status) {
+        this.auditObj = this.$deepClone(obj)
+        this.auditObj.auditStatus = status
+        this.auditDialogShow = true
+      },
+      doAudit() {
+        this.auditObj.auditOpinion = this.auditOpinion
+        update(this.auditObj).then(() => {
+          this.auditDialogShow = false;
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          this.auditOpinion = ''
+          this.$emit('reloadData')
+        }, error => {
+          this.$message({
+            type: "error",
+            message: "操作失败!"
+          })
+          loading();
+        });
+      }
+    }
+  }
+</script>

+ 13 - 36
src/views/dashboard/onefaceaccess/onefaceaccess.vue

@@ -1,65 +1,42 @@
 <template>
   <div class="body">
-    <el-row>
-      <!-- 左容器 -->
-      <el-col :span="18">
-        <div style="box-sizing: border-box;margin: 0.625rem;margin-top: 0;">
-          <function-list></function-list>
-          <resident></resident>
-          <strange></strange>
-        </div>
-      </el-col>
-      <!-- 右容器 -->
-      <el-col :span="6">
-        <today-visitor></today-visitor>
-      </el-col>
-    </el-row>
-
+    <div class="content" style="padding-top: 0;">
+      <face-card ></face-card>
+    </div>
     <div style="height: 1.25rem;"></div>
   </div>
 </template>
 
 <script>
-  import strange from "./comps/strange.vue"
-  import resident from "./comps/resident.vue"
-  import functionList from "./comps/function_list.vue"
-  import todayVisitor from "./comps/today_visitor.vue"
+  import faceCard from "./comps/face-card.vue";
   export default {
     components: {
-      strange,
-      resident,
-      functionList,
-      todayVisitor
+      faceCard,
     },
     data() {
       return {
 
       };
-    }
+    },
+    methods: {},
   };
 </script>
 
 <style>
   .avue-main {
-    background-color: #F5F5F5 !important;
+    background-color: #f5f5f5 !important;
   }
 </style>
 
 <style lang="scss" scoped>
   .body {
-    box-sizing: border-box;
-    background-color: #F5F5F5;
+    background-color: #f5f5f5;
     height: 100%;
   }
 
-  .my-layout {
-    margin-top: 0.625rem;
-    display: flex;
-    width: 100%;
-    justify-content: space-between;
-
-    .layout {
-      width: calc(50% - 5px);
-    }
+  .content {
+    margin: 0 10px;
   }
+
+
 </style>

+ 0 - 0
src/views/dashboard/onefaceaccess/onefaceaccess - 副本.vue → src/views/dashboard/onefaceaccess/onefaceaccess1.vue


+ 1 - 1
src/views/enterprise/option/staffOption.js

@@ -176,7 +176,7 @@ export default {
     {
       icon: 'el-icon-info',
       label: '小程序相关',
-      collapse: true,
+      collapse: false,
       prop: 'group1',
       column: [
         {

+ 4 - 4
src/views/enterprise/staff.vue

@@ -94,10 +94,10 @@
 <script>
   import {getList, getDetail, add, update, remove, pushUserFace, pushUserFaceBatch, deleteUserFace} from "@/api/enterprise/staff";
   import {mapGetters} from "vuex";
-  import StaffDetail from "../../components/staff/staffDetail";
-  import ReviewStaff from "../../components/staff/review-staff";
-  import SetAdmin from "./set-admin";
-  import staffOption from "./option/staffOption.js"
+  import StaffDetail from "@/components/staff/staffDetail";
+  import ReviewStaff from "@/components/staff/review-staff";
+  import SetAdmin from "@/views/enterprise/set-admin.vue";
+  import staffOption from "@/views/enterprise/option/staffOption.js"
 
   export default {
     components: {SetAdmin, ReviewStaff, StaffDetail},

+ 0 - 1
src/views/party/branch.vue

@@ -293,7 +293,6 @@
     },
     methods: {
       show(row, type) {
-        debugger
         this.branchId = row.id;
         this.branchName = row.branchName;
         this.showParty = true;

+ 0 - 1
src/views/partymng/partybranch.vue

@@ -293,7 +293,6 @@
     },
     methods: {
       show(row, type) {
-        debugger
         this.branchId = row.id;
         this.branchName = row.branchName;
         this.showParty = true;

Some files were not shown because too many files changed in this diff