From c868f26356ee88f88a316c72e5aa17ef8060822e Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期五, 14 十月 2022 18:46:37 +0800
Subject: [PATCH] 对普通用户隐藏图片和视频下载.
---
src/views/search/components/ModelCard.vue | 425 +++++++++++++++++++---------------------------------
1 files changed, 157 insertions(+), 268 deletions(-)
diff --git a/src/views/search/components/ModelCard.vue b/src/views/search/components/ModelCard.vue
index c96ab47..10703d1 100644
--- a/src/views/search/components/ModelCard.vue
+++ b/src/views/search/components/ModelCard.vue
@@ -1,10 +1,6 @@
<template>
<div class="model-card-box" :style="`height:${height};width:${width};`">
- <el-tabs
- style="height: 100%"
- @before-leave="changeTabs"
- v-model="activeName"
- >
+ <el-tabs style="height: 100%" @before-leave="changeTabs" v-model="activeName">
<el-tab-pane label="澶у浘" name="pic">
<div
class="model-card-box-left"
@@ -20,77 +16,45 @@
</p>
<!-- 浜鸿劯绫诲瀷 -->
<img-down
- v-if="
- data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''
- "
+ v-if="data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''"
:url="data.picMaxUrl[0]"
></img-down>
<!-- 鏅�歽olo绫� -->
<img-down
- v-else-if="
- (data.targetInfo == null ||
- data.targetInfo[0].picSmUrl == '') &&
- data.picMaxUrl.length == 1
- "
+ v-else-if="(data.targetInfo == null || data.targetInfo[0].picSmUrl == '') && data.picMaxUrl.length == 1"
:url="data.picMaxUrl[0]"
></img-down>
<!-- 鎸佺画鏃堕棿yolo绫� -->
<el-carousel
- v-else-if="
- (data.targetInfo == null ||
- data.targetInfo[0].picSmUrl == '') &&
- data.picMaxUrl.length > 1
- "
+ v-else-if="(data.targetInfo == null || data.targetInfo[0].picSmUrl == '') && data.picMaxUrl.length > 1"
trigger="click"
height="100%"
:autoplay="false"
>
- <el-carousel-item
- v-for="(item, index) in data.picMaxUrl"
- :key="index"
- >
+ <el-carousel-item v-for="(item, index) in data.picMaxUrl" :key="index">
<img-down :url="item"></img-down>
</el-carousel-item>
</el-carousel>
<!-- yolo绫诲ぇ鍥� -->
- <div
- class="describe"
- v-if="
- data.targetInfo == null || data.targetInfo[0].picSmUrl == ''
- "
- >
+ <div class="describe" v-if="data.targetInfo == null || data.targetInfo[0].picSmUrl == ''">
<p>
- <span class="fontStyleForModel" style="font-weight: normal">{{
- data.picDate | formatTime
- }}</span>
+ <span class="fontStyleForModel" style="font-weight: normal">{{ data.picDate | formatTime }}</span>
</p>
<p>
- <span class="fontStyleForModel">{{ data.cameraAddr }}</span>
- <span
- class="fontStyleForModel analyServer"
- style="margin-left: 20px"
- >{{ data.analyServerName }}</span
- >
+ <span class="fontStyleForModel">{{ data.cameraName }}</span>
+ <span class="fontStyleForModel analyServer" style="margin-left: 20px">{{ data.analyServerName }}</span>
</p>
<p></p>
<p style="width: 100%">
- <span
- v-for="(item, index) in data.alarmRules"
- :key="index + 'rule'"
- >
+ <span v-for="(item, index) in data.alarmRules" :key="index + 'rule'">
<span class="fontStyleForModel">{{ data.taskName }}</span
>
- <span
- v-if="item.alarmLevel !== '鎾ら槻'"
- class="fontStyleForModel"
- >{{ item.alarmLevel }}</span
+ <span v-if="item.alarmLevel !== '鎾ら槻'" class="fontStyleForModel">{{ item.alarmLevel }}</span
>
- <span v-if="item.isLink" class="fontStyleForModel"
- >鑱斿姩浠诲姟</span
- >
+ <span v-if="item.isLink" class="fontStyleForModel">鑱斿姩浠诲姟</span>
<span v-if="index < data.alarmRules.length - 1">/ </span>
</span>
</p>
@@ -99,63 +63,44 @@
<!-- 浜鸿劯绫诲ぇ鍥� -->
<div class="describeBigImage" v-else>
<p>
- <span class="fontStyleForModel">{{
- data.picDate | formatTime
- }}</span>
+ <span class="fontStyleForModel">{{ data.picDate | formatTime }}</span>
</p>
<p class="align-right">
- <span
- class="fontStyleForModel text-overflow"
- :title="data.cameraAddr"
- >{{ data.cameraAddr }}</span
- >
- <span
- class="fontStyleForModel text-overflow"
- :title="data.cameraAddr"
- style="margin-left: 20px"
- >{{ data.analyServerName }}</span
- >
+ <span class="fontStyleForModel text-overflow" :title="data.cameraName">{{ data.cameraName }}</span>
+ <span class="fontStyleForModel text-overflow" :title="data.analyServerName" style="margin-left: 20px">{{
+ data.analyServerName
+ }}</span>
</p>
<p style="width: 100%">
- <span
- v-for="(item, index) in data.alarmRules"
- :key="index + 'rule'"
- >
+ <span v-for="(item, index) in data.alarmRules" :key="index + 'rule'">
<span class="fontStyleForModel">{{ data.taskName }}</span
>
- <span
- v-if="item.alarmLevel !== '鎾ら槻'"
- class="fontStyleForModel"
- >{{ item.alarmLevel }}</span
+ <span v-if="item.alarmLevel !== '鎾ら槻'" class="fontStyleForModel">{{ item.alarmLevel }}</span
>
- <span v-if="item.isLink" class="fontStyleForModel"
- >鑱斿姩浠诲姟</span
- >
+ <span v-if="item.isLink" class="fontStyleForModel">鑱斿姩浠诲姟</span>
<span v-if="index < data.alarmRules.length - 1">/ </span>
</span>
</p>
<p style="width: 100%">
- <span
- style="white-space: nowrap; font-weight: 600; font-size: 13px"
- >{{ data.showLabels }}</span
- >
+ <span style="white-space: nowrap; font-weight: 600; font-size: 13px">{{ data.showLabels }}</span>
</p>
</div>
+ <el-button
+ type="text"
+ icon="el-icon-coordinate"
+ style="float: right; margin-right: 50px; font-size: 16px;"
+ @click="markDialogVisible = true"
+ >鏍囪</el-button
+ >
</div>
</div>
<!-- 寮规鍙充晶 -->
<div
- v-if="
- data.targetInfo &&
- data.targetInfo !== null &&
- data.targetInfo[0].picSmUrl !== ''
- "
+ v-if="data.targetInfo && data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''"
class="model-card-box-right"
:style="
- data.targetInfo &&
- data.targetInfo !== null &&
- data.targetInfo[0].picSmUrl !== ''
+ data.targetInfo && data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''
? 'width: 35%;box-sizing: border-box;'
: ''
"
@@ -164,17 +109,10 @@
<b>鎶撴媿鍥�</b>
</p>
<!-- 宸﹀彸涓ゅ紶鐨勪汉鑴稿姣旀ā寮� -->
- <div
- class="img-box"
- v-if="data.baseInfo && data.baseInfo.length >= 1"
- ref="picSmBox"
- >
+ <div class="img-box" v-if="data.baseInfo && data.baseInfo.length >= 1" ref="picSmBox">
<div class="card-img-box-compear-left">
<!-- <img :src="'http://'+data.targetInfo[0].picSmUrl" ref="picSm" /> -->
- <img-down
- :url="data.targetInfo[0].picSmUrl"
- :isPreview="false"
- ></img-down>
+ <img-down :url="data.targetInfo[0].picSmUrl" :isPreview="false"></img-down>
</div>
<el-carousel
@change="changeInitialIndex"
@@ -182,98 +120,80 @@
:autoplay="false"
indicator-position="none"
:arrow="data.baseInfo.length > 1 ? 'always' : 'never'"
- v-if="data.baseInfo[0].targetPicUrl != ''"
+ v-if="data.baseInfo[0] && data.baseInfo[0].targetPicUrl != ''"
class="card-img-box-compear-right"
>
- <el-carousel-item
- v-for="(item, index) in data.baseInfo"
- :key="index"
- >
+ <el-carousel-item v-for="(item, index) in data.baseInfo" :key="index">
<!-- <img :src="'http://'+item.targetPicUrl" /> -->
- <img-down
- :url="item.targetPicUrl"
- :isPreview="false"
- ></img-down>
+ <img-down :url="item.targetPicUrl" :isPreview="false"></img-down>
</el-carousel-item>
</el-carousel>
<div
class="img-compareScore"
- v-if="data.baseInfo[0].targetPicUrl != ''"
- :style="
- data.baseInfo[initialIndex].bwType === '1'
- ? `background: red;`
- : `background: green;`
- "
+ v-if="data.baseInfo[0] && data.baseInfo[0].targetPicUrl != ''"
+ :style="data.baseInfo[initialIndex].bwType === '1' ? `background: red;` : `background: green;`"
>
<b>{{ data.baseInfo[initialIndex].compareScore | percentage }}</b>
</div>
</div>
<!-- 娌℃湁姣斿鐨勪汉鑴歌瘑鍒ā寮� -->
- <div
- class="img-box"
- v-if="!data.baseInfo && data.targetInfo[0].picSmUrl !== ''"
- >
- <div
- class="card-img-box-compear-left"
- style="width: 60%; margin-top: 5px"
- >
+ <div class="img-box" v-if="!data.baseInfo && data.targetInfo[0].picSmUrl !== ''">
+ <div class="card-img-box-compear-left" style="width: 60%; margin-top: 5px">
<!-- <img :src="'http://'+data.targetInfo[0].picSmUrl" /> -->
- <img-down
- :url="data.targetInfo[0].picSmUrl"
- :isPreview="false"
- ></img-down>
+ <img-down :url="data.targetInfo[0].picSmUrl" :isPreview="false"></img-down>
</div>
</div>
- <div
- class="baseInfo"
- v-if="data.baseInfo && data.baseInfo[0].targetPicUrl != ''"
- >
+ <div class="baseInfo" v-if="data.baseInfo[0] && data.baseInfo[0].targetPicUrl != ''">
<div class="baseInfo_list">
<p>
<span class="labelInfo">搴曞簱</span>
- <span
- class="val"
- :title="data.baseInfo[initialIndex].tableName"
- >{{ data.baseInfo[initialIndex].tableName }}</span
- >
+ <span class="val" :title="data.baseInfo[initialIndex].tableName">{{
+ data.baseInfo[initialIndex].tableName
+ }}</span>
</p>
<p>
<span class="labelInfo">濮撳悕</span>
- <span
- class="val"
- :title="data.baseInfo[initialIndex].targetName"
- >{{ data.baseInfo[initialIndex].targetName }}</span
- >
+ <span class="val" :title="data.baseInfo[initialIndex].targetName">{{
+ data.baseInfo[initialIndex].targetName
+ }}</span>
</p>
<p>
<span class="labelInfo">鎬у埆</span>
- <span class="val">{{
- data.baseInfo[initialIndex].labels | sex
- }}</span>
+ <span class="val">{{ data.baseInfo[initialIndex].labels | sex }}</span>
</p>
<p>
<span class="labelInfo">韬唤璇佸彿</span>
- <span class="val">{{
- data.baseInfo[initialIndex].labels | idCard
- }}</span>
+ <span class="val">{{ data.baseInfo[initialIndex].labels | idCard }}</span>
</p>
<p>
<span class="labelInfo">鎵嬫満鍙�</span>
- <span class="val">{{
- data.baseInfo[initialIndex].labels | phoneNum
- }}</span>
+ <span class="val">{{ data.baseInfo[initialIndex].labels | phoneNum }}</span>
</p>
<p>
<span class="labelInfo">浜哄憳绛夌骇</span>
- <span
- class="val"
- :title="data.baseInfo[initialIndex].monitorLevel"
- >{{ data.baseInfo[initialIndex].monitorLevel }}</span
- >
+ <span class="val" :title="data.baseInfo[initialIndex].monitorLevel">{{
+ data.baseInfo[initialIndex].monitorLevel
+ }}</span>
</p>
</div>
</div>
</div>
+ <el-dialog
+ title="鏍囪棰勮"
+ :visible.sync="markDialogVisible"
+ width="30%"
+ style="z-index:4000;margin-top:200px;margin-left:140px;"
+ center
+ :modal="false"
+ >
+ <el-radio v-model="warningFlag" label="1">璇姤</el-radio>
+ <el-radio v-model="warningFlag" label="3">鏈暣鏀�</el-radio>
+ <el-radio v-model="warningFlag" label="2">宸叉暣鏀�</el-radio>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="markDialogVisible = false" size="mini">鍙� 娑�</el-button>
+ <el-button type="primary" @click="saveWarningFlag(data)" size="mini">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
</el-tab-pane>
<el-tab-pane label="瑙嗛" name="video" class="video-tabs">
@@ -284,6 +204,7 @@
? 'width: 65%;padding: 5px;box-sizing: border-box'
: 'width: 70%;padding: 5px;box-sizing: border-box;margin-left:15%'
"
+ v-if="activeName === 'video'"
>
<div class="img-box">
<!-- <video
@@ -293,127 +214,84 @@
>
鎮ㄧ殑娴忚鍣ㄤ笉鏀寔 video 鏍囩銆�
</video> -->
- <wasm-player
- :videoUrl="data.videoUrl"
- :isStream="false"
- ></wasm-player>
+ <wasm-player :videoUrl="data.videoUrl" :isStream="false"></wasm-player>
</div>
</div>
<div
v-if="data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''"
class="model-card-box-right"
:style="
- data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''
- ? 'width: 35%;box-sizing: border-box;'
- : ''
+ data.targetInfo !== null && data.targetInfo[0].picSmUrl !== '' ? 'width: 35%;box-sizing: border-box;' : ''
"
>
<p class="img-box-title">
<b>鎶撴媿鍥�</b>
</p>
<!-- 宸﹀彸涓ゅ紶鐨勪汉鑴稿姣旀ā寮� -->
- <div
- class="img-box"
- v-if="data.baseInfo && data.baseInfo.length >= 1"
- ref="picSmBox"
- >
+ <div class="img-box" v-if="data.baseInfo && data.baseInfo.length >= 1" ref="picSmBox">
<div class="card-img-box-compear-left">
- <img-down
- :url="data.targetInfo[0].picSmUrl"
- :isPreview="false"
- ></img-down>
+ <img-down :url="data.targetInfo[0].picSmUrl" :isPreview="false"></img-down>
</div>
<el-carousel
@change="changeInitialIndex"
:initial-index="initialIndex"
:autoplay="false"
indicator-position="none"
- v-if="data.baseInfo[0].targetPicUrl != ''"
+ v-if="data.baseInfo[0] && data.baseInfo[0].targetPicUrl != ''"
class="card-img-box-compear-right"
:arrow="data.baseInfo.length > 1 ? 'always' : 'never'"
>
- <el-carousel-item
- v-for="(item, index) in data.baseInfo"
- :key="index"
- >
+ <el-carousel-item v-for="(item, index) in data.baseInfo" :key="index">
<!-- <img :src="'http://'+item.targetPicUrl" /> -->
- <img-down
- :url="item.targetPicUrl"
- :isPreview="false"
- ></img-down>
+ <img-down :url="item.targetPicUrl" :isPreview="false"></img-down>
</el-carousel-item>
</el-carousel>
<div
class="img-compareScore"
- v-if="data.baseInfo[0].targetPicUrl != ''"
- :style="
- data.baseInfo[initialIndex].bwType === '1'
- ? `background: red;`
- : `background: green;`
- "
+ v-if="data.baseInfo[0] && data.baseInfo[0].targetPicUrl != ''"
+ :style="data.baseInfo[initialIndex].bwType === '1' ? `background: red;` : `background: green;`"
>
<b>{{ data.baseInfo[initialIndex].compareScore | percentage }}</b>
</div>
</div>
<!-- 娌℃湁姣斿鐨勪汉鑴歌瘑鍒ā寮� -->
<div class="img-box" v-if="!data.baseInfo && data.picMaxUrl">
- <div
- class="card-img-box-compear-left"
- style="width: 60%; margin-top: 5px"
- >
+ <div class="card-img-box-compear-left" style="width: 60%; margin-top: 5px">
<!-- <img :src="'http://'+data.targetInfo[0].picSmUrl" /> -->
- <img-down
- :url="data.targetInfo[0].picSmUrl"
- :isPreview="false"
- ></img-down>
+ <img-down :url="data.targetInfo[0].picSmUrl" :isPreview="false"></img-down>
</div>
</div>
- <div
- class="baseInfo"
- v-if="data.baseInfo && data.baseInfo[0].targetPicUrl != ''"
- >
+ <div class="baseInfo" v-if="data.baseInfo[0] && data.baseInfo[0].targetPicUrl != ''">
<div class="baseInfo_list">
<p>
<span class="labelInfo">搴曞簱</span>
- <span
- class="val"
- :title="data.baseInfo[initialIndex].tableName"
- >{{ data.baseInfo[initialIndex].tableName }}</span
- >
+ <span class="val" :title="data.baseInfo[initialIndex].tableName">{{
+ data.baseInfo[initialIndex].tableName
+ }}</span>
</p>
<p>
<span class="labelInfo">濮撳悕</span>
- <span
- class="val"
- :title="data.baseInfo[initialIndex].targetName"
- >{{ data.baseInfo[initialIndex].targetName }}</span
- >
+ <span class="val" :title="data.baseInfo[initialIndex].targetName">{{
+ data.baseInfo[initialIndex].targetName
+ }}</span>
</p>
<p>
<span class="labelInfo">鎬у埆</span>
- <span class="val">{{
- data.baseInfo[initialIndex].labels | sex
- }}</span>
+ <span class="val">{{ data.baseInfo[initialIndex].labels | sex }}</span>
</p>
<p>
<span class="labelInfo">韬唤璇佸彿</span>
- <span class="val">{{
- data.baseInfo[initialIndex].labels | idCard
- }}</span>
+ <span class="val">{{ data.baseInfo[initialIndex].labels | idCard }}</span>
</p>
<p>
<span class="labelInfo">鎵嬫満鍙�</span>
- <span class="val">{{
- data.baseInfo[initialIndex].labels | phoneNum
- }}</span>
+ <span class="val">{{ data.baseInfo[initialIndex].labels | phoneNum }}</span>
</p>
<p>
<span class="labelInfo">浜哄憳绛夌骇</span>
- <span
- class="val"
- :title="data.baseInfo[initialIndex].monitorLevel"
- >{{ data.baseInfo[initialIndex].monitorLevel }}</span
- >
+ <span class="val" :title="data.baseInfo[initialIndex].monitorLevel">{{
+ data.baseInfo[initialIndex].monitorLevel
+ }}</span>
</p>
</div>
</div>
@@ -423,7 +301,7 @@
</div>
</template>
<script>
-Date.prototype.Format = function (fmt) {
+Date.prototype.Format = function(fmt) {
var o = {
"M+": this.getMonth() + 1, //鏈堜唤
"d+": this.getDate(), //鏃�
@@ -431,108 +309,119 @@
"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)
- );
+ 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;
-};
+ fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length))
+ return fmt
+}
-import WasmPlayer from "./wasmPlayer";
-import imgDown from "./imgDown";
+import WasmPlayer from "./wasmPlayer"
+import imgDown from "./imgDown"
+import { saveWarning } from "@/api/es"
export default {
components: {
WasmPlayer,
- imgDown,
+ imgDown
},
props: {
height: {
type: String,
- default: "100%",
+ default: "100%"
},
width: {
type: String,
- default: "100%",
+ default: "100%"
},
data: {
type: Object,
require: false,
- default: function () {
- return {};
- },
- },
+ default: function() {
+ return {}
+ }
+ }
},
filters: {
formatTime(t) {
- return new Date(t).Format("yyyy-MM-dd HH:mm:ss");
+ return new Date(t).Format("yyyy-MM-dd HH:mm:ss")
},
percentage(score) {
- return score.toFixed(2) + "%";
+ return score.toFixed(2) + "%"
},
sex(v) {
try {
- let obj = JSON.parse(v);
- return obj.sex;
+ let obj = JSON.parse(v)
+ return obj.sex
} catch (error) {
- return v.split("/")[0];
+ return v.split("/")[0]
}
},
idCard(v) {
try {
- let obj = JSON.parse(v);
- return obj.idCard;
+ let obj = JSON.parse(v)
+ return obj.idCard
} catch (error) {
- return v.split("/")[1];
+ return v.split("/")[1]
}
},
phoneNum(v) {
try {
- let obj = JSON.parse(v);
- return obj.phone;
+ let obj = JSON.parse(v)
+ return obj.phone
} catch (error) {
- return v.split("/")[2];
+ return v.split("/")[2]
}
- },
+ }
},
- mounted() {
- console.log("ModelCard data", this.data);
- console.log(this.data.baseInfo);
- console.log(this.initialIndex);
- //this.VideoPhotoData.activeName = "pic"
- },
+ mounted() {},
data() {
return {
activeName: "pic",
initialIndex: 0,
- };
+ markDialogVisible: false,
+ warningFlag: 0
+ }
},
methods: {
+ saveWarningFlag(card) {
+ saveWarning({
+ warningFlag: parseInt(this.warningFlag),
+ id: card.id,
+ correctionDescription: ""
+ })
+ .then((rsp) => {
+ if (rsp && rsp.success) {
+ card.warningFlag = parseInt(this.warningFlag)
+ this.$notify({
+ title: "淇濆瓨鎴愬姛",
+ type: "success"
+ })
+ }
+ this.markDialogVisible = false
+ })
+ .catch((e) => {
+ this.markDialogVisible = false
+ })
+ },
changeTabs(activeName, oldActiveName) {
- console.log(activeName, oldActiveName);
+ console.log(activeName, oldActiveName)
},
changeInitialIndex(index) {
- this.initialIndex = index;
+ this.initialIndex = index
},
downloadfile() {
- this.filecontent = "this is my file content";
- let a = document.createElement("a");
+ this.filecontent = "this is my file content"
+ let a = document.createElement("a")
- a.href = "data:text/json;charset=utf-8," + this.filecontent;
+ a.href = "data:text/json;charset=utf-8," + this.filecontent
// a.url = "http://192.168.20.112:6154/93,02c5aea4fc614e";
- a.download = "video.mp4";
- a.click();
- },
- },
-};
+ a.download = "video.mp4"
+ a.click()
+ }
+ }
+}
</script>
<style lang="scss">
.fontStyleForModel {
--
Gitblit v1.8.0