最后修改
This commit is contained in:
		
							parent
							
								
									422e2878cc
								
							
						
					
					
						commit
						7b3d1b56e2
					
				| 
						 | 
				
			
			@ -10,7 +10,7 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup>
 | 
			
		||||
import { ref, watch, onUnmounted, nextTick, defineProps } from "vue"
 | 
			
		||||
import { ref, watch, onUnmounted, nextTick } from "vue"
 | 
			
		||||
import { useKeyNodeStore2 } from "@/store/keyNodeStore2"
 | 
			
		||||
import * as echarts from "echarts/core"
 | 
			
		||||
import { SVGRenderer } from "echarts/renderers"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,7 +52,7 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup>
 | 
			
		||||
import { ref, defineExpose, watch, computed, defineProps } from "vue"
 | 
			
		||||
import { ref, watch, computed } from "vue"
 | 
			
		||||
import { useKeyNodeStore2 } from "@/store/keyNodeStore2"
 | 
			
		||||
 | 
			
		||||
// 接收 stopAutomaticPlay 方法
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +127,7 @@ const startAutomaticPlay = () => {
 | 
			
		|||
 | 
			
		||||
    // 根据当前位置更新activeTimePoint
 | 
			
		||||
    updateActiveTimePointByPosition(newPosition)
 | 
			
		||||
  }, 300)
 | 
			
		||||
  }, 1000)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 根据位置更新activeTimePoint
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,7 +50,7 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup>
 | 
			
		||||
import { ref, computed, watch, nextTick, defineEmits } from "vue"
 | 
			
		||||
import { ref, computed, watch, nextTick } from "vue"
 | 
			
		||||
import { useKeyNodeStore2 } from "@/store/keyNodeStore2"
 | 
			
		||||
 | 
			
		||||
const emit = defineEmits(["selectLeader"])
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup>
 | 
			
		||||
import { onMounted, onUnmounted, defineProps, watch, ref, defineEmits } from "vue"
 | 
			
		||||
import { onMounted, onUnmounted, watch, ref } from "vue"
 | 
			
		||||
import * as echarts from "echarts"
 | 
			
		||||
import bridgeData from "@/assets/json/bridge_neighbors_communities.json"
 | 
			
		||||
import bridgeNodeHoverBgImg from "@/assets/images/bridge_node_hoverbgimg.png"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -118,7 +118,7 @@ const startAutomaticPlay = () => {
 | 
			
		|||
 | 
			
		||||
    // 根据当前位置更新activeTimePoint
 | 
			
		||||
    updateActiveTimePointByPosition(newPosition)
 | 
			
		||||
  }, 300)
 | 
			
		||||
  }, 1000)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 根据位置更新activeTimePoint
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,8 +8,6 @@ import * as echarts from "echarts"
 | 
			
		|||
import { nextTick, onMounted, ref, onUnmounted, watch } from "vue"
 | 
			
		||||
import { cropToCircleAsync } from "@/utils/transform"
 | 
			
		||||
import normalNodeIcon from "@/assets/images/icon/opinion-leader-normal-node.png"
 | 
			
		||||
import leaderNodeIcon from "@/assets/images/icon/bridge_node_legend.png"
 | 
			
		||||
 | 
			
		||||
import bridgeNodeHoverBgImg from "@/assets/images/bridge_node_hoverbgimg.png"
 | 
			
		||||
 | 
			
		||||
const emit = defineEmits(["handle:openDialog"])
 | 
			
		||||
