From e6443cf405d4e950abe35a29e6c133d097fc1ad5 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 04 十二月 2023 17:46:01 +0800
Subject: [PATCH] 100路视频

---
 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