springBoot+Vue中华诗词学习后台管理系统

中华诗词学习后台管理系统技术实现

文章目录

一、项目概述

中华诗词学习后台管理系统是一个基于Vue 3 + TypeScript + Element Plus开发的现代化后台管理系统,旨在为用户提供一个功能完善、界面美观的诗词学习管理平台。该系统包含多个功能模块,支持诗词管理、动态社区、评论管理等核心功能。

二、技术栈

  • 前端框架:Vue 3 + TypeScript
  • UI组件库:Element Plus
  • 状态管理:Pinia
  • 路由管理:Vue Router
  • 数据可视化:ECharts
  • 网络请求:Axios
  • 构建工具:Vite

三、核心功能模块

1. 仪表盘模块

仪表盘模块是系统的首页,提供了系统概览、数据统计和热门诗词展示功能。

主要功能

  • 系统欢迎信息展示
  • 关键数据统计(注册用户、诗词数量、分类数量、浏览次数)
  • 热门诗词列表展示
  • 诗词详情查看

技术实现

vue 复制代码
<!-- 统计数据卡片 -->
<el-card class="stat-card user-card">
  <div class="stat-item">
    <div class="stat-icon-wrapper">
      <el-icon class="stat-icon"><User /></el-icon>
    </div>
    <div class="stat-info">
      <div class="stat-value">{{ dashboardData.user_count || 0 }}</div>
      <div class="stat-label">注册用户</div>
    </div>
  </div>
  <div class="stat-footer">
    <div class="stat-trend trend-up">
      <el-icon><ArrowUp /></el-icon>
      <span>12%</span>
    </div>
    <div class="stat-time">较上月</div>
  </div>
</el-card>

2. 词库管理模块

词库管理模块是系统的核心功能之一,支持诗词的增删改查操作。

主要功能

  • 诗词列表展示(卡片形式)
  • 诗词搜索功能
  • 诗词新增、编辑、删除
  • 诗词详情查看
  • 分页功能

技术实现

vue 复制代码
<!-- 诗词卡片展示 -->
<el-card class="poetry-card-item" shadow="hover">
  <template #header>
    <div class="card-header">
      <span class="poetry-title">{{ poetry.title }}</span>
    </div>
  </template>
  <div class="poetry-info">
    <div class="poetry-meta">
      <div class="author-info">
        <img v-if="poetry.author_avatar" :src="poetry.author_avatar" class="author-avatar" alt="作者头像">
        <div class="author-details">
          <p class="poetry-author"><strong>作者:</strong> {{ poetry.author }}</p>
          <p class="poetry-dynasty"><strong>朝代:</strong> {{ poetry.dynasty }}</p>
        </div>
      </div>
      <p class="poetry-content"><strong>内容:</strong> {{ poetry.content.substring(0, 50) }}...</p>
    </div>
    <div class="card-actions">
      <el-button type="info" :icon="View" size="small" @click="handleView(poetry)" link>查看</el-button>
      <el-button type="primary" :icon="Edit" size="small" @click="handleEdit(poetry)" link>编辑</el-button>
      <el-button type="danger" :icon="Delete" size="small" @click="handleDelete(poetry)" link>删除</el-button>
    </div>
  </div>
</el-card>

3. 动态社区管理模块

动态社区管理模块用于管理用户发布的动态内容,支持查看和审核功能。

主要功能

  • 动态列表展示(表格形式)
  • 动态内容搜索
  • 动态详情查看
  • 动态审核(下架)功能
  • 动态图片预览
  • 分页功能

技术实现

vue 复制代码
<!-- 动态图片预览 -->
<el-image
  v-if="scope.row.post_img"
  :src="scope.row.post_img"
  class="post-img"
  fit="cover"
  :preview-src-list="[scope.row.post_img]"
  preview-teleported
>
  <template #error>
    <div class="image-slot">
      <el-icon><Picture /></el-icon>
    </div>
  </template>
</el-image>

