src/utils/components/init-map.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/shootPoint/components/shootPointDialog.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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 src/views/system/shootPoint/components/shootPointDialog.vue
@@ -45,7 +45,7 @@ <!-- 航点列表 --> <div class="waypoints"> <div v-for="(wp, index) in waypoints" v-for="(wp, index) in treeData" :key="index" class="waypoint-item" :class="{ active: selectedIndex === index }" @@ -56,8 +56,8 @@ class="el-icon-success" ></i> <div class="waypoint-contnet"> <span class="waypoint-index">{{ wp.label }}</span> <span v-for="(action, aIndex) in wp.actions" <span class="waypoint-index">{{ wp.label + wp.children[0].label }}</span> <span v-for="(action, aIndex) in wp.children[0].actions" :key="action.id" class="action-icon" @click.stop="clickItem(action)"> @@ -164,24 +164,27 @@ } }, methods:{ toggleSelect(wq,index) { this.chooseItem = wq toggleSelect(data,index) { this.chooseItem = data console.log(this.treeData) console.log(wq) console.log(data) // 如果点击的是当前行,则取消选中 if (this.selectedIndex === index) { this.selectedIndex = null } else { this.selectedIndex = index } const result = this.treeData.filter(item => item.children && item.children.some(child => child.label === wq.label) ); const dataObj = result[0] const from = [dataObj.children[0]?.longitude,dataObj.children[0]?.latitude, dataObj.children[0]?.height]; const to = [dataObj.longitude,dataObj.latitude, dataObj.height]; // const result = this.treeData.filter(item => // item.children && item.children.some(child => child.label === data.label) // ); // const dataObj = result[0] // const from = [dataObj.children[0]?.longitude,dataObj.children[0]?.latitude, dataObj.children[0]?.height]; // const to = [dataObj.longitude,dataObj.latitude, dataObj.height]; const from = [data.children[0].longitude,data.children[0].latitude, data.children[0].height]; const to = [data.longitude,data.latitude, data.height]; // this.flyToAndLookAt(from, to); this.flyToAndLookAt(from, to); this.$refs.initMap.DealVisualCone(dataObj) this.$refs.initMap.DealVisualCone(data) }, // 计算 heading(偏航角) computeHeading(fromCartesian, toCartesian) { @@ -251,6 +254,8 @@ }, dealTreeData(arrList){ console.log(arrList) console.log(this.treeData) console.log(this.lastTableArr) this.treeData = arrList const childrenArr = arrList .filter(item => Array.isArray(item.children)) @@ -410,7 +415,10 @@ }, //合并逻辑 将附近n米范围内的点合并 并且处理成数据 mergePoint(arr,mergeNumber,viewer){ this.treeData = arr console.log(arr) console.log(this.treeData) // this.treeData = arr this.treeData = this.lastTableArr const result = this.replaceCloseChildrenWithHighestPoint(this.treeData,mergeNumber); // const updated = this.insertRaisedPoints(result, 0,0, 236, 130); const updated = this.insertRaisedPoints(result, globalon, globalat, towerHeight); @@ -472,7 +480,7 @@ const groundA = result[i]; const raisedA = { id: this.generateId(), label: groundA.label+ "-加高", label: groundA.label+ "-加高111", longitude: groundA.longitude, latitude: groundA.latitude, height: groundA.height, @@ -480,8 +488,9 @@ { ...pointA, id: this.generateId(), label: pointA.label + "-加高", height: pointA.height + 50 label: pointA.label + "-加高2222", height: pointA.height + 50, actions:[] } ] }; @@ -499,8 +508,9 @@ { ...pointB, id: this.generateId(), label: pointB.label + "-加高", height: pointB.height + 50 label: pointB.label + "-加高3333", height: pointB.height + 50, actions:[] } ] }; @@ -653,47 +663,50 @@ type: 'warning' }) } console.log(this.$refs.initMap.preVideoScopePrimitiveArrTie) console.log(this.treeData) console.log(this.waypoints) // this.dialogVisible = false // const dealArr = this.submitDealData() const transformed = this.treeData.map((ground, index) => { const pointNumber = index + 1; const child = ground.children?.[0] || {}; // const transformed = this.treeData.map((ground, index) => { // const pointNumber = index + 1; // const child = ground.children?.[0] || {}; return { altitude: child.height, ardGroundPoint: [ { height: ground.height, latitude: ground.latitude, longitude: ground.longitude, pointNumber: 1, targetName: ground.label } ], latitude: child.latitude, longitude: child.longitude, pointNumber: pointNumber, targetName: child.label }; }) console.log(transformed) let parmas = { templateName:this.form.templateName, modelId:this.chooseModelId, ardListWayPointsLS:transformed } addPoint(parmas).then(res=>{ console.log(res) if(res.code == 200) { this.$message({ message: '新增模板成功', type: 'success' }) this.$emit('on-submit') this.$emit('close') } }) console.log(parmas) // return { // altitude: child.height, // ardGroundPoint: [ // { // height: ground.height, // latitude: ground.latitude, // longitude: ground.longitude, // pointNumber: 1, // targetName: ground.label // } // ], // latitude: child.latitude, // longitude: child.longitude, // pointNumber: pointNumber, // targetName: child.label // }; // }) // console.log(transformed) // let parmas = { // templateName:this.form.templateName, // modelId:this.chooseModelId, // ardListWayPointsLS:transformed // } // addPoint(parmas).then(res=>{ // console.log(res) // if(res.code == 200) { // this.$message({ // message: '新增模板成功', // type: 'success' // }) // this.$emit('on-submit') // this.$emit('close') // } // }) // console.log(parmas) }, // 计算点A绕点B逆时针旋转指定角度后的新位置 // 空中点或者地面点笛卡尔坐标 塔的笛卡尔坐标 塔的朝向值 @@ -720,6 +733,7 @@ console.log(byLabel) console.log(this.lastTableArr) console.log( this.waypoints) this.treeData = this.lastTableArr }, addOrUpdate(list, newItem, key = 'label', vm = null) { let index = list.findIndex(item => item[key] === newItem[key]);