From 5173f8e31d106abd003e123c8679cf53c7940b33 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期一, 30 一月 2023 11:54:12 +0800 Subject: [PATCH] 网格绘制 --- src/views/systemSetting/device/point/index.vue | 227 ++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 146 insertions(+), 81 deletions(-) diff --git a/src/views/systemSetting/device/point/index.vue b/src/views/systemSetting/device/point/index.vue index 1feccd5..7bb4603 100644 --- a/src/views/systemSetting/device/point/index.vue +++ b/src/views/systemSetting/device/point/index.vue @@ -4,8 +4,8 @@ <department-aside @selectedDepartment="selectedDepartment" /> </el-aside> - <el-container> - <el-header style="display: flex; flex-direction: column; height: 120px"> + <el-container class="point-container"> + <el-header style="display: flex; flex-direction: column; height: 120px;padding: 0 40px"> <div style="display: flex; justify-content: space-between; height: 80px" > @@ -24,38 +24,26 @@ ></div> </el-header> - <el-main style="display: flex; flex-wrap: wrap; overflow-y: scroll"> + <el-main class="video-main"> <div v-for="item in videoData" - style=" - width: 240px; - position: relative; - margin-left: 20px; - " + :key="item.id" + style="position: relative" > - <div - style=" - color: rgb(75, 155, 183); - font-size: 11px; - line-height: 18px; - position: absolute; - z-index: 1; - left: 50px; - " - > - {{ item.name }}{{ item.community }} - </div> + <div class="video-title">{{ item.name }}{{ item.community }}</div> + <video :id="item.id" - class="video-js vjs-default-skin" + class="video-js" controls preload="auto" - width="300px" + width="400px" height="300px" type="video/mp4" - :src="item.urlAddress" - > - </video> + ></video> + <div class="button-div"> + <div @click="loadVideo(item)">鏌ョ湅瑙嗛</div> + </div> </div> </el-main> <el-footer> @@ -78,9 +66,9 @@ import videoPoint from "@/api/system/videoPoint"; export default { - name: 'point', + name: "point", components: { departmentAside }, - created() { + created() { this.hls = new Hls(); this.getVideoPointList(); }, @@ -88,10 +76,11 @@ return { currentPage: 1, totalNum: 10, - pageSize: 10, + pageSize: 8, videoData: [], searchData: null, - hls: null + hls: null, + videoList: [], }; }, methods: { @@ -101,26 +90,47 @@ communityId = data.parentId; streetId = data.id; } - await 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)); - this.setVideo(); - }, - setVideo() { - if (Hls.isSupported()) { - this.videoData.forEach(video => { - const videoPlayer = document.getElementById(video.id); - this.hls.loadSource(video.urlAddress); - this.hls.attachMedia(videoPlayer); + await 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)); + }, + 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); + this.videoList.push(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("鏆傛棤瑙嗛"); } }, selectedDepartment(data) { @@ -136,26 +146,35 @@ }, }, beforeDestroy() { - this.hls = null; - } + this.videoList.forEach((element) => { + element.push(); + }); + }, }; </script> <style lang="scss" scoped> +.point-container{ + margin-left: 5px; + border: 1px solid #ccc; + padding: 10px; +} .button-one { height: 40px; width: 80px; - margin-left: 20px; + //margin-left: 20px; padding: 0; - background-color: #09152f; + // background-color: #09152f; color: rgb(75, 155, 183); border: 1px solid rgb(75, 155, 183); } - +.title{ + color: #333; +} .button-two { height: 40px; width: 80px; padding: 0; - background-color: #09152f; + // background-color: #09152f; color: rgb(75, 155, 183); border: 1px solid rgb(75, 155, 183); } @@ -166,7 +185,7 @@ height: 40px; width: 80px; padding: 0; - background-color: #09152f; + // background-color: #09152f; color: rgb(75, 155, 183); border: 1px solid rgb(75, 155, 183); } @@ -199,19 +218,45 @@ margin-left: 90px; cursor: pointer; } +.video-main { + display: flex; + flex-wrap: wrap; + overflow-y: scroll; + margin-left: 20px; +} +.video-title { + color: rgb(75, 155, 183); + font-size: 11px; + line-height: 18px; + position: absolute; + z-index: 1; + + left: 50px; +} +.button-div { + color: rgb(75, 155, 183); + position: absolute; + height: 30px; + line-height: 30px; + width: 100%; + margin-left: 20px; + cursor: pointer; + width: calc(100% - 20px); + border: 1px solid rgb(75, 155, 183); +} .el-pagination { - &::v-deep li, - &::v-deep .btn-prev, - &::v-deep .btn-next { - background-color: #071f39; - color: #4b9bb7; - } + // &::v-deep li, + // &::v-deep .btn-prev, + // &::v-deep .btn-next { + // background-color: #071f39; + // color: #4b9bb7; + // } - &::v-deep .active { - background-color: #409eff; - color: #fff; - } + // &::v-deep .active { + // background-color: #409eff; + // color: #fff; + // } } .bottonThird { @@ -226,27 +271,47 @@ cursor: pointer; } -::v-deep .el-header { - background-color: #09152f; - color: #000; - line-height: 60px; -} +// ::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-main, +// ::v-deep .el-footer { +// background-color: #09152f; +// } ::v-deep .el-tree-node__label { line-height: 30px; font-size: 14px; } -</style> \ No newline at end of file + +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> -- Gitblit v1.8.0