SocialNetworks_duan/src/store/groupEvolution/index.js

1296 lines
36 KiB
JavaScript

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
} 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) => ({
id: node.name,
label: node.name,
color: setColor(node.groupId)
}))
},
// 通过时间来获取帖文列表
//根据时间参数获取贴文数据
async initialPostByUtcTime(utcTime) {
}
},
persist: true // 开启持久化
})
export const useGroupStructureStore = defineStore("groupStructure", {
state: () => ({
groupList: [
{
id: 1,
type: "头部自媒体",
statistics: [
{ id: 1, iconImg: nodePrefix, name: "内部密度指数", value: 293 },
{ id: 2, iconImg: edgePrefix, name: "外部拓展指数", value: 21389 }
],
mediaList: []
},
{
id: 2,
type: "官方媒体",
statistics: [
{ id: 1, iconImg: nodePrefix, name: "内部密度指数", value: 293 },
{ id: 2, iconImg: edgePrefix, name: "外部拓展指数", value: 21389 }
],
mediaList: {}
},
{
id: 3,
type: "普通自媒体",
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
}
]
})
})