From 74ff4a40edda854c40eddf616cee7ba4af5f4f1f Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期五, 26 十一月 2021 17:44:51 +0800
Subject: [PATCH] 摄像机

---
 src/pages/cameraAccess/components/CameraInfo.vue |  350 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 212 insertions(+), 138 deletions(-)

diff --git a/src/pages/cameraAccess/components/CameraInfo.vue b/src/pages/cameraAccess/components/CameraInfo.vue
index 8f0c382..a7a559a 100644
--- a/src/pages/cameraAccess/components/CameraInfo.vue
+++ b/src/pages/cameraAccess/components/CameraInfo.vue
@@ -4,11 +4,16 @@
       <el-row>
         <el-col :span="9">
           <el-form-item label="RTSP鍦板潃" :span="11" prop="rtsp">
-            <el-input v-model="form.rtsp" placeholder="rtsp://" :disabled="isDisabled" size="small"></el-input>
+            <el-input
+              v-model="form.rtsp"
+              placeholder="rtsp://"
+              :disabled="isDisabled"
+              size="small"
+            ></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="9" :offset="1">
-          <el-form-item label="鍧愭爣" style="width:100%;">
+          <el-form-item label="鍧愭爣" style="width: 100%">
             <label slot="label">鍧愭爣</label>
             <el-col :span="11">
               <el-input
@@ -31,23 +36,33 @@
       </el-row>
       <el-row>
         <el-col :span="9">
-          <el-form-item label="璁惧鍚嶇О" style="width:100%" prop="name">
-            <el-input v-model="form.name" placeholder="璇疯緭鍏ヨ澶囧悕绉�" :disabled="isDisabled" size="small"></el-input>
+          <el-form-item label="璁惧鍚嶇О" style="width: 100%" prop="name">
+            <el-input
+              v-model="form.name"
+              placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+              :disabled="isDisabled"
+              size="small"
+            ></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="9" :offset="1">
-          <el-form-item label="璁惧鍦板潃" style="width:100%" prop="addr">
-            <el-input v-model="form.addr" placeholder="璇疯緭鍏ュ湴鍧�鎻忚堪" :disabled="isDisabled" size="small"></el-input>
+          <el-form-item label="璁惧鍦板潃" style="width: 100%" prop="addr">
+            <el-input
+              v-model="form.addr"
+              placeholder="璇疯緭鍏ュ湴鍧�鎻忚堪"
+              :disabled="isDisabled"
+              size="small"
+            ></el-input>
           </el-form-item>
         </el-col>
       </el-row>
       <el-row>
         <el-col :span="9">
-          <el-form-item label="澶勭悊鍒嗚鲸鐜�" style="width:100%">
+          <el-form-item label="澶勭悊鍒嗚鲸鐜�" style="width: 100%">
             <el-select
               v-model="form.resolution"
               placeholder="鏈満鍒嗚鲸鐜�"
-              style="position: absolute;left: 0;"
+              style="position: absolute; left: 0"
               size="small"
             >
               <el-option
@@ -61,7 +76,7 @@
         </el-col>
         <el-col :span="9" :offset="1">
           <el-form-item label="浜嬩欢澹伴煶">
-            <div class="flex-wrap" style="margin-top: 10px;">
+            <div class="flex-wrap" style="margin-top: 10px">
               <el-switch v-model="form.voiceEnable" :width="50"></el-switch>
               <!-- 灞忚斀澹伴煶閫夋嫨,璋冩暣鍒板満鏅� -->
               <!-- <el-select
@@ -96,45 +111,61 @@
       </el-row>
       <el-row v-show="isGb28182">
         <el-col :span="9">
-          <el-form-item label="璁惧鍒悕" style="width:100%" prop="alias">
-            <el-input v-model="form.alias" placeholder="璇疯緭鍏ヨ澶囧埆鍚�" size="small"></el-input>
+          <el-form-item label="璁惧鍒悕" style="width: 100%" prop="alias">
+            <el-input
+              v-model="form.alias"
+              placeholder="璇疯緭鍏ヨ澶囧埆鍚�"
+              size="small"
+            ></el-input>
           </el-form-item>
         </el-col>
       </el-row>
 
       <el-row>
         <!-- 娣诲姞浼犳劅鍣� -->
-        <CameraInfoEditor ref="cameraEditor" :Carmeras="form" :sensors="sensors"></CameraInfoEditor>
+        <CameraInfoEditor
+          ref="cameraEditor"
+          :Carmeras="form"
+          :sensors="sensors"
+        ></CameraInfoEditor>
       </el-row>
 
       <el-row style="padding-top: 15px">
