Files
mini-programs/README.md
张成 d149de1f42 1
2026-02-06 00:26:31 +08:00

5.3 KiB
Raw Blame History

PlayBallTogether - 约球应用

项目简介

这是一个基于Taro + React + TypeScript的约球应用用户可以发布个人约球活动。

主要功能

核心功能特性

  • 图片上传 - 支持上传多张活动封面图片
  • 活动信息填写 - 主题、时间、场地、价格等完整信息
  • 多玩法选择 - 单打、双打、娱乐拉球、到了再说
  • 人数控制 - 灵活设置最少到最多参与人数
  • NTRP水平设置 - 滑动条选择技能水平区间
  • 性别偏好 - 支持性别限制或不限
  • 自动候补 - 开启自动候补逻辑
  • 多场发布 - 支持同时创建多场活动

技术架构特性

  • 动态表单配置 - 通过JSON配置动态生成表单
  • 组件化架构 - 可复用的字段渲染器
  • 表单验证 - 自动数据验证和错误提示
  • API集中管理 - 统一services目录按页面功能命名
  • Token自动管理 - 自动携带token处理过期刷新
  • 请求拦截处理 - 统一错误处理和加载状态
  • 多人协作友好 - 按页面隔离,避免代码冲突

技术栈

  • 框架: Taro 4.1.5
  • 前端: React 18 + TypeScript
  • UI库: NutUI React Taro
  • 样式: Sass
  • 状态管理: React Context + useReducer
  • 本地存储: Taro Storage API

快速开始

# 安装依赖
npm install
# 或
yarn install

# 开发环境启动
npm run dev:h5          # H5版本
npm run dev:weapp       # 微信小程序
npm run dev:alipay      # 支付宝小程序

# 构建生产版本
npm run build:h5        # H5版本
npm run build:weapp     # 微信小程序
npm run build:alipay    # 支付宝小程序

页面路由

  • /pages/publish/publish - 原发布页面
  • /pages/publishBall/publishBall - 新的约球发布页面
  • /pages/dynamicFormDemo/dynamicFormDemo - 动态表单演示页面

项目结构 🏗️

本项目采用按页面分层、组件共享的架构设计,便于多人协作开发。

src/
├── components/              # 🔥 公共组件(所有页面共享)
│   └── DynamicForm/         # 动态表单组件 ⭐
│       ├── DynamicForm.tsx      # 动态表单容器
│       ├── DynamicForm.scss     # 动态表单样式
│       ├── FieldRenderer.tsx    # 字段渲染器
│       ├── FieldRenderer.scss   # 字段渲染器样式
│       └── index.ts             # 组件导出
├── pages/                   # 📱 页面目录(按功能模块划分)
│   ├── index/               # 首页模块
│   ├── publish/             # 原发布页面
│   ├── publishBall/         # 约球发布模块 ⭐
│   │   ├── publishBall.tsx
│   │   ├── publishBall.scss
│   │   └── publishBall.config.ts
│   └── dynamicFormDemo/     # 动态表单演示模块 ⭐
│       ├── dynamicFormDemo.tsx
│       ├── dynamicFormDemo.scss
│       └── dynamicFormDemo.config.ts
├── services/                # 🌐 API服务统一管理
│   ├── httpService.ts           # HTTP基础服务 ⭐
│   ├── authService.ts           # 认证服务 ⭐
│   ├── commonApi.ts             # 通用API服务 ⭐
│   ├── publishBallApi.ts        # 🔥 约球发布API服务
│   └── demoApi.ts               # 🔥 演示页面API服务
├── utils/                   # 🛠️ 工具函数
│   ├── tokenManager.ts          # Token管理 ⭐
│   └── storage.ts               # 本地存储
├── config/                  # ⚙️ 配置文件
│   ├── formConfig.ts            # 表单配置定义 ⭐
│   └── exampleConfigs.ts        # 示例配置 ⭐
├── store/                   # 📦 全局状态管理
│   ├── matchStore.ts           # Zustand状态管理
│   └── storage.ts              # 本地存储工具
├── app.ts                   # 应用入口
├── app.config.ts            # 应用配置
└── app.scss                # 全局样式

详细架构说明请查看:ARCHITECTURE.md

设计特色

  • 🎨 严格按照设计图实现 - 像素级还原UI设计
  • 📱 移动端优先 - 针对手机屏幕优化
  • 流畅交互 - 高性能的用户体验
  • 💾 数据持久化 - 自动保存用户输入
  • 🔄 状态同步 - 全局状态实时更新

图片上传

  • 使用Taro.chooseImage API
  • 支持相册和相机选择
  • 最多支持9张图片
  • 实时预览和删除功能

表单验证

  • 必填字段验证
  • 数字范围验证
  • 自定义验证规则
  • 友好的错误提示

响应式设计

  • 适配不同屏幕尺寸
  • 灵活的布局系统
  • 优雅的动画过渡

如何自定义表单配置

开发者说明

本项目采用最简单有效、优雅的方式实现,避免代码冗余,遵循以下原则:

  1. 组件化设计 - 每个功能模块独立封装
  2. 配置驱动 - 通过JSON配置实现灵活的表单生成
  3. 类型安全 - 完整的TypeScript类型定义
  4. 用户体验 - 流畅的交互和反馈
  5. 代码质量 - 简洁、可维护的代码结构

License

MIT

"appid": "wx915ecf6c01bea4ec",

"appid": "wx815b533167eb7b53",