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