图书馆绘本创作活动 - 幼儿绘本创作与展示平台
Go to file
2026-04-14 16:37:45 +08:00
.claude Day4: 超管端设计优化 + UGC绘本创作社区P0实现 2026-03-27 22:20:25 +08:00
.cursor Day4: 超管端设计优化 + UGC绘本创作社区P0实现 2026-03-27 22:20:25 +08:00
docs feat: 预设评语按当前评委查询,去除活动筛选与重复评委活动接口 2026-04-14 15:18:24 +08:00
lesingle-aicreate-backend-demo feat(前端): 测试环境登录框支持自动填充测试账号 2026-04-11 17:03:22 +08:00
lesingle-aicreate-client feat: 赛事→活动术语统一,AI创作嵌套路由重构,前端依赖升级 2026-04-08 22:58:07 +08:00
lesingle-creation-backend feat: 预设评语按当前评委查询,去除活动筛选与重复评委活动接口 2026-04-14 15:18:24 +08:00
lesingle-creation-frontend fix:提示修改为对话框 2026-04-14 16:37:45 +08:00
oss-direct-upload-demo feat: OSS 客户端直传改造(STS Token 签发 + 前端直传 + CORS 自动配置) 2026-04-08 15:19:43 +08:00
.cursorignore Day4: 超管端设计优化 + UGC绘本创作社区P0实现 2026-03-27 22:20:25 +08:00
.cursorrules Day4: 超管端设计优化 + UGC绘本创作社区P0实现 2026-03-27 22:20:25 +08:00
.gitignore 暂存 2026-04-10 09:59:03 +08:00
.npmrc Day4: 超管端设计优化 + UGC绘本创作社区P0实现 2026-03-27 22:20:25 +08:00
.nvmrc Day4: 超管端设计优化 + UGC绘本创作社区P0实现 2026-03-27 22:20:25 +08:00
AGENTS.md Day4: 超管端设计优化 + UGC绘本创作社区P0实现 2026-03-27 22:20:25 +08:00
CLAUDE.md feat(前端): 测试环境登录框支持自动填充测试账号 2026-04-11 17:03:22 +08:00
package-lock.json Day4: 超管端设计优化 + UGC绘本创作社区P0实现 2026-03-27 22:20:25 +08:00
package.json feat(前端): 测试环境登录框支持自动填充测试账号 2026-04-11 17:03:22 +08:00
pnpm-lock.yaml fix:调整报名时间校验 2026-04-13 10:07:13 +08:00
pnpm-workspace.yaml feat(前端): 测试环境登录框支持自动填充测试账号 2026-04-11 17:03:22 +08:00
README.md feat(前端): 测试环境登录框支持自动填充测试账号 2026-04-11 17:03:22 +08:00

比赛管理系统

一个基于 Vue 3 + NestJS 的现代化比赛管理系统,支持用户管理、角色权限、菜单管理、数据字典、系统配置和日志记录等核心功能。

技术栈

前端

  • 框架: Vue 3 + TypeScript
  • 构建工具: Vite
  • UI 组件库: Ant Design Vue
  • 样式方案: Tailwind CSS + SCSS + CSS Modules
  • 状态管理: Pinia
  • 路由: Vue Router 4
  • HTTP 客户端: Axios
  • 表单验证: VeeValidate + Zod

后端

  • 框架: NestJS + TypeScript
  • 数据库: MySQL 8.0
  • ORM: Prisma
  • 认证授权: JWT + RBAC (基于角色的访问控制)

项目结构

competition-management-system/
├── frontend/          # 前端项目
│   ├── src/
│   │   ├── api/       # API 接口
│   │   ├── assets/    # 静态资源
│   │   ├── components/# 公共组件
│   │   ├── layouts/   # 布局组件
│   │   ├── router/    # 路由配置
│   │   ├── stores/    # Pinia 状态管理
│   │   ├── styles/    # 样式文件
│   │   ├── types/     # TypeScript 类型定义
│   │   ├── utils/     # 工具函数
│   │   └── views/     # 页面组件
│   └── package.json
│
└── backend/           # 后端项目
    ├── prisma/        # Prisma 配置
    │   └── schema.prisma
    ├── src/
    │   ├── auth/      # 认证模块
    │   ├── users/     # 用户管理
    │   ├── roles/     # 角色管理
    │   ├── menus/     # 菜单管理
    │   ├── dict/      # 数据字典
    │   ├── config/    # 系统配置
    │   ├── logs/      # 日志记录
    │   └── prisma/    # Prisma 服务
    └── package.json

快速开始

环境要求

  • Node.js >= 18.0.0
  • pnpm >= 8.0.0
  • MySQL >= 8.0

