冲突解决
This commit is contained in:
		
						commit
						d5378e2cb5
					
				
							
								
								
									
										25188
									
								
								src/assets/package/graphvis.esm.min3.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25188
									
								
								src/assets/package/graphvis.esm.min3.js
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
				
			
			@ -125,6 +125,7 @@ watch(
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// 让 active-needle 标定在 timeList 最后一个时间点
 | 
			
		||||
const showHidden = computed(() => {
 | 
			
		||||
  if (!timeList.value || timeList.value.length === 0) return {}
 | 
			
		||||
| 
						 | 
				
			
			@ -198,26 +199,22 @@ const handlePointPointerDown = (e) => {
 | 
			
		|||
    // 拖动结束时输出当前时间
 | 
			
		||||
    pause() // 拖动或点击时暂停自动播放
 | 
			
		||||
    const currentTimes = TansTimestamp(currentTime.value, "YYYY-MM-DD HH:mm:ss")
 | 
			
		||||
 | 
			
		||||
    emit("slide:pointerUp", currentTimes)
 | 
			
		||||
 | 
			
		||||
    document.removeEventListener("pointermove", handlePointerMove)
 | 
			
		||||
    document.removeEventListener("pointerup", handlePointerUp)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  document.addEventListener("pointermove", handlePointerMove, { passive: true })
 | 
			
		||||
  document.addEventListener("pointerup", handlePointerUp)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 点击时间段时的处理函数
 | 
			
		||||
const timeSectionWidth = 4 // 与样式保持一致
 | 
			
		||||
const handleSectionPointerDown = (time) => {
 | 
			
		||||
  pause()
 | 
			
		||||
  // 计算该时间点的中心位置
 | 
			
		||||
  const left = getTimeSectionLeft.value(time) + timeSectionWidth / 2
 | 
			
		||||
  currentPosition.value = left
 | 
			
		||||
  currentTime.value = TansTimestamp(new Date(time), "YYYY-MM-DD HH:mm:ss")
 | 
			
		||||
  emit("click:pointerDown", currentTime.value)
 | 
			
		||||
  currentTime.value = time // 保持与 timeList 精确一致
 | 
			
		||||
  emit("click:pointerDown", time) // 直接发送原始时间
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//重置时间轴
 | 
			
		||||
| 
						 | 
				
			
			@ -232,9 +229,11 @@ const reset = () => {
 | 
			
		|||
    play()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
onMounted(() => {
 | 
			
		||||
  play()
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
// 组件卸载时清理事件监听器
 | 
			
		||||
onUnmounted(() => {
 | 
			
		||||
  document.removeEventListener("pointermove", () => {})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,8 +20,13 @@ export function getPostByUtcTime(utcTime) {
 | 
			
		|||
  return http.get(`/groupEvolution/identify/posts?date=${utcTime}`)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//群体识别发现页面关系图
 | 
			
		||||
export function getRelationGraphByUtcTime(utcTime) {
 | 
			
		||||
  return http.get(`/groupEvolution/identify/relation?date=${utcTime}`)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 3.群体成员演化分析
 | 
			
		||||
<<<<<<< HEAD
 | 
			
		||||
// 3.1 获取时间线数据
 | 
			
		||||
export function getGroupMemberTimeLine() {
 | 
			
		||||
  return http.get(`/groupEvolution/groupMember/timeline`)
 | 
			
		||||
| 
						 | 
				
			
			@ -40,4 +45,9 @@ export function getGroupMemberChart() {
 | 
			
		|||
// 3.4 群体演化信息
 | 
			
		||||
export function getGroupMemberEvolutionInfoByTime(date) {
 | 
			
		||||
  return http.get(`/groupEvolution/groupMember/changeList?date=${date}`)
 | 
			
		||||
=======
 | 
			
		||||
// 3.1 群体成员演化信息列表信息
 | 
			
		||||
export function getGroupMemberInfoList() {
 | 
			
		||||
  return http.get(`/groupEvolution/groupMember/infoList`)
 | 
			
		||||
>>>>>>> 90124585f151f0a2286527a4c2e9232b86951cfb
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,7 @@ export const useGroupDiscoveryStore = defineStore("groupDiscovery", {
 | 
			
		|||
    groupList: [],
 | 
			
		||||
    chartData: {},
 | 
			
		||||
    timeList: [],
 | 
			
		||||
    graph: {},
 | 
			
		||||
    chartsData: {
 | 
			
		||||
      topSelfMedia: {
 | 
			
		||||
        xAxis: [
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +37,7 @@ export const useGroupDiscoveryStore = defineStore("groupDiscovery", {
 | 
			
		|||
          "21:57:47",
 | 
			
		||||
          "22:58:12"
 | 
			
		||||
        ],
 | 
			
		||||
        yAxis: [0, 0.5, 1.0, 1.5, 2.0, 2.5],
 | 
			
		||||
        yAxis: [0.5, 1.0, 1.5, 2.0, 2.5],
 | 
			
		||||
        data: [1.0, 0.99, 1.0, 1.0, 1.01, 2.03, 1.2, 0.99]
 | 
			
		||||
      },
 | 
			
		||||
      officialMedia: {
 | 
			
		||||
| 
						 | 
				
			
			@ -50,7 +51,7 @@ export const useGroupDiscoveryStore = defineStore("groupDiscovery", {
 | 
			
		|||
          "21:57:47",
 | 
			
		||||
          "22:58:12"
 | 
			
		||||
        ],
 | 
			
		||||
        yAxis: [0, 0.5, 1.0, 1.5],
 | 
			
		||||
        yAxis: [0.8, 1.0, 1.2],
 | 
			
		||||
        data: [1.0, 0.99, 1.0, 1.0, 1.01, 1.01, 1.2, 0.99]
 | 
			
		||||
      },
 | 
			
		||||
      ordinaryMedia: {
 | 
			
		||||
| 
						 | 
				
			
			@ -70,45 +71,52 @@ export const useGroupDiscoveryStore = defineStore("groupDiscovery", {
 | 
			
		|||
    },
 | 
			
		||||
    wordCloudData: [
 | 
			
		||||
      {
 | 
			
		||||
        text: "佩洛西",
 | 
			
		||||
        text: "主权权益",
 | 
			
		||||
        top: 115.5,
 | 
			
		||||
        left: 215.5,
 | 
			
		||||
        width: 109,
 | 
			
		||||
        height: 40,
 | 
			
		||||
        fontSize: 28,
 | 
			
		||||
        width: 80,
 | 
			
		||||
        height: 22,
 | 
			
		||||
        fontSize: 13,
 | 
			
		||||
        opacity: 1
 | 
			
		||||
      },
 | 
			
		||||
      { text: "中国", top: 183.5, left: 69.5, width: 73, height: 35, fontSize: 22, opacity: 1 },
 | 
			
		||||
      {
 | 
			
		||||
        text: "中国人民解放军",
 | 
			
		||||
        text: "局座预言",
 | 
			
		||||
        top: 80,
 | 
			
		||||
        left: 69.5,
 | 
			
		||||
        width: 73,
 | 
			
		||||
        height: 22,
 | 
			
		||||
        fontSize: 12,
 | 
			
		||||
        opacity: 0.7
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        text: "吃瓜",
 | 
			
		||||
        top: 72.5,
 | 
			
		||||
        left: 132.5,
 | 
			
		||||
        width: 123,
 | 
			
		||||
        width: 50,
 | 
			
		||||
        height: 22,
 | 
			
		||||
        fontSize: 12,
 | 
			
		||||
        opacity: 1
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        text: "中美关系",
 | 
			
		||||
        top: 171.5,
 | 
			
		||||
        text: "中国海警",
 | 
			
		||||
        top: 140,
 | 
			
		||||
        left: 212.5,
 | 
			
		||||
        width: 81,
 | 
			
		||||
        height: 22,
 | 
			
		||||
        fontSize: 14,
 | 
			
		||||
        width: 130,
 | 
			
		||||
        height: 40,
 | 
			
		||||
        fontSize: 22,
 | 
			
		||||
        opacity: 0.8
 | 
			
		||||
      },
 | 
			
		||||
      { text: "台独", top: 135.5, left: 42.5, width: 57, height: 24, fontSize: 16, opacity: 1 },
 | 
			
		||||
      {
 | 
			
		||||
        text: "台海和平",
 | 
			
		||||
        top: 228.5,
 | 
			
		||||
        left: 230.5,
 | 
			
		||||
        text: "菲律宾",
 | 
			
		||||
        top: 150,
 | 
			
		||||
        left: 50,
 | 
			
		||||
        width: 81,
 | 
			
		||||
        height: 22,
 | 
			
		||||
        fontSize: 14,
 | 
			
		||||
        opacity: 0.8
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        text: "坚决反对",
 | 
			
		||||
        text: "手指",
 | 
			
		||||
        top: 200.5,
 | 
			
		||||
        left: 38.5,
 | 
			
		||||
        width: 73,
 | 
			
		||||
| 
						 | 
				
			
			@ -117,34 +125,44 @@ export const useGroupDiscoveryStore = defineStore("groupDiscovery", {
 | 
			
		|||
        opacity: 0.7
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        text: "联合公报",
 | 
			
		||||
        top: 241.5,
 | 
			
		||||
        left: 130.5,
 | 
			
		||||
        text: "装甲船",
 | 
			
		||||
        top: 50,
 | 
			
		||||
        left: 160.5,
 | 
			
		||||
        width: 73,
 | 
			
		||||
        height: 19,
 | 
			
		||||
        fontSize: 12,
 | 
			
		||||
        opacity: 0.7
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        text: "有力反制",
 | 
			
		||||
        text: "登检",
 | 
			
		||||
        top: 211.5,
 | 
			
		||||
        left: 143.5,
 | 
			
		||||
        width: 73,
 | 
			
		||||
        width: 50,
 | 
			
		||||
        height: 19,
 | 
			
		||||
        fontSize: 12,
 | 
			
		||||
        opacity: 1
 | 
			
		||||
      },
 | 
			
		||||
      { text: "白宫", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
 | 
			
		||||
      { text: "内政", top: 87.5, left: 36.5, width: 53, height: 22, fontSize: 14, opacity: 1 },
 | 
			
		||||
      { text: "访台", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
 | 
			
		||||
      { text: "领土", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
 | 
			
		||||
      { text: "原则", top: 77.5, left: 264.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
 | 
			
		||||
      { text: "台湾", top: 195.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 }
 | 
			
		||||
      { text: "执法", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
 | 
			
		||||
      { text: "现场画面", top: 110, left: 26, width: 90, height: 22, fontSize: 14, opacity: 1 },
 | 
			
		||||
      { text: "渔民", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
 | 
			
		||||
      { text: "包夹", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
 | 
			
		||||
      { text: "枪支", top: 77.5, left: 264.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
 | 
			
		||||
      { text: "解决", top: 195.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
 | 
			
		||||
      {
 | 
			
		||||
        text: "大刀长矛",
 | 
			
		||||
        top: 186,
 | 
			
		||||
        left: 200.5,
 | 
			
		||||
        width: 70,
 | 
			
		||||
        height: 19,
 | 
			
		||||
        fontSize: 12,
 | 
			
		||||
        opacity: 0.8
 | 
			
		||||
      }
 | 
			
		||||
    ],
 | 
			
		||||
    posts: []
 | 
			
		||||
  }),
 | 
			
		||||
  actions: {
 | 
			
		||||
    async initializeGroupList(time = "2024-05-16 16:56:04") {
 | 
			
		||||
    //获取群体列表数据
 | 
			
		||||
    async initializeGroupList(time = "") {
 | 
			
		||||
      const res = await getGroupEvolutionGroupList(time)
 | 
			
		||||
      if (res.code != 200) return
 | 
			
		||||
      const iconMap = {
 | 
			
		||||
| 
						 | 
				
			
			@ -159,6 +177,8 @@ export const useGroupDiscoveryStore = defineStore("groupDiscovery", {
 | 
			
		|||
        }))
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    //获取群体规模演化图数据
 | 
			
		||||
    async initializeGroupScaleChart() {
 | 
			
		||||
      const res = await getGroupEvolutionGroupScaleChart()
 | 
			
		||||
      if (res.code != 200) return
 | 
			
		||||
| 
						 | 
				
			
			@ -178,15 +198,36 @@ export const useGroupDiscoveryStore = defineStore("groupDiscovery", {
 | 
			
		|||
      this.chartData = resultObj
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    //获取时间轴参数
 | 
			
		||||
    async initialGraphTimestamp() {
 | 
			
		||||
      const res = await getGroupEvolutionTimeLine()
 | 
			
		||||
      if (res.code != 200) return
 | 
			
		||||
      this.timeList = res.data
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    async initialGraphByUtcTime() {},
 | 
			
		||||
    //根据时间参数获取节点数据
 | 
			
		||||
    async initialGraphByUtcTime(utcTime = "") {
 | 
			
		||||
      const res = await getRelationGraphByUtcTime(utcTime)
 | 
			
		||||
      if (res.code != 200) return
 | 
			
		||||
      const newSet = new Set()
 | 
			
		||||
      this.graph["links"] = res.data.links
 | 
			
		||||
      this.graph["nodes"] = res.data.nodes
 | 
			
		||||
        .filter((node) => {
 | 
			
		||||
          if (!newSet.has(node.name)) {
 | 
			
		||||
            newSet.add(node.name)
 | 
			
		||||
            return true
 | 
			
		||||
          }
 | 
			
		||||
          return false
 | 
			
		||||
        })
 | 
			
		||||
        .map((node) => ({
 | 
			
		||||
          id: node.name,
 | 
			
		||||
          name: node.name,
 | 
			
		||||
          groupId: node.groupId
 | 
			
		||||
        }))
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 通过时间来获取帖文列表
 | 
			
		||||
    //根据时间参数获取贴文数据
 | 
			
		||||
    async initialPostByUtcTime(utcTime) {
 | 
			
		||||
      
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -533,13 +574,13 @@ export const useGroupMemberStore = defineStore("groupMember", {
 | 
			
		|||
        id: 1,
 | 
			
		||||
        type: "群体一",
 | 
			
		||||
        focusedTopic: "#中国海警首次登检菲律宾#",
 | 
			
		||||
        value: [10, 5, 15, 5],
 | 
			
		||||
        value: [10, 5, 15, 5]
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: 2,
 | 
			
		||||
        type: "群体二",
 | 
			
		||||
        focusedTopic: "#中国海警首次登检菲律宾#",
 | 
			
		||||
        value: [10, 20, 15, 5],
 | 
			
		||||
        value: [10, 20, 15, 5]
 | 
			
		||||
      }
 | 
			
		||||
    */
 | 
			
		||||
    groupList: [],
 | 
			
		||||
| 
						 | 
				
			
			@ -567,31 +608,31 @@ export const useGroupMemberStore = defineStore("groupMember", {
 | 
			
		|||
      }
 | 
			
		||||
    ],
 | 
			
		||||
    chartData: {
 | 
			
		||||
        xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"],
 | 
			
		||||
        yAxisRange: { min: 0, max: 25, interval: 5},
 | 
			
		||||
        seriesList: [
 | 
			
		||||
          {
 | 
			
		||||
            data: [0.9237, 0.14507, 0, 0, 0],
 | 
			
		||||
            name: "分裂指数",
 | 
			
		||||
            themeColor: "#2AB8FD"
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            data: [9.8011, 21.3123, 10.4338, 14.1912, 10.1523],
 | 
			
		||||
            name: "合并指数",
 | 
			
		||||
            themeColor: "#02D7DA"
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            data: [1.9057, 1.5123, 1.0338, 0.5912, 0.1523],
 | 
			
		||||
            name: "收缩指数",
 | 
			
		||||
            themeColor: "#FFDA09"
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            data: [15.1119, 6.5123, 10.6338, 9.5912, 4.1523],
 | 
			
		||||
            name: "扩展指数",
 | 
			
		||||
            themeColor: "#EB57B0"
 | 
			
		||||
          }
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"],
 | 
			
		||||
      yAxisRange: { min: 0, max: 25, interval: 5 },
 | 
			
		||||
      seriesList: [
 | 
			
		||||
        {
 | 
			
		||||
          data: [0.9237, 0.14507, 0, 0, 0],
 | 
			
		||||
          name: "分裂指数",
 | 
			
		||||
          themeColor: "#2AB8FD"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          data: [9.8011, 21.3123, 10.4338, 14.1912, 10.1523],
 | 
			
		||||
          name: "合并指数",
 | 
			
		||||
          themeColor: "#02D7DA"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          data: [1.9057, 1.5123, 1.0338, 0.5912, 0.1523],
 | 
			
		||||
          name: "收缩指数",
 | 
			
		||||
          themeColor: "#FFDA09"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          data: [15.1119, 6.5123, 10.6338, 9.5912, 4.1523],
 | 
			
		||||
          name: "扩展指数",
 | 
			
		||||
          themeColor: "#EB57B0"
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
    chartsData: {
 | 
			
		||||
      topSelfMedia: [
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -963,7 +1004,7 @@ export const useAnomalousGroup = defineStore("anomalousGroup", {
 | 
			
		|||
  state: () => ({
 | 
			
		||||
    groupList: [
 | 
			
		||||
      {
 | 
			
		||||
        id:1,
 | 
			
		||||
        id: 1,
 | 
			
		||||
        type: "异常社团组一",
 | 
			
		||||
        abnormalGroup: [
 | 
			
		||||
          {
 | 
			
		||||
| 
						 | 
				
			
			@ -979,7 +1020,7 @@ export const useAnomalousGroup = defineStore("anomalousGroup", {
 | 
			
		|||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id:2,
 | 
			
		||||
        id: 2,
 | 
			
		||||
        type: "异常社团组二",
 | 
			
		||||
        abnormalGroup: [
 | 
			
		||||
          {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,7 +76,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: huanqiuImg,
 | 
			
		||||
        number: "3126.1w",
 | 
			
		||||
        fancyNumber: 31260000.1,
 | 
			
		||||
        transmit: "8h/1次",
 | 
			
		||||
        transmit: "8h/次",
 | 
			
		||||
        time: "2024.3.12",
 | 
			
		||||
        posts: "1.8w",
 | 
			
		||||
        atten: "76",
 | 
			
		||||
| 
						 | 
				
			
			@ -89,7 +89,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: xinlangImg,
 | 
			
		||||
        number: "5005.8w",
 | 
			
		||||
        fancyNumber: 50050000.8,
 | 
			
		||||
        transmit: "10h/1次",
 | 
			
		||||
        transmit: "10h/次",
 | 
			
		||||
        time: "2024.1.5",
 | 
			
		||||
        posts: "2.1w",
 | 
			
		||||
        atten: "98",
 | 
			
		||||
| 
						 | 
				
			
			@ -102,7 +102,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: laoImg,
 | 
			
		||||
        number: "667.5w",
 | 
			
		||||
        fancyNumber: 6675000,
 | 
			
		||||
        transmit: "10h/1次",
 | 
			
		||||
        transmit: "10h/次",
 | 
			
		||||
        time: "2024.3.8",
 | 
			
		||||
        posts: "4.7w",
 | 
			
		||||
        atten: "210",
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +115,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: cgtnImg,
 | 
			
		||||
        number: "322.1w",
 | 
			
		||||
        fancyNumber: 3221000,
 | 
			
		||||
        transmit: "15h/1次",
 | 
			
		||||
        transmit: "15h/次",
 | 
			
		||||
        time: "2024.2.18",
 | 
			
		||||
        posts: "2.5w",
 | 
			
		||||
        atten: "105",
 | 
			
		||||
| 
						 | 
				
			
			@ -128,7 +128,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: img567,
 | 
			
		||||
        number: "266",
 | 
			
		||||
        fancyNumber: 266,
 | 
			
		||||
        transmit: "18h/1次",
 | 
			
		||||
        transmit: "18h/次",
 | 
			
		||||
        time: "2024.1.30",
 | 
			
		||||
        posts: "209",
 | 
			
		||||
        atten: "3",
 | 
			
		||||
| 
						 | 
				
			
			@ -141,7 +141,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: kongtianImg,
 | 
			
		||||
        number: "516.5w",
 | 
			
		||||
        fancyNumber: 5160000.5,
 | 
			
		||||
        transmit: "18h/1次",
 | 
			
		||||
        transmit: "18h/次",
 | 
			
		||||
        time: "2024.1.28",
 | 
			
		||||
        posts: "3.2w",
 | 
			
		||||
        atten: "156",
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +154,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: luxianImg,
 | 
			
		||||
        number: "3.9w",
 | 
			
		||||
        fancyNumber: 30000.9,
 | 
			
		||||
        transmit: "18h/1次",
 | 
			
		||||
        transmit: "18h/次",
 | 
			
		||||
        time: "2024.4.15",
 | 
			
		||||
        posts: "4321",
 | 
			
		||||
        atten: "18",
 | 
			
		||||
| 
						 | 
				
			
			@ -167,7 +167,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: ggImg,
 | 
			
		||||
        number: "245",
 | 
			
		||||
        fancyNumber: 245,
 | 
			
		||||
        transmit: "19h/1次",
 | 
			
		||||
        transmit: "19h/次",
 | 
			
		||||
        time: "2024.1.22",
 | 
			
		||||
        posts: "317",
 | 
			
		||||
        atten: "6",
 | 
			
		||||
| 
						 | 
				
			
			@ -180,7 +180,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: daxiaImg,
 | 
			
		||||
        number: "288",
 | 
			
		||||
        fancyNumber: 288,
 | 
			
		||||
        transmit: "20h/1次",
 | 
			
		||||
        transmit: "20h/次",
 | 
			
		||||
        time: "2024.2.20",
 | 
			
		||||
        posts: "896",
 | 
			
		||||
        atten: "12",
 | 
			
		||||
| 
						 | 
				
			
			@ -193,7 +193,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: shenhaiImg,
 | 
			
		||||
        number: "126w",
 | 
			
		||||
        fancyNumber: 1260000,
 | 
			
		||||
        transmit: "21h/1次",
 | 
			
		||||
        transmit: "21h/次",
 | 
			
		||||
        time: "2024.3.5",
 | 
			
		||||
        posts: "8906",
 | 
			
		||||
        atten: "42",
 | 
			
		||||
| 
						 | 
				
			
			@ -206,7 +206,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: bbsImg,
 | 
			
		||||
        number: "1.3w",
 | 
			
		||||
        fancyNumber: 10000.3,
 | 
			
		||||
        transmit: "21h/1次",
 | 
			
		||||
        transmit: "21h/次",
 | 
			
		||||
        time: "2024.4.5",
 | 
			
		||||
        posts: "562",
 | 
			
		||||
        atten: "8",
 | 
			
		||||
| 
						 | 
				
			
			@ -219,7 +219,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: tangImg,
 | 
			
		||||
        number: "25",
 | 
			
		||||
        fancyNumber: 25,
 | 
			
		||||
        transmit: "22h/1次",
 | 
			
		||||
        transmit: "22h/次",
 | 
			
		||||
        time: "2024.2.5",
 | 
			
		||||
        posts: "128",
 | 
			
		||||
        atten: "2",
 | 
			
		||||
| 
						 | 
				
			
			@ -232,7 +232,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: bossImg,
 | 
			
		||||
        number: "1184",
 | 
			
		||||
        fancyNumber: 1184,
 | 
			
		||||
        transmit: "22h/1次",
 | 
			
		||||
        transmit: "22h/次",
 | 
			
		||||
        time: "2024.4.12",
 | 
			
		||||
        posts: "512",
 | 
			
		||||
        atten: "7",
 | 
			
		||||
| 
						 | 
				
			
			@ -245,7 +245,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: jiangImg,
 | 
			
		||||
        number: "1629",
 | 
			
		||||
        fancyNumber: 1629,
 | 
			
		||||
        transmit: "23h/1次",
 | 
			
		||||
        transmit: "23h/次",
 | 
			
		||||
        time: "2024.3.25",
 | 
			
		||||
        posts: "321",
 | 
			
		||||
        atten: "4",
 | 
			
		||||
| 
						 | 
				
			
			@ -258,7 +258,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: img79,
 | 
			
		||||
        number: "516.6w",
 | 
			
		||||
        fancyNumber: 5160000.6,
 | 
			
		||||
        transmit: "24h/1次",
 | 
			
		||||
        transmit: "24h/次",
 | 
			
		||||
        time: "2024.2.10",
 | 
			
		||||
        posts: "2.9w",
 | 
			
		||||
        atten: "142",
 | 
			
		||||
| 
						 | 
				
			
			@ -271,7 +271,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: qianImg,
 | 
			
		||||
        number: "40w",
 | 
			
		||||
        fancyNumber: 400000,
 | 
			
		||||
        transmit: "24h/1次",
 | 
			
		||||
        transmit: "24h/次",
 | 
			
		||||
        time: "2024.4.20",
 | 
			
		||||
        posts: "1.3w",
 | 
			
		||||
        atten: "58",
 | 
			
		||||
| 
						 | 
				
			
			@ -284,7 +284,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: aiImg,
 | 
			
		||||
        number: "223",
 | 
			
		||||
        fancyNumber: 223,
 | 
			
		||||
        transmit: "25h/1次",
 | 
			
		||||
        transmit: "25h/次",
 | 
			
		||||
        time: "2024.3.18",
 | 
			
		||||
        posts: "432",
 | 
			
		||||
        atten: "5",
 | 
			
		||||
| 
						 | 
				
			
			@ -297,7 +297,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: gaishiImg,
 | 
			
		||||
        number: "42w",
 | 
			
		||||
        fancyNumber: 420000,
 | 
			
		||||
        transmit: "26h/1次",
 | 
			
		||||
        transmit: "26h/次",
 | 
			
		||||
        time: "2024.4.1",
 | 
			
		||||
        posts: "1.2w",
 | 
			
		||||
        atten: "67",
 | 
			
		||||
| 
						 | 
				
			
			@ -310,7 +310,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: haijingImg,
 | 
			
		||||
        number: "80.9w",
 | 
			
		||||
        fancyNumber: 800000.9,
 | 
			
		||||
        transmit: "26h/1次",
 | 
			
		||||
        transmit: "26h/次",
 | 
			
		||||
        time: "2024.2.8",
 | 
			
		||||
        posts: "1.1w",
 | 
			
		||||
        atten: "35",
 | 
			
		||||
| 
						 | 
				
			
			@ -323,7 +323,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
        avatar: img91221,
 | 
			
		||||
        number: "1947",
 | 
			
		||||
        fancyNumber: 1947,
 | 
			
		||||
        transmit: "30h/1次",
 | 
			
		||||
        transmit: "30h/次",
 | 
			
		||||
        time: "2024.1.15",
 | 
			
		||||
        posts: "654",
 | 
			
		||||
        atten: "9",
 | 
			
		||||
| 
						 | 
				
			
			@ -402,10 +402,9 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
    statisticsList: [
 | 
			
		||||
      { id: 1, name: "节点数", icon: nodeNumber, number: 0 },
 | 
			
		||||
      { id: 2, name: "社团数", icon: teamNumber, number: Object.keys(communityList).length },
 | 
			
		||||
      { id: 3, name: "锚点数", icon: position, number: Object.keys(anchorList).length },
 | 
			
		||||
      { id: 4, name: "已监控锚点", icon: monitor, number: 20 },
 | 
			
		||||
      { id: 5, name: "活跃预警事件", icon: warning, number: 0 },
 | 
			
		||||
      { id: 6, name: "高风险事件", icon: danger, number: 0 }
 | 
			
		||||
      { id: 3, name: "推荐锚点账号", icon: monitor, number: 20 },
 | 
			
		||||
      { id: 4, name: "锚点实时关注话题", icon: warning, number: 0 },
 | 
			
		||||
      { id: 5, name: "高风险事件", icon: danger, number: 0 }
 | 
			
		||||
    ],
 | 
			
		||||
    //贴文列表
 | 
			
		||||
    posts: [
 | 
			
		||||
| 
						 | 
				
			
			@ -541,8 +540,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [12000, 12690, 12108, 10790, 9004, 5000, 4890, 3300],
 | 
			
		||||
            realityData: [8959, 7460, 8334, 7902, 5753, 3070, "-", "-"]
 | 
			
		||||
            predictedData: [5678, 6643, 8123, 8356, 8523, 7653, 7533, 6533],
 | 
			
		||||
            realityData: [5745, 6768, 7975, 8045, 8467, 7564, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
| 
						 | 
				
			
			@ -560,8 +559,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [11000, 11690, 10108, 10690, 11004, 10006, 11890, 10878],
 | 
			
		||||
            realityData: [9959, 8860, 8334, 9902, 8753, 7070, "-", "-"]
 | 
			
		||||
            predictedData: [5678, 6643, 8123, 8356, 8523, 7653, 7533, 6533],
 | 
			
		||||
            realityData: [5745, 6768, 7975, 8045, 8467, 7564, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -577,8 +576,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [11500, 10690, 9108, 12690, 13004, 13006, 12890, 9878],
 | 
			
		||||
            realityData: [10959, 9860, 8334, 11902, 12753, 11070, "-", "-"]
 | 
			
		||||
            predictedData: [6522, 7023, 7112, 7233, 7590, 5421, 5211, 3086],
 | 
			
		||||
            realityData: [6543, 6885, 7044, 7362, 7422, 5223, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
| 
						 | 
				
			
			@ -596,8 +595,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [10000, 10390, 9808, 10690, 11004, 12006, 10890, 8878],
 | 
			
		||||
            realityData: [9090, 9860, 8434, 10902, 11753, 10070, "-", "-"]
 | 
			
		||||
            predictedData: [5678, 6643, 8123, 8356, 8523, 7653, 7533, 6533],
 | 
			
		||||
            realityData: [5745, 6768, 7975, 8045, 8467, 7564, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -613,8 +612,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [10000, 10390, 9808, 10690, 11004, 12006, 10890, 9878],
 | 
			
		||||
            realityData: [9090, 9860, 8434, 10902, 11753, 10070, "-", "-"]
 | 
			
		||||
            predictedData: [6522, 7023, 7112, 7233, 7590, 5421, 5211, 3086],
 | 
			
		||||
            realityData: [6543, 6885, 7044, 7362, 7422, 5223, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -630,8 +629,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [8001, 8500, 9500, 9756, 9655, 8545, 10556, 10545],
 | 
			
		||||
            realityData: [9090, 9860, 8434, 10902, 11753, 10070, "-", "-"]
 | 
			
		||||
            predictedData: [3256, 3489, 3907, 4579, 4378, 4269, 4123, 3789],
 | 
			
		||||
            realityData: [3463, 3790, 4378, 4678, 4567, 4324, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
| 
						 | 
				
			
			@ -649,8 +648,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high2Img,
 | 
			
		||||
          riskType: "中风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [9001, 8500, 9500, 9756, 9655, 8545, 10556, 12545],
 | 
			
		||||
            realityData: [9090, 9860, 8434, 9902, 9753, 10070, "-", "-"]
 | 
			
		||||
            predictedData: [5678, 6643, 8123, 8356, 8523, 7653, 7533, 6533],
 | 
			
		||||
            realityData: [5745, 6768, 7975, 8045, 8467, 7564, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -666,8 +665,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [8001, 8500, 9500, 9756, 9655, 8545, 10556, 10956],
 | 
			
		||||
            realityData: [9090, 9860, 8434, 10902, 11753, 10070, "-", "-"]
 | 
			
		||||
            predictedData: [6522, 7023, 7112, 7233, 7590, 5421, 5211, 3086],
 | 
			
		||||
            realityData: [6543, 6885, 7044, 7362, 7422, 5223, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -683,8 +682,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [8646, 8895, 9570, 9656, 8655, 8545, 10556, 10487],
 | 
			
		||||
            realityData: [8090, 8840, 8434, 9002, 7053, 8070, "-", "-"]
 | 
			
		||||
            predictedData: [3256, 3489, 3907, 4579, 4378, 4269, 4123, 3789],
 | 
			
		||||
            realityData: [3463, 3790, 4378, 4678, 4567, 4324, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -701,8 +700,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [8646, 8895, 9570, 9656, 8655, 8545, 10556, 11314],
 | 
			
		||||
            realityData: [8090, 8840, 8434, 9002, 7053, 8070, "-", "-"]
 | 
			
		||||
            predictedData: [3290, 3546, 3997, 4602, 4422, 4337, 4168, 3812],
 | 
			
		||||
            realityData: [3522, 3835, 4401, 4712, 4635, 4413, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
| 
						 | 
				
			
			@ -720,8 +719,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high1Img,
 | 
			
		||||
          riskType: "高风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [8646, 8895, 9570, 9656, 8655, 8545, 10556, 16597],
 | 
			
		||||
            realityData: [8090, 8840, 8434, 9002, 7053, 8070, "-", "-"]
 | 
			
		||||
            predictedData: [5678, 6643, 8123, 8356, 8523, 7653, 7533, 6533],
 | 
			
		||||
            realityData: [5745, 6768, 7975, 8045, 8467, 7564, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -737,8 +736,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high2Img,
 | 
			
		||||
          riskType: "中风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [8646, 8895, 9570, 9656, 8655, 8545, 10556, 12545],
 | 
			
		||||
            realityData: [8090, 8840, 8434, 9002, 7053, 8070, "-", "-"]
 | 
			
		||||
            predictedData: [6522, 7023, 7112, 7233, 7590, 5421, 5211, 3086],
 | 
			
		||||
            realityData: [6543, 6885, 7044, 7362, 7422, 5223, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -754,8 +753,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [9646, 9895, 10570, 11000, 10546, 10664, 12056, 10557],
 | 
			
		||||
            realityData: [8698, 7865, 6545, 8084, 9000, 9854, "-", "-"]
 | 
			
		||||
            predictedData: [3256, 3489, 3907, 4579, 4378, 4269, 4123, 3789],
 | 
			
		||||
            realityData: [3463, 3790, 4378, 4678, 4567, 4324, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -772,8 +771,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [8646, 8895, 9570, 9656, 8655, 8545, 10556, 8556],
 | 
			
		||||
            realityData: [8090, 8840, 8434, 9002, 7053, 8070, "-", "-"]
 | 
			
		||||
            predictedData: [3290, 3546, 3997, 4602, 4422, 4337, 4168, 3812],
 | 
			
		||||
            realityData: [3522, 3835, 4401, 4712, 4635, 4413, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -789,8 +788,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [9855, 12531, 13556, 12011, 10145, 95545, 13524, 10697],
 | 
			
		||||
            realityData: [9045, 11004, 12554, 10055, 9542, 10001, "-", "-"]
 | 
			
		||||
            predictedData: [3349, 3591, 4020, 4636, 4490, 4426, 4212, 3880],
 | 
			
		||||
            realityData: [3556, 3892, 4491, 4735, 4679, 4481, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
| 
						 | 
				
			
			@ -808,8 +807,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high2Img,
 | 
			
		||||
          riskType: "中风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [10565, 11554, 12565, 13265, 11012, 15631, 13556, 13005],
 | 
			
		||||
            realityData: [10000, 10456, 9000, 9500, 10500, 11500, "-", "-"]
 | 
			
		||||
            predictedData: [5678, 6643, 8123, 8356, 8523, 7653, 7533, 6533],
 | 
			
		||||
            realityData: [5745, 6768, 7975, 8045, 8467, 7564, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -825,8 +824,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [8646, 8895, 9570, 9656, 8655, 8545, 10556, 11545],
 | 
			
		||||
            realityData: [8090, 8840, 8434, 9002, 7053, 8070, "-", "-"]
 | 
			
		||||
            predictedData: [6522, 7023, 7112, 7233, 7590, 5421, 5211, 3086],
 | 
			
		||||
            realityData: [6543, 6885, 7044, 7362, 7422, 5223, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -842,8 +841,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [9646, 10000, 12000, 11000, 12001, 10000, 13001, 9000],
 | 
			
		||||
            realityData: [8090, 8840, 9002, 10365, 11001, 9000, "-", "-"]
 | 
			
		||||
            predictedData: [3256, 3489, 3907, 4579, 4378, 4269, 4123, 3789],
 | 
			
		||||
            realityData: [3463, 3790, 4378, 4678, 4567, 4324, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -860,8 +859,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [12000, 10895, 12570, 12656, 11655, 12545, 13556, 8745],
 | 
			
		||||
            realityData: [10090, 9840, 9434, 10002, 9053, 9070, "-", "-"]
 | 
			
		||||
            predictedData: [3290, 3546, 3997, 4602, 4422, 4337, 4168, 3812],
 | 
			
		||||
            realityData: [3522, 3835, 4401, 4712, 4635, 4413, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -877,8 +876,8 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
 | 
			
		|||
          backimg: high3Img,
 | 
			
		||||
          riskType: "低风险",
 | 
			
		||||
          chart: {
 | 
			
		||||
            predictedData: [10646, 12895, 12570, 10656, 9655, 8545, 10556, 9048],
 | 
			
		||||
            realityData: [9090, 10040, 10434, 9012, 9053, 7070, "-", "-"]
 | 
			
		||||
            predictedData: [3349, 3591, 4020, 4636, 4490, 4426, 4212, 3880],
 | 
			
		||||
            realityData: [3556, 3892, 4491, 4735, 4679, 4481, "-", "-"]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,18 +17,21 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup>
 | 
			
		||||
import { defineProps, defineEmits } from "vue"
 | 
			
		||||
import { defineProps, defineEmits, onMounted, watch, nextTick } from "vue"
 | 
			
		||||
import { storeToRefs } from "pinia"
 | 
			
		||||
import * as echarts from "echarts"
 | 
			
		||||
import TimeAxis from "@/components/timeAxis.vue"
 | 
			
		||||
import { convertToUtcIsoString } from "@/utils/transform"
 | 
			
		||||
import nodeHoverImg from "@/assets/images/nodeHover.png"
 | 
			
		||||
const props = defineProps({
 | 
			
		||||
  store: {
 | 
			
		||||
    required: true
 | 
			
		||||
  }
 | 
			
		||||
})
 | 
			
		||||
let chart = null
 | 
			
		||||
const emit = defineEmits(["click:pointerDownAndSlide"])
 | 
			
		||||
// 解构 store 中的 state
 | 
			
		||||
const { timeList } = storeToRefs(props.store)
 | 
			
		||||
const { timeList, graph } = storeToRefs(props.store)
 | 
			
		||||
 | 
			
		||||
// 处理时间轴点击事件和拉动
 | 
			
		||||
const handlePointerDown = (time) => {
 | 
			
		||||
| 
						 | 
				
			
			@ -36,6 +39,132 @@ const handlePointerDown = (time) => {
 | 
			
		|||
  emit("click:pointerDownAndSlide", utcTime)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
<<<<<<< HEAD
 | 
			
		||||
=======
 | 
			
		||||
const initChart = () => {
 | 
			
		||||
  if (chart == null) {
 | 
			
		||||
    chart = echarts.init(document.getElementById("container"))
 | 
			
		||||
  }
 | 
			
		||||
  if (Object.keys(graph.value).length === 0) {
 | 
			
		||||
    chart.clear()
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function variableColorAndPos(groupId) {
 | 
			
		||||
    const resultMap = {
 | 
			
		||||
      0: { color: "#1f8473", x: 100, y: 100 },
 | 
			
		||||
      1: { color: "#807d2c", x: 300, y: 300 },
 | 
			
		||||
      6: { color: "#0c7090", x: 600, y: 600 }
 | 
			
		||||
    }
 | 
			
		||||
    return resultMap[parseInt(groupId)]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const option = {
 | 
			
		||||
    //hover上去的窗口
 | 
			
		||||
    tooltip: {
 | 
			
		||||
      trigger: "item",
 | 
			
		||||
      backgroundColor: "rgba(0,0,0,0)", // 透明背景
 | 
			
		||||
      borderColor: "rgba(0,0,0,0)", // 透明边框
 | 
			
		||||
      borderWidth: 0,
 | 
			
		||||
      extraCssText: "box-shadow:none;padding:0;",
 | 
			
		||||
      formatter: function (params) {
 | 
			
		||||
        if (params.dataType === "node") {
 | 
			
		||||
          return `<div
 | 
			
		||||
                    style="
 | 
			
		||||
                   padding:10px 15px;
 | 
			
		||||
                    height: 68px;
 | 
			
		||||
                    border-radius: 4px;
 | 
			
		||||
                    background: url('${nodeHoverImg}');
 | 
			
		||||
                    background-size: cover;
 | 
			
		||||
                    background-position: center;
 | 
			
		||||
                    background-repeat: no-repeat;
 | 
			
		||||
                    display: flex;
 | 
			
		||||
                    align-items: center;
 | 
			
		||||
                    justify-content: center;
 | 
			
		||||
                    flex-direction: column;
 | 
			
		||||
                    ">
 | 
			
		||||
                <div style="color:#fff;letter-spacing: 0.14px;">
 | 
			
		||||
                  <div >用户名:${params.data.name}</div>
 | 
			
		||||
                  <div >组ID:${params.data.groupId}</div>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>`
 | 
			
		||||
        }
 | 
			
		||||
        return ""
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    emphasis: {
 | 
			
		||||
      edgeLabel: {
 | 
			
		||||
        show: true,
 | 
			
		||||
        color: "#fff",
 | 
			
		||||
        fontSize: 18,
 | 
			
		||||
        textShadowColor: "#fff",
 | 
			
		||||
        textShadowBlur: 0,
 | 
			
		||||
        textShadowOffsetX: 0,
 | 
			
		||||
        textShadowOffsetY: 0
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    series: [
 | 
			
		||||
      {
 | 
			
		||||
        type: "graph",
 | 
			
		||||
        layout: "force",
 | 
			
		||||
        animation: false,
 | 
			
		||||
        draggable: true,
 | 
			
		||||
        roam: true,
 | 
			
		||||
        zoom: 0.1,
 | 
			
		||||
        force: {
 | 
			
		||||
          initLayout: "circular", // 初始布局使用圆形
 | 
			
		||||
          edgeLength: 6000,
 | 
			
		||||
          repulsion: 5000,
 | 
			
		||||
          gravity: 0.1,
 | 
			
		||||
          friction: 0.02,
 | 
			
		||||
          coolingFactor: 0.1
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        animationDurationUpdate: 3500, // 节点移动更平滑
 | 
			
		||||
        data: graph.value?.nodes.map((node) => ({
 | 
			
		||||
          ...node,
 | 
			
		||||
          symbol: "circle",
 | 
			
		||||
          x: variableColorAndPos(node.groupId).x,
 | 
			
		||||
          y: variableColorAndPos(node.groupId).y,
 | 
			
		||||
          symbolSize: 40,
 | 
			
		||||
          itemStyle: {
 | 
			
		||||
            color: variableColorAndPos(node.groupId).color,
 | 
			
		||||
            opacity: 1,
 | 
			
		||||
            borderColor: "#46C6AD",
 | 
			
		||||
            borderWidth: 1,
 | 
			
		||||
            shadowBlur: 4,
 | 
			
		||||
            borderType: "solid",
 | 
			
		||||
            shadowColor: "rgba(19, 27, 114, 0.25)"
 | 
			
		||||
          }
 | 
			
		||||
        })),
 | 
			
		||||
        links: graph.value?.links,
 | 
			
		||||
        lineStyle: {
 | 
			
		||||
          color: "#37ACD7",
 | 
			
		||||
          width: 1
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
  chart.setOption(option)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
onMounted(() => {
 | 
			
		||||
  initChart()
 | 
			
		||||
})
 | 
			
		||||
let lastPostsLength = 0 //当列表更新时,记录上一次的长度
 | 
			
		||||
watch(
 | 
			
		||||
  () => graph.value,
 | 
			
		||||
  (newValue) => {
 | 
			
		||||
    if (newValue.nodes.length > lastPostsLength) {
 | 
			
		||||
      nextTick(() => {
 | 
			
		||||
        initChart()
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
    lastPostsLength = newValue.nodes.length //实现按需更新
 | 
			
		||||
  },
 | 
			
		||||
  { deep: true }
 | 
			
		||||
)
 | 
			
		||||
>>>>>>> 90124585f151f0a2286527a4c2e9232b86951cfb
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped lang="less">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -154,14 +154,15 @@ function resumeScroll() {
 | 
			
		|||
  startScroll()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//当贴文列表更新,自动滚动到最底
 | 
			
		||||
let lastPostsLength = 0 //当列表更新时,记录上一次的长度
 | 
			
		||||
watch(
 | 
			
		||||
  () => props.posts,
 | 
			
		||||
  () => {
 | 
			
		||||
  (newVal) => {
 | 
			
		||||
    nextTick(() => {
 | 
			
		||||
      if (listRef.value) {
 | 
			
		||||
      if (listRef.value && newVal.length > lastPostsLength) {
 | 
			
		||||
        listRef.value.scrollTop = listRef.value.scrollHeight
 | 
			
		||||
      }
 | 
			
		||||
      lastPostsLength = newVal.length //实现按需滚动
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  { deep: true }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,7 +69,8 @@ const optionHandle = ({ xAxis, yAxis, data }, flag) => {
 | 
			
		|||
      nameLocation: "end",
 | 
			
		||||
      data: yAxis,
 | 
			
		||||
      max: Math.max(...yAxis),
 | 
			
		||||
      min: 0,
 | 
			
		||||
      min: 0.9,
 | 
			
		||||
 | 
			
		||||
      nameTextStyle: {
 | 
			
		||||
        color: "#B6D6F7",
 | 
			
		||||
        fontSize: 13,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -75,17 +75,16 @@ const handleOpenPostDialog = (post) => {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
const handleChangeXAxis = (utcTime) => {
 | 
			
		||||
  const timeList = groupDiscoveryStore.timeList
 | 
			
		||||
  console.log(utcTime)
 | 
			
		||||
 | 
			
		||||
  if (!timeList.includes(utcTime)) return
 | 
			
		||||
  groupDiscoveryStore.initializeGroupList(utcTime) //随着时间变动,更新群体列表
 | 
			
		||||
  groupDiscoveryStore.initialPostByUtcTime(utcTime) //随着时间轴变动,更新贴文列表
 | 
			
		||||
  groupDiscoveryStore.initialGraphByUtcTime(utcTime) //随着时间轴变动,更新关系图
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
onMounted(() => {
 | 
			
		||||
  groupDiscoveryStore.initializeGroupList()
 | 
			
		||||
  groupDiscoveryStore.initializeGroupScaleChart()
 | 
			
		||||
  groupDiscoveryStore.initialGraphTimestamp()
 | 
			
		||||
  groupDiscoveryStore.initialGraphByUtcTime()
 | 
			
		||||
})
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,8 +47,8 @@ watch(riskEventIndex, (newIndex) => {
 | 
			
		|||
  const tooltipList = keyNodeStore.tooltipList
 | 
			
		||||
 | 
			
		||||
  const highRiskCount = tooltipList[newIndex].filter((item) => item.riskType == "高风险").length
 | 
			
		||||
  keyNodeStore.statisticsList[5].number = highRiskCount
 | 
			
		||||
  keyNodeStore.statisticsList[4].number = tooltipList[newIndex].length
 | 
			
		||||
  keyNodeStore.statisticsList[4].number = highRiskCount
 | 
			
		||||
  keyNodeStore.statisticsList[3].number = tooltipList[newIndex].length
 | 
			
		||||
})
 | 
			
		||||
const emit = defineEmits(["click:openAnchorDialog"])
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user