From feaf0a9778879ef211c5587a513ba4cbdabb52d0 Mon Sep 17 00:00:00 2001
From: ZZJ <10913410+zzj2100@user.noreply.gitee.com>
Date: 星期四, 23 六月 2022 17:42:58 +0800
Subject: [PATCH] bug修复

---
 src/pages/cameraAccess/components/SceneRule.vue |  299 +++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 169 insertions(+), 130 deletions(-)

diff --git a/src/pages/cameraAccess/components/SceneRule.vue b/src/pages/cameraAccess/components/SceneRule.vue
index 6699401..c5d985a 100644
--- a/src/pages/cameraAccess/components/SceneRule.vue
+++ b/src/pages/cameraAccess/components/SceneRule.vue
@@ -2,13 +2,9 @@
   <div class="scene-edit-container">
     <div class="scene-title">
       <b style="font-size: 14px; line-height: 18px;">鍦烘櫙</b>
-      <el-button
-        type="primary"
-        size="mini"
-        @click="handleCreate"
-        style="margin-left:90%"
-        v-show="!editScene"
-      >+ 娣诲姞鍦烘櫙</el-button>
+      <el-button type="primary" size="mini" @click="handleCreate" style="margin-left:90%" v-show="!editScene"
+        >+ 娣诲姞鍦烘櫙</el-button
+      >
     </div>
 
     <el-form ref="form" label-width="80px" v-show="editScene">
@@ -18,12 +14,7 @@
             <el-input v-model="sceneForm.scene_name" size="mini" maxlength="15"></el-input>
           </el-form-item>
           <el-form-item label="浜嬩欢绛夌骇">
-            <el-select
-              v-model="sceneForm.alarm_level"
-              placeholder="璇烽�夋嫨"
-              size="mini"
-              style="width:250px"
-            >
+            <el-select v-model="sceneForm.alarm_level" placeholder="璇烽�夋嫨" size="mini" style="width:250px">
               <el-option label="涓�绾�" :value="1"></el-option>
               <el-option label="浜岀骇" :value="2"></el-option>
               <el-option label="涓夌骇" :value="3"></el-option>
@@ -46,9 +37,22 @@
           <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"
@@ -69,45 +73,40 @@
         <el-table
           :data="tableRuleList"
           border
-          style="width: 100%"
+          style="width:100%"
           :cell-style="cellStyle"
-          :header-cell-style="{background:'#f8f8f8',color:'#222222'}"
+          :header-cell-style="{ background: '#f8f8f8', color: '#222222' }"
         >
-          <el-table-column label="搴忓彿" type="index" align="center" width="50"></el-table-column>
-          <el-table-column
-            label="鍦烘櫙鍚嶇О"
-            prop="scene_name"
-            width="120"
-            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" width="100"></el-table-column>
-          <el-table-column label="鎻忚堪" prop="desc" align="center" min-width="150"></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="120"></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" width="120">
+          <el-table-column label="浜嬩欢澹伴煶" align="center">
             <template slot-scope="scope">
