From f2fcae7c31b8a0bbbcc6298865d7340e488f61f3 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@iotlink.com> Date: 星期四, 05 十一月 2020 18:51:07 +0800 Subject: [PATCH] 修改事件声音配置 --- src/pages/cameraAccess/components/SceneRule.vue | 133 +++++++++++++++++++++++++++++++------------- 1 files changed, 93 insertions(+), 40 deletions(-) diff --git a/src/pages/cameraAccess/components/SceneRule.vue b/src/pages/cameraAccess/components/SceneRule.vue index a5f879e..188db95 100644 --- a/src/pages/cameraAccess/components/SceneRule.vue +++ b/src/pages/cameraAccess/components/SceneRule.vue @@ -46,9 +46,36 @@ <el-form-item label="鍦烘櫙鎻忚堪"> <el-input v-model="sceneForm.desc" type="textarea" size="mini"></el-input> </el-form-item> + <el-form-item label="浜嬩欢澹伴煶"> + <el-select + v-model="sceneForm.voice" + placeholder="绌�" + size="small" + value-key="id" + @change="selSound" + > + <el-option v-for="item in soundList" :key="item.id" :label="item.name" :value="item"></el-option> + </el-select> + <span + @click="togglePlayer" + style="cursor:pointer; margin-left:20px" + v-show="sceneForm.voiceId.length" + > + <i + v-if="togglePlay" + class="el-icon-video-play" + style="font-size:26px; vertical-align:middle; color:#409eff" + ></i> + <i + v-else + class="el-icon-video-pause" + style="font-size:26px; vertical-align:middle; color:#409eff" + ></i> + </span> + </el-form-item> </div> </div> - + <scene-editor ref="sceneEditor" :isLinkRule="linkRule" @@ -73,32 +100,26 @@ :cell-style="cellStyle" :header-cell-style="{background:'#f8f8f8',color:'#222222'}" > - <el-table-column label="搴忓彿" type="index" align="center" ></el-table-column> - <el-table-column - label="鍦烘櫙鍚嶇О" - prop="scene_name" - - align="center" - show-overflow-tooltip - ></el-table-column> + <el-table-column label="搴忓彿" type="index" align="center"></el-table-column> + <el-table-column label="鍦烘櫙鍚嶇О" prop="scene_name" align="center" show-overflow-tooltip></el-table-column> <el-table-column label="绛栫暐" prop="group_text" align="center" min-width="350px"> <template slot-scope="scope"> <span v-html="scope.row.group_text"></span> </template> </el-table-column> - <el-table-column label="鏃堕棿娈�" prop="time_name" align="center" ></el-table-column> + <el-table-column label="鏃堕棿娈�" prop="time_name" align="center"></el-table-column> <el-table-column label="鎻忚堪" prop="desc" align="center" min-width="150"></el-table-column> <!-- <el-table-column label="鐘舵��" align="center" width="90"> <template slot-scope="scope"> <el-switch v-model="scope.row.defence_state" @change="updateDefence(scope.row)"></el-switch> </template> </el-table-column>--> - <el-table-column label="浜嬩欢绛夌骇" align="center" > + <el-table-column label="浜嬩欢绛夌骇" align="center"> <template slot-scope="scope"> <span>{{scope.row.alarm_level | alarmLevel }}</span> </template> </el-table-column> - <el-table-column label="鎿嶄綔" fixed="right" align="center" > + <el-table-column label="鎿嶄綔" fixed="right" align="center"> <template slot-scope="scope"> <el-tooltip content="缂栬緫" :hide-after="700" placement="top" popper-class="atooltip"> <i @@ -107,7 +128,12 @@ @click="handleEdit(scope.row)" ></i> </el-tooltip> - <el-tooltip content="鍒犻櫎" :hide-after="700" placement="top" popper-class="atooltipgroup_"> + <el-tooltip + content="鍒犻櫎" + :hide-after="700" + placement="top" + popper-class="atooltipgroup_" + > <i class="iconfont iconshanchu4 btn-icon" style="font-size: 28px; color:red;" @@ -130,6 +156,7 @@ } from '@/api/scene' import RuleEditor from "@/components/subComponents/RuleEditor"; import SceneEditor from "./scene/Editor"; +import { getSoundList } from "@/api/event"; export default { name: "SceneRuleEditor", @@ -181,7 +208,10 @@ }, mounted() { // window.addEventListener('resize', this.windowSizeChange) - + this.getSounds(); + this.eventAudio.addEventListener("ended", () => { + this.togglePlay = true + }) }, data() { return { @@ -194,14 +224,54 @@ desc: "", template_id: "", time_rule_id: "", + voice: {}, + voiceId: "" }, templateSdks: [], templateRules: "", ruleList: [], - sceneNameStore: [] + sceneNameStore: [], + eventAudio: new Audio(), + soundList: [], + togglePlay: true } }, methods: { + getSounds() { + getSoundList().then(res => { + if (res.success) { + this.soundList = [{ id: "", name: "绌�", path: "" }].concat(res.data.list) + } + }).catch( + e => console.log(e) + ) + }, + selSound(sound) { + this.soundPath = sound.path; + this.sceneForm.voiceId = sound.id; + this.togglePlay = true; + this.eventAudio.pause() + this.$forceUpdate() + // this.eventAudio. + }, + togglePlayer() { + if (!this.soundPath) { + this.$notify({ + type: 'info', + message: '璇峰厛閫夋嫨涓�涓0闊�!' + }) + return false; + } + this.eventAudio.src = this.soundPath; + if (this.togglePlay) { + this.eventAudio.play(); + this.togglePlay = false + } else { + this.eventAudio.pause() + this.togglePlay = true + } + // this.togglePlay = !this.togglePlay + }, bubbleSort(arr) { for (var i = arr.length - 1; i > 0; i--) { for (var j = 0; j < i; j++) { @@ -233,13 +303,13 @@ desc: "", template_id: "", time_rule_id: "", + voice: {}, + voiceId: "" }; this.$refs.sceneEditor.cleanRule(); this.$refs.sceneEditor.getSdkConnection(); }, handleCreate() { - - console.log(this.DataStackPool.selectedDir.id, this.TreeDataPool.treeActiveName == 'dataStack') if (this.linkRule && this.TreeDataPool.selectedNodes.length < 2) { this.$notify({ type: "warning", @@ -261,7 +331,6 @@ } this.editScene = true; this.cleanForm(); - console.log(this.tableRuleList) //鍒濆鍖栧満鏅悕绉� var pattern = /^鍦烘櫙\s*\d+\s*$/; @@ -280,8 +349,9 @@ }, handleEdit(scene) { - this.sceneForm = scene; + this.sceneForm.voice = this.soundList.find(o => o.id === scene.voiceId); + this.editScene = true; let selectedTpl = {}; this.sceneTemplates.forEach((t) => { @@ -296,24 +366,7 @@ }, - selectTemplate() { - let selectedTpl = {}; - this.sceneTemplates.forEach((t) => { - if (t.id == this.sceneForm.template_id) { - selectedTpl = t; - } - }) - - // 璁剧疆榛樿鍙傛暟, 鏃堕棿瑙勫垯鍙栫涓�涓� - this.sceneForm.time_rule_id = this.VideoManageData.TimeRules[0].id; - this.sceneForm.scene_name = selectedTpl.name; - this.sceneForm.desc = selectedTpl.desc; - - this.templateSdks = selectedTpl.sdks; - this.templateRules = selectedTpl.rules; - }, validateForm() { - if (!this.sceneForm.scene_name.trim()) { this.$notify({ type: 'warning', @@ -336,7 +389,6 @@ return true }, saveSceneRule() { - if (!this.validateForm()) { return } @@ -344,6 +396,7 @@ this.sceneForm.rules = editorResp.rules; this.sceneForm.id = editorResp.id; this.sceneForm.group_text = editorResp.text; + this.onSaveScene(this.sceneForm); }, handleDelScene(groupRule) { @@ -410,7 +463,7 @@ } } textarea { - height: 143px; + height: 92px; } } .right { @@ -441,8 +494,8 @@ } .cell { padding-left: 0 !important; - i{ - outline: none!important; + i { + outline: none !important; } } } -- Gitblit v1.8.0