diff --git a/src/views/layout/components/main/home/index.vue b/src/views/layout/components/main/home/index.vue index 5ef6c02..c321d91 100644 --- a/src/views/layout/components/main/home/index.vue +++ b/src/views/layout/components/main/home/index.vue @@ -108,7 +108,7 @@ export default { // 实时更新所有飞机位置 和轨迹 planePositions: { handler (allPositions) { - // allPositions 是一个数组,每个元素是该飞机的 position 数组 + // allPositions 是一个数组,每个元素是该飞机的 position 数组 allPositions.forEach((positions, idx) => { const n = positions.length if (n > 2) { @@ -130,10 +130,19 @@ export default { deep: true }, /** - * @description: 侧边栏显隐 + * @description: 侧边栏缩进有变化时 地图重新自适应 */ - isCollapse () { - return this.$store.state.app.isCollapse + isCollapse: { + handler (val) { + if (val) { + setTimeout(() => { + this.$nextTick(() => { + this.$refs.mapbox.handleResize() + }) + }, 500) + } + }, + deep: true } }, destroyed () { diff --git a/src/views/layout/components/main/nofly/setNofly.vue b/src/views/layout/components/main/nofly/setNofly.vue index 60ffc95..48db50c 100644 --- a/src/views/layout/components/main/nofly/setNofly.vue +++ b/src/views/layout/components/main/nofly/setNofly.vue @@ -43,10 +43,20 @@ export default { }) } }, - isCollapse (val) { - if (val) { - this.$refs.mapbox.handleResize() - } + /** + * @description: 侧边栏缩进有变化时 地图重新自适应 + */ + isCollapse: { + handler (val) { + if (val) { + setTimeout(() => { + this.$nextTick(() => { + this.$refs.mapbox.handleResize() + }) + }, 500) + } + }, + deep: true } } } diff --git a/src/views/layout/components/main/nofly/setRestrictfly.vue b/src/views/layout/components/main/nofly/setRestrictfly.vue index 1e62f08..d0e0644 100644 --- a/src/views/layout/components/main/nofly/setRestrictfly.vue +++ b/src/views/layout/components/main/nofly/setRestrictfly.vue @@ -43,10 +43,20 @@ export default { }) } }, - isCollapse (val) { - if (val) { - this.$refs.mapbox.handleResize() - } + /** + * @description: 侧边栏缩进有变化时 地图重新自适应 + */ + isCollapse: { + handler (val) { + if (val) { + setTimeout(() => { + this.$nextTick(() => { + this.$refs.mapbox.handleResize() + }) + }, 500) + } + }, + deep: true } } } diff --git a/src/views/layout/components/main/planes/index.vue b/src/views/layout/components/main/planes/index.vue index d94a392..de3ac3b 100644 --- a/src/views/layout/components/main/planes/index.vue +++ b/src/views/layout/components/main/planes/index.vue @@ -290,11 +290,14 @@ export default { isCollapse: { handler (val) { if (val) { - this.$nextTick(() => { - this.$refs.mapbox.handleResize() - }) + setTimeout(() => { + this.$nextTick(() => { + this.$refs.mapbox.handleResize() + }) + }, 500) } - } + }, + deep: true } } } diff --git a/src/views/layout/components/main/planes/swarm.vue b/src/views/layout/components/main/planes/swarm.vue index 6c8c4d6..db13648 100644 --- a/src/views/layout/components/main/planes/swarm.vue +++ b/src/views/layout/components/main/planes/swarm.vue @@ -202,6 +202,7 @@ export default { return } + let minTargetAlt = Infinity // 标记最矮飞机 的目标高度 初始化为正无穷大 // 计算每架飞机相对于当前中心的偏移量 const commands = this.planeList.map(p => { const pos = p?.planeState?.position @@ -216,12 +217,22 @@ export default { const newLat = targetLat + offsetLat const newAlt = targetAlt + offsetAlt + if (newAlt < minTargetAlt) { + minTargetAlt = newAlt + } + return { macadd: p.macadd, cmd: `{guidedMode:{lon:${newLon.toFixed(7)},lat:${newLat.toFixed(7)},alt:${newAlt.toFixed(1)}}}` } }).filter(Boolean) + // 最矮的飞机小于地面高度 返回 + if (minTargetAlt < 0) { + this.$message.warning(`指令已取消:最矮飞机将飞到地面以下(最低高度 ${minTargetAlt.toFixed(1)} 米)`) + return + } + // 发送控制指令 commands.forEach(({ macadd, cmd }) => { mqtt.publishFun(`cmd/${macadd}`, cmd) @@ -307,10 +318,19 @@ export default { deep: true }, /** - * @description: 侧边栏显隐 + * @description: 侧边栏缩进有变化时 地图重新自适应 */ - isCollapse () { - return this.$store.state.app.isCollapse + isCollapse: { + handler (val) { + if (val) { + setTimeout(() => { + this.$nextTick(() => { + this.$refs.mapbox.handleResize() + }) + }, 500) + } + }, + deep: true } } } diff --git a/src/views/layout/components/main/route/add.vue b/src/views/layout/components/main/route/add.vue index 67e4f01..15b1864 100644 --- a/src/views/layout/components/main/route/add.vue +++ b/src/views/layout/components/main/route/add.vue @@ -80,6 +80,12 @@ export default { */ routeList () { return this.$store.state.routeList + }, + /** + * @description: 侧边栏显隐 + */ + isCollapse () { + return this.$store.state.app.isCollapse } }, methods: { @@ -169,6 +175,21 @@ export default { watch: { routeList () { this.initPage()// 初始化页面 + }, + /** + * @description: 侧边栏缩进有变化时 地图重新自适应 + */ + isCollapse: { + handler (val) { + if (val) { + setTimeout(() => { + this.$nextTick(() => { + this.$refs.mapbox.handleResize() + }) + }, 500) + } + }, + deep: true } }, created () { diff --git a/src/views/layout/index.vue b/src/views/layout/index.vue index a9dcef4..049d3b7 100644 --- a/src/views/layout/index.vue +++ b/src/views/layout/index.vue @@ -220,7 +220,7 @@ export default { plane.planeState[key] = homePosition } else if (key === 'statusText') { /* 飞控信息 插入日志 */ - this.$store.dispatch('fetchLog', { content: jsonData[key], color: '#f57c00' }) + this.$store.dispatch('fetchLog', { content: `${plane.name}--${jsonData[key]}`, color: '#f57c00' }) } else { plane.planeState[key] = jsonData[key] // 按订阅信息 刷新飞机状态 }