diff --git a/src/views/GroupEvolution/components/wordsCloud.vue b/src/views/GroupEvolution/components/wordsCloud.vue index 71b2be5..a5e18f4 100644 --- a/src/views/GroupEvolution/components/wordsCloud.vue +++ b/src/views/GroupEvolution/components/wordsCloud.vue @@ -43,6 +43,8 @@ const scanAngle = ref(0) const scanTimer = ref(null) const containerWidth = 350 const containerHeight = 276 +// 添加状态变量跟踪是否已完成第一个周期 +const hasCompletedFirstCycle = ref(false) const words = ref(props.wordsCloudList) @@ -80,17 +82,31 @@ const startScan = () => { const progress = (elapsedTime / duration) % 1 const newScanAngle = progress * 360 + // 只在第一个周期结束时执行一次重置 if (newScanAngle < scanAngle.value) { - words.value.forEach((w) => (w.visible = false)) - startTime = timestamp + if (!hasCompletedFirstCycle.value) { + // 第一个周期结束,标记为已完成 + hasCompletedFirstCycle.value = true + } else { + // 后续周期不再重置词语可见性 + // 但仍需更新startTime以保持动画流畅 + startTime = timestamp + } } scanAngle.value = newScanAngle - words.value.forEach((word) => { - if (!word.visible && scanAngle.value >= word.angle) { + // 始终显示所有词语(第一个周期后)或根据扫描角度显示(第一个周期) + if (hasCompletedFirstCycle.value) { + words.value.forEach((word) => { word.visible = true - } - }) + }) + } else { + words.value.forEach((word) => { + if (!word.visible && scanAngle.value >= word.angle) { + word.visible = true + } + }) + } scanTimer.value = requestAnimationFrame(animate) } diff --git a/src/views/KeyNodeDiscern/bridgeCommunication/components/LeaderDetailDialog.vue b/src/views/KeyNodeDiscern/bridgeCommunication/components/LeaderDetailDialog.vue index 9edd9e0..d8a1840 100644 --- a/src/views/KeyNodeDiscern/bridgeCommunication/components/LeaderDetailDialog.vue +++ b/src/views/KeyNodeDiscern/bridgeCommunication/components/LeaderDetailDialog.vue @@ -1,5 +1,10 @@