From ae2d855c89ca722ac7309fdf1aa6ceed370e3b95 Mon Sep 17 00:00:00 2001
From: heyujie <516346543@qq.com>
Date: 星期一, 11 十月 2021 20:22:30 +0800
Subject: [PATCH] 监控ui

---
 src/pages/library/components/personList.vue |  269 +++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 218 insertions(+), 51 deletions(-)

diff --git a/src/pages/library/components/personList.vue b/src/pages/library/components/personList.vue
index 4e75db3..8149120 100644
--- a/src/pages/library/components/personList.vue
+++ b/src/pages/library/components/personList.vue
@@ -1,31 +1,13 @@
 <template>
   <div class="table-parent">
-    <el-row class style="margin:20px">
-      <!-- <el-col :span="4" class="tl">
-          <b class="f14">{{this.baseObject.tableName}}</b>
-      </el-col>
-      <el-col :span="2">
-          <b class="f14">{{this.baseObject.bwType === '1'?'榛戝悕鍗�':'鐧藉悕鍗�'}}</b>
-      </el-col>
-      <el-col :span="8">
-          <b class="f14">鏈夋晥鏃堕棿锛歿{this.baseObject.startTime}}--{{this.baseObject.endTime?this.baseObject.endTime:'姘镐箙鏈夋晥'}}</b>
-      </el-col>-->
-      <div class="tl">
-        <span
-          class="f14"
-          style="color:#000000;"
-        >{{this.baseObject.tableName?this.baseObject.tableName + '/&nbsp;':''}}</span>
-        <span
-          class="f14"
-          style="color:#000000;"
-        >{{this.baseObject.bwType === '1'?'榛戝悕鍗�/&nbsp;':'鐧藉悕鍗�/&nbsp;&nbsp;&nbsp;'}}</span>
-        <span
-          class="f14"
-          style="color:#000000;"
-        >鏈夋晥鏃堕棿锛歿{this.baseObject.startTime}}--{{this.baseObject.endTime?this.baseObject.endTime:'姘镐箙鏈夋晥'}}</span>
+    <el-row style="margin-top:20px">
+      <div class="base-tip">
+        <span>{{this.baseObject.tableName?this.baseObject.tableName + '/&nbsp;':''}}</span>
+        <span>{{this.baseObject.bwType === '1'?'榛戝悕鍗�/&nbsp;':'鐧藉悕鍗�/&nbsp;&nbsp;&nbsp;'}}</span>
+        <span>鏈夋晥鏃堕棿锛歿{this.baseObject.startTime}}--{{this.baseObject.endTime?this.baseObject.endTime:'姘镐箙鏈夋晥'}}</span>
       </div>
     </el-row>
-    <el-row class style="margin:40px 0 40px 20px">
+    <el-row class style="margin:40px 0 40px 0px">
       <el-col :span="6">
         <el-input
           placeholder="濮撳悕/鎬у埆/韬唤璇佸彿/鎵嬫満鍙�"
@@ -42,24 +24,24 @@
         <el-button size="small" type="primary" @click="handleSearch">鎼滅储</el-button>
       </el-col>
       <el-col :offset="11" :span="3">
-        <fTemplate authority="videoTable:edit">
+        <fTemplate authority="library:set">
           <el-button
             size="small"
             class="ml10"
             type="danger"
             @click="deleteBatch"
-            v-if="isShow('videoTable:edit')"
+            v-if="isShow('library:set')"
           >鎵归噺鍒犻櫎</el-button>
         </fTemplate>
       </el-col>
       <el-col :span="2">
         <div class="text-left">
           <upload
-            limitTypes=".jpg,.png,.jpeg,.gif,.mp4"
+            limitTypes=".jpg,.png,.jpeg"
             limitSize
             uploadBtntext="涓婁紶鐓х墖"
             uploadBtnIcon
-            v-if="isShow('videoTable:edit')"
+            v-if="isShow('library:set')"
             uploadBtnSize="small"
             :isDrag="true"
             @addFilesBaBackFN="changeDialog"
@@ -77,7 +59,6 @@
         tooltip-effect="dark"
         style="width: 100%;"
         :fit="true"
-        :max-height="tableHeight"
         :default-sort="{prop: 'createTime', order: 'descending'}"
         @selection-change="handleSelectionChange"
         :header-cell-style="{background:'#f8f8f8',color:'#222222'}"
@@ -136,7 +117,7 @@
             <el-switch
               v-model="scope.row.enable"
               :active-value="1"
-              :disabled="!isShow('videoTable:edit')"
+              :disabled="!isShow('library:set')"
               :inactive-value="0"
               @change="enable(scope.row)"
             ></el-switch>
