From 93a26507f76156fa65aead1515c430688c089e1d Mon Sep 17 00:00:00 2001 From: hanbaoshan <hanbaoshan@aiotlink.com> Date: 星期一, 22 二月 2021 15:49:01 +0800 Subject: [PATCH] 新版目录树样式调试及状态更新调试;朔黄批量导入列表调试;视频检索页面添加处理参数,添加标注接口添加参数;分页器展示优化,默认检索时间调整;转储设备接口调试 --- src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue | 549 +++++++++++------------------------------------------- 1 files changed, 111 insertions(+), 438 deletions(-) diff --git a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue index e18d1f2..2d8b3dd 100644 --- a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue +++ b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue @@ -117,17 +117,17 @@ <div class="header-bar clearfix"> <div class="left"> <div> - <el-select v-model="watch" size="mini"> + <el-select v-model="IsFollow" size="mini" @change="filterSearchData"> <el-option value label="鍏ㄩ儴"></el-option> - <el-option value="1" label="鏈叧娉�"></el-option> - <el-option value="2" 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="settle" size="mini"> + <el-select v-model="IsOperate" size="mini" @change="filterSearchData"> <el-option value label="鍏ㄩ儴"></el-option> - <el-option value="1" label="鏈鐞�"></el-option> - <el-option value="2" label="宸插鐞�"></el-option> + <el-option value="0" label="鏈鐞�"></el-option> + <el-option value="1" label="宸插鐞�"></el-option> </el-select> </div> </div> @@ -151,26 +151,26 @@ </div> <div class="video-info"> <div class="base-info"> - <div> + <div class="flex-box"> <label>杞﹀彿:</label> <span>{{data.CarNumber}}</span> </div> - <div> + <div class="flex-box"> <label>杞︽:</label> <span>{{data.TrainNumber}}</span> </div> - <div> + <div class="flex-box"> <label>鏃堕棿:</label> <span>{{data.VideoDate}}</span> </div> - <div> + <div class="flex-box"> <label>鍙告満|鍓徃鏈�:</label> <span>{{data.Driver1}}|{{data.Driver2}}</span> </div> </div> <div class="mark-info"> - <div class="abnormal" v-if="data.IsUnusual==='1'"> - <span v-for="(mark,index) in data.marks" :key="index">{{mark}}</span> + <div class="abnormal" v-if="data.LableLst&&data.LableLst.length"> + <span v-for="(label,index) in data.LableLst" :key="index">{{label.Desc}}</span> </div> <div v-else> <span>鏃犲紓甯�</span> @@ -187,6 +187,7 @@ </el-col> </el-row> <el-pagination + class="pagination-center" background @size-change="handleTabSizeChange" @current-change="handleCurrentChange" @@ -208,14 +209,15 @@ <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> + <template slot-scope="scope"> <div class="operation"> - <i class="el-icon-star-off" style="font-size: 18px;"></i> + <i class="el-icon-star-off" @click="toggleFollow(scope.row)"></i> </div> </template> </el-table-column> </el-table> <el-pagination + class="pagination-center" @size-change="handleTableSizeChange" @current-change="handleCurrentChange" :current-page.sync="curTablePage" @@ -229,7 +231,6 @@ class="dialog-video" :visible="videoDialogVisible" @close="videoDialogVisible=false" - :append-to-body="false" > <div slot="title" class="title"> <div class="center"> @@ -237,146 +238,7 @@ <span>鎾斁瑙嗛</span> </div> </div> - <div class="content"> - <div class="content-top"> - <div class="grid-check"> - <span - :class="guid === 1 ? 'iconfont icongongge1 activegongge':'iconfont icongongge1'" - @click="setGuid(1)" - ></span> - <span - :class="guid === 2 ? 'iconfont icongongge activegongge':'iconfont icongongge'" - @click="setGuid(2)" - ></span> - <span - :class="guid === 3 ? 'iconfont icongongge2 activegongge':'iconfont icongongge2'" - @click="setGuid(3)" - ></span> - </div> - <div class="video-area"> - <div class="info-list block"> - <p class="title-partment">鐩稿叧瑙嗛</p> - <!-- <div class="video-name" v-for="video in videoDetails.videoList" :key="video.id"> - <i class="el-icon-film"></i> - <span>{{video.name}}</span> - </div>--> - <div - class="video-name" - :class="{'current':curVideo.ID==video.ID}" - @click="checkVideo(video,index)" - v-for="(video,index) in videoDetails.relativeVideos" - :key="video.ID" - > - <i class="el-icon-film"></i> - <span>{{video.Event}}</span> - </div> - </div> - <div class="players" ref="playerWrap"> - <div - class="video-item" - :ref="`gridVideoItem_${index}`" - v-for="(item,index) in videoWrapArr" - :key="index" - - > - <template v-if="index<=videoArrs.length-1"> - <div :class="{'currentPlayer':curVideo.ID==videoArrs[index].ID}"> - {{videoArrs[index].ID}} - <img - :src="CLIP+videoArrs[index].VideoCover" - style="width:100px" - /> - </div> - </template> - </div> - <!-- <div - class="video-item" - :class="{'active':item.ID==curVideo.ID}" - :ref="`gridVideoItem_${index}`" - v-for="(item,index) in videoWrapArr" - :key="index" - > - - </div>--> - </div> - </div> - </div> - <div class="content-bottom"> - <div class="bot-left block"> - <p class="title-partment">蹇�熸爣娉�</p> - <div class="flex-box" style="height:28px;"> - <label style="padding-right:10px;">闅愭偅闂:</label> - <el-radio v-model="curVideo.IsUnusual" label="0">鏃犲紓甯�</el-radio> - <el-radio v-model="curVideo.IsUnusual" label="1">鏈夊紓甯�</el-radio> - <el-button - icon="el-icon-plus" - size="mini" - v-show="curVideo.IsUnusual==1" - type="primary" - @click="addLabel(curVideo)" - >娣诲姞鏍囨敞</el-button> - </div> - <div class="flex-box"> - <label>鏍囨敞淇℃伅:</label> - <div class="mark-list"> - <div class="mark" v-for="mark in curVideo.LableLst" :key="mark.ID"> - <div class="time" v-if="mark.length"> - <span>{{mark[0].Time}}</span> - <i class="el-icon-edit" @click="editCurLabel(mark)"></i> - <i - class="el-icon-delete" - @click="removeCurLabel(mark[0].ParentID,mark[0].Time)" - ></i> - </div> - <div class="label-content"> - <span - v-for="content in mark" - :key="content.ID" - >{{findLabelNameById(content.CodeID)}}</span> - </div> - </div> - </div> - </div> - </div> - <div class="bot-right block"> - <p class="title-partment">瑙嗛璇︽儏</p> - <div class="base-info"> - <div> - <label>杞﹀彿:</label> - <span>{{videoDetails.CarNumber}}</span> - </div> - <div> - <label>杞︽:</label> - <span>{{videoDetails.TrainNumber}}</span> - </div> - <div> - <label>鏃堕棿:</label> - <span>{{videoDetails.VideoDate}}</span> - </div> - <div> - <label>鍙告満|鍓徃鏈�:</label> - <span>{{videoDetails.Driver1}}|{{videoDetails.Driver2}}</span> - </div> - </div> - </div> - </div> - </div> - </el-dialog> - <el-dialog - class="label-dialog" - :visible="labelDialogVisible" - @close="labelDialogVisible=false" - :append-to-body="false" - > - <div class="label-check"> - <el-checkbox-group v-model="labelCheckedList"> - <el-checkbox v-for="item in labelOptions" :key="item.ID" :label="item.ID">{{item.Name}}</el-checkbox> - </el-checkbox-group> - </div> - <div class="btns"> - <el-button @click="cancelLabelChecked" size="small">鍙栨秷</el-button> - <el-button @click="submitLabelChecked()" size="small" type="primary">纭畾</el-button> - </div> + <video-analyze :videoDetails="selectedVideo" /> </el-dialog> </div> </div> @@ -384,13 +246,20 @@ <script> import { getlstInit, updateVideoAnalyze, getlst, getRelatedVideoInfo, getLabelMap, delLabel, editLabel } from '@/api/shuohuang'; +import VideoAnalyze from "./videoAnalyze" export default { - data () { + name: "SearchMain", + components: { + VideoAnalyze + }, + data() { return { - CLIP: 'http://192.168.20.113/', + CLIP: 'http://', keyword: '', - searchTime: [this.$moment(new Date().getTime() - 3600 * 1000 * 24 * 3).format("YYYY-MM-DD HH:mm:ss"), this.$moment(new Date()).format("YYYY-MM-DD HH:mm:ss")], + IsFollow: '', + //searchTime: [this.$moment(new Date().getTime() - 3600 * 1000 * 24 * 5).format("YYYY-MM-DD HH:mm:ss"), this.$moment(new Date()).format("YYYY-MM-DD HH:mm:ss")], + searchTime: [new Date(2020,0,1,0,0,0),new Date(2020,11,31,23,59,59)], curTabPage: 1, curTablePage: 1, tabPageSize: 8, @@ -402,7 +271,7 @@ pickerOptions: { shortcuts: [{ text: '浠婂ぉ', - onClick (picker) { + onClick(picker) { const end = new Date(); const start = new Date(); start.setHours(0, 0, 0); @@ -410,7 +279,7 @@ } }, { text: '鏄ㄥぉ', - onClick (picker) { + onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24); @@ -421,7 +290,7 @@ } }, { text: '杩戜笁澶�', - onClick (picker) { + onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 3); @@ -429,7 +298,7 @@ } }, { text: '杩戜竴鍛�', - onClick (picker) { + onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); @@ -443,8 +312,8 @@ highLevelConfigs: [], showAdvance: true, fixedOneLineHeight: 40, - watch: '', settle: '', + IsOperate: '', showType: 'menu', tableData: [ { name: 'SS4B115_06_B鑺備簩绔徃鏈哄_20201115_091500.mp4', size: '17.66M', updateTime: '2020-11-04 15:41', createTime: '2020-11-04 15:41' }, @@ -454,129 +323,55 @@ { id: 'ss1', no: 'SS4B115', frequency: '8084', time: '2020-09-21 20:45:08', driver: '寮犱笁', marks: ['鏈懠鍞ゃ�佸懠鍞や笉鏍囧噯', '瀛︿範鍙告満鏈簲绛�'], markType: 1, tags: ['杩涘嚭绔�', '鍙告満绂诲矖'], follow: true }, { id: 'ss2', no: 'SS4B115', frequency: '8084', time: '2020-09-21 20:45:08', driver: '寮犱笁', marks: [], markType: 0, tags: ['杩涘嚭绔�', '鍙告満绂诲矖'], follow: false } ], - videoDialogVisible: false, - videoDetails: {}, - guid: 1, - curVideo: {}, - videoArrs: [], - videoWrapArr: [], hiddenDanger: 1, labelDialogVisible: false, - labelOptions: [{ id: 'whh', name: '鏈懠鍞ゃ�佸懠鍞や笉鏍囧噯' }, { id: 'jsbz', name: '绮剧涓嶆尟銆佽繍琛屼腑鐫¤' }, { id: 'xxsj', name: '瀛︿範鍙告満鏈簲绛�' }, { id: 'myhb', name: '娌℃湁鍚庨儴鐬湜銆佷笉鎸夎瀹氬仛闃叉簻鎺柦' }], - labelCheckedList: [], + selectedVideo: {} } }, watch: { checkedConfigs: { - handler (n, o) { - // let filterQuerys = []; - // n.forEach(config => { - // let checkedOpts = config.data.filter(option => option.isChecked); - // if (checkedOpts.length) { - // var linkOpts = checkedOpts.map(opt => opt.name); - // linkOpts = linkOpts.join(','); - // let obj = {}; - // obj[config.NameEn] = linkOpts; - // filterQuerys.push(obj); - // } - // }) - // console.log(filterQuerys) - + handler(n, o) { this.filterSearchData() }, deep: true } }, - mounted () { - // let mockConfigs = [ - // { id: 'jch', isHighLevel: false, title: '鏈鸿溅鍙�', data: [{ name: '鍏ㄩ儴', id: '' }, { name: 'K24', id: 'k24' }, { name: 'G172', id: 'g172' }, { name: 'K254', id: 'k254' }, { name: 'K264', id: 'k264' }, { name: 'G132', id: 'g132' }, { name: 'K257', id: 'k257' }, { name: 'K269', id: 'k269' }, { name: 'G176', id: 'g176' }, { name: 'G137', id: 'g137' }, { name: 'K297', id: 'k297' }, { name: 'K209', id: 'k209' }, { name: 'G777', id: 'g777' }, { name: 'G337', id: 'g337' }, { name: 'K277', id: 'k277' }, { name: 'K299', id: 'k299' }, { name: 'G866', id: 'g866' }, { name: 'K877', id: 'k877' }, { name: 'K699', id: 'k699' }, { name: 'G906', id: 'g906' }, { name: 'L677', id: 'l677' }, { name: 'M987', id: 'm987' }] }, - // { id: 'cc', isHighLevel: false, title: '杞︽', data: [{ name: '鍏ㄩ儴', id: '' }, { name: 'SS344', id: 'SS344' }, { name: 'SS345', id: 'SS345' }, { name: 'SS765', id: 'SS765' }, { name: 'SS776', id: 'SS776' }, { name: 'SS676', id: 'SS676' }, { name: 'SS876', id: 'SS876' }, { name: 'SS779', id: 'k779' }, { name: 'SS976', id: 'SS976' },] }, - // { id: 'sj', isHighLevel: true, title: '鍙告満', data: [{ name: '寮犱笁', id: 'zs' }, { name: '鏉庢柉', id: "ls" }, { name: '鏉庢柉鐗�', id: "lst" }] }, - // { id: 'lk', isHighLevel: true, title: '璺喌', data: [{ name: '鏍囩ず鐗�', id: 'bsp' }, { name: '淇″彿鏈�', id: "xhj" }, { name: '寮亾', id: "wd" }] } - // ]; - - // mockConfigs.forEach(config => { - // this.$set(config, 'isShow', true); - // config.data.forEach(item => { - // this.$set(item, 'isChecked', false); - // }) - // if (config.isHighLevel) { - // this.highLevelConfigs.push(config); - // } else { - // this.$set(config, 'isMultCheck', false); - // this.$set(config, 'showMore', false); - // this.optionalConfigs.push(config); - // } - // }) - // this.$nextTick(() => { - // this.optionalConfigs.forEach(config => { - // if (this.$refs[`options${config.id}`][0].scrollHeight > this.fixedOneLineHeight) { - // config.showMore = true; - // this.$set(config, 'isShowMore', false); - // } else { - // config.showMore = false; - // } - // }); - // console.log(this.optionalConfigs); - // }); + mounted() { this.init(); - this.renderLabelOpts(); }, methods: { - editCurLabel (mark) { - let arr = []; - mark.forEach(label => { - arr.push(label.CodeID) - }); - this.labelCheckedList = arr; - this.labelDialogVisible = true; - }, - removeCurLabel (ParentID, Time) { - delLabel({ ParentID, Time }).then(res => { - - }) - }, - renderLabelOpts () { - let _this = this; - getLabelMap().then(res => { - _this.labelOptions = res.data - }) - }, - findLabelNameById (id) { - debugger - let label = this.labelOptions.find(label => label.ID == id); - return label.Name; - }, - checkVideo (video,index) { - this.curVideo = video; - debugger - if(index>0&&this.guid==1){ - this.videoWrapArr - } - }, - handleTabSizeChange (size) { - debugger + 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 === '') { + isFollow = '' + } else if (!!this.IsFollow) { + isFollow = '1' + } else { + isFollow = '0' + } let query = { KeyWord: this.keyword, StartDate: this.searchTime[0], EndDate: this.searchTime[1], - PageIndex: this.showType == 'list' ? this.curTablePage : this.showType == 'list', + PageIndex: this.showType == 'list' ? this.curTablePage : this.curTabPage, PageSize: this.showType == 'list' ? this.tablePageSize : this.tabPageSize, - IsDetail: this.showType == 'list' + IsDetail: this.showType == 'list', + IsFollow: isFollow, + IsOperate: this.IsOperate }; let filterQuerys = []; this.checkedConfigs.forEach(config => { @@ -602,7 +397,7 @@ }) }, //涓�绾ф煡璇� - init () { + init() { let _this = this; let query = { KeyWord: this.keyword, @@ -610,7 +405,9 @@ EndDate: this.searchTime[1], PageIndex: this.showType == 'list' ? this.curTablePage : this.showType == 'list', PageSize: this.showType == 'list' ? this.tablePageSize : this.tabPageSize, - IsDetail: this.showType == 'list' + IsDetail: this.showType == 'list', + IsFollow: this.IsFollow, + IsOperate: this.IsOperate, }; this.optionalConfigs = []; this.highLevelConfigs = []; @@ -631,6 +428,12 @@ obj.id = config.Node[key] return obj }); + // config.data = config.Node.map((item) => { + // let obj = {}; + // obj.name = item[0]; + // obj.id = item[1]; + // return obj; + // }); config.id = config.ID; config.title = config.NameZn; config.data.forEach(item => { @@ -658,7 +461,7 @@ }) }, - toggleFollow (data) { + toggleFollow(data) { data.IsFollow = !data.IsFollow; this.updataVideo(data); if (data.IsFollow) { @@ -668,81 +471,27 @@ }); } }, - updataVideo (data) { + updataVideo(data) { let _this = this; updateVideoAnalyze(data).then(res => { //浜岀骇鏌ヨ }); }, - cancelLabelChecked () { - this.labelDialogVisible = false; - }, - submitLabelChecked () { - console.log(this.labelCheckedList) - debugger - //this.curVideo - //this.curVideo.HotPoint[0].Time - editLabel({ ParentID: this.curVideo.ID + '', Time: this.curVideo.HotPoint[0].Time, CodeID: this.labelCheckedList.join(',') }).then(res => { - debugger - - }) - - }, - addLabel (video) { - this.labelDialogVisible = true; - }, - setGuid (guid) { + checkVideoDetail(data) { let _this = this; - // for(var i = 0; i < Math.pow(guid,2); i++){ - // if(i>this.videoArrs.length-1){ - // this.videoWrapArr[i] = this.videoArrs[i] - // }else{ - // this.videoWrapArr[i] = {} - // } - // } - this.videoWrapArr = Math.pow(guid, 2); - - this.$nextTick(() => { - for (var i = 0; i < Math.pow(guid, 2); i++) { - this.$refs[`gridVideoItem_${i}`][0].style.width = this.$refs['playerWrap'].offsetWidth / guid + 'px'; - this.$refs[`gridVideoItem_${i}`][0].style.height = this.$refs['playerWrap'].offsetHeight / guid + 'px'; - - } - }) + _this.selectedVideo = data; + _this.videoDialogVisible = true; }, - checkVideoDetail (data) { - this.videoDetails = data; - let _this = this; - getRelatedVideoInfo({ UniqeID: data.UniqeID }).then(res => { - _this.videoDetails.relativeVideos = res.data; - _this.curVideo = res.data[0]; - _this.videoArrs = res.data; - // _this.videoWrapArr.push(res.data[0]); - _this.setGuid(1) - _this.videoDialogVisible = true; - }) - }, - checkFollow () { + checkFollow() { }, - checkType (type) { + checkType(type) { this.showType = type; - // let filterQuerys = []; - // this.checkedConfigs.forEach(config => { - // let checkedOpts = config.data.filter(option => option.isChecked); - // if (checkedOpts.length) { - // var linkOpts = checkedOpts.map(opt => opt.name); - // linkOpts = linkOpts.join(','); - // let obj = {}; - // obj[config.NameEn] = linkOpts; - // filterQuerys.push(obj); - // } - // }) this.filterSearchData() }, - clearCheckedConfigs () { + clearCheckedConfigs() { this.checkedConfigs.forEach(config => { config.isShow = true; config.data.forEach(d => { @@ -752,7 +501,7 @@ this.checkedConfigs = []; this.showAdvance = true; }, - removeCheckedConfig (config) { + removeCheckedConfig(config) { config.isShow = true; if (config.IsAdvanced) { this.showAdvance = true; @@ -763,7 +512,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; } @@ -780,20 +529,20 @@ }, - cancleMultCheck (config) { + cancleMultCheck(config) { config.isMultCheck = false; config.data.forEach(opt => { opt.isChecked = false; }); }, - handleSelect (key, keyPath) { + handleSelect(key, keyPath) { }, - showMore (config) { + 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) { @@ -802,7 +551,7 @@ conf.isMultCheck = false; }) }, - dataSearch () { + dataSearch() { console.log(this.checkedConfigs); this.$forceUpdate(); }, @@ -814,6 +563,9 @@ <style lang="scss"> .search-for-video-analyze { padding: 20px 30px; + .flex-box { + display: flex; + } .filter-area { .input-area { display: flex; @@ -922,12 +674,12 @@ padding: 0px 12px; border: 1px solid #ccc; &:hover { - color: #6486e7; - border-color: #6486e7; + color: #7695ec; + border-color: #7695ec; } &.checked { - color: #3d68e1; - border-color: #3d68e1; + color: #409eff; + border-color: #409eff; } } } @@ -977,12 +729,15 @@ padding: 2px 5px; cursor: pointer; border: 1px solid #eee; + background-color: #ecf0fc; border-radius: 3px; + color: #777; &.menu { margin-right: 10px; } &.current { - border-color: #3d68e1; + border-color: #409eff; + background-color: #fff; } } } @@ -999,12 +754,22 @@ text-align: left; border: 1px solid #dedede; border-radius: 5px; + height: 350px; .video-wrap { - background: aliceblue; border-radius: 3px; + width: 100%; + padding-top: 56.25%; + height: 0; + position: relative; img { + position: absolute; + top: 0; width: 100%; - border-radius: 3px; + height: 100%; + object-fit: contain; + // width: 100%; + // max-height: 200px; + // border-radius: 3px; } } .video-info { @@ -1041,8 +806,9 @@ font-size: 20px; right: 10px; bottom: 10px; + color: #ccc; .follow { - color: #3d68e1; + color: #409eff; } } } @@ -1056,10 +822,16 @@ cursor: pointer; } } + .pagination-center{ + text-align: center; + margin: 10px auto; + } } .dialog-video { + z-index: 2096 !important; .el-dialog { width: 1180px; + height: 918px; } .el-dialog__body { background: #f5f5f5; @@ -1067,6 +839,7 @@ } .title-partment { font-size: 14px; + font-weight: 500; color: #333; line-height: 18px; margin-bottom: 8px; @@ -1075,112 +848,12 @@ background: #fff; padding: 10px; border-radius: 3px; + .flex-box > label { + color: #777; + } } .title { font-size: 18px; - } - .content { - padding: 15px; - text-align: left; - .content-top { - margin-bottom: 10px; - .grid-check { - text-align: right; - margin-bottom: 6px; - span { - font-size: 20px; - color: #cacaca; - padding-left: 12px; - cursor: pointer; - } - } - .video-area { - display: flex; - .info-list { - width: 160px; - margin-right: 10px; - .video-name { - cursor: pointer; - color: #666; - margin-bottom: 10px; - &.current { - color: #3d68e1; - } - i { - padding-right: 4px; - } - } - } - .players { - width: 960px; - height: 540px; - display: flex; - flex-wrap: wrap; - .video-item { - background: black; - border: 1px solid #fff; - box-sizing: border-box; - .currentPlayer { - border: 2px solid aqua; - } - } - } - } - } - .content-bottom { - display: flex; - .bot-left { - flex: 1; - .flex-box { - align-items: baseline; - label { - padding-right: 10px; - } - .mark-list { - .time { - cursor: pointer; - font-size: 15px; - font-weight: bold; - color: #409eff; - i[class^='el-icon'] { - padding: 3px; - } - } - .label-content { - font-size: 13px; - padding: 4px 0; - color: #888; - } - } - } - } - .bot-right { - width: 210px; - margin-left: 10px; - label { - color: #999; - padding-right: 8px; - } - } - } - } - } - .label-dialog { - .el-dialog { - width: 700px; - .label-check { - min-height: 400px; - margin-bottom: 20px; - .el-checkbox-group { - display: flex; - flex-wrap: wrap; - > label { - width: 50%; - text-align: left; - margin: 0; - } - } - } } } } -- Gitblit v1.8.0