diff --git a/src/assets/images/abnormalGroup/abnormal-group-item-title.png b/src/assets/images/abnormalGroup/abnormal-group-item-title.png new file mode 100644 index 0000000..9054b63 Binary files /dev/null and b/src/assets/images/abnormalGroup/abnormal-group-item-title.png differ diff --git a/src/assets/images/abnormalGroup/abnormal-user-group-node-icon.png b/src/assets/images/abnormalGroup/abnormal-user-group-node-icon.png new file mode 100644 index 0000000..4dd7c71 Binary files /dev/null and b/src/assets/images/abnormalGroup/abnormal-user-group-node-icon.png differ diff --git a/src/assets/images/abnormalGroup/abnormal-user-group-post-icon.png b/src/assets/images/abnormalGroup/abnormal-user-group-post-icon.png new file mode 100644 index 0000000..6ceaa7e Binary files /dev/null and b/src/assets/images/abnormalGroup/abnormal-user-group-post-icon.png differ diff --git a/src/assets/images/abnormalGroup/abnormal-user-group-title.png b/src/assets/images/abnormalGroup/abnormal-user-group-title.png new file mode 100644 index 0000000..3eef606 Binary files /dev/null and b/src/assets/images/abnormalGroup/abnormal-user-group-title.png differ diff --git a/src/service/api/groupEvolution.js b/src/service/api/groupEvolution.js index d5e2d51..f456613 100644 --- a/src/service/api/groupEvolution.js +++ b/src/service/api/groupEvolution.js @@ -19,3 +19,10 @@ export function getGroupEvolutionTimeLine() { export function getPostByUtcTime(utcTime) { return http.get(`/groupEvolution/identify/posts?date=${utcTime}`) } + + +// 3.群体成员演化分析 +// 3.1 群体成员演化信息列表信息 +export function getGroupMemberInfoList() { + return http.get(`/groupEvolution/groupMember/infoList`) +} \ No newline at end of file diff --git a/src/store/groupEvolution/index.js b/src/store/groupEvolution/index.js index bcd8ef5..a5f706c 100644 --- a/src/store/groupEvolution/index.js +++ b/src/store/groupEvolution/index.js @@ -11,7 +11,8 @@ import { getGroupEvolutionGroupList, getGroupEvolutionGroupScaleChart, getGroupEvolutionTimeLine, - getPostByUtcTime + getPostByUtcTime, + getGroupMemberInfoList } from "@/service/api/groupEvolution" import { TansTimestamp } from "@/utils/transform" @@ -530,58 +531,13 @@ export const useGroupMemberStore = defineStore("groupMember", { id: 1, type: "群体一", focusedTopic: "#中国海警首次登检菲律宾#", - series: [ - { - type: "radar", - data: [ - { - value: [10, 5, 15, 5], - symbol: "circle", - symbolSize: 5, - itemStyle: { - color: "#01D7DA" // 圆点颜色 - }, - areaStyle: { - color: "rgba(87, 196, 255, 0.3)" // 区域填充 - }, - // 点之间的连线 - lineStyle: { - color: "#0374FE", - type: "dashed", - width: 1 - } - } - ] - } - ] + value: [10, 5, 15, 5], }, { id: 2, type: "群体二", focusedTopic: "#中国海警首次登检菲律宾#", - series: [ - { - type: "radar", - data: [ - { - value: [10, 20, 15, 5], - symbol: "circle", - symbolSize: 5, - itemStyle: { - color: "#01D7DA" // 圆点颜色 - }, - areaStyle: { - color: "rgba(87, 196, 255, 0.3)" // 区域填充 - }, - lineStyle: { - color: "#0374FE", - type: "dashed", - width: 1 - } - } - ] - } - ] + value: [10, 20, 15, 5], } ], groupMemberList: [ @@ -956,12 +912,58 @@ export const useGroupMemberStore = defineStore("groupMember", { { text: "手指", top: 195.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 } ] }), - actions: {}, + actions: { + async initializeGroupList() { + const res = await getGroupMemberInfoList() + const groupList = res.data.map(item => ({ + id: item.id, + type: item.type, + focusedTopic: item.focusedTopic, + value: item.value + })) + this.groupList = groupList + console.log("测试获取groupList:",res); + } + }, persist: false // 开启持久化 }) 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: "局座", diff --git a/src/views/GroupEvolution/abnormalGroup/components/anomalousContentInfo.vue b/src/views/GroupEvolution/abnormalGroup/components/anomalousContentInfo.vue index 65e6130..4b1401d 100644 --- a/src/views/GroupEvolution/abnormalGroup/components/anomalousContentInfo.vue +++ b/src/views/GroupEvolution/abnormalGroup/components/anomalousContentInfo.vue @@ -1,11 +1,11 @@ @@ -88,121 +71,112 @@ const props = defineProps({ .title { margin-top: -7px; } - .content-item { - width: 100%; - height: 100%; - .anomalousContent-list { - width: 100%; - height: 500px; - overflow: auto; - .content-item { - width: 100%; - padding-left: 24px; - padding-bottom: 20px; - .content-item-title { - position: relative; - .content-item-title-icon { - width: 160px; - } - .content-item-title-text { - position: absolute; - top: 7px; - color: #8efbff; - left: 12px; - font-size: 14px; - } - } - .content-item-users { - display: flex; - .user-item { - display: flex; - align-items: center; - margin-top: 16px; - padding-right: 20px; - .user-avatar { - width: 20px; - height: 20px; - margin-right: 6px; - } - .user-name { - font-family: "PingFang SC"; - color: #fff; - font-size: 16px; - font-style: Bold; - font-weight: 400; - } - } - } - .commit-item { - margin-top: 14px; - padding-bottom: 12px; - width: 304px; - height: 100%; + .anomalousContent-list { + height: 490px; + overflow: auto; + .content-item { + width: 100%; + padding-left: 24px; + padding-bottom: 20px; + .content-item-title { + position: relative; + .content-item-title-icon { + width: 130px; + } + .content-item-title-text { + position: absolute; + top: 3px; + color: #8efbff; + left: 12px; + font-size: 14px; + } + } + .content-item-users { + padding-top: 16px; + padding-bottom: 16px; + display: flex; + justify-content: flex-start; + gap: 16px; + .user-item { + display: flex; + align-items: center; + color: #fff; + font-family: PingFang SC; + font-weight: 400; + font-style: Bold; + font-size: 16px; + .user-avatar { + margin-right: 6px; + width: 20px; + height: 20px; + } + } + } + .commit-item { + width: 304px; + padding-top: 14px; + padding-left: 10px; + padding-right: 10px; + padding-bottom: 14px; + background: linear-gradient(0deg, rgba(13, 39, 67, 0.66), rgba(13, 39, 67, 0.66)), + linear-gradient(270deg, rgba(147, 210, 255, 0.06) 0%, rgba(147, 210, 255, 0.16) 100%); + .commit-content-text { + color: #fff; + font-family: PingFang SC; + font-weight: 400; + font-style: Regular; + font-size: 14px; + } + .commit-statistic { + display: flex; + align-items: center; + gap: 16px; + padding-top: 8px; + .like-item { + display: flex; + align-items: center; + justify-content: center; + gap: 8px; + width: 54px; color: #fff; - font-family: PingFang SC; - font-weight: 400; - font-style: Regular; - font-size: 14px; - background: linear-gradient(0deg, rgba(13, 39, 67, 0.66), rgba(13, 39, 67, 0.66)), - linear-gradient(270deg, rgba(147, 210, 255, 0.06) 0%, rgba(147, 210, 255, 0.16) 100%); - .commit-content { - width: 284px; - margin-left: 10px; - padding-top: 12px; - padding-bottom: 8px; - } - .commit-statistic { - display: flex; - padding-left: 10px; - padding-right: 10px; - .like-item { - display: flex; - align-items: center; - margin-right: 20px; - .like-count { - margin-left: 8px; - } - - } - .comment-num-item { - display: flex; - align-items: center; - margin-right: 16px; - .comment-count { - margin-left: 8px; - } - } - .transmit-item { - display: flex; - align-items: center; - .transmit-count { - margin-left: 8px; - } - } - } - } + } + .comment-num-item { + display: flex; + align-items: center; + justify-content: center; + gap: 8px; + width: 54px; + color: #fff; + } + .transmit-item { + display: flex; + align-items: center; + gap: 8px; + justify-content: center; + width: 54px; + color: #fff; + } } } } - /* 滚动条整体样式 - WebKit浏览器 */ - .anomalousContent-list::-webkit-scrollbar { - width: 5px; /* 垂直滚动条宽度 */ - height: 5px; /* 水平滚动条高度 */ - } - - /* 滚动条滑块 */ - .anomalousContent-list::-webkit-scrollbar-thumb { - background: rgba(147, 210, 255, 0.3); /* 蓝色半透明滑块 */ - border-radius: 4px; - } - - /* 鼠标悬停在滑块上的效果 */ - .anomalousContent-list::-webkit-scrollbar-thumb:hover { - background: rgba(147, 210, 255, 0.5); /* 更明显的蓝色 */ - } - .title { - margin-top: -7px; - } + } + /* 滚动条整体样式 - WebKit浏览器 */ + .anomalousContent-list::-webkit-scrollbar { + width: 5px; /* 垂直滚动条宽度 */ + height: 5px; /* 水平滚动条高度 */ + } + /* 滚动条滑块 */ + .anomalousContent-list::-webkit-scrollbar-thumb { + background: rgba(147, 210, 255, 0.3); /* 蓝色半透明滑块 */ + border-radius: 4px; + } + /* 鼠标悬停在滑块上的效果 */ + .anomalousContent-list::-webkit-scrollbar-thumb:hover { + background: rgba(147, 210, 255, 0.5); /* 更明显的蓝色 */ + } + .title { + margin-top: -7px; + } } diff --git a/src/views/GroupEvolution/abnormalGroup/components/groupPanel.vue b/src/views/GroupEvolution/abnormalGroup/components/groupPanel.vue new file mode 100644 index 0000000..42bbc26 --- /dev/null +++ b/src/views/GroupEvolution/abnormalGroup/components/groupPanel.vue @@ -0,0 +1,165 @@ + + + + + \ No newline at end of file diff --git a/src/views/GroupEvolution/abnormalGroup/index.vue b/src/views/GroupEvolution/abnormalGroup/index.vue index a804da5..ca4964b 100644 --- a/src/views/GroupEvolution/abnormalGroup/index.vue +++ b/src/views/GroupEvolution/abnormalGroup/index.vue @@ -5,7 +5,9 @@
-
+
+ +
- +
@@ -57,12 +59,14 @@