@@ -144,7 +125,7 @@
         </el-table-column>
         <el-table-column label="鎿嶄綔" min-width="200" align="center">
           <template slot-scope="scope">
-            <fTemplate authority="videoTable:edit">
+            <fTemplate authority="library:set">
               <el-tooltip content="缂栬緫" placement="top" popper-class="atooltip">
                 <span
                   class="iconfont iconbianji iconStyle1"
@@ -156,7 +137,10 @@
             <el-tooltip content="鏌ユ壘姝や汉" placement="top" popper-class="atooltip">
               <span class="iconfont iconsousuoren iconStyle1" @click="tosearch(scope.row)"></span>
             </el-tooltip>
-            <fTemplate authority="videoTable:edit">
+            <el-tooltip content="鏌ョ湅璇︽儏" placement="top" popper-class="atooltip">
+              <span class="iconfont iconsousuoren iconStyle1" @click="showDetail(scope.row)"></span>
+            </el-tooltip>
+            <fTemplate authority="library:set">
               <el-tooltip content="澶嶅埗" placement="top" popper-class="atooltip">
                 <span
                   class="iconfont iconfuzhi iconStyle1"
@@ -165,7 +149,7 @@
                 ></span>
               </el-tooltip>
             </fTemplate>
-            <fTemplate authority="videoTable:edit">
+            <fTemplate authority="library:set">
               <el-tooltip content="绉诲姩" placement="top" popper-class="atooltip">
                 <span
                   class="iconfont iconyidongzhi iconStyle1"
@@ -175,7 +159,7 @@
                 ></span>
               </el-tooltip>
             </fTemplate>
-            <fTemplate authority="videoTable:edit">
+            <fTemplate authority="library:set">
               <el-tooltip content="鍒犻櫎" placement="top" popper-class="atooltip">
                 <span
                   class="iconfont iconshanchu iconStyle1"
@@ -189,15 +173,83 @@
         </el-table-column>
       </el-table>
     </div>
-    <div class="pt5 pb20" style="height:40px;position:relative">
+    <div class="pt5" style="height:40px;position:relative">
       <el-pagination
+        @size-change="handleSizeChange"
         @current-change="refrash"
         :current-page="BaseManageData.page"
         :page-size="BaseManageData.size"
+        :page-sizes="[10,20,50,100]"
         style="position:absolute;right:10px;bottom:5px"
+        layout="total,sizes,prev,pager,next,jumper"
         :total="BaseManageData.total"
       ></el-pagination>
     </div>
+    <el-dialog title="鎶撴媿璇︽儏" :visible.sync="cameraDetailVisible" okText="纭畾">
+      <div class="top-bar">
+        <el-date-picker
+          size="mini"
+          @change="timeChange"
+          v-model="timeRange"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          type="datetimerange"
+          range-separator="鑷�"
+          start-placeholder="寮�濮嬫椂闂�"
+          end-placeholder="缁撴潫鏃堕棿"
+        ></el-date-picker>
+        <div style="margin:0 10px;display:flex;">
+          <span style="width:68px;">鍋滅暀鏃堕暱:</span>
+          <el-input size="mini" style="width: 80px;" v-model.number="reqCameraParams.thresholdTime"></el-input>s
+        </div>
+        <el-button size="mini" type="primary" @click="postCameraData">鏌ヨ</el-button>
+      </div>
+
+      <div class="member-info">
+        <label class>浜哄憳淇℃伅:</label>
+        <ul>
+          <li>
+            <span>濮撳悕:</span>
+            <span>{{memberInfo.personName}}</span>
+          </li>
+          <li>
+            <span>鎬у埆:</span>
+            <span>{{memberInfo.sex}}</span>
+          </li>
+          <li>
+            <span>韬唤璇佸彿:</span>
+            <span>{{memberInfo.idCard}}</span>
+          </li>
+          <li>
+            <span>鎰忓浘:</span>
+            <span>{{memberInfo.reserved}}</span>
+          </li>
+        </ul>
+      </div>
+
+      <el-table :data="cameraDetailData" border>
+        <el-table-column prop="faceImg" label="鎶撴媿瀹炴櫙" width="160" align="center">
+          <template slot-scope="scope">
+            <div>
+              <img
+                v-if="scope.row.faceImg"
+                :src="`/httpImage/`+scope.row.faceImg"
+                style="max-height:84px;width:84px;object-fit:contain;background:rgba(0,0,0,0.35);"
+                class="avatar"
+              />
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="cameraName" label="鎽勫儚鏈哄悕绉�" width="100" align="center"></el-table-column>
+        <el-table-column prop="startTime" label="寮�濮嬫椂闂�" align="center"></el-table-column>
+        <el-table-column prop="endTime" label="缁撴潫鏃堕棿" align="center"></el-table-column>
+        <el-table-column prop="stayTime" label="鍋滅暀鏃堕暱" width="99" align="center">
+          <template slot-scope="scope">
+            <span>{{scope.row.stayTime}} 绉�</span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <p style="text-align:right; font-size: 14px;">鍏眥{faceDataCount}}鏉℃暟鎹�</p>
+    </el-dialog>
     <el-dialog
       title="淇敼淇℃伅"
       :visible.sync="dialogFormVisible"
