完全开源-支持二开-可做毕业答辩-全源码提供-一站式场地租赁预约平台 — 从需求到落地的全栈实践

一个面向场地租赁行业的预约与管理平台,覆盖预约端 + 管理后台,基于 Vue 3 构建。


项目背景

场地租赁行业长期面临几个痛点:时段管理混乱、人工统计效率低、入场验证繁琐、拼场分摊费用难协调。场地租赁预约小程序正是为了解决这些问题而设计的一站式平台,目标是打通"场地浏览 → 时段选择 → 在线预约 → 支付 → 入场验证 → 拼场分摊"的完整业务闭环。

适用场景包括:羽毛球馆、网球场、篮球场、自习室、会议室、排练厅、棋牌室、露营地等各类场地租赁场所。


技术选型

层级 技术栈
前端框架 Vue 3 + Composition API
路由 Vue Router 4
状态管理 Pinia
构建工具 Vite
UI 风格 自定义 CSS 变量体系,移动端优先
目标平台 微信小程序 / H5 / App(UniApp 可扩展)

功能全景

预约端(移动端)

预约端采用底部 Tab 导航,包含 5 个主入口和多个二级页面。

1. 登录页

支持微信一键登录和手机号登录两种方式,底部提供管理员入口。

2. 首页

展示场地分类入口(羽毛球、网球、篮球、会议室、自习室等)、推荐场地和热门拼场列表。

3. 场地浏览与详情

场地列表支持分类筛选和价格排序,场地详情页包含照片轮播、设施标签、使用规则、价格表等完整信息,底部提供收藏和预约两个操作按钮。

4. 时段选择与预约

预约日历页支持日期选择,时段网格展示可用/已占用/已锁定状态,点击选择连续时段后自动计算价格。确认页展示预约信息和价格明细,支付完成后生成入场码。

5. 我的预约

列表页支持按状态筛选(全部/待支付/已支付/已完成/已取消),预约详情页展示场地信息、时段信息和入场码二维码。

6. 拼场功能

拼场列表展示正在招募的活动,支持按场地类型筛选。用户可以创建拼场并设置人数上限和人均价格,也可参与他人的拼场活动。

7. 消息中心

按类型展示预约成功、入场提醒、拼场通知等消息,支持未读红点标记。

8. 个人中心

包含预约管理、拼场记录、收藏场地、意见反馈、设置等功能入口。

9. 更多功能页
  • 优惠券:分"可使用/已使用/已过期"三栏展示
  • 收藏的场地:支持取消收藏,点击跳转场地详情
  • 意见反馈:选择反馈类型 + 文字描述 + 联系方式
  • 设置:账号管理、通知开关、隐私政策、关于我们


管理后台(PC 端)

管理后台采用左侧边栏导航,包含 9 个功能模块。

1. 数据看板

展示核心运营指标:今日预约数、本月营收、场地利用率、服务完成率。下方提供预约趋势图和营收统计图。

2. 场地管理

场地列表展示场地名称、类型、状态等关键数据,支持搜索和筛选。提供新增场地、编辑、启用/停用等操作,可设置场地设施和照片。

3. 价格管理

时段定价支持按工作日/周末/节假日设置不同价格,可设置每个时段的价格和最少预约时长。

4. 场地占用热力图

日历网格展示场地 × 时段的占用情况,支持批量锁定/解锁时段,直观查看场地利用率。

5. 预约管理

实时展示各场地当前预约列表,支持按状态筛选,可查看预约详情和入场码,支持取消操作。

6. 拼场管理

拼场活动列表展示招募中/已满员/已完成等状态,支持查看参与者信息和取消活动。

7. 退款审批

分"待审批/已通过/已拒绝"三栏管理退款申请,支持一键通过或填写拒绝原因。

8. 财务报表

按日/月/年维度展示收入、退款、净收入等财务数据,支持自定义日期范围和 Excel 导出。

9. 权限管理

基于 RBAC 模型的角色权限矩阵,支持自定义角色和细粒度权限配置。


项目结构

