这是一个功能完善的比赛分组抽签与报名管理微信小程序,集成了用户权限管理、在线报名、自动抽签、赛程生成等核心功能。系统支持多级权限控制,能够满足从活动发布、用户报名到最终分组抽签的全流程需求。
## 核心功能
### 1. 用户权限与认证系统
- **口令登录**:支持用户通过"工号/序号 + 姓名 + 密码"的方式登录。
- **便捷登录**:登录页面支持输入密码后直接回车登录。
- **多级权限体系**:
- **系统管理员 (admin)**:拥有最高权限,可管理所有用户、抽签项目、报名项目及系统设置。
- **总组织者 (organizer_admin)**:由管理员指定,可管理自己负责的报名项目和抽签活动,拥有比普通用户更高的管理权限。
- **普通用户 (user)**:可参与报名、查看通知、参与抽签及查看结果。
- **用户管理**:管理员可进行用户列表查看、从Excel导入用户、重置用户密码、修改用户角色(如设为总组织者)。
### 2. 报名管理系统
- **项目创建与编辑**:
- 管理员/组织者可创建报名项目,设置开始/截止时间。
- 支持设置"双打项目"标识。
- 支持指定项目组织者(从用户库选择或手动输入)。
- 编辑项目时支持"取消编辑"功能,方便操作。
- **报名通知**:
- 发布与报名项目关联的通知消息。
- 通知列表支持编辑与删除,编辑时自动定位到编辑区域。
- **数据导出**:支持将报名数据导出为Excel文件。
- **报名详情**:实时查看各项目的报名进度与人员名单。
### 3. 抽签管理系统
- **灵活创建**:
- 支持自定义项目名称、分组数量、参与人数。
- **无缝衔接**:支持从"报名详情"页面直接创建抽签,自动导入报名人员名单,并自动截止该项目的报名。
- **高级调控**:
- **概率调控**:管理员可开启概率控制,设置特定分组的中签权重。
- **抽签流程**:
- 用户登录后即可参与。
- 系统自动随机(或根据调控规则)分组。
- 实时展示分组结果。
### 4. 结果与赛程
- **结果导出**:支持导出分组结果表格。
- **赛程生成**:根据分组结果自动生成赛程表。
- **图片分享**:支持生成赛程图片保存到本地。
## 项目结构
```
fenzu/
├── pages/
│ ├── login/ # 登录页面
│ ├── home/ # 首页(功能入口)
│ ├── create/ # 创建抽签页面
│ ├── join/ # 参与抽签页面
│ ├── result/ # 抽签结果页面
│ ├── schedule/ # 赛程管理页面
│ ├── admin/ # 系统管理员页面(用户管理、概率调控)
│ ├── signup_admin/ # 报名管理页面(项目发布、通知管理)
│ └── signup_detail/ # 报名详情页面
├── utils/
│ ├── util.js # 通用工具函数
│ └── constants.js # 常量定义
├── cloudfunctions/ # 云函数
│ ├── auth/ # 用户认证与管理
│ ├── draw/ # 抽签核心逻辑
│ ├── signup/ # 报名系统逻辑
│ └── cleaner/ # 数据清理
├── app.js # 全局入口
├── app.json # 全局配置
└── app.wxss # 全局样式
```
## 数据库设计概览
1. **users**:用户信息表(工号、姓名、密码、角色)。
2. **draws**:抽签项目表(包含分组规则、参与名单、概率设置)。
3. **signup_projects**:报名项目表(时间、组织者、状态)。
4. **signup_records**:用户报名记录表。
5. **notices**:系统通知表。