-              <span>{{scope.row.alarm_level | alarmLevel }}</span>
+              <span>{{ getSoundById(scope.row.voiceId) }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="鎿嶄綔" fixed="right" align="center" width="100">
+          <el-table-column label="浜嬩欢绛夌骇" align="center">
             <template slot-scope="scope">
-              <el-tooltip content="缂栬緫" placement="top" popper-class="atooltip">
-                <i
-                  class="iconfont iconbianji1 btn-icon"
-                  style="font-size: 28px;"
-                  @click="handleEdit(scope.row)"
-                ></i>
+              <span>{{ scope.row.alarm_level | alarmLevel }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="鎿嶄綔" fixed="right" align="center">
+            <template slot-scope="scope">
+              <el-tooltip content="缂栬緫" :hide-after="700" placement="top" popper-class="atooltip">
+                <i class="iconfont iconbianji1 btn-icon" style="font-size: 28px;" @click="handleEdit(scope.row)"></i>
               </el-tooltip>
-              <el-tooltip content="鍒犻櫎" 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;"
@@ -123,13 +122,10 @@
 </template>
 
 <script>
-import {
-  saveCameraScene,
-  getCameraSceneRule,
-  deleteCameraScene
-} from '@/api/scene'
-import RuleEditor from "@/components/subComponents/RuleEditor";
-import SceneEditor from "./scene/Editor";
+import { saveCameraScene, deleteCameraScene } from "@/api/scene"
+import RuleEditor from "@/components/subComponents/RuleEditor"
+import SceneEditor from "./scene/Editor"
+import { getSoundList } from "@/api/event"
 
 export default {
   name: "SceneRuleEditor",
@@ -162,26 +158,29 @@
     alarmLevel(level) {
       switch (level) {
         case 1:
-          return "涓�绾�";
+          return "涓�绾�"
         case 2:
-          return "浜岀骇";
+          return "浜岀骇"
         case 3:
-          return "涓夌骇";
+          return "涓夌骇"
         case 4:
-          return "鍥涚骇";
+          return "鍥涚骇"
         case 5:
-          return "浜旂骇";
+          return "浜旂骇"
       }
     }
   },
   watch: {
     tableRuleList(n, o) {
-      this.editScene = false;
+      this.editScene = false
     }
   },
   mounted() {
     // window.addEventListener('resize', this.windowSizeChange)
-    
+    this.getSounds()
+    this.eventAudio.addEventListener("ended", () => {
+      this.togglePlay = true
+    })
   },
   data() {
     return {
@@ -194,25 +193,76 @@
         desc: "",
         template_id: "",
         time_rule_id: "",
+        voice: {},
+        voiceId: ""
       },
       templateSdks: [],
       templateRules: "",
       ruleList: [],
-      sceneNameStore: []
+      sceneNameStore: [],
+      eventAudio: new Audio(),
+      soundList: [],
+      togglePlay: true
     }
   },
   methods: {
+    getSoundById(id) {
+      if (id) {
+        let sound = this.soundList.find((item) => item.id == id)
+        return sound.name
+      } else {
+        return ""
+      }
+    },
+    getSounds() {
+      let _this = this
+      getSoundList()
+        .then((res) => {
+          if (res.success) {
+            //_this.soundList = [{ id: "", name: "绌�", path: "" }].concat(res.data.list)
+            _this.soundList = [{ id: "", name: "绌�", path: "" }].concat(res.data)
+          }
+        })
+        .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
+      }
+      debugger
+      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++) {
           if (arr[j] > arr[j + 1]) {
-            let temp = arr[j];
-            arr[j] = arr[j + 1];
+            let temp = arr[j]
+            arr[j] = arr[j + 1]
             arr[j + 1] = temp
           }
         }
       }
-      return arr;
+      return arr
     },
     getSceneName(sdk_name) {
       this.sceneNameStore.push(sdk_name)
@@ -233,147 +283,133 @@
         desc: "",
         template_id: "",
         time_rule_id: "",
-      };
-      this.$refs.sceneEditor.cleanRule();
+        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",
           message: "璇烽�夋嫨鑷冲皯2涓憚鍍忔満!"
-        });
-        return false;
-      } else if (!this.linkRule && this.TreeDataPool.treeActiveName != 'dataStack' && this.TreeDataPool.selectedNodes.length < 1) {
+        })
+        return false
+      } else if (
+        !this.linkRule &&
+        this.TreeDataPool.treeActiveName != "dataStack" &&
+        this.TreeDataPool.selectedNodes.length < 1
+      ) {
         this.$notify({
           type: "warning",
           message: `璇烽�夋嫨1涓憚鍍忔満!`
-        });
-        return false;
-      } else if (this.TreeDataPool.treeActiveName == 'dataStack' && !this.DataStackPool.selectedDir.id) {
+        })
+        return false
+      } else if (this.TreeDataPool.treeActiveName == "dataStack" && !this.DataStackPool.selectedDir.id) {
         this.$notify({
           type: "warning",
           message: `璇峰厛閫夋嫨鏁版嵁鏍堟枃浠跺す!`
-        });
-        return false;
+        })
+        return false
       }
-      this.editScene = true;
-      this.cleanForm();
-      console.log(this.tableRuleList)
+      this.editScene = true
+      this.cleanForm()
 
       //鍒濆鍖栧満鏅悕绉�
-      var pattern = /^鍦烘櫙\s*\d+\s*$/;
-      var tempArr = [];
-      this.tableRuleList.forEach(scene => {
-
+      var pattern = /^鍦烘櫙\s*\d+\s*$/
+      var tempArr = []
+      this.tableRuleList.forEach((scene) => {
         if (pattern.test(scene.scene_name)) {
-          tempArr.push(Number(scene.scene_name.substring(2).trim()));
+          tempArr.push(Number(scene.scene_name.substring(2).trim()))
         }
-      });
-      let latest = tempArr.length > 0 ? this.bubbleSort(tempArr)[tempArr.length - 1] + 1 : 1;
+      })
+      let latest = tempArr.length > 0 ? this.bubbleSort(tempArr)[tempArr.length - 1] + 1 : 1
 
