From 0c2a0d0aaafe2d4beac67bf16c505d95105dcc48 Mon Sep 17 00:00:00 2001 From: odc.xiaohui <xiaohui@Q1> Date: 星期四, 12 一月 2023 09:26:57 +0800 Subject: [PATCH] 2023/1/12 肖辉 审核管理图标修改 --- src/views/video/index.vue | 519 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 429 insertions(+), 90 deletions(-) diff --git a/src/views/video/index.vue b/src/views/video/index.vue index 673cada..768e4ae 100644 --- a/src/views/video/index.vue +++ b/src/views/video/index.vue @@ -1,113 +1,452 @@ <template> - <el-container> - <el-aside width="200px"> - <div style="line-height: 40px;text-align: left;padding: 0 20px 0 10px;"> - <span style="color:rgb(75, 155, 183);font-weight: 500; width: 196px;">缁勭粐鏈烘瀯</span> - <el-input placeholder="璇疯緭鍏ユ満鏋�"></el-input> - </div> - <el-tree :data="treedata" :props="defaultProps" @node-click="handleNodeClick"></el-tree> - - + <el-container class="video-container" style="height: 100%"> + <el-aside heigth="100%" width="200px"> + <department-aside @selectedDepartment="selectedDepartment" /> </el-aside> - <el-container> - <el-header style="display:flex;justify-content: space-between;"> - <div> - <span style="color:rgb(75, 155, 183);font-weight: 500;text-align: left; font-size: 12px;">鏁翠綋瓒嬪娍</span> + <el-container class="video-body-right"> + <el-header style="display: flex; flex-direction: column; height: 120px"> + <div + style="display: flex; justify-content: space-between; height: 80px" + > + <span + style=" + color: rgb(75, 155, 183); + font-weight: 500; + text-align: left; + font-size: 16px; + " + >鏁翠綋瓒嬪娍</span + > + <el-date-picker class="video-time-select" v-model="value" type="date" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> </div> - <el-date-picker v-model="value" type="date" placeholder="閫夋嫨鏃ユ湡"> - </el-date-picker> + <!-- <div style="height: 60px; display: flex; justify-content: flex-start"> + <el-button class="button-one"> 瑙嗛棰勮 </el-button> + <el-button class="button-two"> 瑙嗛宸℃煡 </el-button> + <el-button class="button-third"> 鍥剧墖宸℃煡 </el-button> + </div> --> </el-header> - <el-main> - <video id="my-video" class="video-js" controls preload="auto" width="100%" height="100%" - poster="MY_VIDEO_POSTER.jpg" data-setup="{}"> - <source - src="http://vali-g1.cp31.ott.cibntv.net/youku/65730720cb94e7220271a3c96/0300080100632D30A3E43019FD116537F5162F-1035-48AC-BE1B-602DF0E92893.mp4?sid=166729534400010004780_00_Bda935cf9a33346c593fc27da8e694df3&sign=db39289573d143cf6e1ad8d8dff36682&ctype=50&si=183&psid=c732c4364319e7ef4685d8f1a568015941346" - type="video/mp4" /> - <source src="MY_VIDEO.webm" type="video/webm" /> - <p class="vjs-no-js"> - To view this video please enable JavaScript, and consider upgrading to a - web browser that - <a href="https://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a> - </p> - </video> + <el-main style="display: flex; flex-wrap: wrap; overflow-y: scroll"> + <div + v-for="item in videoData" + :key="item.id" + style=" + height: 360px; + width: 400px; + position: relative; + margin-left: 20px; + " + > + <div + style=" + color: rgb(75, 155, 183); + font-size: 11px; + line-height: 18px; + position: absolute; + z-index: 1; + left: 50px; + " + > + {{ item.community }}-{{ item.name }} + </div> + <video + :id="item.id" + class="video-js" + controls + preload="auto" + width="400px" + height="300px" + type="video/mp4" + ></video> + <div class="button-div"> + <div @click="loadVideo(item)">鏌ョ湅瑙嗛</div> + <div>瑙嗛涓婃姤</div> + <div @click="create(item)">瀵硅</div> + </div> + </div> </el-main> + <el-dialog + :visible.sync="dialogCreate" + title="鏌ョ湅瑙嗛" + v-show="dialogCreate" + :before-close="handleClose2" + > + <div class="dom" style="width: 100%; height: 600px; position: relative"> + <div id="dom1" class="dom1"></div> + <div id="dom2" class="dom2"></div> + <div id="dom3" class="dom3"></div> + </div> + </el-dialog> + <el-footer> + <div style="margin-bottom: 0"> + <el-pagination + layout="prev, pager, next" + @current-change="currentPageChange" + :total="totalNum" + :page-size="pageSize" + ></el-pagination> + </div> + </el-footer> </el-container> </el-container> </template> + +<script> +// import "../../video_lib/DHWs.js"; +import departmentAside from "@/views/operate/fivepack/threepack/components/aside"; +import videoPoint from "@/api/system/videoPoint"; + +export default { + components: { departmentAside }, + data() { + return { + currentPage: 1, + totalNum: 7, + pageSize: 8, + videoData: [], + value: null, + dialogCreate: false, + cutPosX: 10, + cutPosY: 10, + cutWidth: 100, + cutHeight: 100, + crtPosX: 0, + crtPosY: 0, + crtWidth: 1000, + crtHeight: 600, + domId: "dom1", + ctrl: "ctrl1", + }; + }, + + created() { + this.getVideoPointList(); + }, + mounted() {}, + methods: { + loadVideo(item) { + if (item.platResourceId) { + if (Hls.isSupported()) { + var video = document.getElementById(item.id); + var hls = new Hls(); + videoPoint.getVideoPointUrl(item.platResourceId).then((res) => { + if (res.code === 0) { + hls.loadSource(res.data); + hls.attachMedia(video); + // hls.on(Hls.Events.MANIFEST_PARSED, function () { + // video.play(); + // document.body.addEventListener( + // "click", + // function () { + // video.play(); + // }, + // false + // ); + // }); + setTimeout(() => { + video.play(); + }, 2000); + } + }); + } + } else { + this.$message.error("鏆傛棤瑙嗛"); + } + }, + getVideoPointList(data) { + let communityId, streetId; + if (data) { + communityId = data.id; + streetId = data.parentId; + } + videoPoint + .getVideoPointList({ + current: this.currentPage, + size: this.pageSize, + communityId, + streetId, + }) + .then(({ records, total }) => { + this.videoData = records; + this.totalNum = total; + }) + .catch((err) => this.$message.error(err)); + }, + selectedDepartment(data) { + this.getVideoPointList(data); + }, + currentPageChange(page) { + this.currentPage = page; + this.getVideoPointList(); + }, + handleClose2() { + this.dialogCreate = false; + this.destroy(); + }, + login() { + // 璋冪敤鐧诲綍鎺ュ彛 + this.ws.detectConnectQt().then((res) => { + if (res) { + // 杩炴帴瀹㈡埛绔垚鍔� + this.ws.login({ + loginIp: "183.245.159.161", + loginPort: "8282", + userName: "suichang", + userPwd: "a12345677", + https: 1, + }); + this.$message.info("鐧诲綍涓�..."); + this.ws.on("loginState", (res) => { + this.isLogin = res; + if (res) { + this.$message.success("鐧诲綍鎴愬姛"); + this.activePanel = "key2"; + } else { + this.$message.info("鐧诲綍澶辫触"); + } + }); + } else { + // 杩炴帴瀹㈡埛绔け璐� + this.$message.info("璇烽噸鏂板畨瑁呭鎴风"); + } + }); + }, + logout() { + // 璋冪敤鐧诲嚭鎺ュ彛 + this.ws.logout({ + loginIp: this.loginIp, + }); + }, + create(item) { + if (item.code) { + const DHWsInstance = DHWs.getInstance(); + this.ws = DHWsInstance; + console.log(this.ws); + this.login(); + // 璋冪敤鍒涘缓鎺т欢鎺ュ彛 + // if (!this.isLogin) { + // this.$message.info('姝e湪鐧婚檰瀹㈡埛绔紝璇风◢绛�......'); + // return false; + // } + this.dialogCreate = true; + setTimeout(() => { + let _this = this; + const params = [ + { + // ctrlType: "realMonitorUI", + ctrlType: "playerWin", + ctrlCode: this.ctrl, + ctrlProperty: { + displayMode: 1, + splitNum: 1, + channelList: [{ channelId: item.code }], + }, + visible: true, + domId: this.domId, + }, + ]; + this.setPos(); + _this.ws + .createCtrl(params) + .then((res) => { + this.$message.success("鍒涘缓鎴愬姛"); + console.log("res", res); + }) + .catch((e) => { + console.log("error;", e); + }); + _this.ws.on("createCtrlResult", (res) => { + console.warn(res); + }); + }, 1000); + } else { + this.$message.error("鏆傛棤瑙嗛"); + } + }, + + destroy() { + // 璋冪敤閿�姣佹帶浠舵帴鍙� + if (!this.isLogin) { + this.$Message.info("姝e湪鐧婚檰瀹㈡埛绔紝璇风◢绛�......"); + return false; + } + const ctrls = this.ws.ctrls.map((i) => { + if (i.ctrlCode === this.ctrl) { + return i.ctrlCode; + } + }); + this.ws.destroyCtrl(ctrls); + }, + setPos() { + let target = document.getElementById(this.domId); + console.log(target, "target"); + target.style.right = `${this.crtPosX}px`; + target.style.top = `${this.crtPosY}px`; + target.style.width = `${this.crtWidth}px`; + target.style.height = `${this.crtHeight}px`; + if (document.createEvent) { + var event = document.createEvent("HTMLEvents"); + event.initEvent("resize", true, true); + window.dispatchEvent(event); + } else if (document.createEventObject) { + window.fireEvent("onresize"); + } + }, + }, +}; +</script> <style lang="scss" scoped> -.el-header { - background-color: #09152f; +.video-time-select{ + &::v-deep .el-input__prefix{ + height: auto; + } + +} +.video-body-right{ + padding: 10px; + border: 1px solid #ccc; + margin-left: 5px; +} +.button-one { + height: 40px; + width: 80px; + margin-left: 20px; + padding: 0; + // background-color: #09152f; + color: rgb(75, 155, 183); + border: 1px solid rgb(75, 155, 183); +} + +.button-two { + height: 40px; + width: 80px; + padding: 0; + // background-color: #09152f; + color: rgb(75, 155, 183); + border: 1px solid rgb(75, 155, 183); +} +.el-button + .el-button { + margin: 0; +} +.button-third { + height: 40px; + width: 80px; + padding: 0; + // background-color: #09152f; + color: rgb(75, 155, 183); + border: 1px solid rgb(75, 155, 183); +} + +.video-js { + border: 1px solid rgb(75, 155, 183); + margin-left: 20px; +} +.button-div { + color: rgb(75, 155, 183); + position: absolute; + height: 30px; + line-height: 30px; + width: 100%; + margin-left: 20px; + display: flex; + justify-content: center; + + div { + font-size: 11px; + display: flex; + justify-content: center; + cursor: pointer; + border: 1px solid rgb(75, 155, 183); + + width: 33.3%; + } +} + +.bottonOne { + color: rgb(75, 155, 183); + font-size: 11px; + position: absolute; + height: 30px; + line-height: 30px; + margin-left: 20px; + width: 33.3%; + border: 1px solid rgb(75, 155, 183); + cursor: pointer; +} + +.bottonTwo { + color: rgb(75, 155, 183); + font-size: 11px; + position: absolute; + height: 30px; + line-height: 30px; + width: 33.3%; + border: 1px solid rgb(75, 155, 183); + margin-left: 90px; + cursor: pointer; +} +.el-pagination { + line-height: 40px; +} +.bottonThird { + color: rgb(75, 155, 183); + font-size: 11px; + position: absolute; + height: 30px; + line-height: 30px; + width: 33.3%; + border: 1px solid rgb(75, 155, 183); + margin-left: 160px; + cursor: pointer; +} + +::v-deep .el-header { + // background-color: #09152f; color: #000; line-height: 60px; } -::v-deep .el-aside { - background-color: #09152f; -} +// ::v-deep .el-aside { +// background-color: #09152f; +// } -::v-deep .el-menu { - background-color: #09152f; -} +// ::v-deep .el-menu { + // background-color: #09152f; +// } + +::v-deep .el-main, +// ::v-deep .el-footer { +// background-color: #09152f; +// } ::v-deep .el-tree-node__label { line-height: 30px; font-size: 14px; color: rgb(75, 155, 183); } +.dom1 { + margin: 0 auto; +} + +video::-webkit-media-controls-timeline { + display: none; +} + +video::-webkit-media-controls-current-time-display { + display: none; +} + +video::-webkit-media-controls-time-remaining-display { + display: none; +} + +video::-webkit-media-controls-mute-button { + display: none; +} + +video::-webkit-media-controls-toggle-closed-captions-button { + display: none; +} </style> -<script src="https://vjs.zencdn.net/7.20.3/video.min.js"></script> -<script> - export default { - data() { - return { - treedata: [{ - label: '濡欓珮琛楅亾', - children: [{ - label: '涓滆', - children: [{ - label: '铻鸿洺鍨�' - }] - }] - }, { - label: '浜戝嘲琛楅亾', - children: [{ - label: '涓滀涵', - children: [{ - label: '闅旀邯' - }] - }, { - label: '椹ご', - children: [{ - label: '榫欏彛' - }] - }] - }, { - label: '鏂拌矾婀鹃晣', - children: [{ - label: '鏂拌矾婀鹃晣', - children: [{ - label: '鏂拌矾婀鹃晣' - }] - }, { - label: '鏂拌矾婀鹃晣', - children: [{ - label: '鏂拌矾婀鹃晣' - }] - }] - }], - defaultProps: { - children: 'children', - label: 'label' - }, - value:'' - }; - }, - methods: { - handleNodeClick(data) { - console.log(data); - } - } - }; -</script> \ No newline at end of file -- Gitblit v1.8.0