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