-      this.sceneForm.scene_name = '鍦烘櫙' + latest;
+      this.sceneForm.scene_name = "鍦烘櫙" + latest
       //鍒濆鍖栨椂闂存
-      this.sceneForm.time_rule_id = this.VideoManageData.TimeRules[0].id;
-
+      this.sceneForm.time_rule_id = this.VideoManageData.TimeRules[0].id
     },
     handleEdit(scene) {
+      this.sceneForm = JSON.parse(JSON.stringify(scene))
+      // this.originSceneInfo = JSON.parse(JSON.stringify(scene));
+      this.sceneForm.voice = this.soundList.find((o) => o.id === scene.voiceId)
 
-      this.sceneForm = scene;
-      this.editScene = true;
-      let selectedTpl = {};
+      this.editScene = true
+      let selectedTpl = {}
       this.sceneTemplates.forEach((t) => {
         if (t.id == this.sceneForm.template_id) {
           selectedTpl = t
         }
       })
-      this.templateSdks = selectedTpl.sdks;
+      this.templateSdks = selectedTpl.sdks
 
-      this.templateRules = JSON.stringify(scene.rules);
-      this.$refs.sceneEditor.editHandle(this.templateRules);
-
+      this.templateRules = JSON.stringify(scene.rules)
+      this.$refs.sceneEditor.editHandle(this.templateRules)
     },
 
-    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',
-          message: '鍦烘櫙鍚嶄笉鑳戒负绌�'
-        });
+          type: "warning",
+          message: "鍦烘櫙鍚嶄笉鑳戒负绌�"
+        })
         return false
       } else if (!this.sceneForm.alarm_level) {
         this.$notify({
-          type: 'warning',
-          message: '浜嬩欢绛夌骇涓嶈兘涓虹┖'
-        });
+          type: "warning",
+          message: "浜嬩欢绛夌骇涓嶈兘涓虹┖"
+        })
         return false
       } else if (!this.sceneForm.time_rule_id) {
         this.$notify({
-          type: 'warning',
-          message: '鏃堕棿娈典笉鑳戒负绌�'
-        });
+          type: "warning",
+          message: "鏃堕棿娈典笉鑳戒负绌�"
+        })
         return false
       }
       return true
     },
     saveSceneRule() {
-
       if (!this.validateForm()) {
         return
       }
-      let editorResp = this.$refs.sceneEditor.submitRule();
-      this.sceneForm.rules = editorResp.rules;
-      this.sceneForm.id = editorResp.id;
-      this.sceneForm.group_text = editorResp.text;
-      this.onSaveScene(this.sceneForm);
+      let editorResp = this.$refs.sceneEditor.submitRule()
+      this.sceneForm.rules = editorResp.rules
+      this.sceneForm.id = editorResp.id
+      this.sceneForm.group_text = editorResp.text
+
+      this.onSaveScene(this.sceneForm)
     },
     handleDelScene(groupRule) {
-      let _this = this;
+      let _this = this
       this.$confirm("鎻愮ず锛氬垹闄ゅ悗锛岃鏉¤鍒欏皢澶辨晥锛屾槸鍚﹀垹闄わ紵", {
         center: true,
         cancelButtonClass: "comfirm-class-cancle",
         confirmButtonClass: "comfirm-class-sure"
       })
         .then(() => {
-          deleteCameraScene(groupRule.id).then(res => {
-            this.$emit("delete-rule");
+          deleteCameraScene(groupRule.id).then((res) => {
+            this.$emit("delete-rule")
             if (res && res.success) {
               this.$notify({
                 type: "success",
                 message: "鍒犻櫎鎴愬姛"
-              });
-              _this.$root.$children[0].$children[0].querySearchAsync('camera')
+              })
+              _this.$root.$children[0].$children[0].querySearchAsync("camera")
             } else {
               this.$notify({
                 type: "error",
                 message: "鍒犻櫎澶辫触锛�"
-              });
+              })
             }
-          });
+          })
         })
-        .catch(() => { });
+        .catch(() => {})
     },
     cellStyle(obj) {
-      if (obj.column.label == '绛栫暐') {
-        return 'text-align:left;padding-left:8px;'
+      if (obj.column.label == "绛栫暐" || obj.column.label == "浜嬩欢澹伴煶") {
+        return "text-align:left;padding-left:8px;"
       }
     }
   }
@@ -409,7 +445,7 @@
         }
       }
       textarea {
-        height: 143px;
+        height: 92px;
       }
     }
     .right {
@@ -440,7 +476,10 @@
     }
     .cell {
       padding-left: 0 !important;
+      i {
+        outline: none !important;
+      }
     }
   }
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.8.0