前端
Change-Id: If55994fd11ad8d1f70a52e9c3bd53eded5f37544
diff --git a/src/views/forum/ForumSectionView.vue b/src/views/forum/ForumSectionView.vue
index 98c9780..3d55929 100644
--- a/src/views/forum/ForumSectionView.vue
+++ b/src/views/forum/ForumSectionView.vue
@@ -1,5 +1,4 @@
<template>
- <Navbar />
<div class="section-page">
<Navbar />
<div class="page-container">
@@ -38,90 +37,90 @@
</div>
</div>
- <!-- 筛选和搜索 -->
- <div class="filter-section">
- <div class="filter-left">
- <el-input
- v-model="searchQuery"
- placeholder="搜索主题..."
- :prefix-icon="Search"
- @keyup.enter="handleSearch"
- clearable
- style="width: 300px;"
- />
- <el-button type="primary" @click="handleSearch">搜索</el-button>
- </div>
-
- <div class="filter-right">
- <el-select v-model="sortBy" placeholder="排序方式" @change="handleFilter">
- <el-option label="最新回复" value="last_reply" />
- <el-option label="发布时间" value="create_time" />
- <el-option label="回复数量" value="replies" />
- <el-option label="浏览次数" value="views" />
- </el-select>
-
- <el-select v-model="filterType" placeholder="主题类型" @change="handleFilter">
- <el-option label="全部主题" value="" />
- <el-option label="置顶主题" value="pinned" />
- <el-option label="热门主题" value="hot" />
- <el-option label="精华主题" value="featured" />
- </el-select>
- </div>
- </div>
+<!-- <!– 筛选和搜索 –>-->
+<!-- <div class="filter-section">-->
+<!-- <div class="filter-left">-->
+<!-- <el-input-->
+<!-- v-model="searchQuery"-->
+<!-- placeholder="搜索主题..."-->
+<!-- :prefix-icon="Search"-->
+<!-- @keyup.enter="handleSearch"-->
+<!-- clearable-->
+<!-- style="width: 300px;"-->
+<!-- />-->
+<!-- <el-button type="primary" @click="handleSearch">搜索</el-button>-->
+<!-- </div>-->
+<!-- -->
+<!-- <div class="filter-right">-->
+<!-- <el-select v-model="sortBy" placeholder="排序方式" @change="handleFilter">-->
+<!-- <el-option label="最新回复" value="last_reply" />-->
+<!-- <el-option label="发布时间" value="create_time" />-->
+<!-- <el-option label="回复数量" value="replies" />-->
+<!-- <el-option label="浏览次数" value="views" />-->
+<!-- </el-select>-->
+<!-- -->
+<!-- <el-select v-model="filterType" placeholder="主题类型" @change="handleFilter">-->
+<!-- <el-option label="全部主题" value="" />-->
+<!-- <el-option label="置顶主题" value="pinned" />-->
+<!-- <el-option label="热门主题" value="hot" />-->
+<!-- <el-option label="精华主题" value="featured" />-->
+<!-- </el-select>-->
+<!-- </div>-->
+<!-- </div>-->
<!-- 置顶主题 -->
- <div v-if="pinnedTopics.length > 0" class="pinned-topics">
- <h3 class="section-title">置顶主题</h3>
- <div class="topics-list">
- <div
- v-for="topic in pinnedTopics"
- :key="topic.id"
- class="topic-item pinned"
- @click="navigateToTopic(topic.id)"
- >
- <div class="topic-status">
- <el-icon class="pin-icon"><Top /></el-icon>
- </div>
-
- <div class="topic-content">
- <div class="topic-header">
- <h4 class="topic-title">{{ topic.title }}</h4>
- <div class="topic-tags">
- <el-tag type="warning" size="small">置顶</el-tag>
- <el-tag v-if="topic.hot" type="danger" size="small">热门</el-tag>
- <el-tag v-if="topic.featured" type="success" size="small">精华</el-tag>
- </div>
- </div>
-
- <div class="topic-meta">
- <div class="author-info">
- <el-avatar :size="24">{{ topic.user?.username ? topic.user.username.charAt(0) : 'A' }}</el-avatar>
- <span class="author-name">{{ topic.user?.username || '匿名' }}</span>
- <span class="create-time">{{ formatTime(topic.createTime) }}</span>
- </div>
-
- <div class="topic-stats">
- <span class="stat-item">
- <el-icon><View /></el-icon>
- {{ topic.views }}
- </span>
- <span class="stat-item">
- <el-icon><Comment /></el-icon>
- {{ topic.replies }}
- </span>
- </div>
- </div>
- </div>
-
- <div class="last-reply">
- <div v-if="topic.lastReply" class="reply-info">
- <div class="reply-author">{{ topic.lastReply.author }}</div>
- <div class="reply-time">{{ formatTime(topic.lastReply.time) }}</div>
- </div>
- </div>
- </div>
- </div>
- </div>
+<!-- <div v-if="pinnedTopics.length > 0" class="pinned-topics">-->
+<!-- <h3 class="section-title">置顶主题</h3>-->
+<!-- <div class="topics-list">-->
+<!-- <div-->
+<!-- v-for="topic in pinnedTopics"-->
+<!-- :key="topic.id"-->
+<!-- class="topic-item pinned"-->
+<!-- @click="navigateToTopic(topic.id)"-->
+<!-- >-->
+<!-- <div class="topic-status">-->
+<!-- <el-icon class="pin-icon"><Top /></el-icon>-->
+<!-- </div>-->
+<!-- -->
+<!-- <div class="topic-content">-->
+<!-- <div class="topic-header">-->
+<!-- <h4 class="topic-title">{{ topic.title }}</h4>-->
+<!-- <div class="topic-tags">-->
+<!-- <el-tag type="warning" size="small">置顶</el-tag>-->
+<!-- <el-tag v-if="topic.hot" type="danger" size="small">热门</el-tag>-->
+<!-- <el-tag v-if="topic.featured" type="success" size="small">精华</el-tag>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- -->
+<!-- <div class="topic-meta">-->
+<!-- <div class="author-info">-->
+<!-- <el-avatar :size="24">{{ topic.user?.username ? topic.user.username.charAt(0) : 'A' }}</el-avatar>-->
+<!-- <span class="author-name">{{ topic.user?.username || '匿名' }}</span>-->
+<!-- <span class="create-time">{{ formatTime(topic.createTime) }}</span>-->
+<!-- </div>-->
+<!-- -->
+<!-- <div class="topic-stats">-->
+<!-- <span class="stat-item">-->
+<!-- <el-icon><View /></el-icon>-->
+<!-- {{ topic.views }}-->
+<!-- </span>-->
+<!-- <span class="stat-item">-->
+<!-- <el-icon><Comment /></el-icon>-->
+<!-- {{ topic.replies }}-->
+<!-- </span>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- -->
+<!-- <div class="last-reply">-->
+<!-- <div v-if="topic.lastReply" class="reply-info">-->
+<!-- <div class="reply-author">{{ topic.lastReply.author }}</div>-->
+<!-- <div class="reply-time">{{ formatTime(topic.lastReply.time) }}</div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
<!-- 普通主题列表 -->
<div class="normal-topics">
@@ -152,9 +151,10 @@
<div class="topic-header">
<h4 class="topic-title">{{ topic.title }}</h4>
<div class="topic-tags">
- <el-tag v-if="topic.hot" type="danger" size="small">热门</el-tag>
+ <el-tag v-if="topic.isPinned" type="warning" size="small">置顶</el-tag>
+ <el-tag v-if="topic.views > 1000" type="danger" size="small">热门</el-tag>
<el-tag v-if="topic.featured" type="success" size="small">精华</el-tag>
- <el-tag v-if="topic.closed" type="info" size="small">已关闭</el-tag>
+ <el-tag v-if="topic.isLocked" type="info" size="small">已关闭</el-tag>
</div>
</div>
@@ -162,28 +162,27 @@
<div class="author-info">
<el-avatar :size="24">{{ topic.user?.username ? topic.user.username.charAt(0) : 'A' }}</el-avatar>
<span class="author-name">{{ topic.user?.username || '匿名' }}</span>
- <span class="create-time">{{ formatTime(topic.createTime) }}</span>
+<!-- <span class="create-time">{{ formatTime(topic.createdAt) }}</span>-->
</div>
- <div class="topic-stats">
- <span class="stat-item">
- <el-icon><View /></el-icon>
- {{ topic.views }}
- </span>
- <span class="stat-item">
- <el-icon><Comment /></el-icon>
- {{ topic.replies }}
- </span>
- </div>
+<!-- <div class="topic-stats">-->
+<!-- <span class="stat-item">-->
+<!-- <el-icon><View /></el-icon>-->
+<!-- {{ topic.views || 0 }}-->
+<!-- </span>-->
+<!-- <span class="stat-item">-->
+<!-- <el-icon><Comment /></el-icon>-->
+<!-- {{ topic.replies || 0 }}-->
+<!-- </span>-->
+<!-- </div>-->
</div>
</div>
<div class="last-reply">
- <div v-if="topic.lastReply" class="reply-info">
- <div class="reply-author">{{ topic.lastReply.author }}</div>
- <div class="reply-time">{{ formatTime(topic.lastReply.time) }}</div>
+ <div v-if="topic.updatedAt" class="reply-info">
+ <div class="reply-author">最后回复</div>
+ <div class="reply-time">{{ formatTime(topic.updatedAt) }}</div>
</div>
- <div v-else class="no-reply">暂无回复</div>
</div>
</div>
@@ -305,9 +304,11 @@
Monitor,
GamePad,
Bell,
- QuestionFilled
+ QuestionFilled,
+ Plus
} from '@element-plus/icons-vue'
import { getTopicsByForum, createTopic } from '@/api/topic'
+import { getForumById } from '@/api/forum'
import Navbar from "@/components/Navbar.vue";
export default {
@@ -332,16 +333,7 @@
const pageSize = ref(20)
const totalTopics = ref(0)
- const sectionInfo = ref({
- id: 1,
- name: '电影讨论',
- description: '分享和讨论电影资源,交流观影心得',
- icon: 'Film',
- color: '#409eff',
- topics: 3256,
- replies: 18934,
- members: 1234
- })
+ const sectionInfo = ref({})
const newTopic = reactive({
title: '',
@@ -383,35 +375,31 @@
onMounted(() => {
const sectionId = route.params.id
fetchSectionData(sectionId)
- fetchTopics()
})
const fetchSectionData = async (id) => {
loading.value = true
try {
- // 模拟API调用
- console.log('获取版块数据:', id)
+ console.log('🏁 fetchSectionData 开始,id:', id)
+ const res = await getForumById(id)
+ console.log('📥 getForumById 响应:', res)
- // 根据版块ID设置不同的版块信息
- const sections = {
- 1: { name: '电影讨论', description: '分享和讨论电影资源,交流观影心得', icon: 'Film', color: '#409eff' },
- 2: { name: '音乐分享', description: '音乐资源分享,音乐制作技术交流', icon: 'Headphones', color: '#67c23a' },
- 3: { name: '软件技术', description: '软件资源分享,技术问题讨论', icon: 'Monitor', color: '#e6a23c' },
- 4: { name: '游戏天地', description: '游戏资源分享,游戏攻略讨论', icon: 'GamePad', color: '#f56c6c' },
- 5: { name: '站务公告', description: '网站公告,规则说明,意见建议', icon: 'Bell', color: '#909399' },
- 6: { name: '新手求助', description: '新手问题解答,使用教程分享', icon: 'QuestionFilled', color: '#606266' }
- }
-
- const sectionData = sections[id] || sections[1]
sectionInfo.value = {
- id: parseInt(id),
- ...sectionData,
- topics: 0 // 初始化为0,会在fetchTopics中更新为真实数量
+ ...res,
+ icon: getForumIcon(res.name),
+ color: getForumColor(res.name),
+ topics: 0
}
- totalTopics.value = 156
+ console.log('📋 sectionInfo 设置完成:', sectionInfo.value)
+ console.log('🚀 准备调用 fetchTopics')
+ // sectionInfo有数据后再请求主题列表
+ fetchTopics()
+
+ console.log('✅ fetchTopics 调用完成')
} catch (error) {
+ console.error('❌ fetchSectionData 错误:', error)
ElMessage.error('获取版块数据失败')
} finally {
loading.value = false
@@ -419,7 +407,31 @@
}
const formatTime = (timeString) => {
+ // 处理Java LocalDateTime数组格式: [年, 月, 日, 时, 分, 秒, 纳秒]
+ if (Array.isArray(timeString) && timeString.length >= 6) {
+ const [year, month, day, hour, minute, second] = timeString
+ const date = new Date(year, month - 1, day, hour, minute, second) // 月份需要减1
+ const now = new Date()
+ const diff = now - date
+ const hours = Math.floor(diff / (1000 * 60 * 60))
+
+ if (hours < 1) return '刚刚'
+ if (hours < 24) return `${hours}小时前`
+ const days = Math.floor(hours / 24)
+ if (days < 7) return `${days}天前`
+
+ return date.toLocaleDateString('zh-CN', {
+ month: '2-digit',
+ day: '2-digit',
+ hour: '2-digit',
+ minute: '2-digit'
+ })
+ }
+
+ // 处理普通字符串格式
const date = new Date(timeString)
+ if (isNaN(date.getTime())) return '时间未知'
+
const now = new Date()
const diff = now - date
const hours = Math.floor(diff / (1000 * 60 * 60))
@@ -454,13 +466,29 @@
const fetchTopics = async () => {
loading.value = true
try {
+ // 调试信息:确认方法被调用和参数值
+ console.log('🔍 fetchTopics 被调用,sectionInfo.value:', sectionInfo.value)
+ console.log('🔍 sectionInfo.value.id:', sectionInfo.value.id)
+
+ if (!sectionInfo.value.id) {
+ console.error('❌ sectionInfo.value.id 为空,无法请求主题列表')
+ return
+ }
+
// 调用后端API获取主题列表
+ console.log('🚀 正在请求主题列表,forumId:', sectionInfo.value.id)
const res = await getTopicsByForum(sectionInfo.value.id)
+ console.log('✅ 主题列表响应:', res)
+
topics.value = res.data || res // 兼容不同返回结构
totalTopics.value = topics.value.length
// 同时更新顶部显示的主题数量
sectionInfo.value.topics = topics.value.length
+
+ console.log('✅ topics.value:', topics.value)
+ console.log('✅ totalTopics.value:', totalTopics.value)
} catch (error) {
+ console.error('❌ fetchTopics 错误:', error)
ElMessage.error('获取主题列表失败')
} finally {
loading.value = false
@@ -567,6 +595,30 @@
newTopic.options = []
}
+ // icon和color映射函数,和首页保持一致
+ const getForumIcon = (name) => {
+ const iconMap = {
+ '电影讨论': 'Film',
+ '音乐分享': 'Headphones',
+ '软件技术': 'Monitor',
+ '游戏天地': 'GamePad',
+ '站务公告': 'Bell',
+ '新手求助': 'QuestionFilled'
+ }
+ return iconMap[name] || 'ChatLineRound'
+ }
+ const getForumColor = (name) => {
+ const colorMap = {
+ '电影讨论': '#409eff',
+ '音乐分享': '#67c23a',
+ '软件技术': '#e6a23c',
+ '游戏天地': '#f56c6c',
+ '站务公告': '#909399',
+ '新手求助': '#606266'
+ }
+ return colorMap[name] || '#409eff'
+ }
+
return {
loading,
showNewTopicDialog,
@@ -610,7 +662,8 @@
Monitor,
GamePad,
Bell,
- QuestionFilled
+ QuestionFilled,
+ Plus
}
}
}
diff --git a/src/views/forum/ForumTopicView.vue b/src/views/forum/ForumTopicView.vue
index b3fe08b..170e313 100644
--- a/src/views/forum/ForumTopicView.vue
+++ b/src/views/forum/ForumTopicView.vue
@@ -1,5 +1,4 @@
<template>
- <Navbar />
<div class="topic-detail-page">
<Navbar />
<div class="page-container">
diff --git a/src/views/forum/ForumView.vue b/src/views/forum/ForumView.vue
index cd7e7bf..2010ce7 100644
--- a/src/views/forum/ForumView.vue
+++ b/src/views/forum/ForumView.vue
@@ -1,18 +1,17 @@
<template>
- <Navbar />
<div class="forum-page">
-
+ <Navbar />
<div class="page-container">
<!-- 论坛头部 -->
<div class="forum-header">
<div class="header-content">
<h1>社区论坛</h1>
<p class="header-description">与其他用户交流讨论,分享经验心得</p>
- <div class="header-actions">
- <el-button type="primary" :icon="Edit" @click="showNewTopicDialog = true">
- 发布新帖
- </el-button>
- </div>
+<!-- <div class="header-actions">-->
+<!-- <el-button type="primary" :icon="Edit" @click="showNewTopicDialog = true">-->
+<!-- 发布新帖-->
+<!-- </el-button>-->
+<!-- </div>-->
</div>
</div>
@@ -26,13 +25,13 @@
<p>主题总数</p>
</div>
</div>
- <div class="stat-item">
- <el-icon size="32" color="#67c23a"><Comment /></el-icon>
- <div class="stat-info">
- <h3>{{ forumStats.totalReplies }}</h3>
- <p>回复总数</p>
- </div>
- </div>
+<!-- <div class="stat-item">-->
+<!-- <el-icon size="32" color="#67c23a"><Comment /></el-icon>-->
+<!-- <div class="stat-info">-->
+<!-- <h3>{{ forumStats.totalReplies }}</h3>-->
+<!-- <p>回复总数</p>-->
+<!-- </div>-->
+<!-- </div>-->
<div class="stat-item">
<el-icon size="32" color="#e6a23c"><User /></el-icon>
<div class="stat-info">
@@ -40,13 +39,13 @@
<p>活跃用户</p>
</div>
</div>
- <div class="stat-item">
- <el-icon size="32" color="#f56c6c"><View /></el-icon>
- <div class="stat-info">
- <h3>{{ forumStats.todayPosts }}</h3>
- <p>今日发帖</p>
- </div>
- </div>
+<!-- <div class="stat-item">-->
+<!-- <el-icon size="32" color="#f56c6c"><View /></el-icon>-->
+<!-- <div class="stat-info">-->
+<!-- <h3>{{ forumStats.todayPosts }}</h3>-->
+<!-- <p>今日发帖</p>-->
+<!-- </div>-->
+<!-- </div>-->
</div>
</div>
@@ -90,9 +89,9 @@
<div class="hot-topics">
<div class="section-header">
<h2 class="section-title">热门主题</h2>
- <el-button type="primary" text @click="$router.push('/forum/topics')">
- 查看全部 <el-icon><ArrowRight /></el-icon>
- </el-button>
+<!-- <el-button type="primary" text @click="$router.push('/forum/topics')">-->
+<!-- 查看全部 <el-icon><ArrowRight /></el-icon>-->
+<!-- </el-button>-->
</div>
<div class="topics-list">
<div
@@ -120,17 +119,17 @@
<el-avatar :size="24">{{ topic.author.charAt(0) }}</el-avatar>
<span class="author-name">{{ topic.author }}</span>
</div>
- <div class="topic-stats">
- <span class="stat-item">
- <el-icon><View /></el-icon>
- {{ topic.views }}
- </span>
- <span class="stat-item">
- <el-icon><Comment /></el-icon>
- {{ topic.replies }}
- </span>
- <span class="time">{{ formatTime(topic.lastReply) }}</span>
- </div>
+<!-- <div class="topic-stats">-->
+<!-- <span class="stat-item">-->
+<!-- <el-icon><View /></el-icon>-->
+<!-- {{ topic.views }}-->
+<!-- </span>-->
+<!-- <span class="stat-item">-->
+<!-- <el-icon><Comment /></el-icon>-->
+<!-- {{ topic.replies }}-->
+<!-- </span>-->
+<!--<!– <span class="time">{{ formatTime(topic.lastReply) }}</span>–>-->
+<!-- </div>-->
</div>
</div>
<div class="topic-status">
@@ -141,31 +140,31 @@
</div>
</div>
- <!-- 最新回复 -->
- <div class="recent-replies">
- <h2 class="section-title">最新回复</h2>
- <div class="replies-list">
- <div
- v-for="reply in recentReplies"
- :key="reply.id"
- class="reply-item"
- @click="navigateToTopic(reply.topicId)"
- >
- <div class="reply-avatar">
- <el-avatar :size="40">{{ reply.author.charAt(0) }}</el-avatar>
- </div>
- <div class="reply-content">
- <div class="reply-header">
- <span class="reply-author">{{ reply.author }}</span>
- <span class="reply-action">回复了主题</span>
- <span class="topic-title">{{ reply.topicTitle }}</span>
- </div>
- <div class="reply-text">{{ reply.content }}</div>
- <div class="reply-time">{{ formatTime(reply.time) }}</div>
- </div>
- </div>
- </div>
- </div>
+<!-- <!– 最新回复 –>-->
+<!-- <div class="recent-replies">-->
+<!-- <h2 class="section-title">最新回复</h2>-->
+<!-- <div class="replies-list">-->
+<!-- <div-->
+<!-- v-for="reply in recentReplies"-->
+<!-- :key="reply.id"-->
+<!-- class="reply-item"-->
+<!-- @click="navigateToTopic(reply.topicId)"-->
+<!-- >-->
+<!-- <div class="reply-avatar">-->
+<!-- <el-avatar :size="40">{{ reply.author.charAt(0) }}</el-avatar>-->
+<!-- </div>-->
+<!-- <div class="reply-content">-->
+<!-- <div class="reply-header">-->
+<!-- <span class="reply-author">{{ reply.author }}</span>-->
+<!-- <span class="reply-action">回复了主题</span>-->
+<!-- <span class="topic-title">{{ reply.topicTitle }}</span>-->
+<!-- </div>-->
+<!-- <div class="reply-text">{{ reply.content }}</div>-->
+<!-- <div class="reply-time">{{ formatTime(reply.time) }}</div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
</div>
<!-- 发布新帖对话框 -->
@@ -256,7 +255,7 @@
import { ref, reactive, onMounted, nextTick } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus'
-import {
+import {
Edit,
ChatDotRound,
Comment,
diff --git a/src/views/forum/TopicView.vue b/src/views/forum/TopicView.vue
index 0374dac..f88d0de 100644
--- a/src/views/forum/TopicView.vue
+++ b/src/views/forum/TopicView.vue
@@ -1,5 +1,4 @@
<template>
- <Navbar />
<div class="topic-page">
<Navbar />
<div class="page-container">
@@ -13,43 +12,43 @@
<el-avatar :size="24">{{ topic.user?.username ? topic.user.username.charAt(0) : 'A' }}</el-avatar>
<span class="author-name">{{ topic.user?.username || '匿名' }}</span>
</span>
- <span class="time">{{ formatTime(topic.createTime) }}</span>
+<!-- <span class="time">{{ formatTime(topic.createTime) }}</span>-->
<span class="views">
<el-icon><View /></el-icon>
{{ topic.views }}
</span>
- <el-button
- :icon="isSubscribed ? StarFilled : Star"
- :type="isSubscribed ? 'warning' : 'default'"
- @click="handleSubscribe"
- >
- {{ isSubscribed ? '已订阅' : '订阅' }}
- </el-button>
+<!-- <el-button-->
+<!-- :icon="isSubscribed ? StarFilled : Star"-->
+<!-- :type="isSubscribed ? 'warning' : 'default'"-->
+<!-- @click="handleSubscribe"-->
+<!-- >-->
+<!-- {{ isSubscribed ? '已订阅' : '订阅' }}-->
+<!-- </el-button>-->
</div>
</div>
- <div class="topic-actions" v-if="isAuthor">
- <el-button type="primary" @click="showEditDialog = true">编辑</el-button>
- <el-button type="danger" @click="handleDelete">删除</el-button>
- </div>
+<!-- <div class="topic-actions" v-if="isAuthor">-->
+<!-- <el-button type="primary" @click="showEditDialog = true">编辑</el-button>-->
+<!-- <el-button type="danger" @click="handleDelete">删除</el-button>-->
+<!-- </div>-->
</div>
</div>
- <!-- 话题内容 -->
- <div class="topic-content">
- <div class="content-card">
- <div class="content-body" v-html="topic.content"></div>
- <div class="content-tags">
- <el-tag
- v-for="tag in topic.tags"
- :key="tag.id"
- :color="tag.color"
- effect="light"
- >
- {{ tag.name }}
- </el-tag>
- </div>
- </div>
- </div>
+<!-- <!– 话题内容 –>-->
+<!-- <div class="topic-content">-->
+<!-- <div class="content-card">-->
+<!-- <div class="content-body" v-html="topic.content"></div>-->
+<!-- <div class="content-tags">-->
+<!-- <el-tag-->
+<!-- v-for="tag in topic.tags"-->
+<!-- :key="tag.id"-->
+<!-- :color="tag.color"-->
+<!-- effect="light"-->
+<!-- >-->
+<!-- {{ tag.name }}-->
+<!-- </el-tag>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->