-        <el-col :span="19" style="text-align: right;">
+        <el-col :span="19" style="text-align: right">
           <el-button
             size="small"
             type="primary"
             @click="onSubmit('addForm')"
             :disabled="conDisabled"
-          >淇濆瓨</el-button>
+            >淇濆瓨</el-button
+          >
           <el-button
             type="danger"
             size="small"
             @click="deleteCamera"
             v-if="!isAdd"
             :disabled="isDisabled"
-          >鍒犻櫎鎽勫儚鏈�</el-button>
+            >鍒犻櫎鎽勫儚鏈�</el-button
+          >
         </el-col>
       </el-row>
       <el-divider></el-divider>
       <input v-model="form.id" type="hidden" />
       <input v-model="form.areaid" type="hidden" />
       <el-row>
-        <el-col :span="12" style="text-align: right;">
-          <el-button size="small" type="primary" @click="cameraConnet" :disabled="conDisabled">杩炴帴娴嬭瘯</el-button>
+        <el-col :span="12" style="text-align: right">
+          <el-button
+            size="small"
+            type="primary"
+            @click="cameraConnet"
+            :disabled="conDisabled"
+            >杩炴帴娴嬭瘯</el-button
+          >
         </el-col>
       </el-row>
       <el-row style="padding: 15px 0">
         <el-col :span="12">
-          <camera-player
+          <!-- <camera-player
             :cameraName="videoItem.name"
             :cameraID="videoItem.id"
             :isGb="videoItem.cameraType === 1"
@@ -142,7 +173,26 @@
             :isRunning="false"
             v-if="videoItem !== '' && videoItem !== undefined && videoItem !== null && visibilityState"
           ></camera-player>
-          <video v-else poster="/images/cameraAccess/video-poster.png" preload="none"></video>
+          <video v-else poster="/images/cameraAccess/video-poster.png" preload="none"></video> -->
+          <wasm-player
+            :cameraName="videoItem.name"
+            :cameraID="videoItem.id"
+            :isGb="videoItem.cameraType === 1"
+            :rtspUrl="videoItem.rtsp"
+            :isRunning="false"
+            :showArea="false"
+            v-if="
+              videoItem !== '' &&
+              videoItem !== undefined &&
+              videoItem !== null &&
+              visibilityState
+            "
+          ></wasm-player>
+          <video
+            v-else
+            poster="/images/cameraAccess/video-poster.png"
+            preload="none"
+          ></video>
         </el-col>
 
         <!-- 绯荤粺杩愯淇℃伅 -->
@@ -150,9 +200,9 @@
           <div class="sysinfo-box">
             <div style="width: 70%">
               <ul>
-                <li style="width:100%">
+                <li style="width: 100%">
                   <info-card
-                    style="width:100%;min-width: 440px"
+                    style="width: 100%; min-width: 440px"
                     :realtime="PollData.RealTimeValidCount"
                     :polling="PollData.PollValidCount"
                     :dataStack="PollData.stackChannelCount"
@@ -164,7 +214,10 @@
               :style="`width:80%;height:174px;position: relative;left: -12px;`"
               v-if="PollData.barCharts && PollData.barCharts.length !== 0"
             >
-              <eChartsBar ref="cpuMeneryCharts" :xAxisData="PollData.barCharts"></eChartsBar>
+              <eChartsBar
+                ref="cpuMeneryCharts"
+                :xAxisData="PollData.barCharts"
+              ></eChartsBar>
             </div>
           </div>
         </el-col>
@@ -177,31 +230,33 @@
   createCamera,
   updateCameraInfo,
   getCameraInfo,
-  delCamera
+  delCamera,
 } from "@/api/camera";
 import { getSoundList } from "@/api/event";
 
+import WasmPlayer from "@/components/wasmPlayer";
 import CameraPlayer from "@/components/player";
-import eChartsBar from '@/components/subComponents/eChartsBar'
+import eChartsBar from "@/components/subComponents/eChartsBar";
 
