import { defineStore } from "pinia" import nodePrefix from "@/assets/images/groupEvolution/node-prefix.png" import edgePrefix from "@/assets/images/groupEvolution/edge-prefix.png" import splitImg from "@/assets/images/groupMember/splitImg.png" import mergeImg from "@/assets/images/groupMember/mergeImg.png" import shrinkImg from "@/assets/images/groupMember/shrinkImg.png" import expamdImg from "@/assets/images/groupMember/expamdImg.png" import defaultAvatar from "@/assets/images/avatar/default.png" import { getGroupEvolutionGroupList, getGroupEvolutionGroupScaleChart, getGroupEvolutionTimeLine, getPostByUtcTime, getGroupMemberInfoList, getGroupMemberTimeLine, getGroupMemberChart, getGroupMemberEvolutionInfoByTime, getGroupMemberEvolutionAnalysisChart, getRelationGraphByUtcTime } from "@/service/api/groupEvolution" import { TansTimestamp, utcStringToHHMMSS } from "@/utils/transform" export const useGroupDiscoveryStore = defineStore("groupDiscovery", { state: () => ({ groupList: [], chartData: {}, timeList: [], graph: {}, chartsData: { topSelfMedia: { xAxis: [ "15:57:46", "16:57:55", "17:57:32", "18:58:03", "19:58:03", "20:58:04", "21:57:47", "22:58:12" ], 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: { xAxis: [ "15:57:46", "16:57:55", "17:57:32", "18:58:03", "19:58:03", "20:58:04", "21:57:47", "22:58:12" ], 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: { xAxis: [ "15:57:46", "16:57:55", "17:57:32", "18:58:03", "19:58:03", "20:58:04", "21:57:47", "22:58:12" ], yAxis: [0, 1.0, 2.0, 3.0], data: [1.08, 2.54, 1.47, 1.03, 0.98, 0.99, 1.0, 1.12] } }, wordCloudData: [ { text: "主权权益", top: 115.5, left: 215.5, width: 80, height: 22, fontSize: 13, opacity: 1 }, { text: "局座预言", top: 80, left: 69.5, width: 73, height: 22, fontSize: 12, opacity: 0.7 }, { text: "吃瓜", top: 72.5, left: 132.5, width: 50, height: 22, fontSize: 12, opacity: 1 }, { text: "中国海警", top: 140, left: 212.5, width: 130, height: 40, fontSize: 22, opacity: 0.8 }, { text: "菲律宾", top: 150, left: 50, width: 81, height: 22, fontSize: 14, opacity: 0.8 }, { text: "手指", top: 200.5, left: 38.5, width: 73, height: 19, fontSize: 12, opacity: 0.7 }, { text: "装甲船", top: 50, left: 160.5, width: 73, height: 19, fontSize: 12, opacity: 0.7 }, { text: "登检", top: 211.5, left: 143.5, 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: 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 = "") { const res = await getGroupEvolutionGroupList(time) if (res.code != 200) return const iconMap = { 节点数: nodePrefix, 连边数: edgePrefix } this.groupList = res.data this.groupList.forEach((item) => { item.list = item.list.map((statistic) => ({ ...statistic, iconImg: iconMap[statistic.name] })) }) }, //获取群体规模演化图数据 async initializeGroupScaleChart() { const res = await getGroupEvolutionGroupScaleChart() if (res.code != 200) return let resultObj = {} const themeMap = { 群体一: "#32b6fb", 群体二: "#00d6da", 群体三: "#fddc33" } resultObj["xAxisData"] = res.data.timeList.map((item) => TansTimestamp(item, "HH:mm:ss")) resultObj["yAxisRange"] = res.data.scale resultObj["seriesList"] = [] Object.entries(res.data.data).forEach(([key, list]) => { resultObj["seriesList"].push({ name: key, themeColor: themeMap[key], data: list }) }) this.chartData = resultObj }, //获取时间轴参数 async initialGraphTimestamp() { const res = await getGroupEvolutionTimeLine() if (res.code != 200) return this.timeList = res.data }, async initialGraphByUtcTime(utcTime = "") { const setColor = (groupId) => { const colorMap = { 0: "50,141,120", 1: "133,129,48", 6: "12,112,144" } return colorMap[parseInt(groupId)] } const res = await getRelationGraphByUtcTime(utcTime) if (res.code != 200) return const newSet = new Set() this.graph["links"] = res.data.links.map((link) => ({ source: link.source, target: link.target, color: setColor(link.type) })) this.graph["nodes"] = res.data.nodes .filter((node) => { if (!newSet.has(node.name)) { newSet.add(node.name) return true } return false }) .map((node) => { return { id: node.name, label: node.name, color: setColor(node.groupId), cluster: parseInt(node.groupId) } }) }, // 通过时间来获取帖文列表 //根据时间参数获取贴文数据 async initialPostByUtcTime(utcTime) { const res = await getPostByUtcTime(utcTime) if (res.code != 200) return this.posts = res.data } }, persist: true // 开启持久化 }) export const useGroupStructureStore = defineStore("groupStructure", { state: () => ({ groupList: [ { id: 1, type: "群体一", focusedTopic: "#中国海警首次登检菲律宾运补船只", statistics: [ { id: 1, iconImg: nodePrefix, name: "内部", value: 293 }, { id: 2, iconImg: edgePrefix, name: "外部", value: 21389 } ], mediaList: [] }, { id: 2, type: "群体二", focusedTopic: "#外交部回应中国海警缴获菲土乓枪支", statistics: [ { id: 1, iconImg: nodePrefix, name: "内部", value: 293 }, { id: 2, iconImg: edgePrefix, name: "外部", value: 21389 } ], mediaList: {} }, { id: 3, type: "群体三", focusedTopic: "#社会群体对中国海警缴获菲土乓枪支", statistics: [ { id: 1, iconImg: nodePrefix, name: "内部", value: 293 }, { id: 2, iconImg: edgePrefix, name: "外部", value: 21389 } ], mediaList: [] } ], chartData: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 1, interval: 0.2 }, seriesList: [ { name: "", type: "line", lineStyle: { color: "#2AB8FD", width: 1 // 设置线条宽度为3像素 }, symbolSize: 10, // 圆点大小 borderWidth: 1, // 边框宽度 data: [0.3055, 0.3939, 0.5813, 0.6094, 0.6289] } ] }, chartsData: { topSelfMedia: [ { id: 1, name: "内部密度指数演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 0.0035, interval: 0.0005 }, seriesList: [ { name: "", type: "line", lineStyle: { color: "#2AB8FD", width: 1 // 设置线条宽度为3像素 }, symbolSize: 10, // 圆点大小 borderWidth: 1, // 边框宽度 data: [0.0005, 0.002, 0.0024, 0.0026, 0.0027] } ] } }, { id: 2, name: "外部拓展指数演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 2.1, interval: 0.3 }, seriesList: [ { name: "", type: "line", lineStyle: { color: "#2AB8FD", width: 1 // 设置线条宽度为3像素 }, symbolSize: 10, // 圆点大小 borderWidth: 1, // 边框宽度 data: [1.9787, 0.6044, 0.6757, 0.6763, 0.6853] } ] } } ], officalMedia: [ { id: 1, name: "内部密度指数演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 0.0035, interval: 0.0005 }, seriesList: [ { name: "", type: "line", lineStyle: { color: "#2AB8FD", width: 1 // 设置线条宽度为3像素 }, symbolSize: 10, // 圆点大小 borderWidth: 1, // 边框宽度 data: [0.0001, 0.02, 0.024, 0.026, 0.027] } ] } }, { id: 2, name: "外部拓展指数演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 2.1, interval: 0.3 }, seriesList: [ { name: "", type: "line", lineStyle: { color: "#2AB8FD", width: 1 // 设置线条宽度为3像素 }, symbolSize: 10, // 圆点大小 borderWidth: 1, // 边框宽度 data: [1.787, 0.044, 0.757, 0.763, 0.853] } ] } } ], ordinaryMedia: [ { id: 1, name: "内部密度指数演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 0.0035, interval: 0.0005 }, seriesList: [ { name: "", type: "line", lineStyle: { color: "#2AB8FD", width: 1 // 设置线条宽度为3像素 }, symbolSize: 10, // 圆点大小 borderWidth: 1, // 边框宽度 data: [0.01, 0.2, 0.24, 0.26, 0.27] } ] } }, { id: 2, name: "外部拓展指数演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 2.1, interval: 0.3 }, seriesList: [ { name: "", type: "line", lineStyle: { color: "#2AB8FD", width: 1 // 设置线条宽度为3像素 }, symbolSize: 10, // 圆点大小 borderWidth: 1, // 边框宽度 data: [1.87, 0.44, 0.57, 0.63, 0.53] } ] } } ] }, wordCloudData: [ { text: "佩洛西", top: 115.5, left: 215.5, width: 109, height: 40, fontSize: 28, opacity: 1 }, { text: "中国", top: 183.5, left: 69.5, width: 73, height: 35, fontSize: 22, opacity: 1 }, { text: "中国人民解放军", top: 72.5, left: 132.5, width: 123, height: 22, fontSize: 12, opacity: 1 }, { text: "中美关系", top: 171.5, left: 212.5, width: 81, height: 22, fontSize: 14, 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, width: 81, height: 22, fontSize: 14, opacity: 0.8 }, { text: "坚决反对", top: 200.5, left: 38.5, width: 73, height: 19, fontSize: 12, opacity: 0.7 }, { text: "联合公报", top: 241.5, left: 130.5, width: 73, height: 19, fontSize: 12, opacity: 0.7 }, { text: "有力反制", top: 211.5, left: 143.5, width: 73, 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 } ], posts: [ { id: 1, timestamp: "2024-01-04 0:03:16", groupCategory: "群体一", innerEdgeAddCount: 8, outerEdgeAddCount: 2 }, { id: 2, timestamp: "2024-02-03 12:58:53", groupCategory: "群体一", innerEdgeAddCount: 8, outerEdgeAddCount: 2 }, { id: 3, timestamp: "2024-02-22 17:13:44", groupCategory: "群体二", innerEdgeAddCount: 13, outerEdgeAddCount: 3 }, { id: 4, timestamp: "2024-02-23 17:54:46", groupCategory: "群体三", innerEdgeAddCount: 1, outerEdgeAddCount: 2 }, { id: 5, timestamp: "2024-03-14 09:58:12", groupCategory: "群体三", innerEdgeAddCount: 1, outerEdgeAddCount: 2 }, { id: 6, timestamp: "2024-03-23 21:20:40", groupCategory: "群体三", innerEdgeAddCount: 1, outerEdgeAddCount: 2 }, { id: 7, timestamp: "2024-03-23 21:42:36", groupCategory: "群体三", innerEdgeAddCount: 1, outerEdgeAddCount: 2 }, { id: 8, timestamp: "2024-04-06 18:17:30", groupCategory: "群体三", innerEdgeAddCount: 1, outerEdgeAddCount: 2 }, { id: 9, timestamp: "2024-04-06 19:19:50", groupCategory: "群体三", innerEdgeAddCount: 1, outerEdgeAddCount: 2 }, { id: 10, timestamp: "2024-05-16 00:22:18", groupCategory: "群体三", innerEdgeAddCount: 1, outerEdgeAddCount: 2 } ] }), actions: {}, persist: false // 开启持久化 }) export const useGroupMemberStore = defineStore("groupMember", { state: () => ({ /* groupList { id: 1, type: "群体一", focusedTopic: "#中国海警首次登检菲律宾#", value: [10, 5, 15, 5] }, { id: 2, type: "群体二", focusedTopic: "#中国海警首次登检菲律宾#", value: [10, 20, 15, 5] } */ groupList: [], timeList: [], groupMemberList: [ { id: 1, type: "头部媒体", statistics: [ { id: 1, iconImg: splitImg, name: "分裂", value: 0.0298 }, { id: 2, iconImg: mergeImg, name: "合并", value: 0 }, { id: 3, iconImg: shrinkImg, name: "收缩", value: 0.4741 }, { id: 4, iconImg: expamdImg, name: "扩展", value: 1.04e-14 } ] }, { id: 2, type: "头部媒体", statistics: [ { id: 1, iconImg: splitImg, name: "分裂", value: 0.2125 }, { id: 2, iconImg: mergeImg, name: "合并", value: 1.65e-15 }, { id: 3, iconImg: shrinkImg, name: "收缩", value: 0.4313 }, { id: 4, iconImg: expamdImg, name: "扩展", value: 6.02e-15 } ] } ], 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" } ] }, /* chartsData: { topSelfMedia: [ { id: 1, name: "分裂演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 1, interval: 0.2 }, seriesList: [ { name: "分裂演化", themeColor: "#2AB8FD", data: [0.9237, 0.14507, 0, 0, 0] } ] } }, { id: 2, name: "合并演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 25, interval: 5 }, seriesList: [ { name: "合并演化", themeColor: "#02D7DA", data: [9.8011, 21.3123, 10.4338, 14.1912, 10.1523] } ] } }, { id: 3, name: "收缩演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 2, interval: 0.5 }, seriesList: [ { name: "收缩演化", themeColor: "#FFDA09", data: [1.9057, 1.5123, 1.0338, 0.5912, 0.1523] } ] } }, { id: 4, name: "扩展演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 20, interval: 5 }, seriesList: [ { name: "扩展演化", themeColor: "#EB57B0", data: [15.1119, 6.5123, 10.6338, 9.5912, 4.1523] } ] } } ], officalMedia: [ { id: 1, name: "分裂演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 1, interval: 0.2 }, seriesList: [ { name: "分裂演化", themeColor: "#2AB8FD", data: [0.9237, 0.14507, 0, 0, 0] } ] } }, { id: 2, name: "合并演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 25, interval: 5 }, seriesList: [ { name: "合并演化", themeColor: "#02D7DA", data: [9.8011, 21.3123, 10.4338, 14.1912, 10.1523] } ] } }, { id: 3, name: "收缩演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 2, interval: 0.5 }, seriesList: [ { name: "收缩演化", themeColor: "#FFDA09", data: [1.9057, 1.5123, 1.0338, 0.5912, 0.1523] } ] } }, { id: 4, name: "扩展演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 20, interval: 5 }, seriesList: [ { name: "扩展演化", themeColor: "#EB57B0", data: [15.1119, 6.5123, 10.6338, 9.5912, 4.1523] } ] } } ], ordinaryMedia: [ { id: 1, name: "分裂演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 1, interval: 0.2 }, seriesList: [ { name: "分裂演化", themeColor: "#2AB8FD", data: [0.9237, 0.14507, 0, 0, 0] } ] } }, { id: 2, name: "合并演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 25, interval: 5 }, seriesList: [ { name: "合并演化", themeColor: "#02D7DA", data: [9.8011, 21.3123, 10.4338, 14.1912, 10.1523] } ] } }, { id: 3, name: "收缩演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 2, interval: 0.5 }, seriesList: [ { name: "收缩演化", themeColor: "#FFDA09", data: [1.9057, 1.5123, 1.0338, 0.5912, 0.1523] } ] } }, { id: 4, name: "扩展演化", chart: { xAxisData: ["07:57:46", "09:30:14", "09:57:32", "10:04:47", "10:12:57"], yAxisRange: { min: 0, max: 20, interval: 5 }, seriesList: [ { name: "扩展演化", themeColor: "#EB57B0", data: [15.1119, 6.5123, 10.6338, 9.5912, 4.1523] } ] } } ] }, */ chartsData: {}, posts: [ { id: 1, time: "2024-01-04 0:03:16", type: "群体一", memberAddCount: 1 }, { id: 2, time: "2024-02-03 12:58:53", type: "群体二", memberAddCount: 2 }, { id: 3, time: "2024-02-22 17:13:44", type: "群体三", memberAddCount: 4 }, { id: 4, time: "2024-02-23 17:54:46", type: "群体一", memberAddCount: 4 }, { id: 5, time: "2024-03-14 09:58:12", type: "群体三", memberAddCount: 4 }, { id: 6, time: "2024-03-23 21:20:40", type: "群体二", memberAddCount: 4 }, { id: 7, time: "2024-03-23 21:42:36", type: "群体一", memberAddCount: 2 }, { id: 8, time: "2024-04-06 18:17:30", type: "群体二", memberAddCount: 4 }, { id: 9, time: "2024-04-06 19:19:50", type: "群体一", memberAddCount: 4 }, { id: 10, time: "2024-05-16 00:22:18", type: "群体二", memberAddCount: 5 } ], wordCloudData: [ { text: "中国海警", top: 115.5, left: 200.5, width: 150, height: 40, fontSize: 28, opacity: 1 }, { text: "渔民", top: 160.5, left: 69.5, width: 70, height: 35, fontSize: 20, opacity: 1 }, { text: "缴获", top: 72.5, left: 132.5, width: 60, height: 22, fontSize: 12, opacity: 1 }, { text: "菲律宾", top: 171.5, left: 200.5, width: 81, height: 22, fontSize: 14, opacity: 0.8 }, { text: "枪支", top: 135.5, left: 42.5, width: 57, height: 24, fontSize: 16, opacity: 1 }, { text: "装甲船", top: 223.5, left: 230.5, width: 81, height: 22, fontSize: 14, opacity: 0.8 }, { text: "渔民吃瓜", top: 200.5, left: 38.5, width: 73, height: 19, fontSize: 12, opacity: 0.7 }, { text: "执法", top: 223.5, left: 130.5, width: 60, height: 19, fontSize: 12, opacity: 0.7 }, { text: "登检", top: 200.5, left: 143.5, width: 60, 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 } ] }), actions: { async initializeGroupMemberTimeLine() { const res = await getGroupMemberTimeLine() this.timeList = res.data // console.log("测试获取timeList:",this.timeList); }, async initializeGroupList(time = "2024-06-19T07:57:46Z") { const res = await getGroupMemberInfoList(time) console.log("测试获取groupMemberInfoList:", res) const groupList = res.data.map((item) => ({ id: item.id, type: item.type, focusedTopic: item.focusedTopic, value: item.value.map((item) => item.toFixed(2)) // value: item.value.map(item => (item * 100 + 20).toFixed(2)) })) this.groupList = groupList }, async initializeGroupMemberChart() { const res = await getGroupMemberChart() // console.log("测试获取groupMemberChart:",res); const xAxisData = res.data.xaxisData.map((item) => utcStringToHHMMSS(item)) const yAxisRange = res.data.yaxisRange const themeColors = ["#2AB8FD", "#02D7DA", "#FFDA09", "#EB57B0"] const seriesList = res.data.seriesList.map((item) => ({ data: item.data.map((item) => item.toFixed(2)), name: item.name, themeColor: themeColors[item.id - 1] })) this.chartData = { xAxisData, yAxisRange, seriesList } }, async initialPostByUtcTime(utcTime) { const res = await getGroupMemberEvolutionInfoByTime(utcTime) this.posts = res.data console.log("测试获取groupMemberEvolutionInfoByTime:", res.data) }, async initializeGroupMemberEvolutionAnalysisChart() { const res = await getGroupMemberEvolutionAnalysisChart() console.log("测试获取groupMemberEvolutionAnalysisChart:", res) const themeColors = { 分裂演化: "#2AB8FD", 合并演化: "#02D7DA", 收缩演化: "#FFDA09", 扩展演化: "#EB57B0" } const topSelfMedia = res.data.topSelfMedia.map((item) => ({ id: item.id, name: item.name, chart: { xAxisData: item.chart.xaxisData.map((item) => utcStringToHHMMSS(item)), yAxisRange: { min: 0, max: Math.ceil(Math.max(...item.chart.seriesList[0].data)), interval: Math.ceil(Math.max(...item.chart.seriesList[0].data) / 5) }, seriesList: item.chart.seriesList.map((item) => ({ data: item.data, name: item.name, themeColor: themeColors[item.name] })) } })) const officalMedia = res.data.officalMedia.map((item) => ({ id: item.id, name: item.name, chart: { xAxisData: item.chart.xaxisData.map((item) => utcStringToHHMMSS(item)), yAxisRange: { min: 0, max: Math.ceil(Math.max(...item.chart.seriesList[0].data)), interval: Math.ceil(Math.max(...item.chart.seriesList[0].data) / 5) }, seriesList: item.chart.seriesList.map((item) => ({ data: item.data, name: item.name, themeColor: themeColors[item.name] })) } })) const ordinaryMedia = res.data.ordinaryMedia.map((item) => ({ id: item.id, name: item.name, chart: { xAxisData: item.chart.xaxisData.map((item) => utcStringToHHMMSS(item)), yAxisRange: { min: 0, max: Math.ceil(Math.max(...item.chart.seriesList[0].data)), interval: Math.ceil(Math.max(...item.chart.seriesList[0].data) / 5) }, seriesList: item.chart.seriesList.map((item) => ({ data: item.data, name: item.name, themeColor: themeColors[item.name] })) } })) this.chartsData = { topSelfMedia: topSelfMedia, officalMedia: officalMedia, ordinaryMedia: ordinaryMedia } } }, persist: true // 开启持久化 }) export const useAnomalousGroup = defineStore("anomalousGroup", { state: () => ({ groupList: [ { id: 1, type: "异常社团组一", abnormalGroup: [ { groupId: "G02", nodeCount: 112, postNum: 21 }, { groupId: "G07", nodeCount: 183, postNum: 13 } ] }, { id: 2, type: "异常社团组二", abnormalGroup: [ { groupId: "G04", nodeCount: 86, postNum: 12 }, { groupId: "G08", nodeCount: 143, postNum: 7 } ] } ], wordCloudData: [ { text: "局座", top: 115.5, left: 220.5, width: 80, height: 40, fontSize: 28, opacity: 1 }, { text: "折叠屏", top: 160.5, left: 69.5, width: 105, height: 35, fontSize: 20, opacity: 1 }, { text: "蹬鼻子上脸", top: 50.5, left: 132.5, width: 90, height: 22, fontSize: 12, opacity: 1 }, { text: "菲律宾", top: 171.5, left: 200.5, width: 81, height: 22, fontSize: 14, opacity: 0.8 }, { text: "中国海警", top: 120.5, left: 30.5, width: 100, height: 24, fontSize: 16, opacity: 1 }, { text: "船", top: 223.5, left: 230.5, width: 50, height: 22, fontSize: 14, opacity: 0.8 }, { text: "斧头", top: 200.5, left: 38.5, width: 40, height: 19, fontSize: 12, opacity: 0.7 }, { text: "执法", top: 223.5, left: 130.5, width: 60, height: 19, fontSize: 12, opacity: 0.7 }, { text: "登检", top: 200.5, left: 143.5, width: 60, 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: 20.5, width: 106, 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 } */ ], abnormalContentList: [ { id: 1, // 评论人 commenter: { userId: "1", userName: "Trump-Good", userAvatar: defaultAvatar }, // 评论接收人 commentRecipient: { userId: "2", userName: "疾风中青劲草", userAvatar: defaultAvatar }, // mutualCommentCount: 3, // 评论内容 content: "在我国海域偷运軍械彈藥是應該依法拘捕送交法院睿理判刑,而且在中国的裹服刑的!难道外国人特权?更何况是這千点小国!#中国海警首次登检菲律宾运补船只# #外交部回应中国海警缴获菲士兵枪支#", // 点赞数 likeCount: "4.8w", // 评论数 commentCount: 100, // 转发数 shareCount: 6890 }, { id: 2, // 评论人 commenter: { userId: "1", userName: "Trump-Good", userAvatar: defaultAvatar }, // 评论接收人 commentRecipient: { userId: "2", userName: "疾风中青劲草", userAvatar: defaultAvatar }, // mutualCommentCount: 3, // 评论内容 content: "在我国海域偷运軍械彈藥是應該依法拘捕送交法院睿理判刑,而且在中国的裹服刑的!难道外国人特权?更何况是這千点小国!#中国海警首次登检菲律宾运补船只# #外交部回应中国海警缴获菲士兵枪支#", // 点赞数 likeCount: "4.8w", // 评论数 commentCount: 100, // 转发数 shareCount: 6890 } ], chartData: { xAxisData: ["t0", "t1", "t2", "t3", "t4", "t5", "t6"], yAxisRange: { min: 0, max: 5, interval: 1 }, seriesList: [ { name: "社团组一", themeColor: "#2AB8FD", data: [0, 5, 4, 3, 0, 5, 0] }, { name: "社团组二", themeColor: "#02D7DA", data: [3, 0, 1, 0, 3, 5, 0] }, { name: "社团组三", themeColor: "#FFDA09", data: [5, 0, 4, 0, 3, 0, 0] } ] }, posts: [ { id: 1, abnormalGroup: "G02与G07互动方式出现显著异常", explanation: "持续异常行为已累积显著,疑似某组织突然发动“”信息攻击“或”舆论战“", firstDiscoverTime: "2024.06.20", duration: 6, JS: 0.3, CUSUM: 6.21, KS: 0.02 }, { id: 2, abnormalGroup: "G02与G07互动方式出现显著异常", firstDiscoverTime: "2024.06.23", duration: 4, explanation: "持续异常行为已累积显著,疑似某组织突然发动“”信息攻击“或”舆论战“", JS: 0.41, CUSUM: 5.0, KS: 0.05 } ] }) })