@@ -255,7 +307,11 @@
         </el-row>
         <el-row>
           <el-col :span="20">
-            <el-form-item label="鎬у埆" prop="sex" style="width:100%;margin-bottom: 10px;" class="tl">
+            <el-form-item
+              label="鎬у埆"
+              prop="sex"
+              style="width:100%;margin-bottom: 8px; text-align: left"
+            >
               <el-radio-group v-model="form.sex" class="mt10">
                 <el-radio label="鐢�"></el-radio>
                 <el-radio label="濂�"></el-radio>
@@ -450,14 +506,48 @@
 </template>
 <script>
 import { updateBasePerson, deleteBasePersons } from "@/api/baseLibrary";
+import { getCameraFaceData } from "@/api/es";
 import axios from "axios";
 // import { findByType } from '@/server/video.js'
 import Upload from "./upload";
 import fTemplate from "@/components/fTemplate";
 import UploadIcon from "@/components/searching/UploadIcon.vue";
+
+Date.prototype.Format = function (fmt) {
+  var o = {
+    "M+": this.getMonth() + 1, //鏈堜唤 
+    "d+": this.getDate(), //鏃� 
+    "H+": this.getHours(), //灏忔椂 
+    "m+": this.getMinutes(), //鍒� 
+    "s+": this.getSeconds(), //绉� 
+    "q+": Math.floor((this.getMonth() + 3) / 3), //瀛e害 
+    "S": this.getMilliseconds() //姣 
+  };
+  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
+  for (var k in o)
+    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
+  return fmt;
+}
+
 export default {
   data() {
     return {
+      timeRange: [new Date(2020, 7, 25, 8), new Date(new Date().setHours(23, 59, 59))],
+      memberInfo: {
+        personName: '',
+        sex: '',
+        idCard: '',
+        reserved: ''
+      },
+      reqCameraParams: {
+        startTime: new Date(2020, 7, 25, 8).Format("yyyy-MM-dd HH:mm:ss"),
+        endTime: new Date().Format("yyyy-MM-dd HH:mm:ss"),
+        thresholdTime: 10,
+        faceId: []
+      },
+      cameraDetailData: [],
+      cameraDetailVisible: false,
+
       dialogFormVisible: false,
       copyVisiabled: false,
       moveVisiabled: false,
@@ -468,7 +558,7 @@
       pageSize: 10,
       total: 0,
       orderType: "desc",
-      orderName: "id",
+      orderName: "createTime",
       contentValue: "",
       visible: false,
       selectedRowKeys: [],
@@ -500,6 +590,7 @@
       peoperLevel: [],
       oldWidth: "",
       oldHeight: "",
+      faceDataCount: 0,
       // 涓婁紶鍚庣殑寮规鏄剧ず
       dialogVisible: false,
       // 鎵归噺涓婁紶鍚庣殑杩斿洖缁撴灉
@@ -521,6 +612,28 @@
     }
   },
   methods: {
+    postCameraData() {
+      getCameraFaceData(this.reqCameraParams).then(res => {
+        if (res && res.rtnCode == 1) {
+          this.cameraDetailData = res.rtnData
+          this.faceDataCount = res.rtnData.length
+        }
+      })
+    },
+    timeChange(val) {
+      this.reqCameraParams.startTime = val[0];
+      this.reqCameraParams.endTime = val[1];
+
+    },
+    showDetail(row) {
+      this.cameraDetailData = []
+      this.memberInfo.reserved = row.reserved;
+      this.memberInfo.idCard = row.idCard;
+      this.memberInfo.personName = row.personName;
+      this.memberInfo.sex = row.sex;
+      this.reqCameraParams.faceId = row.id;
+      this.cameraDetailVisible = true;
+    },
     isShow(authority) {
       if (this.isAdmin) {
         return true
@@ -551,8 +664,8 @@
         confirmButtonClass: "comfirm-class-sure"
       })
         .then(_ => {
-          fetch(`/data/api-v/dbperson/deleteDbPersonById/${id}`, {
-            method: "POST",
+          fetch(`/data/api-v/dbperson/deleteDbPersonById?id=${id}`, {
+            method: "GET",
             headers: {
               "Content-Type": "application/json",
               Authorization: token
@@ -581,7 +694,7 @@
       console.log("hello");
     },
     getUploadResult(result) {
-      console.log(result, "涓婁紶鐨勮繑鍥�");
+      // console.log(result, "涓婁紶鐨勮繑鍥�");
       this.uploadResult = result.data;
       this.dialogVisible = true;
       this.getPersonList();
@@ -613,6 +726,11 @@
     refrash(current, pageSize) {
       this.current = current;
       this.BaseManageData.page = current;
+      this.getPersonList();
+    },
+    handleSizeChange(val) {
+      //this.pageSize = val;
+      this.BaseManageData.size = val;
       this.getPersonList();
     },
     handleClick(row) {
@@ -816,18 +934,29 @@
         }
       }
     },
+    // tosearch(item) {
+    //   // console.log("璺宠浆鍦板潃", item)
+    //   var curWwwPath = window.document.location.href;
+    //   var pathname = window.document.location.pathname;
+    //   var pos = curWwwPath.indexOf(pathname);
+    //   var localhostPath = curWwwPath.substring(0, pos); //ip+port
+    //   var href = localhostPath + "/Layout/Searching"
+    //   let captureId = item.id == "" ? item.personId : item.id
+    //   var url = item.personPicUrl ? item.personPicUrl : item.personPicUrl
+    //   // console.log("璺宠浆鍦板潃",href,"url",url)
+    //   var compType = 0
+    //   window.open(href + '?showType=findByPic&targetId=' + captureId + '&picSmUrl=' + url + '&compType=' + compType)
+    // },
     tosearch(item) {
-      // console.log("璺宠浆鍦板潃", item)
-      var curWwwPath = window.document.location.href;
-      var pathname = window.document.location.pathname;
-      var pos = curWwwPath.indexOf(pathname);
-      var localhostPath = curWwwPath.substring(0, pos); //ip+port
-      var href = localhostPath + "/Layout/Searching"
+      //let captureId = item.id == "" ? item.baseInfo[0].targetId : item.id
       let captureId = item.id == "" ? item.personId : item.id
-      var url = item.personPicUrl ? item.personPicUrl : item.personPicUrl
-      // console.log("璺宠浆鍦板潃",href,"url",url)
-      var compType = 0
-      window.open(href + '?showType=findByPic&targetId=' + captureId + '&picSmUrl=' + url + '&compType=' + compType)
+      let imgUrl = item.personPicUrl ? item.personPicUrl : item.personPicUrl
+      let compType = 0;
+
+      let message = 'toSearch?showType=findByPic&targetId=' + captureId + '&picSmUrl=' + imgUrl + '&compType=' + compType;
+      window.parent.postMessage({
+        msg: message
+      }, "*")
     },
     copyClick(row) {
       this.BaseManageData.personId = row.id
@@ -1018,8 +1147,15 @@
 }
 .table-parent {
   // position: relative;
+  margin-left: 5px;
   height: 90%;
   overflow: visible !important;
+
+  .base-tip {
+    text-align: left;
+    font-size: 14px;
+    color: #000000;
+  }
 }
 
 .text-left {
@@ -1031,6 +1167,12 @@
   border: 1px solid #ebeef5;
   border-bottom: none;
   // border-bottom: none;
+}
+.el-dialog {
+  min-width: 515px;
+  .el-button--info {
+    color: #222;
+  }
 }
 .el-dialog__header {
   padding: 20px 0 10px;
@@ -1077,7 +1219,10 @@
   color: #222222;
   text-align: center;
 }
-
+.el-table th {
+  color: #222;
+  background: #ececec;
+}
 .el-table .cell {
   padding-left: 8px !important;
   padding-right: 0px !important;
@@ -1145,9 +1290,31 @@
 }
 
 .avatar-uploader {
+  margin: auto;
   max-width: 150px;
   min-width: 150px;
   min-height: 152px;
   border: 1px solid #eee;
 }
+.top-bar {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  line-height: 30px;
+}
+.member-info {
+  font-size: 13px;
+  margin: 10px 0;
+  display: flex;
+  label {
+    color: #999;
+    margin-right: 6px;
+  }
+  ul {
+    display: flex;
+    li {
+      margin-right: 8px;
+    }
+  }
+}
 </style>

--
Gitblit v1.8.0