| 
						 | 
				
			
			@ -26,16 +24,6 @@ const props = defineProps({
 | 
			
		|||
 | 
			
		||||
// node1是Hu Xijin 胡锡进
 | 
			
		||||
const node1Followers = [
 | 
			
		||||
  // { name: "Laura Loomer", avatar: node1_1 },
 | 
			
		||||
  // { name: "🇺🇸 Mike Davis 🇺🇸", avatar: node1_2 },
 | 
			
		||||
  // { name: "Rep. Carlos A. Gimenez", avatar: node1_3 },
 | 
			
		||||
  // { name: "Israel War Room", avatar: node1_4 },
 | 
			
		||||
  // { name: "Meme Knight 🇺🇸", avatar: node1_5 },
 | 
			
		||||
  // { name: "AIPAC 🇺🇸🇮🇱🎗️", avatar: node1_6 },
 | 
			
		||||
  // { name: "Sarah Larchmont", avatar: node1_7 },
 | 
			
		||||
  // { name: "Faraz Pervaiz", avatar: node1_8 },
 | 
			
		||||
  // { name: "Jamie Bryson", avatar: node1_9 },
 | 
			
		||||
  // { name: "大桥_daqiao", avatar: node1_10 }
 | 
			
		||||
  { name: "Mohamed Rashid Osman", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "🎗🇯🇵🇺🇸🇹🇼🇺🇦", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "Alex kennedy", avatar: normalNodeIcon },
 | 
			
		||||
| 
						 | 
				
			
			@ -60,16 +48,6 @@ const node1Followers = [
 | 
			
		|||
 | 
			
		||||
// node2: Levi Godman 的邻居
 | 
			
		||||
const node2Followers = [
 | 
			
		||||
  // { name: "Andy Ngo", avatar: node2_1 },
 | 
			
		||||
  // { name: "Andy Ngo", avatar: node2_2 }, //缺失 -> Andy Ngo (重复)
 | 
			
		||||
  // { name: "Ian Miles Cheong", avatar: node2_3 },
 | 
			
		||||
  // { name: "简爱_jianai", avatar: node2_4 },
 | 
			
		||||
  // { name: "唯有基督拯救人类!_weiyoujiduzhengjiu人类!", avatar: node2_5 },
 | 
			
		||||
  // { name: "wethenorth - 1984", avatar: node2_6 },
 | 
			
		||||
  // { name: "Lomt Lea🅰️", avatar: node2_7 },
 | 
			
		||||
  // { name: "Chad Felix Greene 🇮🇱", avatar: node2_8 },
 | 
			
		||||
  // { name: "AlinaSalazarGongora", avatar: node2_9 },
 | 
			
		||||
  // { name: "Gary Du", avatar: node2_10 }
 | 
			
		||||
  { name: "Iván J RS ⚜️", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "Анка-пулемётчица", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "Patrick Maina45", avatar: normalNodeIcon },
 | 
			
		||||
| 
						 | 
				
			
			@ -97,15 +75,6 @@ const node2Followers = [
 | 
			
		|||
 | 
			
		||||
// node3:bidishalolo的邻居节点
 | 
			
		||||
const node3Followers = [
 | 
			
		||||
  // { name: "OSINTdefender", avatar: node3_1 },
 | 
			
		||||
  // { name: "Eylon Levy", avatar: node3_2 },
 | 
			
		||||
  // { name: "Israel War Room", avatar: node3_3 },
 | 
			
		||||
  // { name: "Adam Kinzinger (Slava Ukraini) 🇺🇸🇺🇦", avatar: node3_4 },
 | 
			
		||||
  // { name: "AIPAC 🇺🇸🇮🇱🎗️", avatar: node3_5 },
 | 
			
		||||
  // { name: "Sarah Larchmont", avatar: node3_6 },
 | 
			
		||||
  // { name: "Israel Nitzan🇮🇱🎗️", avatar: node3_7 },
 | 
			
		||||
  // { name: "Jamie Bryson", avatar: node3_8 },
 | 
			
		||||
  // { name: "xiaohuaSong", avatar: node3_9 }
 | 
			
		||||
  { name: "Ron Gilbert", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "Lord Jesus Christ/ Prophet / Michael David Boyles", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "Giovana Du 🇵🇪🇨🇭❤️", avatar: normalNodeIcon },
 | 
			
		||||
| 
						 | 
				
			
			@ -130,16 +99,6 @@ const node3Followers = [
 | 
			
		|||
 | 
			
		||||
// node4:Indo-Pacific News 的邻居节点
 | 
			
		||||
const node4Followers = [
 | 
			
		||||
  // { name: "President Biden Archived", avatar: node4_1 },
 | 
			
		||||
  // { name: "Department of State", avatar: node4_2 },
 | 
			
		||||
  // { name: "平凡的厨子👨🍳_pingfandechuzi👨🍳", avatar: node4_3 },
 | 
			
		||||
  // { name: "Jared Moskowitz", avatar: node4_4 },
 | 
			
		||||
  // { name: "Fred Guttenberg", avatar: node4_5 },
 | 
			
		||||
  // { name: "S.E. Cupp", avatar: node4_6 },
 | 
			
		||||
  // { name: "Ford News", avatar: node4_7 },
 | 
			
		||||
  // { name: "J Street", avatar: node4_8 },
 | 
			
		||||
  // { name: "Faraz Pervaiz", avatar: node4_9 },
 | 
			
		||||
  // { name: "柳思长💙💛_liusichang💙💛", avatar: node4_10 }
 | 
			
		||||
  { name: "KoiN", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "Vinod Kumar", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "SKELETON", avatar: normalNodeIcon },
 | 
			
		||||
| 
						 | 
				
			
			@ -164,16 +123,6 @@ const node4Followers = [
 | 
			
		|||
 | 
			
		||||
// node5: The Spectator Index的邻居节点
 | 
			
		||||
const node5Followers = [
 | 
			
		||||
  // { name: "Secretary Antony Blinken", avatar: node5_1 },
 | 
			
		||||
  // { name: "AIPAC 🇺🇸🇮🇱🎗️", avatar: node5_2 },
 | 
			
		||||
  // { name: "美国驻华使领馆 U.S. Mission to China", avatar: node5_3 },
 | 
			
		||||
  // { name: "FJ", avatar: node5_4 },
 | 
			
		||||
  // { name: "Tammy Bruce", avatar: node5_5 },
 | 
			
		||||
  // { name: "Israel Nitzan🇮🇱🎗️", avatar: node5_6 },
 | 
			
		||||
  // { name: "ChrisT", avatar: node5_7 },
 | 
			
		||||
  // { name: "THEE((L'EtatC'estMoi))🎗️", avatar: node5_8 },
 | 
			
		||||
  // { name: "kum Kent", avatar: node5_9 },
 | 
			
		||||
  // { name: "Laura Rozen", avatar: node5_10 }
 | 
			
		||||
  { name: "Un Corsaithe Jèrriais 🌸🇯🇪", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "KokoCat", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "penny collenette", avatar: normalNodeIcon },
 | 
			
		||||
| 
						 | 
				
			
			@ -198,16 +147,6 @@ const node5Followers = [
 | 
			
		|||
 | 
			
		||||
// node6: Reuters 的邻居节点
 | 
			
		||||
const node6Followers = [
 | 
			
		||||
  // { name: "Secretary Antony Blinken", avatar: node6_1 },
 | 
			
		||||
  // { name: "AIPAC 🇺🇸🇮🇱🎗️", avatar: node6_2 },
 | 
			
		||||
  // { name: "美国驻华使领馆 U.S. Mission to China", avatar: node6_3 },
 | 
			
		||||
  // { name: "FJ", avatar: node6_4 },
 | 
			
		||||
  // { name: "Tammy Bruce", avatar: node6_5 },
 | 
			
		||||
  // { name: "Israel Nitzan🇮🇱🎗️", avatar: node6_6 },
 | 
			
		||||
  // { name: "ChrisT", avatar: node6_7 },
 | 
			
		||||
  // { name: "THEE((L'EtatC'estMoi))🎗️", avatar: node6_8 },
 | 
			
		||||
  // { name: "kum Kent", avatar: node6_9 },
 | 
			
		||||
  // { name: "Laura Rozen", avatar: node6_10 }
 | 
			
		||||
  { name: "Bartlomiej Baudler", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "ぼくはこへいた", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "hyphee3030", avatar: normalNodeIcon },
 | 
			
		||||
| 
						 | 
				
			
			@ -232,11 +171,6 @@ const node6Followers = [
 | 
			
		|||
 | 
			
		||||
// node7: Mick Wallace的邻居节点
 | 
			
		||||
const node7Followers = [
 | 
			
		||||
  // { name: "Jackson Hinkle 🇺🇸", avatar: node7_1 },
 | 
			
		||||
  // { name: "nk", avatar: node7_2 },
 | 
			
		||||
  // { name: "Jenni", avatar: node7_3 },
 | 
			
		||||
  // { name: "Phoenix", avatar: node7_4 },
 | 
			
		||||
  // { name: "Moiz bhutt", avatar: node7_5 }
 | 
			
		||||
  { name: "季艾欧", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "宁爸", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "Khizar Riaz Tanoli", avatar: normalNodeIcon },
 | 
			
		||||
| 
						 | 
				
			
			@ -261,15 +195,6 @@ const node7Followers = [
 | 
			
		|||
 | 
			
		||||
// node8:Jiushiniya的邻居节点
 | 
			
		||||
const node8Followers = [
 | 
			
		||||
  // { name: "Rep. Matt Gaetz", avatar: node8_1 },
 | 
			
		||||
  // { name: "sevennine_Bella789", avatar: node8_2 },
 | 
			
		||||
  // { name: "btsjs", avatar: node8_3 },
 | 
			
		||||
  // { name: "行者_xingzhe", avatar: node8_4 },
 | 
			
		||||
  // { name: "annie", avatar: node8_5 },
 | 
			
		||||
  // { name: "指哪打那_zhinadana", avatar: node8_6 },
 | 
			
		||||
  // { name: "爱自由(红叶)_aiziyou(hongye)", avatar: node8_7 },
 | 
			
		||||
  // { name: "loresang1996", avatar: node8_8 },
 | 
			
		||||
  // { name: "Silbernagel Simos", avatar: node8_9 }
 | 
			
		||||
  { name: "Hello", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "水明🇺🇸", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "雪线飞音符", avatar: normalNodeIcon },
 | 
			
		||||
| 
						 | 
				
			
			@ -294,15 +219,6 @@ const node8Followers = [
 | 
			
		|||
 | 
			
		||||
// node9: 刘晓明的邻居节点
 | 
			
		||||
const node9Followers = [
 | 
			
		||||
  // { name: "OSINTdefender", avatar: node9_1 },
 | 
			
		||||
  // { name: "Emmanuel Macron", avatar: node9_2 },
 | 
			
		||||
  // { name: "RoINTEL", avatar: node9_3 },
 | 
			
		||||
  // { name: "U.S. Central Command", avatar: node9_4 },
 | 
			
		||||
  // { name: "Eylon Levy", avatar: node9_5 },
 | 
			
		||||
  // { name: "david", avatar: node9_6 },
 | 
			
		||||
  // { name: "Change Zhang🇨🇦", avatar: node9_7 },
 | 
			
		||||
  // { name: "Andy C", avatar: node9_8 },
 | 
			
		||||
  // { name: "从头再来_congtouzailai", avatar: node9_9 }
 | 
			
		||||
  { name: "Emmy🌸互fo🌸", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "深红爱国同盟🇨🇳", avatar: normalNodeIcon },
 | 
			
		||||
  { name: "Putin Huylo 🇺🇸🇺🇦", avatar: normalNodeIcon },
 | 
			
		||||
| 
						 | 
				
			
			@ -449,7 +365,6 @@ const initAllGraphData = async () => {
 | 
			
		|||
            target: userId
 | 
			
		||||
          })
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
          console.error(`Failed to process follower avatar for ${followerName}:`, error)
 | 
			
		||||
          // 即使头像处理失败,也添加节点(使用默认样式)
 | 
			
		||||
          const followerNode = {
 | 
			
		||||
            id: userId,
 | 
			
		||||
| 
						 | 
				
			
			@ -483,6 +398,79 @@ const initAllGraphData = async () => {
 | 
			
		|||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // 添加随机连边
 | 
			
		||||
  // 1. 生成意见领袖之间的连边(增加边数,提高网络密度)
 | 
			
		||||
  const leaderNodes = nodes.filter(node => node.category === 0);
 | 
			
		||||
  const totalLeaders = leaderNodes.length;
 | 
			
		||||
  const leaderEdgesToAdd = Math.max(10, Math.floor(totalLeaders * 0.2 * totalLeaders));
 | 
			
		||||
  
 | 
			
		||||
  // 存储已存在的边,避免重复
 | 
			
		||||
  const existingEdgeMap = new Set();
 | 
			
		||||
  edges.forEach(edge => {
 | 
			
		||||
    existingEdgeMap.add(`${edge.source}_${edge.target}`);
 | 
			
		||||
    existingEdgeMap.add(`${edge.target}_${edge.source}`);
 | 
			
		||||
  });
 | 
			
		||||
  
 | 
			
		||||
  // 添加意见领袖之间的随机边
 | 
			
		||||
  for (let i = 0; i < leaderEdgesToAdd; i++) {
 | 
			
		||||
    const randomLeader1 = leaderNodes[Math.floor(Math.random() * totalLeaders)];
 | 
			
		||||
    let randomLeader2 = leaderNodes[Math.floor(Math.random() * totalLeaders)];
 | 
			
		||||
    
 | 
			
		||||
    // 确保不是同一个节点,且边不存在
 | 
			
		||||
    while (randomLeader1.id === randomLeader2.id || existingEdgeMap.has(`${randomLeader1.id}_${randomLeader2.id}`)) {
 | 
			
		||||
      randomLeader2 = leaderNodes[Math.floor(Math.random() * totalLeaders)];
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    edges.push({
 | 
			
		||||
      source: randomLeader1.id,
 | 
			
		||||
      target: randomLeader2.id
 | 
			
		||||
    });
 | 
			
		||||
    existingEdgeMap.add(`${randomLeader1.id}_${randomLeader2.id}`);
 | 
			
		||||
    existingEdgeMap.add(`${randomLeader2.id}_${randomLeader1.id}`);
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  // 2. 生成意见领袖与其他领袖的邻居节点之间的连边(大幅增加边数)
 | 
			
		||||
  const allUsers = nodes.filter(node => node.category === 1);
 | 
			
		||||
  const totalUsers = allUsers.length;
 | 
			
		||||
  const userLeaderEdgesToAdd = Math.max(50, Math.floor(totalUsers * 0.15));
 | 
			
		||||
  
 | 
			
		||||
  for (let i = 0; i < userLeaderEdgesToAdd; i++) {
 | 
			
		||||
    const randomUser = allUsers[Math.floor(Math.random() * totalUsers)];
 | 
			
		||||
    const randomLeader = leaderNodes[Math.floor(Math.random() * totalLeaders)];
 | 
			
		||||
    
 | 
			
		||||
    // 确保用户不是领袖的直接关注者,且边不存在
 | 
			
		||||
    if (!randomUser.id.includes(randomLeader.id) && !existingEdgeMap.has(`${randomUser.id}_${randomLeader.id}`)) {
 | 
			
		||||
      edges.push({
 | 
			
		||||
        source: randomLeader.id,
 | 
			
		||||
        target: randomUser.id
 | 
			
		||||
      });
 | 
			
		||||
      existingEdgeMap.add(`${randomUser.id}_${randomLeader.id}`);
 | 
			
		||||
      existingEdgeMap.add(`${randomLeader.id}_${randomUser.id}`);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  // 3. 生成不同领袖的邻居节点之间的连边(大幅增加边数)
 | 
			
		||||
  const userUserEdgesToAdd = Math.max(100, Math.floor(totalUsers * 0.2));
 | 
			
		||||
  
 | 
			
		||||
  for (let i = 0; i < userUserEdgesToAdd; i++) {
 | 
			
		||||
    const randomUser1 = allUsers[Math.floor(Math.random() * totalUsers)];
 | 
			
		||||
    let randomUser2 = allUsers[Math.floor(Math.random() * totalUsers)];
 | 
			
		||||
    
 | 
			
		||||
    // 确保不是同一个节点,不是来自同一个领袖,且边不存在
 | 
			
		||||
    while (randomUser1.id === randomUser2.id || 
 | 
			
		||||
           randomUser1.id.split('_')[1] === randomUser2.id.split('_')[1] || 
 | 
			
		||||
           existingEdgeMap.has(`${randomUser1.id}_${randomUser2.id}`)) {
 | 
			
		||||
      randomUser2 = allUsers[Math.floor(Math.random() * totalUsers)];
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    edges.push({
 | 
			
		||||
      source: randomUser1.id,
 | 
			
		||||
      target: randomUser2.id
 | 
			
		||||
    });
 | 
			
		||||
    existingEdgeMap.add(`${randomUser1.id}_${randomUser2.id}`);
 | 
			
		||||
    existingEdgeMap.add(`${randomUser2.id}_${randomUser1.id}`);
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  allGraphData.value = { nodes, edges }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -723,8 +711,16 @@ const renderChart = () => {
 | 
			
		|||
        links: edges,
 | 
			
		||||
        categories: [{ name: "意见领袖" }, { name: "普通用户" }],
 | 
			
		||||
        force: {
 | 
			
		||||
          repulsion: 100,
 | 
			
		||||
          edgeLength: 80
 | 
			
		||||
          // 增加排斥力使节点更分散
 | 
			
		||||
          repulsion: 300,
 | 
			
		||||
          // 增加边长度使节点间距更大
 | 
			
		||||
          edgeLength: 120,
 | 
			
		||||
          // 添加引力使整体布局更紧凑有序
 | 
			
		||||
          gravity: 0.1,
 | 
			
		||||
          // 开启动画使布局变化更平滑
 | 
			
		||||
          layoutAnimation: true,
 | 
			
		||||
          // 调整摩擦系数控制节点速度
 | 
			
		||||
          friction: 0.6
 | 
			
		||||
        },
 | 
			
		||||
        label: {
 | 
			
		||||
          position: "center"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -109,7 +109,7 @@
 | 
			
		|||
    <el-dialog v-model="postDialog" :width="640" align-center class="custom-dialog">
 | 
			
		||||
      <img src="@/assets/images/head/post-dialog-title.png" alt="" class="postTitleImage" />
 | 
			
		||||
      <div class="dialog-content">
 | 
			
		||||
        <div class="post-content">{{ currentPostContent }}</div>
 | 
			
		||||
        <div class="post-content" v-text="currentPostContent"></div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </el-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -181,7 +181,7 @@ provide("statisticsList", interactionStore.statisticsList)
 | 
			
		|||
 | 
			
		||||
<style scoped lang="scss">
 | 
			
		||||
:deep(.custom-dialog) {
 | 
			
		||||
  width: vw(640);
 | 
			
		||||
  width: vw(740);
 | 
			
		||||
  border-width: 0, 0, 0, 0;
 | 
			
		||||
  border-style: solid;
 | 
			
		||||
  border-image-source: linear-gradient(180deg, #3aa1f8 0%, rgba(58, 161, 248, 0.2) 100%);
 | 
			
		||||
| 
						 | 
				
			
			@ -270,9 +270,28 @@ provide("statisticsList", interactionStore.statisticsList)
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
.post-content {
 | 
			
		||||
  max-height: vh(200);
 | 
			
		||||
  color: #fff;
 | 
			
		||||
  font-size: vw(16);
 | 
			
		||||
  opacity: 0.7;
 | 
			
		||||
  overflow-y: auto;
 | 
			
		||||
  white-space: pre-wrap;
 | 
			
		||||
  /* 滚动条整体样式 - WebKit浏览器 */
 | 
			
		||||
  &::-webkit-scrollbar {
 | 
			
		||||
    width: 3px; /* 垂直滚动条宽度 - 保持px单位 */
 | 
			
		||||
    height: 5px; /* 水平滚动条高度 - 保持px单位 */
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* 滚动条滑块 */
 | 
			
		||||
  &::-webkit-scrollbar-thumb {
 | 
			
		||||
    background: rgba(147, 210, 255, 0.3); /* 蓝色半透明滑块 */
 | 
			
		||||
    border-radius: vw(4);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* 鼠标悬停在滑块上的效果 */
 | 
			
		||||
  &::-webkit-scrollbar-thumb:hover {
 | 
			
		||||
    background: rgba(147, 210, 255, 0.5); /* 更明显的蓝色 */
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
.heat {
 | 
			
		||||
  display: flex;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -184,7 +184,7 @@ provide("statisticsList", characterHiddenStore.statisticsList)
 | 
			
		|||
 | 
			
		||||
<style scoped lang="scss">
 | 
			
		||||
:deep(.custom-dialog) {
 | 
			
		||||
  width: vw(640);
 | 
			
		||||
  width: vw(740);
 | 
			
		||||
  border-width: 0, 0, 0, 0;
 | 
			
		||||
  border-style: solid;
 | 
			
		||||
  border-image-source: linear-gradient(180deg, #3aa1f8 0%, rgba(58, 161, 248, 0.2) 100%);
 | 
			
		||||
| 
						 | 
				
			
			@ -274,9 +274,28 @@ provide("statisticsList", characterHiddenStore.statisticsList)
 | 
			
		|||
  opacity: 0.7;
 | 
			
		||||
}
 | 
			
		||||
.post-content {
 | 
			
		||||
  max-height: vh(200);
 | 
			
		||||
  color: #fff;
 | 
			
		||||
  font-size: vw(16);
 | 
			
		||||
  opacity: 0.7;
 | 
			
		||||
  overflow-y: auto;
 | 
			
		||||
  white-space: pre-wrap;
 | 
			
		||||
  /* 滚动条整体样式 - WebKit浏览器 */
 | 
			
		||||
  &::-webkit-scrollbar {
 | 
			
		||||
    width: 3px; /* 垂直滚动条宽度 - 保持px单位 */
 | 
			
		||||
    height: 5px; /* 水平滚动条高度 - 保持px单位 */
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* 滚动条滑块 */
 | 
			
		||||
  &::-webkit-scrollbar-thumb {
 | 
			
		||||
    background: rgba(147, 210, 255, 0.3); /* 蓝色半透明滑块 */
 | 
			
		||||
    border-radius: vw(4);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* 鼠标悬停在滑块上的效果 */
 | 
			
		||||
  &::-webkit-scrollbar-thumb:hover {
 | 
			
		||||
    background: rgba(147, 210, 255, 0.5); /* 更明显的蓝色 */
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
.heat {
 | 
			
		||||
  display: flex;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -197,10 +197,6 @@ const timePointsWithPositions = computed(() => {
 | 
			
		|||
  })
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
watch(timeList, (newList) => {
 | 
			
		||||
  console.log("🔥 timeList 被更新了:", newList)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
// watch来监听timeList变化并设置初始值
 | 
			
		||||
watch(
 | 
			
		||||
  timePointsWithPositions,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -212,7 +212,7 @@ provide("statisticsList", socialGroupsStore.statisticsList)
 | 
			
		|||
 | 
			
		||||
<style scoped lang="scss">
 | 
			
		||||
:deep(.custom-dialog) {
 | 
			
		||||
  width: vw(640);
 | 
			
		||||
  width: vw(740);
 | 
			
		||||
  border-width: 0, 0, 0, 0;
 | 
			
		||||
  border-style: solid;
 | 
			
		||||
  border-image-source: linear-gradient(180deg, #3aa1f8 0%, rgba(58, 161, 248, 0.2) 100%);
 | 
			
		||||
| 
						 | 
				
			
			@ -302,9 +302,28 @@ provide("statisticsList", socialGroupsStore.statisticsList)
 | 
			
		|||
  opacity: 0.7;
 | 
			
		||||
}
 | 
			
		||||
.post-content {
 | 
			
		||||
  max-height: vh(200);
 | 
			
		||||
  color: #fff;
 | 
			
		||||
  font-size: vw(16);
 | 
			
		||||
  opacity: 0.7;
 | 
			
		||||
  overflow-y: auto;
 | 
			
		||||
  white-space: pre-wrap;
 | 
			
		||||
  /* 滚动条整体样式 - WebKit浏览器 */
 | 
			
		||||
  &::-webkit-scrollbar {
 | 
			
		||||
    width: 3px; /* 垂直滚动条宽度 - 保持px单位 */
 | 
			
		||||
    height: 5px; /* 水平滚动条高度 - 保持px单位 */
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* 滚动条滑块 */
 | 
			
		||||
  &::-webkit-scrollbar-thumb {
 | 
			
		||||
    background: rgba(147, 210, 255, 0.3); /* 蓝色半透明滑块 */
 | 
			
		||||
    border-radius: vw(4);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* 鼠标悬停在滑块上的效果 */
 | 
			
		||||
  &::-webkit-scrollbar-thumb:hover {
 | 
			
		||||
    background: rgba(147, 210, 255, 0.5); /* 更明显的蓝色 */
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
.heat {
 | 
			
		||||
  display: flex;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -123,7 +123,7 @@ const submitForm = (formEl) => {
 | 
			
		|||
    /* 修改 el-input 样式 */
 | 
			
		||||
    :deep(.el-input__wrapper) {
 | 
			
		||||
      background: rgba(0, 166, 255, 0.1) !important; /* 背景颜色 */
 | 
			
		||||
      border: 1px solid rgba(0, 166, 255, 0.1); /* 必须要有边框,否则看不到渐变 */
 | 
			
		||||
      border: vw(1) solid rgba(0, 166, 255, 0.1); /* 必须要有边框,否则看不到渐变 */
 | 
			
		||||
      background-clip: padding-box, border-box;
 | 
			
		||||
      background-origin: border-box;
 | 
			
		||||
      box-shadow: inset 0 0 0 vw(1) #1a9adb;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user