-import InfoCard from "./infoCard"
-import CameraInfoEditor from './CameraInfoEditor'
+import InfoCard from "./infoCard";
+import CameraInfoEditor from "./CameraInfoEditor";
 
 export default {
   name: "CameraInfo",
   components: {
-    CameraPlayer,
+    // CameraPlayer,
+    WasmPlayer,
     InfoCard,
     eChartsBar,
-    CameraInfoEditor
+    CameraInfoEditor,
   },
   props: {
     cameraList: {
       default: () => {
         return [];
       },
-      type: Array
-    }
+      type: Array,
+    },
   },
   data() {
     return {
@@ -210,32 +265,31 @@
       soundList: [],
       togglePlay: true,
       eventAudio: new Audio(),
-      soundPath: '',
-      form: {
-      },
+      soundPath: "",
+      form: {},
       // 璁板綍娣诲姞鐘舵��
       isAdd: false,
       addParentId: "",
       rules: {
         name: [
-          { required: true, message: "璁惧鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+          { required: true, message: "璁惧鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
         ],
         rtsp: [
-          { required: true, message: "RTSP鍦板潃涓嶈兘涓虹┖", trigger: "blur" }
+          { required: true, message: "RTSP鍦板潃涓嶈兘涓虹┖", trigger: "blur" },
         ],
         addr: [
-          { required: true, message: "璁惧鍦板潃涓嶈兘涓虹┖", trigger: "blur" }
-        ]
+          { required: true, message: "璁惧鍦板潃涓嶈兘涓虹┖", trigger: "blur" },
+        ],
       },
       resolutionList: [],
       //浼犳劅鍣ㄥ垪琛�
       sensors: [],
-      voice: null
+      voice: null,
     };
   },
   computed: {
     isSelected() {
-      return this.TreeDataPool.selectedNode.type !== "4"
+      return this.TreeDataPool.selectedNode.type !== "4";
     },
     isGb28182() {
       return this.TreeDataPool.selectedNode.cameraType === 1;
@@ -249,7 +303,7 @@
     },
     conDisabled() {
       return this.isAdd ? false : this.TreeDataPool.selectedNode.type !== "4";
-    }
+    },
   },
   mounted() {
     this.initFormData();
@@ -259,41 +313,41 @@
     this.getSounds();
 
     this.eventAudio.addEventListener("ended", () => {
-      this.togglePlay = true
-    })
+      this.togglePlay = true;
+    });
   },
   methods: {
     getSounds() {
-      getSoundList().then(res => {
-        if (res.success) {
-          this.soundList = res.data;
-        }
-      }).catch(
-        e => console.log(e)
-      )
+      getSoundList()
+        .then((res) => {
+          if (res.success) {
+            this.soundList = res.data;
+          }
+        })
+        .catch((e) => console.log(e));
     },
     selSound(sound) {
       this.soundPath = sound.path;
       this.form.voiceId = sound.id;
       this.togglePlay = true;
-      this.eventAudio.pause()
+      this.eventAudio.pause();
       // this.eventAudio.
     },
     togglePlayer() {
       if (!this.soundPath) {
         this.$notify({
-          type: 'info',
-          message: '璇峰厛閫夋嫨涓�涓0闊�!'
-        })
+          type: "info",
+          message: "璇峰厛閫夋嫨涓�涓0闊�!",
+        });
         return false;
       }
       this.eventAudio.src = this.soundPath;
       if (this.togglePlay) {
         this.eventAudio.play();
-        this.togglePlay = false
+        this.togglePlay = false;
       } else {
-        this.eventAudio.pause()
-        this.togglePlay = true
+        this.eventAudio.pause();
+        this.togglePlay = true;
       }
       // this.togglePlay = !this.togglePlay
     },
