main
coco1986509808 2023-04-26 17:38:27 +08:00
parent fc0a1cf860
commit eb472bb09d
4 changed files with 480 additions and 460 deletions

View File

@ -2,34 +2,35 @@
<div class="task">
<el-dialog :visible.sync="taskVisible" :close-on-click-modal="false" width="60%">
<span slot="title">
<i style=" font-weight: bold;color: #333333;font-size: 16px">{{val.taskName}}</i>
<i style=" font-weight: bold;color: #333333;font-size: 16px">{{"监控任务十楼工位"}}</i>
</span>
<div>
<!-- -->
<div style="width: 260px;float: right;">
<div style="display: flex;">
<div style="width:120px;height:120px">
<img :src="val.cphoto" alt="目标图片" height="100%">
<canvas width=120 height=120 ref="imageView">
</canvas>
</div>
<div style="width: 120px;height: 120px;background: #F1F6F9;margin-left: 20px;text-align: center;">
<img :src="val.faceUrl" alt="目标图片" height="100%">
<div style="width: 120px;height: 120px;background: #F1F6F9;margin-left: 10px;text-align: center;">
<img :src="val.rphoto" alt="目标图片" height="100%">
</div>
</div>
<div style="height:330px;line-height: 40px;margin-top: 20px;">
<div><i>时间{{val.time}}</i></div>
<div><i>姓名{{val.name}}</i></div>
<div><i>性别{{val.sex}}</i></div>
<div><i>年龄{{val.age}}</i></div>
<div><i>身份证号码{{val.idCard}}</i></div>
<div><i>卡口{{val.cameraRegion}}</i></div>
<div><i>性别{{"未知"}}</i></div>
<div><i>年龄{{"未知"}}</i></div>
<div><i>身份证号码{{"未知"}}</i></div>
<div><i>卡口{{"4.21演示摄像头"}}</i></div>
<div><i>来源{{val.libName}}</i></div>
<div><i>相似度<span class="compare_result" style="font-family:Bahnschrift">{{(val.score*100).toFixed(2)}}%</span></i></div>
<div><i>相似度<span class="compare_result" style="font-family:Bahnschrift">{{(val.xsd*1).toFixed(2)}}%</span></i></div>
</div>
</div>
<!-- -->
<div style="margin-right: 280px;">
<el-image style="width: 100%;" :src="val.bgImg"></el-image>
<el-image style="width: 100%;" :src="val.jzphoto"></el-image>
</div>
</div>
</el-dialog>

View File

