From 829f5116884f98643ffc5b2a548a600d40c0cedb Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 14 四月 2025 23:09:32 +0800
Subject: [PATCH] 处理图片显示问题
---
src/views/video/index.vue | 724 ++++++++++++++++++++++++++++---------------------------
1 files changed, 370 insertions(+), 354 deletions(-)
diff --git a/src/views/video/index.vue b/src/views/video/index.vue
index d601e9c..356c75c 100644
--- a/src/views/video/index.vue
+++ b/src/views/video/index.vue
@@ -1,101 +1,110 @@
<template>
- <el-container class="video-container" style="height: 100%">
- <el-aside heigth="100%" width="200px">
- <department-aside @selectedDepartment="selectedDepartment" />
- </el-aside>
+ <el-container class="video-container" style="height: 100%">
+ <el-aside heigth="100%" width="200px">
+ <department-aside @selectedDepartment="selectedDepartment" />
+ </el-aside>
- <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>
- <!-- <div style="height: 60px; display: flex; justify-content: flex-start">
+ <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>
+ <!-- <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-header>
- <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-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>
- </el-container>
</template>
<script>
@@ -104,304 +113,311 @@
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.code || item.platResourceId) {
- if (Hls.isSupported()) {
- var video = document.getElementById(item.id);
- var hls = new Hls();
- videoPoint
- .getVideoPointUrl(item.code || item.platResourceId)
- .then((res) => {
- if (res.code === 0) {
- hls.loadSource(res.data);
- hls.attachMedia(video);
- setTimeout(() => {
- video.play();
- }, 2000);
- }
- });
+ 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",
+ };
+ },
+ watch: {
+ '$route'(to, from) { //鐩戝惉璺敱鏄惁鍙樺寲
+ this.getVideoPointList();
}
- } 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));
+ created() {
+ this.getVideoPointList();
},
- 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: "172.28.194.180",
- loginPort: "7902",
- 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";
+ mounted() { },
+ methods: {
+ loadVideo(item) {
+ if (item.code || item.platResourceId) {
+ if (Hls.isSupported()) {
+ var video = document.getElementById(item.id);
+ var hls = new Hls();
+ videoPoint
+ .getVideoPointUrl(item.code || item.platResourceId)
+ .then((res) => {
+ if (res.code === 0) {
+ hls.loadSource(res.data);
+ hls.attachMedia(video);
+ setTimeout(() => {
+ video.play();
+ }, 2000);
+ }
+ });
+ }
} else {
- this.$message.info("鐧诲綍澶辫触");
+ this.$message.error("鏆傛棤瑙嗛");
}
- });
- } else {
- // 杩炴帴瀹㈡埛绔け璐�
- this.$message.info("璇烽噸鏂板畨瑁呭鎴风");
- }
- });
- },
- logout() {
- // 璋冪敤鐧诲嚭鎺ュ彛
- this.ws.logout({
- loginIp: this.loginIp,
- });
- },
- create(item) {
- if (item.platResourceId && 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("鏆傛棤瑙嗛");
- }
- },
+ },
+ getVideoPointList(data) {
+ let path = this.$route.path;
+ let communityId, streetId;
+ if (data) {
+ communityId = data.id;
+ streetId = data.parentId;
+ }
- 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);
+ videoPoint
+ .getVideoPointList({
+ current: this.currentPage,
+ size: this.pageSize,
+ type: path.substring(path.length - 1, path.length),
+ 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: "172.28.194.180",
+ loginPort: "7902",
+ 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.platResourceId && 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");
+ }
+ },
},
- 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>
.video-time-select {
- &::v-deep .el-input__prefix {
- height: auto;
- }
+ &::v-deep .el-input__prefix {
+ height: auto;
+ }
}
.video-body-right {
- padding: 10px;
- border: 1px solid #ccc;
- margin-left: 5px;
+ 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);
+ 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);
+ 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;
+ 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);
+ 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;
+ 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;
+ color: rgb(75, 155, 183);
+ position: absolute;
+ height: 30px;
+ line-height: 30px;
+ width: 100%;
+ margin-left: 20px;
display: flex;
justify-content: center;
- cursor: pointer;
- border: 1px solid rgb(75, 155, 183);
- width: 33.3%;
- }
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ // background-color: #09152f;
+ color: #000;
+ line-height: 60px;
}
// ::v-deep .el-aside {
@@ -418,31 +434,31 @@
// }
::v-deep .el-tree-node__label {
- line-height: 30px;
- font-size: 14px;
- color: rgb(75, 155, 183);
+ line-height: 30px;
+ font-size: 14px;
+ color: rgb(75, 155, 183);
}
.dom1 {
- margin: 0 auto;
+ margin: 0 auto;
}
video::-webkit-media-controls-timeline {
- display: none;
+ display: none;
}
video::-webkit-media-controls-current-time-display {
- display: none;
+ display: none;
}
video::-webkit-media-controls-time-remaining-display {
- display: none;
+ display: none;
}
video::-webkit-media-controls-mute-button {
- display: none;
+ display: none;
}
video::-webkit-media-controls-toggle-closed-captions-button {
- display: none;
+ display: none;
}
</style>
--
Gitblit v1.8.0