From cd1ecbca4881ba9d19858562f724aac3d152b901 Mon Sep 17 00:00:00 2001
From: jihongshun <1151753686@qq.com>
Date: 星期一, 25 八月 2025 17:23:38 +0800
Subject: [PATCH] 树结构更改逻辑算法

---
 src/utils/components/init-map.vue |   50 +++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/src/utils/components/init-map.vue b/src/utils/components/init-map.vue
index 0ebe244..dcbabc5 100644
--- a/src/utils/components/init-map.vue
+++ b/src/utils/components/init-map.vue
@@ -45,7 +45,7 @@
       <div class="cesiumContent">
         <div class="flyAction">
           <div class="actionName">{{currentAction ?currentAction.type :'' }}</div>
-          <i class="el-icon-delete" />
+          <i class="el-icon-delete" @click="deleteAction(chooseItem)" />
         </div>
         <div class="flayDataAll">
           <div class="flyData">
@@ -198,7 +198,7 @@
 let  pois = [globalon, globalat,0] 
 let cameraVideo 
 let ScopeElement; //鍏夎酱銆佽棰�
-let preVideoScopePrimitiveArrTie = [];
+// let preVideoScopePrimitiveArrTie = [];
 let scratchSetViewMatrix3 = new Cesium.Matrix3();
 let chooseId
 // let  pois = [0, 0,0] 
@@ -269,7 +269,8 @@
         newTakeVideo: '',  // 缂栬緫鏃剁殑鏂版暟鎹�
         isEditingVideo: false,  // 鎺у埗鏄惁澶勪簬缂栬緫鐘舵��
         actionCounter:0,
-        currentAction:null
+        currentAction:null,
+        preVideoScopePrimitiveArrTie:[]
     }
   },
   mounted(){
@@ -941,6 +942,7 @@
         }
       })
       const result = Object.keys(grouped).map((key, idx) => {
+        console.log(group)
         const group = grouped[key];
         const positionGround = group.groundPoiId.getValue(Cesium.JulianDate.now())
         const positionAerialPo = group.aerialPoiId.getValue(Cesium.JulianDate.now())
@@ -1063,8 +1065,8 @@
         pmObj.name = data.name;
         pmObj.primitive = cameraVideo;
         viewerM.scene.primitives.add(cameraVideo);
-        preVideoScopePrimitiveArrTie.push(pmObj);
-        preVideoScopePrimitiveArrTie.map((item)=>{
+        this.preVideoScopePrimitiveArrTie.push(pmObj);
+        this.preVideoScopePrimitiveArrTie.map((item)=>{
           if(item.id != chooseId){
             item.primitive.show = false
           }
@@ -1157,7 +1159,7 @@
       document.getElementById('cammoveResultCon').innerHTML = camResult;
       // 璁$畻璺濈锛堝崟浣嶏細绫筹級
       const distanceBetween = Cesium.Cartesian3.distance(point1, point2)
-      preVideoScopePrimitiveArrTie.map((item)=>{
+      this.preVideoScopePrimitiveArrTie.map((item)=>{
         if(item.id == chooseId){
           let obj = this.updateSZScope(Cesium.Math.toDegrees(position.longitude),Cesium.Math.toDegrees(position.latitude),position.height,heading,pitch,roll,this.zoomRatio,distanceBetween)
           item.primitive.inverseViewMatrix = obj.M
@@ -1241,18 +1243,19 @@
     DealVisualCone(data,node){
       this.rowData = data
       console.log(data)
-      this.pointGround = {
+      console.log(this.preVideoScopePrimitiveArrTie)
+      this.pointFly = {
         lon:data.children[0].longitude,
         lat:data.children[0].latitude,
         height:data.children[0].height
       }
-      this.pointFly = {
+      this.pointGround = {
         lon:data.longitude,
         lat:data.latitude,
         height:data.height
       }
       if(data.children && data.children?.length > 0) {
-        preVideoScopePrimitiveArrTie.map((item)=>{
+        this.preVideoScopePrimitiveArrTie.map((item)=>{
           if(item.name != data.children[0].label){
             item.primitive.show = false
           }else{
@@ -1260,7 +1263,7 @@
           }
         })
       }else {
-        preVideoScopePrimitiveArrTie.map((item)=>{
+        this.preVideoScopePrimitiveArrTie.map((item)=>{
           if(item.name != data.label){
             item.primitive.show = false
           }else {
@@ -1283,6 +1286,20 @@
       }else if(action.type == '缁撴潫褰曞儚'){
       }
     },
+    deleteAction(item){
+      console.log(item.children[0].actions)
+      if(!this.currentAction) return;
+      console.log(this.currentAction)
+      const point = this.currentAction.point;
+      // 浠� point.actions 涓垹闄�
+      const index = item.children[0].actions.findIndex(a => a.id === this.currentAction.id);
+      if(index !== -1){
+        item.children[0].actions.splice(index, 1);
+      }
+
+      this.$message.success("宸插垹闄ゆ搷浣�");
+      this.currentAction = null;
+    },
     changeTime(val) {
       this.time += val;
       if (this.time < 0) this.time = 0; // 鏈�灏忓�奸檺鍒�
@@ -1303,25 +1320,36 @@
       this.takePhoto = this.newTakePhoto;  // 鐐瑰嚮瀵瑰彿鏃讹紝鏇存柊鏁版嵁
       this.isEditingPhoto = false;  // 缁撴潫缂栬緫
       this.currentAction.extra.value = this.newTakePhoto
+      window.addEventListener("keydown", this.onKeyDown);
+      window.addEventListener("keyup", this.onKeyUp);
     },
     cancelEditing() {
       this.newTakePhoto = this.takePhoto;  // 鐐瑰嚮鍙栨秷鏃讹紝鎭㈠鍘熸暟鎹�
       this.isEditingPhoto = false;  // 缁撴潫缂栬緫
+      window.addEventListener("keydown", this.onKeyDown);
+      window.addEventListener("keyup", this.onKeyUp);
     },
     startEditingVideo() {
       this.newTakeVideo = this.takeVideo;  // 杩涘叆缂栬緫鏃讹紝淇濆瓨褰撳墠鐨勫��
       this.isEditingVideo = true;
+      window.removeEventListener("keydown", this.onKeyDown);
+      window.removeEventListener("keyup", this.onKeyUp);
     },
     validateVideoInput() {
       this.takeVideo = this.newTakeVideo;  // 鐐瑰嚮瀵瑰彿鏃讹紝鏇存柊鏁版嵁
       this.isEditingVideo = false;  // 缁撴潫缂栬緫
       this.currentAction.extra.value = this.newTakeVideo
+      window.addEventListener("keydown", this.onKeyDown);
+      window.addEventListener("keyup", this.onKeyUp);
     },
     cancelVideoEditing() {
       this.newTakeVideo = this.takeVideo;  // 鐐瑰嚮鍙栨秷鏃讹紝鎭㈠鍘熸暟鎹�
       this.isEditingVideo = false;  // 缁撴潫缂栬緫
+      window.addEventListener("keydown", this.onKeyDown);
+      window.addEventListener("keyup", this.onKeyUp);
     },
     doAction(point, type){
+      console.log(point)
       this.actionCounter++;
       let action = { 
         id: this.actionCounter, 
@@ -1338,7 +1366,7 @@
           action.extra.value = 'stopVideo'
       }
       console.log(action)
-      point.actions.push(action);
+      point.children[0].actions.push(action);
       console.log(point)
       this.$emit('dealAction',point)
       this.time = 10

--
Gitblit v1.9.3