This commit is contained in:
qumeng039@126.com 2025-08-08 15:08:19 +08:00
commit 0459cf00f3
5 changed files with 45 additions and 246 deletions

View File

@ -83,23 +83,24 @@ export function getGroupMemberEvolutionAnalysisChart() {
// 4.异常群体捕捉
// 4.1获取时间轴
export function getAbnormalGroupTimeLine() {
return http.get(`/groupEvolution/groupMember/timeline`)
return http.get(`/groupEvolution/groupException/timeList`)
}
// 4.2获取异常群体列表-z左上
export function getAbnormalGroupList(time) {
return http.get(`/groupEvolution/abnormalGroup/infoList?time=${time}`)
export function getAbnormalGroupList() {
return http.get(`/groupEvolution/groupException/infoList`)
}
// 4.3全局异常互动时刻表-左下
export function getAbnormalGroupInteractionChart() {
return http.get(`/groupEvolution/abnormalGroup/chart`)
return http.get(`/groupEvolution/groupException/chart`)
}
// 4.4异常行为分析
export function getAbnormalGroupBehaviorPosts(time) {
return http.get(`/groupEvolution/abnormalGroup/posts/date=${time}`)
console.log(time)
return http.get(`/groupEvolution/groupException/posts?date=${time}`)
}
// 4.5 异常互动行为内容详情
// 4.5 异常互动行为内容详情-右上
export function getAbnormalGroupBehaviorDetail(time) {
return http.get(`/groupEvolution/abnormalGroup/detail?time=${time}`)
return http.get(`/groupEvolution/groupException/rightChart?date=${time}`)
}

View File

@ -569,141 +569,7 @@ export const useGroupMemberStore = defineStore("groupMember", {
graph: {},
chartData: {},
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 }
]
posts: []
}),
actions: {
// 获取时间轴
@ -853,40 +719,7 @@ export const useGroupMemberStore = defineStore("groupMember", {
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
}
]
}
],
groupList: [],
graph: {},
timeList: [],
wordCloudData: [
@ -970,60 +803,7 @@ export const useAnomalousGroup = defineStore("anomalousGroup", {
{ 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
}
],
abnormalContentList: [],
chartData: {
xAxisData: ["t0", "t1", "t2", "t3", "t4", "t5", "t6"],
yAxisRange: { min: 0, max: 5, interval: 1 },
@ -1087,10 +867,10 @@ export const useAnomalousGroup = defineStore("anomalousGroup", {
}
},
// 异常用户组展示-左上
async initializeAbnormalGroupList(time = "2024-06-19T07:57:46Z") {
const res = await getAbnormalGroupList(time)
async initializeAbnormalGroupList() {
const res = await getAbnormalGroupList()
if (res.code === 200) {
this.abnormalGroupList = res.data
this.groupList = res.data
}
},
// 全局异常互动时刻表-左下
@ -1099,9 +879,9 @@ export const useAnomalousGroup = defineStore("anomalousGroup", {
const xAxisData = res.data.xaxisData.map((item) => utcStringToHHMMSS(item))
const yAxisRange = res.data.yaxisRange
const themeColors = {
社团: "#2AB8FD",
社团: "#02D7DA",
社团: "#FFDA09"
社团: "#2AB8FD",
社团: "#02D7DA",
社团: "#FFDA09"
}
const seriesList = res.data.seriesList.map((item) => ({
data: item.data.map((item) => item.toFixed(2)),
@ -1118,15 +898,26 @@ export const useAnomalousGroup = defineStore("anomalousGroup", {
async initializeAbnormalGroupPosts(time = "2024-06-19T07:57:46Z") {
const res = await getAbnormalGroupBehaviorPosts(time)
if (res.code === 200) {
this.posts = res.data
this.posts = res.data.map((item => ({
id: item.id,
abnormalGroup: item.abnormalGroup,
explanation: item.explanation,
firstDiscoverTime: TansTimestamp(item.firstDiscoverTime, "YYYY-MM-DD"),
duration: item.duration,
JS: parseFloat(item.js),
CUSUM: parseFloat(item.cusum),
KS: parseFloat(item.ks)
})))
}
},
// 异常互动详情-右上
async initializeAbnormalGroupInteractionDetail(time = "2024-06-19T07:57:46Z") {
const res = await getAbnormalGroupBehaviorDetail(time)
if (res.code === 200) {
this.interactionDetail = res.data
this.abnormalContentList = res.data
}
}
},

View File

@ -20,13 +20,11 @@
<div class="content-item-users">
<!-- 评论人 -->
<div class="user-item">
<img :src="content.commenter.userAvatar" alt="" class="user-avatar">
<div class="user-name">{{ content.commenter.userName }}</div>
<div class="user-name">{{ content.commenter }}</div>
</div>
<!-- 评论接受人 -->
<div class="user-item">
<img :src="content.commentRecipient.userAvatar" alt="" class="user-avatar">
<div class="user-name">{{ content.commentRecipient.userName }}</div>
<div class="user-name">{{ content.commentRecipitient }}</div>
</div>
</div>
<!-- 评论的内容 -->

View File

@ -88,6 +88,8 @@ const moduleName = "异常行为分析"
const handleChangeXAxis = (utcTime) => {
//
// --
anomalousGroupStore.initializeAbnormalGroupPosts(utcTime)
anomalousGroupStore.initializeAbnormalGroupInteractionDetail(utcTime)
}
//
@ -103,6 +105,11 @@ const handleOpenPostDialog = (post) => {
onMounted(async () => {
await anomalousGroupStore.initializeAbnormalGroupTimeLine()
await anomalousGroupStore.initializeAbnormalGroupList()
await anomalousGroupStore.initializeAbnormalGroupPosts()
await anomalousGroupStore.initializeAbnormalGroupInteractionDetail()
await anomalousGroupStore.initializeAbnormalGroupInteractionChart()
})
</script>

View File

@ -64,7 +64,7 @@
</div>
<div class="type-right">
<div class="right-item">首次发现{{ post.firstDiscoverTime }}</div>
<div class="right-item">持续时间{{ post.duration }}</div>
<div class="right-item">持续时间{{ post.duration }}</div>
</div>
</div>
<div class="post-explanation">
@ -80,7 +80,7 @@
<el-tooltip class="box-item" effect="dark" content="JS散度>0.2为异常" placement="bottom">
<div class="defual-value" :style="{ left: getDefaultValueOffset(0.2, 0.6, 168) }"></div>
</el-tooltip>
<div class="value-text" :style="{ left: getDefaultValueOffset(post.JS, 0.6, 168) }">{{ post.JS }}</div>
<div class="value-text" :style="{ left: getDefaultValueOffset(post.JS, 0.6, 168) }">{{ post.JS.toFixed(2) }}</div>
<div class="slider-right-text">异常</div>
</div>
</div>
@ -94,7 +94,8 @@
<el-tooltip class="box-item" effect="dark" content="CUSUM值>2.0为异常" placement="bottom">
<div class="defual-value" :style="{ left: getDefaultValueOffset(2.0, 10, 168) }"></div>
</el-tooltip>
<div class="value-text" :style="{ left: getDefaultValueOffset(post.CUSUM, 10, 168) }">{{ post.CUSUM }}</div>
<div class="value-text" :style="{ left: getDefaultValueOffset(post.CUSUM, 10, 168) }">{{ post.CUSUM.toFixed(2) }}</div>
<div class="slider-right-text">异常</div>
</div>
</div>
@ -108,7 +109,8 @@
<el-tooltip class="box-item" effect="dark" content="KS检验值<0.05为异常" placement="bottom">
<div class="defual-value" :style="{ left: getDefaultValueOffset(0.05, 0.1, 168, 'right') }"></div>
</el-tooltip>
<div class="value-text" :style="{ left: getDefaultValueOffset(post.KS, 0.1, 168, 'right') }">{{ post.KS }}</div>
<div class="value-text" :style="{ left: getDefaultValueOffset(post.KS, 0.1, 168, 'right') }">{{ post.KS.toFixed(3) }}</div>
<div class="slider-right-text">正常</div>
</div>
</div>