SocialNetworks_duan/src/views/GroupEvolution/groupMember/index.vue
2025-07-28 16:02:19 +08:00

242 lines
6.4 KiB
Vue
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="layout-container">
<!-- 头部 -->
<div class="top-container"></div>
<div class="content">
<div class="left-container">
<!-- 群体成员演化信息列表 -->
<div class="userPanel">
<GroupPanel
:groupList="groupMemberStore.groupList"
:title="userPanelTitleImg"
></GroupPanel>
</div>
<!-- 全局群体成员演化图 -->
<div class="userChart"></div>
</div>
<!-- 中间大矩形 2 -->
<div class="middle-container">
<div class="graph"></div>
<div class="postList"></div>
</div>
<!-- 右侧矩形 2 -->
<div class="right-container">
<div class="anlysisPanel">
<GroupAnalysis
:title="groupAnalsisTitleImg"
:chartsData="groupMemberStore.chartsData"
></GroupAnalysis>
</div>
<div class="cloudWords">
<WordsCloud :wordsCloudList="groupMemberStore.wordCloudData"></WordsCloud>
</div>
</div>
</div>
<el-dialog v-model="postDialog" width="640" align-center class="custom-dialog">
<img src="@/assets/images/head/post-dialog-title.png" alt="" class="postTitleImage" />
<div class="dialog-content">
<div class="post-content">{{ currentPostPost.content }}</div>
<div class="heat">
<div class="item-heat-detail">
<div class="item-heat-like">
<Icon icon="ei:like" width="25" height="25" /> {{ currentPostPost.like }}
</div>
<div class="item-heat-comment">
<Icon icon="la:comment-dots" width="25" height="25" /> {{ currentPostPost.comment }}
</div>
<div class="item-heat-transmit">
<Icon icon="mdi:share-outline" width="25" height="25" /> {{
currentPostPost.transmit
}}
</div>
</div>
</div>
</div>
</el-dialog>
</div>
</template>
<script setup>
import { ref } from "vue";
import GroupPanel from "../component/groupPanel.vue";
import GroupAnalysis from "./components/groupAnalysis.vue";
// src\views\GroupEvolution\component\wordsCloud.vue
import WordsCloud from "../component/wordsCloud.vue";
import userPanelTitleImg from "@/assets/images/groupMember/evolutionAnalysisListTitle.png"
import groupAnalsisTitleImg from "@/assets/images/groupMember/groupEvolutionAnalsisTitleImg.png"
import { Icon } from "@iconify/vue";
import { useGroupMemberStore } from "@/store/groupEvolution/index.js";
const groupMemberStore = useGroupMemberStore();
//控制弹窗
const postDialog = ref(false);
//当前选中的贴文数据
const currentPostPost = ref(null);
const handleOpenPostDialog = (post) => {
postDialog.value = true;
currentPostPost.value = post;
};
</script>
<style scoped lang="less">
:deep(.custom-dialog) {
width: 640px;
border-width: 0px, 0px, 0px, 0px;
border-style: solid;
border-image-source: linear-gradient(180deg, #3aa1f8 0%, rgba(58, 161, 248, 0.2) 100%);
background-color: rgba(6, 45, 90, 1);
border: 1px solid #1a8bff;
border-radius: 2px;
padding: 0 0;
z-index: 1;
}
:deep(.post-dialog) {
height: 300px;
}
:deep(.custom-dialog) .postTitleImage {
margin-top: -24px;
margin-left: -2px;
}
:deep(.custom-dialog) .dialog-content {
width: 100%;
padding: 25px 20px;
}
:deep(.custom-dialog) .dialog-content .content {
color: rgba(255, 255, 255, 0.8);
font-family: "PingFang SC";
font-size: 16px;
font-style: normal;
font-weight: 400;
opacity: 0.7;
}
.post-content {
color: #fff;
font-size: 16px;
opacity: 0.7;
}
.heat {
display: flex;
justify-content: flex-end;
margin-top: 20px;
.item-heat-detail {
display: flex;
justify-content: space-between;
div {
display: flex;
align-items: center;
justify-content: center;
width: 70px;
color: #fff;
opacity: 0.7;
}
}
}
.layout-container {
width: 1544px;
display: flex;
flex-direction: column;
gap: 20px;
.top-container {
width: 100%;
height: 88px;
background-image: url(@/assets/images/linkPrediction/title/page-title.png);
background-repeat: no-repeat;
background-size: cover;
fill: linear-gradient(270deg, rgba(6, 61, 113, 0.1) 0%, rgba(8, 30, 56, 0.38) 100%);
stroke-width: 1px;
stroke: #3aa1f8;
}
.content {
width: 100%;
height: 805px;
display: flex;
justify-content: space-between;
gap: 15px;
.left-container {
width: 352px;
height: 100%;
display: flex;
flex-direction: column;
gap: 15px;
.userPanel {
width: 100%;
height: 540px;
border-radius: 2px;
flex-shrink: 0;
background-color: rgba(6, 45, 90, 0.3);
border: 1px solid rgba(0, 113, 188, 0.705);
}
.userChart {
flex: 1;
border-radius: 2px;
background-color: rgba(6, 45, 90, 0.3);
border: 1px solid rgba(0, 113, 188, 0.705);
overflow: auto;
-ms-overflow-style: none; /* IE Edge */
scrollbar-width: none; /* Firefox */
}
}
.middle-container {
flex: 1;
display: flex;
flex-direction: column;
gap: 15px;
.search {
width: 100%;
height: 60px;
}
.graph {
width: 100%;
height: 541px;
background-color: #070a22;
border-radius: 4px;
background-color: rgba(6, 45, 90, 0.3);
border: 1px solid rgba(0, 113, 188, 0.705);
}
.postList {
flex: 1;
border-radius: 4px;
background-color: rgba(6, 45, 90, 0.3);
border: 1px solid rgba(0, 113, 188, 0.705);
fill: linear-gradient(270deg, rgba(6, 61, 113, 0.1) 0%, rgba(8, 30, 56, 0.38) 100%);
stroke-width: 1px;
stroke: #3aa1f8;
overflow: auto;
padding: 10px 10px;
}
}
.right-container {
width: 352px;
height: 100%;
display: flex;
flex-direction: column;
gap: 15px;
.anlysisPanel {
width: 100%;
height: 540px;
border-radius: 2px;
flex-shrink: 0;
background-color: rgba(6, 45, 90, 0.3);
border: 1px solid rgba(0, 113, 188, 0.705);
}
.cloudWords {
flex: 1;
border-radius: 2px;
flex-shrink: 0;
background-color: rgba(6, 45, 90, 0.3);
border: 1px solid rgba(0, 113, 188, 0.705);
}
}
}
}
</style>