@ -15,7 +15,7 @@
<div
style="height:40px;display:flex;align-items: center; justify-content: space-between;border-bottom: 1px solid #F1F8FF;box-sizing: border-box;">
<!-- <i style="font-weight: bold;color: #333333;margin-left: 20px">{{item.cameraRegion}}</i>-->
<i style="font-weight: bold;color: #333333;margin-left: 20px">{{videoFaceList[index].time}}</i>
<i style="font-weight: bold;color: #333333;margin-left: 20px">{{"十楼工位"}}</i>
<i style="font-weight: bold;color: #333333;margin-right: 20px;">{{item.time}}</i>
</div>
<div style="display: flex;align-items: center;height: 150px;margin-left: 34px;">
@ -27,7 +27,7 @@
<div
style="width: 120px;height: 120px;background: #F1F6F9;margin: 0 20px;text-align: center;position: relative;">
<!-- src="item.rphoto"-->
<img style="width: 120px;height: 120px;" src="../../../assets/img/warning/zb.png" />
<img style="width: 120px;height: 120px;" :src="item.rphoto" />
<div
style="position: absolute;width: 100%;background-color: red;bottom: 0;opacity: 0.6;background: #000;color: #FFF;line-height: 1.8;">
<i>测试库</i>
@ -41,7 +41,7 @@
<span><i>性别未知</i></span>
<span><i>来源测试库</i></span>
<span><i>相似度</i><i style="font-size: 30px;font-weight: 600;color: #FF343E; font-family:Bahnschrift;">
{{"99%"+item.xsd}}</i></span>
{{item.xsd+"%"}}</i></span>
</div>
<div style="position: absolute;top:0;right: 0;">
<img src="../../../assets/img/warning/jk.png" alt="监控">
@ -122,7 +122,7 @@
<!-- 抓拍图片 -->
<div class="pic-div">
<div style="display: flex;align-items: center;">
<template v-for="(item,i) in warningList">
<template v-for="(item,i) in videoFaceList">
<img width=120 height=120 style="margin-left: 12px;" :src="item.cphoto">
</template>
</div>
@ -203,18 +203,17 @@
label: 'label'
},
//
faceBgUrltest: "http://192.168.1.133:9000/middleware/103/1028345463.jpg",
faceBgUrl: "",
faces: [],
currentFaces: [],
toDaySnapShot: 0,
totalSnapShot: 0,
//
warningList: [],
compareList:[],
videoFaceList:[],
//
warningType: "",
cameraList:[{ rtspUrl: "rtsp://admin:123uestc@192.168.1.32:554/h264"}],
cameraList:[{ rtspUrl: "rtsp://192.168.1.138:8557/h264"}],
}
},
mounted() {
@ -238,7 +237,7 @@
})
},
plays(){
this.cameraList.push({rtspUrl: "rtsp://admin:123uestc@192.168.1.32:554/h264"});
this.cameraList.push({rtspUrl: "rtsp://192.168.1.138:8557/h264"});
},
// 4
initGetWarningPicture() {
@ -249,9 +248,9 @@
},
}).then(res => {
if (res.data.code === 0) {
this.warningList = res.data.data.records
this.compareList = res.data.data.records
//
this.getWarningPicture(this.warningList)
this.getWarningPicture(this.compareList)
} else {
this.$message.error(res.data.message)
}
@ -261,22 +260,22 @@
* 初始化获取摄像头id
*/
initGetCameraId() {
this.$http.get("/warning/bayonet").then((res) => {
if (res.data.code === 0) {
this.cameraId = res.data.data.cameraId
this.barrierName = res.data.data.cameraName
// id
this.treeArr = res.data.data.camera_region_firstlevel.split(",")
// id
this.getTaskNameByCameraId(this.cameraId)
// /
this.initTotal(this.cameraId)
// webSocket----------webSocket----------webSocket----------webSocket
this.initWebSocket()
} else {
this.$message.error(res.data.message)
}
})
// this.$http.get("/warning/bayonet").then((res) => {
// if (res.data.code === 0) {
// this.cameraId = res.data.data.cameraId
// this.barrierName = res.data.data.cameraName
// // id
// this.treeArr = res.data.data.camera_region_firstlevel.split(",")
// // id
// this.getTaskNameByCameraId(this.cameraId)
// // /
// this.initTotal(this.cameraId)
// // webSocket----------webSocket----------webSocket----------webSocket
// this.initWebSocket()
// } else {
// this.$message.error(res.data.message)
// }
// })
this.initWebSocket()
},
/**
@ -301,7 +300,7 @@
res.data.data.result.totalSnapShot = res.data.data.totalSnapShot
this.getPicture(res.data.data.result)
} else {
this.$message.error(res.data.message)
//this.$message.error(res.data.message)
}
})
},
@ -322,17 +321,17 @@
},
websocketonopen(e) {
console.log("WebSocket Connection successful");
let obj = {
"code": 200,
"message": "成功",
"cmd": "BAYONET",
"data": {
"carmeraId": this.cameraId
}
}
let objString = JSON.stringify(obj)
// this.cameraId
this.websock.send(objString)
// let obj = {
// "code": 200,
// "message": "",
// "cmd": "BAYONET",
// "data": {
// "carmeraId": this.cameraId
// }
// }
// let objString = JSON.stringify(obj)
// // this.cameraId
// this.websock.send(objString)
},
websocketonerror(e) {
console.log("WebSocket Connection error");
@ -342,11 +341,11 @@
},
websocketonmessage(e) {
console.log("数据传输")
console.log(e)
// console.log(e)
// wsjson
let wsObj = JSON.parse(e.data)
console.log("this wsObj")
console.log(wsObj)
// console.log("this wsObj")
// console.log(wsObj)
// ws
// ws
this.getWarningPicture(wsObj)
@ -386,16 +385,32 @@
* @param {Object} wsObj
*/
getWarningPicture(warningData) {
// warningDataws
this.warningList = warningData
console.log("this warningList")
console.log(this.warningList)
this.toDaySnapShot = this.toDaySnapShot + warningData.length
this.totalSnapShot = this.totalSnapShot + warningData.length
// warningData2videofacelistcomparelist
for (let i = 0; i < warningData.length; i++) {
this.videoFaceList.unshift(warningData[i])
}
console.log("this is videofacelist")
console.log(this.videoFaceList)
// else {
// // console.log("this videofacelist")
// // console.log(this.videoFaceList)
// for (let i = 0; i < warningData.length; i++) {
// this.videoFaceList.unshift(warningData[i])
// }
// // console.log("this videofacelist")
// // console.log(this.videoFaceList)
// }
//this.warningList = warningData
//console.log(this.compareList)
// tips
let warningType = this.$refs.notice
warningType.play()
// this.$message.warning("")
this.warningList.forEach((item, index, arr) => {
this.compareList.forEach((item, index, arr) => {
// "1" #FF343E "2" #FFA61A "0" #2FC8FA
// if (item.taskType == "1" || item.taskType == "2" || item.taskType == "3") {
// if (item.taskType == "1") {
@ -484,7 +499,8 @@
this.$router.push({
name: "monitoring-warning",
params: {
taskId: ''
taskId: '',
videoFaceList:this.videoFaceList,
},
})
},

View File

@ -42,7 +42,7 @@
</el-form-item>
<el-form-item label="布控对象" prop="object" style="margin:0px">
<el-radio v-model="addForm.object" label="1"></el-radio>
<el-radio v-model="addForm.object" label="2"></el-radio>
<!-- <el-radio v-model="addForm.object" label="2"></el-radio>-->
</el-form-item>
<el-form-item prop="library" v-if="addForm.object == '1'">
<el-select v-model="addForm.library" filterable multiple collapse-tags placeholder="请选择人像库">
@ -50,26 +50,26 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="targetImg" v-if="addForm.object == '2'">
<span class="surveillance_add_gs">上传头像图片只能是 JPG PNGJPEG格式!</span>
<div class="surveillance_box">
<div class="surveillance_img">
<img v-if='addForm.targetImg' :src="addForm.targetImg" class="pre-img">
<div v-else class="avatar-uploader-icon">人物图像</div>
</div>
<div class="crop-demo-btn">
上传图片<input class="crop-input" type="file" name="image" accept="image/*" @change="setImage" />
</div>
<el-dialog title="裁剪图片" :visible.sync="dialogVisible9" width="30%" :close-on-click-modal='false' append-to-body>
<vue-cropper ref='cropper' :src="imgSrc" :ready="cropImage" :zoom="cropImage" :cropmove="cropImage" style="width:100%;height:300px;">
</vue-cropper>
<span slot="footer" class="dialog-footer">
<el-button @click="cancelCrop"> </el-button>
<el-button type="primary" @click="clickOK()"> </el-button>
</span>
</el-dialog>
</div>
</el-form-item>
<!-- <el-form-item prop="targetImg" v-if="addForm.object == '2'">-->
<!-- <span class="surveillance_add_gs">上传头像图片只能是 JPG PNGJPEG格式!</span>-->
<!-- <div class="surveillance_box">-->
<!-- <div class="surveillance_img">-->
<!-- <img v-if='addForm.targetImg' :src="addForm.targetImg" class="pre-img">-->
<!-- <div v-else class="avatar-uploader-icon">人物图像</div>-->
<!-- </div>-->
<!-- <div class="crop-demo-btn">-->
<!-- 上传图片<input class="crop-input" type="file" name="image" accept="image/*" @change="setImage" />-->
<!-- </div>-->
<!-- <el-dialog title="裁剪图片" :visible.sync="dialogVisible9" width="30%" :close-on-click-modal='false' append-to-body>-->
<!-- <vue-cropper ref='cropper' :src="imgSrc" :ready="cropImage" :zoom="cropImage" :cropmove="cropImage" style="width:100%;height:300px;">-->
<!-- </vue-cropper>-->
<!-- <span slot="footer" class="dialog-footer">-->
<!-- <el-button @click="cancelCrop"> </el-button>-->
<!-- <el-button type="primary" @click="clickOK()"> </el-button>-->
<!-- </span>-->
<!-- </el-dialog>-->
<!-- </div>-->
<!-- </el-form-item>-->
<el-form-item style="margin-bottom:0px" label="处置类型" prop="disposalType">
<el-radio v-model="addForm.disposalType" :label="item.label" v-for="item in warningTypeList" :key="item.value">{{item.label}}</el-radio>
<!-- <el-radio v-model="addForm.disposalType" label="1"></el-radio>
@ -156,7 +156,7 @@
</el-form-item>
<el-form-item label="布控对象" prop="controlObject" style="margin:0px">
<el-radio disabled v-model="addForm2.controlObject" label="1"></el-radio>
<el-radio disabled v-model="addForm2.controlObject" label="2"></el-radio>
<!-- <el-radio disabled v-model="addForm2.controlObject" label="2"></el-radio>-->
</el-form-item>
<el-form-item prop="libIds" v-if="addForm2.controlObject == '1'">
<el-select disabled v-model="addForm2.libIds" multiple placeholder="请选择人脸库">
@ -164,9 +164,9 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="targetImg" v-if="addForm2.controlObject == '2'">
<img :src="addForm2.imgurl" class="avatar">
</el-form-item>
<!-- <el-form-item prop="targetImg" v-if="addForm2.controlObject == '2'">-->
<!-- <img :src="addForm2.imgurl" class="avatar">-->
<!-- </el-form-item>-->
<el-form-item style="margin-bottom:0px" label="处置类型" prop="disposalType">
<el-radio v-model="addForm2.disposalType" :label="item.label" v-for="item in warningTypeList" :key="item.value">{{item.label}}</el-radio>
<!-- <el-radio v-model="addForm2.disposalType" label="1"></el-radio>

View File

@ -33,25 +33,26 @@
<div style="background-color: #FFF;margin-bottom: 20px;border-radius: 2px;cursor: pointer;" @click="openTask(item)">
<div style="height:40px;line-height:40px;display:flex;justify-content: space-between;border-bottom: 1px solid #F1F8FF;box-sizing: border-box;">
<i>
<i class="font-fourteen" style="font-weight: bold;color: #333333;margin-left: 20px">{{item.cameraRegion}}</i>
<i class="font-fourteen" style="font-weight: bold;color: #333333;margin-left: 20px">{{"十楼工位"}}</i>
</i>
<i style="font-weight: bold;color: #333333;margin-right: 20px;margin-left: 20px">{{item.time}}</i>
</div>
<div style="position: relative;">
<div style="display: flex;align-items: center;height: 150px;margin-left: 30px;">
<div style="width: 120px;height: 120px;background: #F1F6F9;">
<!-- <img :src="item.cphoto" alt="目标图片" height="100%">-->
<canvas width=120 height=120 :ref="'warningImage'+index">
</canvas>
</div>
<!-- 可考虑用背景图 -->
<div style="width: 120px;height: 120px;background: #F1F6F9;margin: 0 20px;text-align: center;">
<img :src="$replaceImgUrl(item.faceUrl)" alt="目标图片" height="100%">
<img :src="item.rphoto" alt="目标图片" height="100%">
</div>
<div style="height: 120px;display: flex;flex-direction: column;justify-content: space-around;">
<span><i>姓名{{item.name}}</i></span>
<span><i>性别{{item.sex}}</i></span>
<span><i>来源{{item.libName}}</i></span>
<span><i>相似度</i><i style="font-size: 30px;font-weight: 600;color: #FF343E;font-family:Bahnschrift;">{{(item.score*100).toFixed(2)}}%</i></span>
<span><i>相似度</i><i style="font-size: 30px;font-weight: 600;color: #FF343E;font-family:Bahnschrift;">{{(item.xsd*1).toFixed(2)}}%</i></span>
</div>
</div>
<div style="position: absolute;top:20px;right: 30px;">
@ -74,9 +75,9 @@
</template>
<script>
import Task from './barrier-task'
import warningMap from './warning-map'
export default {
import Task from './barrier-task'
import warningMap from './warning-map'
export default {
name: "watch",
data() {
return {
@ -105,7 +106,7 @@
// Id
taskId: "",
//
warningList: [],
warningList: this.$route.params.videoFaceList,
//
taskVisible: false,
val: {}
@ -117,6 +118,8 @@
},
// activated
created() {
console.log("warninglist参数传递")
console.log(this.$route.params)
// ()
if (this.$route.params.taskId === undefined) {
//
@ -371,21 +374,21 @@
//
mapRefClick() {}
},
}
}
</script>
<style scoped>
i {
i {
font-style: normal;
font-family: "Noto Sans SC";
}
}
.conditions-div {
.conditions-div {
background-color: #FFF;
border-radius: 2px;
}
}
.conditions-div>>>.el-form-item {
.conditions-div>>>.el-form-item {
margin: 10px
}
}
</style>