From 71e6a436320fbc483c3411bfbb2f966de84ebbf3 Mon Sep 17 00:00:00 2001
From: hanbaoshan <hanbaoshan@aiotlink.com>
Date: 星期四, 25 二月 2021 15:54:01 +0800
Subject: [PATCH] 朔黄添加事件标签弹框,弹窗布局;可视化大屏页面跳转测试
---
src/pages/ai/index/App.vue | 4
src/pages/shuohuangMonitorAnalyze/index/App.vue | 8
src/components/giantTree/zTree/ztree.vue | 2
src/pages/shuohuangMonitorAnalyze/components/eventVideos.vue | 80 +++++++++++++
src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue | 252 ++++++++++++++++-------------------------
5 files changed, 187 insertions(+), 159 deletions(-)
diff --git a/src/components/giantTree/zTree/ztree.vue b/src/components/giantTree/zTree/ztree.vue
index 84ef342..15a905b 100644
--- a/src/components/giantTree/zTree/ztree.vue
+++ b/src/components/giantTree/zTree/ztree.vue
@@ -276,7 +276,7 @@
color: #333;
}
.ztree .iconfenxishexiangji{
- color: #3d68e1;
+ color: #3d68e1!important;
}
.ztree li {
padding: 0;
diff --git a/src/pages/ai/index/App.vue b/src/pages/ai/index/App.vue
index 51b3a61..dd61f65 100644
--- a/src/pages/ai/index/App.vue
+++ b/src/pages/ai/index/App.vue
@@ -652,11 +652,9 @@
<div class="box-bot">
<div class="bot-left">
<div class="part-title">鍔熻兘鐗圭偣</div>
-
</div>
<div class="bot-right">
<div class="part-title">鎺ㄨ崘绠楁硶</div>
-
</div>
</div>
</div>
@@ -1177,7 +1175,7 @@
.el-dialog__header {
text-align: center;
}
- .dialog-content{
+ .dialog-content {
.box-top {
}
.box-bot {
diff --git a/src/pages/shuohuangMonitorAnalyze/components/eventVideos.vue b/src/pages/shuohuangMonitorAnalyze/components/eventVideos.vue
new file mode 100644
index 0000000..ad9e7d4
--- /dev/null
+++ b/src/pages/shuohuangMonitorAnalyze/components/eventVideos.vue
@@ -0,0 +1,80 @@
+<template>
+ <div class="event-video-content">
+ <div class="video-player">
+ <video src></video>
+ </div>
+ <div class="more-videos">
+ <div class="top">
+ <div class="title">鏇村瑙嗛</div>
+ <div class="total">鍏�<span class="num">{{total}}</span>鏉�</div>
+ </div>
+ <div class="gallery">
+ <div class="video-item" v-for="item in 11" :key="item">
+ <img src alt />
+ <div class="time"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ props: {
+ eventDetail: {
+ type: Object,
+ default: {}
+ },
+
+ }
+}
+</script>
+
+<style lang="scss">
+.event-video-content {
+ padding: 14px;
+ .video-player{
+ background: #fff;
+ margin-bottom: 14px;
+ video{
+ margin: 20px auto;
+ width: 576px;
+ height: 324px;
+ background: aquamarine;
+ }
+ }
+ .more-videos{
+ background: #fff;
+ .top{
+ padding: 10px 20px;
+ display: flex;
+ justify-content: space-between;
+ .total{
+ .num{
+ color: #0096fa;
+ }
+ }
+ }
+ .gallery{
+ display: flex;
+ flex-wrap: wrap;
+ padding: 0 20px 10px;
+ max-height: 300px;
+ overflow-y: auto;
+ // &:after{
+ // content: "";
+ // flex: auto;
+ // }
+ .video-item{
+ width: 200px;
+ height: 112.5px;
+ margin: 10px 40px;
+ background: rgb(200, 223, 251);
+ padding: 10px;
+ border: 1px solid #eee;
+ border-radius: 3px;
+ }
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
index 23901ef..a0e7169 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
@@ -26,15 +26,9 @@
v-show="!checkedConfigs.length"
class="tip"
style="padding-left: 5px; margin-top: 3px"
- >杩樻湭閫夋嫨绛涢�夋潯浠�</span
- >
- <div
- class="config-item"
- v-for="(config, index) in checkedConfigs"
- :key="index"
- >
- <span class="title">{{ config.title }}</span
- > :
+ >杩樻湭閫夋嫨绛涢�夋潯浠�</span>
+ <div class="config-item" v-for="(config, index) in checkedConfigs" :key="index">
+ <span class="title">{{ config.title }}</span> :
<span class="val" v-for="option in config.data" :key="option.id">
<!-- <template>
<div>
@@ -46,25 +40,17 @@
<i>銆�</i>
</span>
</span>
- <i
- class="el-icon-close remove"
- @click="removeCheckedConfig(config)"
- ></i>
+ <i class="el-icon-close remove" @click="removeCheckedConfig(config)"></i>
</div>
<el-button
class="clear-config-btn"
v-if="checkedConfigs.length"
size="mini"
@click="clearCheckedConfigs"
- >鍙栨秷閫夋嫨</el-button
- >
+ >鍙栨秷閫夋嫨</el-button>
</div>
<div class="optional-config">
- <div
- class="config"
- v-for="(config, index) in optionalConfigs"
- :key="index"
- >
+ <div class="config" v-for="(config, index) in optionalConfigs" :key="index">
<template v-if="config.isShow">
<div class="title">{{ config.title }}</div>
<div class="options-wrap">
@@ -73,41 +59,23 @@
:ref="'options' + config.id"
:style="{ height: fixedOneLineHeight + 'px' }"
>
- <div
- class="option"
- v-for="(option, index) in config.data"
- :key="index"
- >
+ <div class="option" v-for="(option, index) in config.data" :key="index">
<div v-show="config.isMultCheck">
<el-checkbox v-model="option.isChecked"></el-checkbox>
<span>{{ option.name }}</span>
</div>
- <div
- v-show="!config.isMultCheck"
- @click="checkOption(config, option)"
- >
+ <div v-show="!config.isMultCheck" @click="checkOption(config, option)">
<span>{{ option.name }}</span>
</div>
</div>
</div>
<div class="btns text-center" v-show="config.isMultCheck">
- <el-button size="mini" @click="cancleMultCheck(config)"
- >鍙栨秷</el-button
- >
- <el-button
- size="mini"
- type="primary"
- @click="checkOption(config)"
- >纭畾</el-button
- >
+ <el-button size="mini" @click="cancleMultCheck(config)">鍙栨秷</el-button>
+ <el-button size="mini" type="primary" @click="checkOption(config)">纭畾</el-button>
</div>
</div>
<div class="right-btns">
- <div
- class="more"
- v-if="config.showMore"
- @click="showMore(config)"
- >
+ <div class="more" v-if="config.showMore" @click="showMore(config)">
<span>鏇村</span>
<i
:class="
@@ -130,11 +98,7 @@
<div class="config" v-if="showAdvance">
<div class="title">楂樼骇閫夐」</div>
<div>
- <el-menu
- class="el-menu-demo"
- mode="horizontal"
- @select="handleSelect"
- >
+ <el-menu class="el-menu-demo" mode="horizontal" @select="handleSelect">
<el-submenu
class="config-submenu"
:popper-append-to-body="false"
@@ -148,8 +112,7 @@
:key="ind"
:index="index + '-' + ind"
@click="checkOption(config, option)"
- >{{ option.name }}</el-menu-item
- >
+ >{{ option.name }}</el-menu-item>
</el-submenu>
</el-menu>
</div>
@@ -160,22 +123,14 @@
<div class="header-bar clearfix">
<div class="left">
<div>
- <el-select
- v-model="IsFollow"
- size="mini"
- @change="filterSearchData"
- >
+ <el-select v-model="IsFollow" size="mini" @change="filterSearchData">
<el-option value label="鍏ㄩ儴"></el-option>
<el-option :value="false" label="鏈叧娉�"></el-option>
<el-option :value="true" label="宸插叧娉�"></el-option>
</el-select>
</div>
<div>
- <el-select
- v-model="IsOperate"
- size="mini"
- @change="filterSearchData"
- >
+ <el-select v-model="IsOperate" size="mini" @change="filterSearchData">
<el-option value label="鍏ㄩ儴"></el-option>
<el-option value="0" label="鏈鐞�"></el-option>
<el-option value="1" label="宸插鐞�"></el-option>
@@ -191,26 +146,15 @@
>
<i class="el-icon-menu"></i>
</div>
- <div
- class="type"
- :class="{ current: showType == 'list' }"
- @click="checkType('list')"
- >
+ <div class="type" :class="{ current: showType == 'list' }" @click="checkType('list')">
<i class="el-icon-s-operation"></i>
</div>
</div>
</div>
</div>
<div class="content" v-show="showType == 'menu'">
- <el-row :gutter="20">
- <el-col
- :xs="8"
- :sm="6"
- :md="6"
- :lg="6"
- v-for="data in tabData"
- :key="data.id"
- >
+ <el-row :gutter="20" :align="bottom">
+ <el-col :xs="8" :sm="6" :md="6" :lg="6" v-for="data in tabData" :key="data.id">
<div class="card">
<div class="video-wrap" @click="checkVideoDetail(data)">
<img :src="data.VideoCover" alt />
@@ -235,47 +179,32 @@
</div>
</div>
<div class="mark-info">
- <div
- class="abnormal"
- v-if="data.LableLst && data.LableLst.length"
- >
+ <div class="abnormal" v-if="data.LableLst && data.LableLst.length">
<span
v-for="(label, index) in data.LableLst"
:key="index"
- >{{ label.Desc +(index==data.LableLst.length-1?"":"锛�")}}</span
- >
+ >{{ label.Desc +(index==data.LableLst.length-1?"":"锛�")}}</span>
</div>
- <div v-else >
+ <div v-else>
<span>鏃犲紓甯�</span>
</div>
- <div
- class="event-tag"
- v-if="data.EventLst && data.EventLst.length"
- >
+ <div class="event-tag" v-if="data.EventLst && data.EventLst.length">
<el-tag
size="mini"
type="info"
v-for="(label, index) in data.EventLst"
:key="index"
style="margin-right:5px;margin-bottom:5px"
- >{{ label.Event }}</el-tag
- >
+ @click="checkEventVideo(label)"
+ >{{ label.Event }}</el-tag>
</div>
</div>
<div class="tag-info">
- <div
- class="tag"
- v-for="(tag, index) in data.tags"
- :key="index"
- >
- {{ tag }}
- </div>
+ <div class="tag" v-for="(tag, index) in data.tags" :key="index">{{ tag }}</div>
</div>
</div>
<div class="star" @click="toggleFollow(data)">
- <i
- :class="[data.IsFollow ? 'follow' : '', 'el-icon-star-off']"
- ></i>
+ <i :class="[data.IsFollow ? 'follow' : '', 'el-icon-star-off']"></i>
</div>
</div>
</el-col>
@@ -296,33 +225,19 @@
<el-table :data="tableData" fit ref="elTable">
<el-table-column label="鍚嶇О" prop="VideoName" sortable width="500">
<template slot-scope="scope">
- <div style="cursor: pointer" @click="checkVideoDetail(scope.row)">
- {{ scope.row.VideoName }}
- </div>
+ <div
+ style="cursor: pointer"
+ @click="checkVideoDetail(scope.row)"
+ >{{ scope.row.VideoName }}</div>
</template>
</el-table-column>
- <el-table-column
- label="澶у皬"
- prop="VideoSize"
- sortable
- ></el-table-column>
- <el-table-column
- label="淇敼鏃ユ湡"
- prop="UpdatedAt"
- sortable
- ></el-table-column>
- <el-table-column
- label="鍒涘缓鏃ユ湡"
- prop="CreatedAt"
- sortable
- ></el-table-column>
+ <el-table-column label="澶у皬" prop="VideoSize" sortable></el-table-column>
+ <el-table-column label="淇敼鏃ユ湡" prop="UpdatedAt" sortable></el-table-column>
+ <el-table-column label="鍒涘缓鏃ユ湡" prop="CreatedAt" sortable></el-table-column>
<el-table-column label="鎿嶄綔">
<template slot-scope="scope">
<div class="operation">
- <i
- class="el-icon-star-off"
- @click="toggleFollow(scope.row)"
- ></i>
+ <i class="el-icon-star-off" @click="toggleFollow(scope.row)"></i>
</div>
</template>
</el-table-column>
@@ -351,6 +266,17 @@
</div>
<video-analyze :videoDetails="selectedVideo" />
</el-dialog>
+ <el-dialog
+ class="dialog-event"
+ :visible="eventDialogVisible"
+ @close="eventDialogVisible = false"
+ >
+ <div class="title" slot="title">
+ <i class="el-icon-connection"></i>
+ <span>shoubi瑙嗛</span>
+ </div>
+ <event-videos :eventDetail="curEventDetail"></event-videos>
+ </el-dialog>
</div>
</div>
</template>
@@ -366,13 +292,14 @@
editLabel,
} from "@/api/shuohuang";
import VideoAnalyze from "./videoAnalyze";
-
+import EventVideos from "./eventVideos";
export default {
name: "SearchMain",
components: {
VideoAnalyze,
+ EventVideos
},
- data() {
+ data () {
return {
CLIP: "http://",
keyword: "",
@@ -394,7 +321,7 @@
shortcuts: [
{
text: "浠婂ぉ",
- onClick(picker) {
+ onClick (picker) {
const end = new Date();
const start = new Date();
start.setHours(0, 0, 0);
@@ -403,7 +330,7 @@
},
{
text: "鏄ㄥぉ",
- onClick(picker) {
+ onClick (picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24);
@@ -415,7 +342,7 @@
},
{
text: "杩戜笁澶�",
- onClick(picker) {
+ onClick (picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 3);
@@ -424,7 +351,7 @@
},
{
text: "杩戜竴鍛�",
- onClick(picker) {
+ onClick (picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
@@ -484,33 +411,39 @@
hiddenDanger: 1,
labelDialogVisible: false,
selectedVideo: {},
+ eventDialogVisible: false,
+ curEventDetail: {}
};
},
watch: {
checkedConfigs: {
- handler(n, o) {
+ handler (n, o) {
this.filterSearchData();
},
deep: true,
},
},
- mounted() {
+ mounted () {
this.init();
},
methods: {
- handleTabSizeChange(size) {
+ checkEventVideo (label) {
+ this.eventDialogVisible = true;
+ this.curEventDetail = label;
+ },
+ handleTabSizeChange (size) {
this.tabPageSize = size;
this.filterSearchData();
},
- handleTableSizeChange(size) {
+ handleTableSizeChange (size) {
this.tablePageSize = size;
this.filterSearchData();
},
- handleCurrentChange() {
+ handleCurrentChange () {
this.filterSearchData();
},
//浜岀骇鏌ヨ
- filterSearchData() {
+ filterSearchData () {
let _this = this;
let isFollow = "";
if (this.IsFollow === "") {
@@ -552,12 +485,12 @@
} else {
_this.tabTotal = res.total;
_this.tabData = res.data;
-
+
}
});
},
//涓�绾ф煡璇�
- init() {
+ init () {
let _this = this;
let query = {
KeyWord: this.keyword,
@@ -581,8 +514,8 @@
_this.tabTotal = res.total;
_this.tabData = res.data;
// debugger
- _this.tabData = _this.tabData.map(function (item) {
- const set =new Set()
+ _this.tabData = _this.tabData.map(function (item) {
+ const set = new Set()
item.LableLst.forEach(function (label) {
label.Desc.split("锛�").forEach(function (d) {
set.add(d)
@@ -590,9 +523,9 @@
})
const lblst = []
set.forEach(function (d) {
- lblst.push({Desc:d})
+ lblst.push({ Desc: d })
})
- item.LableLst=lblst
+ item.LableLst = lblst
return item
})
}
@@ -640,7 +573,7 @@
});
});
},
- toggleFollow(data) {
+ toggleFollow (data) {
data.IsFollow = !data.IsFollow;
this.updataVideo(data);
if (data.IsFollow) {
@@ -650,24 +583,24 @@
});
}
},
- updataVideo(data) {
+ updataVideo (data) {
let _this = this;
updateVideoAnalyze(data).then((res) => {
//浜岀骇鏌ヨ
});
},
- checkVideoDetail(data) {
+ checkVideoDetail (data) {
let _this = this;
_this.selectedVideo = data;
_this.videoDialogVisible = true;
},
- checkFollow() {},
- checkType(type) {
+ checkFollow () { },
+ checkType (type) {
this.showType = type;
this.filterSearchData();
},
- clearCheckedConfigs() {
+ clearCheckedConfigs () {
this.checkedConfigs.forEach((config) => {
config.isShow = true;
config.data.forEach((d) => {
@@ -677,7 +610,7 @@
this.checkedConfigs = [];
this.showAdvance = true;
},
- removeCheckedConfig(config) {
+ removeCheckedConfig (config) {
config.isShow = true;
if (config.IsAdvanced) {
this.showAdvance = true;
@@ -688,7 +621,7 @@
let index = this.checkedConfigs.findIndex((one) => one.id == config.id);
this.checkedConfigs.splice(index, 1);
},
- checkOption(config, option) {
+ checkOption (config, option) {
if (option) {
option.isChecked = true;
}
@@ -704,20 +637,20 @@
// })
},
- cancleMultCheck(config) {
+ cancleMultCheck (config) {
config.isMultCheck = false;
config.data.forEach((opt) => {
opt.isChecked = false;
});
},
- handleSelect(key, keyPath) {},
- showMore(config) {
+ handleSelect (key, keyPath) { },
+ showMore (config) {
config.isShowMore = !config.isShowMore;
this.$refs[`options${config.id}`][0].style.height = config.isShowMore
? this.$refs[`options${config.id}`][0].scrollHeight + "px"
: this.fixedOneLineHeight + "px";
},
- toggleMultCheck(config) {
+ toggleMultCheck (config) {
config.isMultCheck = !config.isMultCheck;
this.optionalConfigs.forEach((conf) => {
if (conf.id == config.id) {
@@ -726,7 +659,7 @@
conf.isMultCheck = false;
});
},
- dataSearch() {
+ dataSearch () {
console.log(this.checkedConfigs);
this.$forceUpdate();
},
@@ -927,6 +860,10 @@
}
.content {
padding-top: 14px;
+ // .el-row {
+ // display: flex;
+ // flex-wrap: wrap;
+ // }
.el-col {
margin-bottom: 10px;
}
@@ -936,7 +873,7 @@
text-align: left;
border: 1px solid #dedede;
border-radius: 5px;
- height: 350px;
+ //height: 390px;
.video-wrap {
border-radius: 3px;
width: 100%;
@@ -971,7 +908,7 @@
.abnormal {
color: red;
}
- .event-tag{
+ .event-tag {
margin-top: 10px;
}
}
@@ -1041,6 +978,17 @@
font-size: 18px;
}
}
+ .dialog-event {
+ z-index: 2096 !important;
+ .el-dialog {
+ width: 1000px;
+ height: 800px;
+ background: #efefef;
+ .el-dialog__body{
+ padding: 0;
+ }
+ }
+ }
}
}
</style>
\ No newline at end of file
diff --git a/src/pages/shuohuangMonitorAnalyze/index/App.vue b/src/pages/shuohuangMonitorAnalyze/index/App.vue
index 5f9eab7..1ec5197 100644
--- a/src/pages/shuohuangMonitorAnalyze/index/App.vue
+++ b/src/pages/shuohuangMonitorAnalyze/index/App.vue
@@ -54,9 +54,11 @@
//閫氱煡褰撳墠娲诲姩椤祎able(濡傛灉鏈�) doLayout
},
menuChange (path) {
- // if(path == 'taskscreen'){
- // window.location.href = window.location.href+'taskscreen/index.html'
- // }
+ if(path == 'taskscreen'){
+ window.location.href = window.location.href+'taskscreen/index.html'
+ }else if(path == 'hiddendangerscreen'){
+ window.location.href = window.location.href+'hiddendangerscreen/index.html'
+ }
this.actPage = path;
}
}
--
Gitblit v1.8.0