4. 评论管理模块

评论管理模块用于管理用户对动态的评论,支持查看和删除功能。

主要功能

  • 评论列表展示
  • 评论搜索
  • 评论详情查看
  • 评论删除
  • 分页功能

5. 分类管理模块

分类管理模块用于管理诗词分类,支持分类的增删改查操作。

主要功能

  • 分类列表展示
  • 分类新增、编辑、删除
  • 分页功能

6. 轮播图管理模块

轮播图管理模块用于管理系统首页的轮播图,支持轮播图的增删改查操作。

主要功能

  • 轮播图列表展示
  • 轮播图新增、编辑、删除
  • 轮播图图片上传
  • 分页功能

四、技术亮点

1. Vue 3 Composition API + TypeScript

使用Vue 3的Composition API和TypeScript,提高了代码的可维护性和类型安全性。

typescript 复制代码
// 加载热门诗词数据
const loadHotPoetryData = async () => {
  try {
    // 调用推荐诗词API
    const response: RecommendRes = await boardApi.getRecommendData()
    // 检查响应数据
    if (response.code === 200 && response.data && response.data.list) {
      // 转换数据格式以匹配表格需要的结构
      hotPoetryData.value = response.data.list.map((item: RecommendInfo, index: number) => {
        return {
          id: index + 1,
          title: item.poetryInfo?.title || '未知标题',
          author: item.poetryInfo?.author || '未知作者',
          author_avatar: item.poetryInfo?.author_avatar || '',
          category: item.poetryInfo?.dynasty || '未知朝代',
          view_count: item.amount || 0,
          originalData: item,
        }
      })
    } else {
      ElMessage.warning('获取热门诗词数据失败: ' + response.msg)
    }
  } catch (error: any) {
    console.error('获取热门诗词数据失败:', error)
    ElMessage.error('获取热门诗词数据失败: ' + (error.message || '未知错误'))
  }
}

2. 响应式设计

系统采用响应式设计,适配不同屏幕尺寸,提供良好的用户体验。

css 复制代码
/* 响应式设计 */
@media (max-width: 1200px) {
  .el-col {
    flex: 0 0 50%;
    max-width: 50%;
  }
  
  .stat-card {
    margin-bottom: 20px;
  }
  
  .action-button {
    flex: 1 1 45%;
  }
}

@media (max-width: 768px) {
  .el-col {
    flex: 0 0 100%;
    max-width: 100%;
  }

  .welcome-content {
    padding: 20px;
  }

  .welcome-content h2 {
    font-size: 24px;
  }
}

3. 优雅的UI设计

使用Element Plus组件库和自定义样式,打造了美观、现代的用户界面。

css 复制代码
/* 欢迎卡片 */
.welcome-card {
  margin-bottom: 20px;
  border: none;
  border-radius: 16px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);
  position: relative;
  overflow: hidden;
}

