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/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue | 252 ++++++++++++++++++++------------------------------ 1 files changed, 100 insertions(+), 152 deletions(-) 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 -- Gitblit v1.8.0