链路预测模块贴文详情
This commit is contained in:
parent
ede1aec0b0
commit
8267eaf7d7
|
|
@ -37,6 +37,7 @@ const handleOpenDialog = (isOpen) => (openDialog.value = isOpen)
|
||||||
.el-container-inner {
|
.el-container-inner {
|
||||||
padding-left: vw(13);
|
padding-left: vw(13);
|
||||||
margin-top: vh(10);
|
margin-top: vh(10);
|
||||||
|
|
||||||
.el-aside {
|
.el-aside {
|
||||||
color: aliceblue;
|
color: aliceblue;
|
||||||
font-family: Arial, sans-serif;
|
font-family: Arial, sans-serif;
|
||||||
|
|
@ -45,6 +46,7 @@ const handleOpenDialog = (isOpen) => (openDialog.value = isOpen)
|
||||||
flex: 1;
|
flex: 1;
|
||||||
padding: 0 0;
|
padding: 0 0;
|
||||||
padding: 0 vw(13);
|
padding: 0 vw(13);
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -112,3 +112,8 @@ export function getCharacterSocialCommunityDetailNodes(
|
||||||
export function getInteractionCount(source, target) {
|
export function getInteractionCount(source, target) {
|
||||||
return http.get(`/linkPrediction/interactionCount?source=${source}&target=${target}`)
|
return http.get(`/linkPrediction/interactionCount?source=${source}&target=${target}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//获取贴文详情
|
||||||
|
export function getPostDetail(postId) {
|
||||||
|
return http.get(`/linkPrediction/postDetail?postId=${postId}`)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,8 @@ import {
|
||||||
getCharacterSocialCommunityNodes,
|
getCharacterSocialCommunityNodes,
|
||||||
getCharacterSocialCommunityStatistics,
|
getCharacterSocialCommunityStatistics,
|
||||||
getCharacterSocialCommunityDetailNodes,
|
getCharacterSocialCommunityDetailNodes,
|
||||||
getInteractionCount
|
getInteractionCount,
|
||||||
|
getPostDetail
|
||||||
} from "@/service/api/linkPrediction"
|
} from "@/service/api/linkPrediction"
|
||||||
|
|
||||||
import defaultAvatar from "@/assets/images/avatar/default.png"
|
import defaultAvatar from "@/assets/images/avatar/default.png"
|
||||||
|
|
@ -220,6 +221,13 @@ export const useCharacterInteractionStore = defineStore("characterInteraction",
|
||||||
const res = await getInteractionCount(source, target)
|
const res = await getInteractionCount(source, target)
|
||||||
if (res.code != 200) return
|
if (res.code != 200) return
|
||||||
return res.data
|
return res.data
|
||||||
|
},
|
||||||
|
//点击贴文list获取任意贴文信息
|
||||||
|
async initPostDetail(postId) {
|
||||||
|
const res = await getPostDetail(postId)
|
||||||
|
if (res.code == 200) {
|
||||||
|
return res.data
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
persist: true // 开启持久化
|
persist: true // 开启持久化
|
||||||
|
|
@ -513,6 +521,13 @@ export const useSocialGroupsStore = defineStore("socialGroups", {
|
||||||
const res = await getInteractionCount(source, target)
|
const res = await getInteractionCount(source, target)
|
||||||
if (res.code != 200) return
|
if (res.code != 200) return
|
||||||
return res.data
|
return res.data
|
||||||
|
},
|
||||||
|
//点击贴文list获取任意贴文信息
|
||||||
|
async initPostDetail(postId) {
|
||||||
|
const res = await getPostDetail(postId)
|
||||||
|
if (res.code == 200) {
|
||||||
|
return res.data
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
persist: true // 开启持久化
|
persist: true // 开启持久化
|
||||||
|
|
@ -708,6 +723,13 @@ export const useCharacterHiddenStore = defineStore("characterHidden", {
|
||||||
const res = await getInteractionCount(source, target)
|
const res = await getInteractionCount(source, target)
|
||||||
if (res.code != 200) return
|
if (res.code != 200) return
|
||||||
return res.data
|
return res.data
|
||||||
|
},
|
||||||
|
//点击贴文list获取任意贴文信息
|
||||||
|
async initPostDetail(postId) {
|
||||||
|
const res = await getPostDetail(postId)
|
||||||
|
if (res.code == 200) {
|
||||||
|
return res.data
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
persist: true // 开启持久化
|
persist: true // 开启持久化
|
||||||
|
|
|
||||||
|
|
@ -489,6 +489,7 @@ watch(topicDialog, (val) => {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: vw(10);
|
gap: vw(10);
|
||||||
|
|
||||||
.top-container {
|
.top-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: vh(110);
|
height: vh(110);
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
></Graph>
|
></Graph>
|
||||||
</div>
|
</div>
|
||||||
<div class="postList">
|
<div class="postList">
|
||||||
<PostList :posts="interactionStore.posts"></PostList>
|
<PostList :posts="interactionStore.posts" @click:openDialog="handlePostDetail"></PostList>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="right-container">
|
<div class="right-container">
|
||||||
|
|
@ -105,6 +105,13 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<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">{{ currentPostContent }}</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -129,10 +136,13 @@ const { communityNodeList } = storeToRefs(interactionStore)
|
||||||
|
|
||||||
// 控制个人信息弹窗
|
// 控制个人信息弹窗
|
||||||
const userInfoDialog = ref(false)
|
const userInfoDialog = ref(false)
|
||||||
|
const postDialog = ref(false)
|
||||||
|
|
||||||
const curSelectedUser = ref(null)
|
const curSelectedUser = ref(null)
|
||||||
|
|
||||||
const storeId = "characterInteraction"
|
const storeId = "characterInteraction"
|
||||||
|
|
||||||
|
const currentPostContent = ref("")
|
||||||
//选择某个用户组,更新贴文列表 && 更新关系图二级界面
|
//选择某个用户组,更新贴文列表 && 更新关系图二级界面
|
||||||
const handleSelectedUserGroup = async (group) => {
|
const handleSelectedUserGroup = async (group) => {
|
||||||
interactionStore.timeList = group.timeList //保存从用户列表选择的用户组,为了显示这两个用户交互的时间切片
|
interactionStore.timeList = group.timeList //保存从用户列表选择的用户组,为了显示这两个用户交互的时间切片
|
||||||
|
|
@ -149,6 +159,14 @@ const handleOpenUserInfoDialog = (params) => {
|
||||||
userInfoDialog.value = params.userInfoDialog
|
userInfoDialog.value = params.userInfoDialog
|
||||||
curSelectedUser.value = params.curSelectedUser
|
curSelectedUser.value = params.curSelectedUser
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handlePostDetail = async (post) => {
|
||||||
|
const res = await interactionStore.initPostDetail(post.postId)
|
||||||
|
if (res) {
|
||||||
|
currentPostContent.value = res
|
||||||
|
postDialog.value = true
|
||||||
|
}
|
||||||
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
interactionStore.curComponent = "CommunityNode"
|
interactionStore.curComponent = "CommunityNode"
|
||||||
interactionStore.initGroupList() //初始化用户组列表
|
interactionStore.initGroupList() //初始化用户组列表
|
||||||
|
|
@ -176,7 +194,7 @@ provide("statisticsList", interactionStore.statisticsList)
|
||||||
height: vh(300);
|
height: vh(300);
|
||||||
}
|
}
|
||||||
:deep(.custom-dialog) .postTitleImage {
|
:deep(.custom-dialog) .postTitleImage {
|
||||||
margin-top: vh(-24);
|
margin-top: vh(-27);
|
||||||
margin-left: vw(-2);
|
margin-left: vw(-2);
|
||||||
}
|
}
|
||||||
:deep(.custom-dialog) .userInfoTitle {
|
:deep(.custom-dialog) .userInfoTitle {
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,10 @@
|
||||||
></Graph>
|
></Graph>
|
||||||
</div>
|
</div>
|
||||||
<div class="postList">
|
<div class="postList">
|
||||||
<PostList :posts="characterHiddenStore.posts"></PostList>
|
<PostList
|
||||||
|
:posts="characterHiddenStore.posts"
|
||||||
|
@click:openDialog="handlePostDetail"
|
||||||
|
></PostList>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="right-container">
|
<div class="right-container">
|
||||||
|
|
@ -109,6 +112,13 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<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">{{ currentPostContent }}</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -132,10 +142,11 @@ const characterHiddenStore = useCharacterHiddenStore()
|
||||||
const { communityNodeList } = storeToRefs(characterHiddenStore)
|
const { communityNodeList } = storeToRefs(characterHiddenStore)
|
||||||
// 控制个人信息弹窗
|
// 控制个人信息弹窗
|
||||||
const userInfoDialog = ref(false)
|
const userInfoDialog = ref(false)
|
||||||
|
const postDialog = ref(false)
|
||||||
const curSelectedUser = ref(null)
|
const curSelectedUser = ref(null)
|
||||||
|
|
||||||
const storeId = "characterHidden"
|
const storeId = "characterHidden"
|
||||||
|
const currentPostContent = ref("")
|
||||||
const handleOpenUserInfoDialog = (params) => {
|
const handleOpenUserInfoDialog = (params) => {
|
||||||
userInfoDialog.value = params.userInfoDialog
|
userInfoDialog.value = params.userInfoDialog
|
||||||
curSelectedUser.value = params.curSelectedUser
|
curSelectedUser.value = params.curSelectedUser
|
||||||
|
|
@ -152,7 +163,13 @@ const handleSelectedUserGroup = (group) => {
|
||||||
group.relationId
|
group.relationId
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
const handlePostDetail = async (post) => {
|
||||||
|
const res = await characterHiddenStore.initPostDetail(post.postId)
|
||||||
|
if (res) {
|
||||||
|
currentPostContent.value = res
|
||||||
|
postDialog.value = true
|
||||||
|
}
|
||||||
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
characterHiddenStore.initGroupList()
|
characterHiddenStore.initGroupList()
|
||||||
characterHiddenStore.initCharacterSocialHiddenPostList("79") //初始贴文列表
|
characterHiddenStore.initCharacterSocialHiddenPostList("79") //初始贴文列表
|
||||||
|
|
@ -179,7 +196,7 @@ provide("statisticsList", characterHiddenStore.statisticsList)
|
||||||
height: vh(300);
|
height: vh(300);
|
||||||
}
|
}
|
||||||
:deep(.custom-dialog) .postTitleImage {
|
:deep(.custom-dialog) .postTitleImage {
|
||||||
margin-top: vh(-24);
|
margin-top: vh(-27);
|
||||||
margin-left: vw(-2);
|
margin-left: vw(-2);
|
||||||
}
|
}
|
||||||
:deep(.custom-dialog) .userInfoTitle {
|
:deep(.custom-dialog) .userInfoTitle {
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ const props = defineProps({
|
||||||
default: () => []
|
default: () => []
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
const emit = defineEmits(["click:openDialog"])
|
||||||
const listRef = ref(null)
|
const listRef = ref(null)
|
||||||
let scrollTimer = null
|
let scrollTimer = null
|
||||||
let direction = 1 // 1: 向下, -1: 向上
|
let direction = 1 // 1: 向下, -1: 向上
|
||||||
|
|
@ -67,7 +68,9 @@ function pauseScroll() {
|
||||||
function resumeScroll() {
|
function resumeScroll() {
|
||||||
startScroll()
|
startScroll()
|
||||||
}
|
}
|
||||||
|
const handleLeaderPost = (post) => {
|
||||||
|
emit("click:openDialog", post)
|
||||||
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
startScroll()
|
startScroll()
|
||||||
})
|
})
|
||||||
|
|
@ -80,6 +83,7 @@ onBeforeUnmount(() => {
|
||||||
.postList-component {
|
.postList-component {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
overflow: hidden; //滚动轴隐藏
|
||||||
.ContextoftheincidentTitle {
|
.ContextoftheincidentTitle {
|
||||||
margin-top: vh(-18);
|
margin-top: vh(-18);
|
||||||
margin-left: vw(-11);
|
margin-left: vw(-11);
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ const props = defineProps({
|
||||||
default: () => []
|
default: () => []
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
const emit = defineEmits(["click:openDialog"])
|
||||||
const listRef = ref(null)
|
const listRef = ref(null)
|
||||||
let scrollTimer = null
|
let scrollTimer = null
|
||||||
let direction = 1 // 1: 向下, -1: 向上
|
let direction = 1 // 1: 向下, -1: 向上
|
||||||
|
|
@ -70,7 +70,9 @@ function pauseScroll() {
|
||||||
function resumeScroll() {
|
function resumeScroll() {
|
||||||
startScroll()
|
startScroll()
|
||||||
}
|
}
|
||||||
|
const handleLeaderPost = (post) => {
|
||||||
|
emit("click:openDialog", post)
|
||||||
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
startScroll()
|
startScroll()
|
||||||
})
|
})
|
||||||
|
|
@ -83,6 +85,7 @@ onBeforeUnmount(() => {
|
||||||
.postList-component {
|
.postList-component {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
overflow: hidden; //滚动轴隐藏
|
||||||
.ContextoftheincidentTitle {
|
.ContextoftheincidentTitle {
|
||||||
margin-left: vw(-12);
|
margin-left: vw(-12);
|
||||||
margin-top: vh(-17);
|
margin-top: vh(-17);
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,10 @@
|
||||||
></Graph>
|
></Graph>
|
||||||
</div>
|
</div>
|
||||||
<div class="postList">
|
<div class="postList">
|
||||||
<PostList :posts="socialGroupsStore.posts"></PostList>
|
<PostList
|
||||||
|
:posts="socialGroupsStore.posts"
|
||||||
|
@click:openDialog="handlePostDetail"
|
||||||
|
></PostList>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="right-container">
|
<div class="right-container">
|
||||||
|
|
@ -130,6 +133,13 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<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">{{ currentPostContent }}</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -162,7 +172,7 @@ const curSelectedUser = ref(null)
|
||||||
|
|
||||||
//当前选中的贴文数据
|
//当前选中的贴文数据
|
||||||
const currentPostPost = ref(null)
|
const currentPostPost = ref(null)
|
||||||
|
const currentPostContent = ref("")
|
||||||
// 列表项的点击事件
|
// 列表项的点击事件
|
||||||
const handleSelectedUserGroup = (group) => {
|
const handleSelectedUserGroup = (group) => {
|
||||||
socialGroupsStore.curComponent = "detailkNode"
|
socialGroupsStore.curComponent = "detailkNode"
|
||||||
|
|
@ -179,7 +189,13 @@ const handleOpenUserInfoDialog = (params) => {
|
||||||
userInfoDialog.value = params.userInfoDialog
|
userInfoDialog.value = params.userInfoDialog
|
||||||
curSelectedUser.value = params.curSelectedUser
|
curSelectedUser.value = params.curSelectedUser
|
||||||
}
|
}
|
||||||
|
const handlePostDetail = async (post) => {
|
||||||
|
const res = await socialGroupsStore.initPostDetail(post.postId)
|
||||||
|
if (res) {
|
||||||
|
currentPostContent.value = res
|
||||||
|
postDialog.value = true
|
||||||
|
}
|
||||||
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
socialGroupsStore.curComponent = "CommunityNode"
|
socialGroupsStore.curComponent = "CommunityNode"
|
||||||
socialGroupsStore.initGroupList()
|
socialGroupsStore.initGroupList()
|
||||||
|
|
@ -208,7 +224,7 @@ provide("statisticsList", socialGroupsStore.statisticsList)
|
||||||
height: vh(300);
|
height: vh(300);
|
||||||
}
|
}
|
||||||
:deep(.custom-dialog) .postTitleImage {
|
:deep(.custom-dialog) .postTitleImage {
|
||||||
margin-top: vh(-24);
|
margin-top: vh(-27);
|
||||||
margin-left: vw(-2);
|
margin-left: vw(-2);
|
||||||
}
|
}
|
||||||
:deep(.custom-dialog) .userInfoTitle {
|
:deep(.custom-dialog) .userInfoTitle {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import LoginPanel from "@/views/login/components/loginPanel.vue"
|
import LoginPanel from "./components/loginPanel.vue"
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
@ -26,7 +26,6 @@ import LoginPanel from "@/views/login/components/loginPanel.vue"
|
||||||
}
|
}
|
||||||
.body {
|
.body {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|
||||||
background-image: url("@/assets/images/login/backimg.png");
|
background-image: url("@/assets/images/login/backimg.png");
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user