/* 统计卡片 */
.user-card {
  background: linear-gradient(135deg, #4a6fa5 0%, #6c8ebf 100%);
  color: #fff;
}

.poetry-card {
  background: linear-gradient(135deg, #67c23a 0%, #85ce61 100%);
  color: #fff;
}

.category-card {
  background: linear-gradient(135deg, #e6a23c 0%, #ebb563 100%);
  color: #fff;
}

.view-card {
  background: linear-gradient(135deg, #f56c6c 0%, #f78989 100%);
  color: #fff;
}

4. 完善的API接口设计

系统设计了完善的API接口,支持各种功能的实现。

typescript 复制代码
// board.ts - 平台看板数据接口
export interface BoardInfo {
  user_count: number
  poetry_count: number
  category_count: number
  view_count: number
}

export interface RecommendInfo {
  history_id: number  // 推荐历史id
  poetry_id: number  // 推荐诗词id
  amount: number  // 推荐次数
  poetryInfo: PoetryInfo  // 推荐诗词信息
}

export const boardApi = {
  // 获取看板数据
  getBoardData: () => {
    return get<BoardRes>('/api/board/getBoardData')
  },
  // 获取推荐诗词数据
  getRecommendData: () => {
    return get<RecommendRes>('/api/board/getRecommendData')
  }
}

5. 良好的错误处理和用户提示

系统实现了良好的错误处理和用户提示机制,提高了用户体验。

typescript 复制代码
// 加载仪表盘数据
const loadDashboardData = async () => {
  try {
    // 调用真实的API接口
    const response: BoardRes = await boardApi.getBoardData()
    // 检查响应数据
    if (response.code === 200 && response.data) {
      // 将API返回的数据赋值给dashboardData
      dashboardData.user_count = response.data.user_count || 0
      dashboardData.poetry_count = response.data.poetry_count || 0
      dashboardData.category_count = response.data.category_count || 0
      dashboardData.view_count = response.data.view_count || 0
      ElMessage.success('数据加载成功')
    } else {
      ElMessage.warning('获取数据失败: ' + response.msg)
    }
  } catch (error: any) {
    console.error('获取仪表盘数据失败:', error)
    ElMessage.error('获取数据失败: ' + (error.message || '未知错误'))
    // 即使API调用失败,也保留默认的统计数据
  }
}

六、项目结构

复制代码
src/
├── api/           # API接口定义
├── assets/        # 静态资源
├── http/          # 网络请求配置
├── router/        # 路由配置
├── stores/        # 状态管理
├── views/         # 页面组件
│   ├── login/     # 登录页面
│   └── main/      # 主页面
│       ├── Banner.vue       # 轮播图管理
│       ├── Category.vue     # 分类管理
│       ├── Comments.vue     # 评论管理
│       ├── Dashboard.vue    # 仪表盘
│       ├── MainView.vue     # 主布局
│       ├── Overview.vue     # 系统概览
│       ├── Poetrys.vue      # 诗词管理
│       ├── Posts.vue        # 动态管理
│       └── Users.vue        # 用户管理
├── App.vue        # 根组件
└── main.ts        # 入口文件

七、总结

中华诗词学习后台管理系统是一个功能完善、界面美观的现代化后台管理系统,采用了Vue 3 + TypeScript + Element Plus等先进技术栈,实现了诗词管理、动态社区、评论管理等核心功能。系统具有良好的用户体验、完善的错误处理机制和优雅的UI设计,为用户提供了一个高效、便捷的诗词学习管理平台。

通过本项目的开发,我们可以看到Vue 3 Composition API和TypeScript在大型项目中的优势,以及Element Plus组件库在快速构建美观界面方面的便利性。同时,系统的模块化设计和清晰的代码结构也为后续的维护和扩展提供了良好的基础。

未来,我们可以考虑添加更多功能,如用户权限管理、数据导出、更多数据可视化图表等,进一步提升系统的功能和用户体验。

八、项目运行效果截图













相关推荐
iPadiPhone2 小时前
Spring Boot 自动装配原理与 Starter 开发实战
java·spring boot·后端·spring·面试
码匠君2 小时前
首个基于 Spring Boot 4 的正式版发布!Dante Cloud 4.X 新特性全解析
java·spring boot·后端
Natalia_Portman2 小时前
springboot整合DolphinDB
java·数据库·spring boot·后端·db
A黄俊辉A2 小时前
openlayers+vue初学注意点
前端·javascript·vue.js
beata2 小时前
Spring Boot基础-1:用5分钟搭建第一个REST API应用(含深度原理解析)
spring boot
Fisschl2 小时前
Element Plus 自动导入 CSS 样式
vue.js
技术钱2 小时前
vue3 + vant移动端实现上拉刷新下拉加载
vue.js·vant
忧郁缭绕3 小时前
Spring Boot Pf4j模块化能力设计思考
java·spring boot·后端
A923A3 小时前
【Vue3大事件 | 项目笔记】第一天
前端·vue.js·笔记·前端框架