安装 pnpm

如果还没有安装 pnpm可以通过以下方式安装

# 使用 npm 安装
npm install -g pnpm

# 或使用 corepackNode.js 16.13+
corepack enable
corepack prepare pnpm@latest --activate

快速安装(推荐)

在项目根目录执行:

# 安装所有依赖(前端 + 后端)
pnpm install

# 或分别安装
pnpm --filter frontend install
pnpm --filter backend install

后端设置

  1. 进入后端目录:
cd backend
  1. 安装依赖(如果未在根目录安装):
pnpm install
  1. 配置环境变量,创建 .env 文件:
DATABASE_URL="mysql://user:password@localhost:3306/lesingle-creation-test?schema=public"
JWT_SECRET="your-secret-key-change-in-production"
PORT=3001
  1. 初始化数据库:
# 生成 Prisma Client
pnpm prisma:generate

# 运行数据库迁移
pnpm prisma:migrate
  1. 启动开发服务器:
# 方式1在后端目录
pnpm start:dev

# 方式2在根目录
pnpm dev:backend

后端服务将在 http://localhost:3001 启动。

前端设置

  1. 进入前端目录:
cd frontend
  1. 安装依赖(如果未在根目录安装):
pnpm install
  1. 启动开发服务器:
# 方式1在前端目录
pnpm dev

# 方式2在根目录
pnpm dev:frontend

前端应用将在 http://localhost:3000 启动。

同时启动前后端

在项目根目录执行:

pnpm dev

这将同时启动前端和后端开发服务器。

核心功能

1. 用户管理

  • 用户列表查询(分页)
  • 用户创建、编辑、删除
  • 用户角色分配

2. 角色权限 (RBAC)

  • 角色管理(创建、编辑、删除)
  • 权限分配
  • 基于角色的访问控制

3. 菜单管理

  • 菜单树形结构管理
  • 菜单权限配置
  • 动态路由生成

4. 数据字典

  • 字典类型管理
  • 字典项管理
  • 字典数据查询

5. 系统配置

  • 系统参数配置
  • 配置项管理

6. 日志记录

  • 操作日志记录
  • 日志查询和统计

API 文档

认证接口

  • POST /api/auth/login - 用户登录
  • GET /api/auth/user-info - 获取当前用户信息
  • POST /api/auth/logout - 用户登出

用户管理

  • GET /api/users - 获取用户列表
  • GET /api/users/:id - 获取用户详情
  • POST /api/users - 创建用户
  • PATCH /api/users/:id - 更新用户
  • DELETE /api/users/:id - 删除用户

角色管理

  • GET /api/roles - 获取角色列表
  • GET /api/roles/:id - 获取角色详情
  • POST /api/roles - 创建角色
  • PATCH /api/roles/:id - 更新角色
  • DELETE /api/roles/:id - 删除角色

菜单管理

  • GET /api/menus - 获取菜单列表(树形结构)
  • GET /api/menus/:id - 获取菜单详情
  • POST /api/menus - 创建菜单
  • PATCH /api/menus/:id - 更新菜单
  • DELETE /api/menus/:id - 删除菜单

数据字典

  • GET /api/dict - 获取字典列表
  • GET /api/dict/code/:code - 根据代码获取字典
  • GET /api/dict/:id - 获取字典详情
  • POST /api/dict - 创建字典
  • PATCH /api/dict/:id - 更新字典
  • DELETE /api/dict/:id - 删除字典

系统配置

  • GET /api/config - 获取配置列表
  • GET /api/config/key/:key - 根据键获取配置
  • GET /api/config/:id - 获取配置详情
  • POST /api/config - 创建配置
  • PATCH /api/config/:id - 更新配置
  • DELETE /api/config/:id - 删除配置

日志记录

  • GET /api/logs - 获取日志列表
  • GET /api/logs/:id - 获取日志详情
  • POST /api/logs - 创建日志

开发规范

代码风格

  • 使用 ESLint 和 Prettier 进行代码格式化
  • 遵循 TypeScript 严格模式
  • 使用语义化的提交信息

提交规范

  • feat: 新功能
  • fix: 修复 bug
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 代码重构
  • test: 测试相关
  • chore: 构建/工具相关

部署

前端构建

# 方式1在前端目录
cd frontend
pnpm build

# 方式2在根目录
pnpm build:frontend

构建产物在 frontend/dist 目录。

后端构建

# 方式1在后端目录
cd backend
pnpm build
pnpm start:prod

# 方式2在根目录
pnpm build:backend
cd backend
pnpm start:prod

同时构建前后端

pnpm build

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request