@@ -316,118 +370,134 @@
       // this.initFormData();
       // this.$refs.addForm.clearValidate();
       if (node.type === "4") {
-        getCameraInfo(node.id).then(res => {
+        getCameraInfo(node.id).then((res) => {
           if (res.success) {
             // console.log(res, '鑾峰彇鎽勫儚鏈轰俊鎭�')
             if (res.data.resolutions) {
-              let list = res.data.resolutions.map(i => {
-                let obj = {}
+              let list = res.data.resolutions.map((i) => {
+                let obj = {};
                 if (i.width == 0 && i.height == 0) {
-                  obj.label = "鏈満鍒嗚鲸鐜�"
-                  obj.value = "0*0"
+                  obj.label = "鏈満鍒嗚鲸鐜�";
+                  obj.value = "0*0";
                 } else {
-                  obj.label = i.width + "*" + i.height
-                  obj.value = i.width + "*" + i.height
+                  obj.label = i.width + "*" + i.height;
+                  obj.value = i.width + "*" + i.height;
                 }
-                return obj
-              })
-              this.resolutionList = list
-              this.sensors = res.data.sensors
+                return obj;
+              });
+              this.resolutionList = list;
+              this.sensors = res.data.sensors;
             }
 
             this.$nextTick(() => {
               this.initFormData();
-              Object.assign(this.form, res.data)
+              Object.assign(this.form, res.data);
 
-              this.soundList.forEach(element => {
+              this.soundList.forEach((element) => {
                 if (this.form.voiceId == element.id) {
-                  this.voice = element
+                  this.voice = element;
                 }
-              })
+              });
 
               if (this.form.run_type !== -1) {
-                this.form.isAI = true
+                this.form.isAI = true;
               } else {
-                this.form.isAI = false
+                this.form.isAI = false;
               }
-              this.form.resolution = this.form.resolution_width + "*" + this.form.resolution_height
-            })
+              this.form.resolution =
+                this.form.resolution_width + "*" + this.form.resolution_height;
+            });
           }
         });
       }
     },
     // 淇濆瓨
     onSubmit(formName) {
-      let list = this.$refs.cameraEditor.getResult()
-      this.$refs[formName].validate(async valid => {
+      let list = this.$refs.cameraEditor.getResult();
+      this.$refs[formName].validate(async (valid) => {
         if (valid) {
           const isRequire = this.verifyRequrie();
           if (!isRequire) return false;
 
-          this.form.latitude = Number.isNaN(parseFloat(this.form.latitude)) ? 0 : parseFloat(this.form.latitude);
-          this.form.longitude = Number.isNaN(parseFloat(this.form.longitude)) ? 0 : parseFloat(this.form.longitude);
-          this.form.sensors = list
-          this.form.resolution_width = Number(this.form.resolution.split("*")[0])
-          this.form.resolution_height = Number(this.form.resolution.split("*")[1])
+          this.form.latitude = Number.isNaN(parseFloat(this.form.latitude))
+            ? 0
+            : parseFloat(this.form.latitude);
+          this.form.longitude = Number.isNaN(parseFloat(this.form.longitude))
+            ? 0
+            : parseFloat(this.form.longitude);
+          this.form.sensors = list;
+          this.form.resolution_width = Number(
+            this.form.resolution.split("*")[0]
+          );
+          this.form.resolution_height = Number(
+            this.form.resolution.split("*")[1]
+          );
           let _this = this;
           // 鏇存柊
           if (this.form.id !== "") {
-            this.form.areaid = this.TreeDataPool.getParent(this.form.id, this.isGb28182);
-            console.log(this.TreeDataPool.selectedNode)
-            updateCameraInfo(this.form).then(rsp => {
-              if (rsp.success) {
-                this.$notify({
-                  type: "success",
-                  message: "鎽勫儚鏈轰俊鎭慨鏀规垚鍔燂紒"
-                });
-                this.TreeDataPool.fetchTreeData();
-                console.log(this.TreeDataPool.selectedNode)
-                //_this.$root.$children[0].$refs['leftTree'].$refs.tree.ztreeObj.checkNode(_this.TreeDataPool.selectedNode, true, false, false);
-                //閫変腑淇敼鍚庣殑鑺傜偣
-                let {evt,treeId} = _this.$root.$children[0].$refs['leftTree'].$refs.tree;
-                console.log(evt,treeId)
-                // this.$nextTick(()=>{
-                   //_this.$root.$children[0].$refs['leftTree'].$refs.tree.handleCreated()
-                // })
-
-              } else {
-                this.selectCamera(this.TreeDataPool.selectedNode);
+            this.form.areaid = this.TreeDataPool.getParent(
+              this.form.id,
+              this.isGb28182
+            );
+            console.log(this.TreeDataPool.selectedNode);
+            updateCameraInfo(this.form)
+              .then((rsp) => {
+                if (rsp.success) {
+                  this.$notify({
+                    type: "success",
+                    message: "鎽勫儚鏈轰俊鎭慨鏀规垚鍔燂紒",
+                  });
+                  this.TreeDataPool.fetchTreeData();
+                  console.log(this.TreeDataPool.selectedNode);
+                  //_this.$root.$children[0].$refs['leftTree'].$refs.tree.ztreeObj.checkNode(_this.TreeDataPool.selectedNode, true, false, false);
+                  //閫変腑淇敼鍚庣殑鑺傜偣
+                  let { evt, treeId } =
+                    _this.$root.$children[0].$refs["leftTree"].$refs.tree;
+                  console.log(evt, treeId);
+                  // this.$nextTick(()=>{
+                  //_this.$root.$children[0].$refs['leftTree'].$refs.tree.handleCreated()
+                  // })
+                } else {
+                  this.selectCamera(this.TreeDataPool.selectedNode);
+                  this.$notify({
+                    type: "error",
+                    message: "鎽勫儚鏈轰俊鎭慨鏀瑰け璐ワ紒",
+                  });
+                }
+              })
+              .catch((err) => {
                 this.$notify({
                   type: "error",
-                  message: "鎽勫儚鏈轰俊鎭慨鏀瑰け璐ワ紒"
+                  message: err.msg,
                 });
-              }
-            }).catch(err => {
-              this.$notify({
-                type: "error",
-                message: err.msg
               });
-            });
           } else {
             this.form.areaid = this.addParentId;
-            createCamera(this.form).then(rsp => {
-              if (rsp.success) {
-                this.$notify({
-                  type: "success",
-                  message: "鎽勫儚鏈烘坊鍔犳垚鍔燂紒"
-                });
-                this.TreeDataPool.selectedNode = rsp.data;
-                this.TreeDataPool.fetchTreeData();
-                // 鍚庣杩斿洖缁撴灉涓�0锛屾煡璇㈠悗涓�4
-                this.TreeDataPool.selectedNode.type = "4";
-                this.selectCamera(this.TreeDataPool.selectedNode);
-              } else {
+            createCamera(this.form)
+              .then((rsp) => {
+                if (rsp.success) {
+                  this.$notify({
+                    type: "success",
+                    message: "鎽勫儚鏈烘坊鍔犳垚鍔燂紒",
+                  });
+                  this.TreeDataPool.selectedNode = rsp.data;
+                  this.TreeDataPool.fetchTreeData();
+                  // 鍚庣杩斿洖缁撴灉涓�0锛屾煡璇㈠悗涓�4
+                  this.TreeDataPool.selectedNode.type = "4";
+                  this.selectCamera(this.TreeDataPool.selectedNode);
+                } else {
+                  this.$notify({
+                    type: "error",
+                    message: "鎽勫儚鏈烘坊鍔犲け璐ワ紒",
+                  });
+                }
+              })
+              .catch((err) => {
                 this.$notify({
                   type: "error",
-                  message: "鎽勫儚鏈烘坊鍔犲け璐ワ紒"
+                  message: err.msg,
                 });
-              }
-            }).catch((err) => {
-              this.$notify({
-                type: "error",
-                message: err.msg
               });
-            });
           }
         }
       });
@@ -441,9 +511,9 @@
           rtsp: this.form.rtsp,
           id: this.form.id,
           isRunning: this.form.run_enable,
-          cameraType: this.form.type
+          cameraType: this.form.type,
         };
-      })
+      });
     },
     // * 楠岃瘉蹇呴�夐」
     verifyRequrie() {
@@ -456,7 +526,7 @@
       if (this.form.rtsp === "") {
         this.$notify({
           type: "warning",
-          message: "璇疯緭鍏ユ纭殑rtsp鍦板潃"
+          message: "璇疯緭鍏ユ纭殑rtsp鍦板潃",
         });
         return false;
       }
@@ -467,21 +537,21 @@
       this.$confirm("鏄惁鍒犻櫎姝ゆ憚鍍忔満锛�", {
         center: true,
         cancelButtonClass: "comfirm-class-cancle",
-        confirmButtonClass: "comfirm-class-sure"
+        confirmButtonClass: "comfirm-class-sure",
       }).then(() => {
-        delCamera(this.form.id).then(res => {
+        delCamera(this.form.id).then((res) => {
           if (res.success) {
             this.initFormData();
             this.$notify({
               type: "success",
-              message: "鍒犻櫎鎴愬姛锛�"
+              message: "鍒犻櫎鎴愬姛锛�",
             });
             this.TreeDataPool.fetchTreeData();
             this.TreeDataPool.selectedNode = {};
           } else {
             this.$notify({
               type: "error",
-              message: "鍒犻櫎澶辫触锛�"
+              message: "鍒犻櫎澶辫触锛�",
             });
           }
         });
@@ -507,7 +577,7 @@
         password: "",
         resolution: "",
         voiceId: "",
-        voiceEnable: false
+        voiceEnable: false,
       };
     },
     // 娣诲姞璁惧
@@ -515,8 +585,8 @@
       this.isAdd = true;
       this.addParentId = node;
       this.initFormData();
-    }
-  }
+    },
+  },
 };
 </script>
 
@@ -564,5 +634,9 @@
       }
     }
   }
+
+  .video-player {
+    height: 450px;
+  }
 }
 </style>
\ No newline at end of file

--
Gitblit v1.8.0