08-frontend-venue-prd08/src/
├── router/index.js              # 路由配置
├── stores/
│   ├── app.js                 # Pinia 全局状态
│   ├── user.js                # 用户状态管理
│   ├── reservation.js         # 预约状态管理
│   └── share.js               # 拼场状态管理
├── api/
│   ├── request.js             # API 请求封装
│   ├── auth.js                # 认证相关 API
│   ├── venue.js               # 场地相关 API
│   ├── reservation.js          # 预约相关 API
│   ├── share.js               # 拼场相关 API
│   └── admin.js               # 管理端 API
├── utils/
│   ├── auth.js                # 认证工具函数
│   ├── pay.js                 # 支付工具函数
│   ├── qrcode.js              # 二维码生成工具
│   └── format.js              # 格式化工具函数
├── components/
│   ├── VenueCard.vue           # 可复用场地卡片
│   ├── TimeSlotPicker.vue     # 时段选择器组件
│   ├── CalendarView.vue        # 日历视图组件
│   ├── ShareCard.vue           # 拼场卡片组件
│   └── QRCodeDisplay.vue       # 二维码显示组件
├── pages/
│   ├── LoginPage.vue           # 登录
│   ├── MainLayout.vue          # Tab 布局容器
│   ├── HomePage.vue            # 首页
│   ├── VenuesPage.vue          # 场地列表
│   ├── VenueDetailPage.vue     # 场地详情
│   ├── BookingCalendarPage.vue # 预约日历(时段选择)
│   ├── BookingConfirmPage.vue   # 预约确认
│   ├── BookingPayPage.vue      # 支付
│   ├── BookingSuccessPage.vue   # 预约成功
│   ├── ReservationsPage.vue    # 我的预约
│   ├── ReservationDetailPage.vue # 预约详情
│   ├── SharesPage.vue          # 拼场列表
│   ├── ShareDetailPage.vue     # 拼场详情
│   ├── ShareCreatePage.vue     # 创建拼场
│   ├── MessagesPage.vue        # 消息中心
│   ├── MyPage.vue             # 个人中心
│   ├── CouponsPage.vue        # 优惠券
│   ├── FavoritesPage.vue      # 收藏场地
│   ├── FeedbackPage.vue       # 意见反馈
│   ├── SettingsPage.vue       # 设置
│   └── RefundPage.vue         # 退款申请
│   └── admin/
│       ├── AdminLayout.vue         # 管理后台布局
│       ├── DashboardPage.vue       # 数据看板
│       ├── VenueMgmtPage.vue       # 场地管理
│       ├── PricingMgmtPage.vue     # 价格管理
│       ├── OccupancyMgmtPage.vue   # 场地占用热力图
│       ├── ReservationMgmtPage.vue # 预约管理
│       ├── ShareMgmtPage.vue       # 拼场管理
│       ├── FinancePage.vue         # 财务报表
│       ├── OrgMgmtPage.vue         # 门店管理
│       └── RoleMgmtPage.vue       # 权限管理

设计亮点

移动端体验优先:预约端全部页面按 375px 宽度设计,圆角卡片 + 渐变色彩 + 底部弹窗交互,贴合微信小程序的使用习惯。

CSS 变量体系:全局定义 --blue--green--red 等语义化颜色变量,一处修改全局生效,方便后续品牌定制。

时段网格选择器:核心交互组件,支持按小时选择连续时段,自动计算价格,直观显示可用/已占用/已锁定状态。

入场码体系:预约成功后生成唯一入场码,支持二维码展示,扫码验证后允许入场,实现无纸化入场管理。

拼场分摊机制:支持用户发起拼场活动,设置人数上限和人均价格,陌生人可参与分摊费用,提高场地利用率。

场地占用热力图:管理端以日历网格形式展示场地使用情况,支持批量锁定时段,直观高效。

前后端分离架构:前端使用 Pinia 管理状态,所有页面预留 API 接口调用位置,后端就绪后可无缝切换。

完整的交互反馈:每个按钮都有明确的点击响应 — 弹窗确认、Toast 提示、状态切换、页面跳转,没有"死按钮"。

场地租赁场景特色功能

  • 场地类型支持羽毛球、网球、篮球、会议室、自习室、排练厅、棋牌室、露营地等
  • 设施标签支持空调、淋浴、停车位、投影仪、饮水机等
  • 时段定价支持工作日/周末/节假日差异化定价
  • 最少预约时长可设置(1小时起订等)
  • 入场码二维码支持扫码入场验证

其他

演示地址:http://venue.hei-ai.com/
源码下载: https://srcs.hei-ai.com/285.html

本项目为场地租赁行业数字化转型的一次实践探索,欢迎交流讨论。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