feat: 移动端开发规范重大更新

- 🔥 完全重写 .cursor/cursorrules-mobile.md (940行)
  * 基于实际mobile工程Vue 3.4.21+uniapp+uview-plus架构
  * 移除所有JeeSite相关内容,精准匹配实际项目
  * 新增11个完整章节:技术栈、项目结构、页面开发、组件规范等

- 📚 创建完整规范文档 docs/开发文档/移动端开发规范总结.md (800+行)
  * 涵盖从项目架构到部署的全流程指导
  * 提供可直接使用的页面和组件模板
  * 包含现代CSS变量设计系统和用户体验优化

- 🔄 同步更新主配置文件 .cursorrules
  * 更新移动端技术栈描述
  * 调整为Vue 3.4.21+uniapp+uview-plus 3.4.45架构

- 📝 完善变更记录
  * 详细记录规范更新背景和技术价值
  * 为后续维护提供完整历史记录

核心价值:解决规范与实际项目不匹配问题,为Cursor AI提供准确的移动端开发上下文,确保生成代码完全符合实际项目架构。
This commit is contained in:
zlwu committed 2025-07-04 15:51:33 +08:00
1 parent e8ece1b612
commit 28232d5d46
131 files changed
+17170 -5479

No files matched your search

@@ -0,0 +1,555 @@
# 场地预约系统需求说明书
## 📖 文档信息
- **项目名称**: 校园管理系统 - 场地预约模块
- **文档版本**: v1.0
- **创建时间**: 2025-07-01
- **文档类型**: 功能需求说明书
- **适用范围**: 后勤管理 - 场地预约管理
---
## 🎯 项目概述
### 1.1 项目背景
为满足校园各类活动和教学需求,需要建设一套完整的场地预约管理系统。该系统将为用户提供便捷的场地预约服务,为管理员提供高效的场地管理和预约审批功能。
### 1.2 项目目标
- 建立规范的场地管理体系
- 实现用户自助场地预约
- 提供完善的预约审批流程
- 提升场地使用效率和管理水平
### 1.3 技术架构
- **前端**: Vue 3 + TypeScript + Element Plus
- **后端**: Spring Boot 3.4.6 + MyBatis-Plus
- **数据库**: MySQL 8.0
- **权限**: Sa-Token + RBAC
---
## 🔄 业务流程分析
### 2.1 核心业务流程
#### 2.1.1 场地管理流程
```
场地信息录入 → 设置场地管理员 → 场地状态管理 → 场地使用统计
```
#### 2.1.2 预约申请流程
```
用户查看场地 → 选择预约时间 → 填写预约信息 → 提交申请 → 时间冲突检测 → 提示确认 → 生成预约单
```
#### 2.1.3 预约审批流程
```
场地管理员接收申请 → 审核预约信息 → 时间冲突检测 → 提示确认 → 审批决定 → 更新预约状态 → 通知申请人
```
#### 2.1.4 预约管理流程
```
申请人查看预约 → 修改/取消预约 → 预约状态跟踪 → 预约完成确认
```
### 2.2 业务规则
#### 2.2.1 权限规则
- **申请人权限**:新增、查看、编辑自己的预约单
- **场地管理员权限**:新增、查看、编辑、审核负责场地的预约单 + 自己申请的预约单
- **数据隔离**:申请人只能看见自己的预约,场地管理员只能看见负责场地的预约
#### 2.2.2 状态流转规则
- **预约状态**:待审批 → 已批准/已拒绝
- **编辑规则**:审批完成前,申请人可修改和取消预约
- **冲突处理**:时间冲突时弹窗提醒,但允许提交和审批
---
## 📋 功能需求规格
### 3.1 场地管理模块
#### 3.1.1 场地信息管理
**功能描述**: 管理场地基本信息和状态
**字段规格**:
- **场地名称** (varchar(100)): 必填,场地名称
- **场地编码** (varchar(50)): 必填,唯一标识
- **场地位置** (varchar(200)): 必填,详细位置
- **场地容量** (int): 必填,最大容纳人数
- **场地类型** (varchar(20)): 必填,字典值(会议室、教室、运动场等)
- **场地状态** (char(1)): 必填,0-维修中,1-可用
- **场地描述** (text): 可选,详细描述
- **场地图片** (varchar(500)): 可选,图片 URL,多张用逗号分隔
- **场地管理员** (bigint): 可选,关联用户 ID
**核心功能**:
- ✅ 场地 CRUD 操作
- ✅ 场地状态管理
- ✅ 场地管理员设置
- ✅ 场地图片上传
- ✅ 场地信息搜索筛选
#### 3.1.2 场地类型管理
**功能描述**: 管理场地分类字典
**类型清单**:
- 会议室
- 教室
- 运动场
- 礼堂
- 实验室
- 其他
### 3.2 预约管理模块
#### 3.2.1 预约申请功能
**功能描述**: 用户发起场地预约申请
**字段规格**:
- **申请人信息** (bigint): 必填,关联用户 ID,自动获取
- **预约场地** (bigint): 必填,关联场地 ID
- **预约日期** (date): 必填,预约日期
- **开始时间** (datetime): 必填,预约开始时间
- **结束时间** (datetime): 必填,预约结束时间
- **预约用途** (varchar(200)): 必填,活动内容描述
- **参与人数** (int): 必填,预计参与人数
- **联系方式** (varchar(20)): 必填,申请人联系电话
- **特殊需求** (text): 可选,特殊需求说明
- **预约状态** (char(1)): 系统字段,0-待审批,1-已批准,2-已拒绝
**核心功能**:
- ✅ 预约表单提交
- ✅ 时间冲突检测并提醒
- ✅ 预约信息验证
- ✅ 预约单生成
#### 3.2.2 预约审批功能
**功能描述**: 场地管理员审批预约申请
**审批字段**:
- **审批人** (bigint): 系统记录,当前登录用户
- **审批时间** (datetime): 系统记录,审批操作时间
- **审批意见** (varchar(500)): 可选,审批备注说明
- **审批结果** (char(1)): 必填,1-批准,2-拒绝
**核心功能**:
- ✅ 审批单据查看
- ✅ 审批决定操作
- ✅ 审批意见填写
- ✅ 时间冲突检测并提醒
#### 3.2.3 预约记录管理
**功能描述**: 预约信息的查看和管理
**核心功能**:
- ✅ 我的预约记录查看
- ✅ 预约信息编辑(审批前)
- ✅ 预约取消操作(审批前)
- ✅ 预约状态跟踪
- ✅ 预约历史记录
### 3.3 页面功能规格
#### 3.3.1 场地列表页面
**页面路径**: `/hq/venue/list`
**功能组件**:
- ✅ 场地信息展示(名称、类型、位置、容量、状态)
- ✅ 搜索功能(按名称、类型、位置搜索)
- ✅ 筛选功能(按类型、状态筛选)
- ✅ 分页显示
- ✅ 场地详情查看按钮
#### 3.3.2 场地详情页面
**页面路径**: `/hq/venue/detail/:id`
**功能组件**:
- ✅ 场地基本信息展示
- ✅ 场地图片展示
- ✅ 场地预约日历视图
- ✅ 立即预约按钮
- ✅ 预约历史记录
#### 3.3.3 我的预约页面
**页面路径**: `/hq/venue/myReservations`
**功能组件**:
- ✅ 预约记录列表
- ✅ 预约状态筛选
- ✅ 预约信息查看
- ✅ 编辑预约按钮(审批前)
- ✅ 取消预约按钮(审批前)
- ✅ 新增预约按钮
#### 3.3.4 预约审批页面
**页面路径**: `/hq/venue/approval`
**功能组件**:
- ✅ 待审批预约列表
- ✅ 预约详情查看
- ✅ 审批操作按钮
- ✅ 审批意见填写
- ✅ 批量审批功能
#### 3.3.5 场地使用统计页面
**页面路径**: `/hq/venue/statistics`
**功能组件**:
- ✅ 场地使用率统计图表
- ✅ 预约申请量统计
- ✅ 热门场地排行
- ✅ 时间段分析
- ✅ 导出报表功能
---
## 🗄️ 数据模型设计
### 4.1 数据表结构
#### 4.1.1 场地信息表 (hq_venue_info)
```sql
CREATE TABLE `hq_venue_info` (
`id` bigint(20) NOT NULL COMMENT '场地ID',
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
`venue_name` varchar(100) NOT NULL COMMENT '场地名称',
`venue_code` varchar(50) NOT NULL COMMENT '场地编码',
`venue_location` varchar(200) NOT NULL COMMENT '场地位置',
`venue_capacity` int(11) NOT NULL COMMENT '场地容量',
`venue_type` varchar(20) NOT NULL COMMENT '场地类型',
`venue_status` char(1) NOT NULL DEFAULT '1' COMMENT '场地状态(0-维修中 1-可用)',
`venue_description` text COMMENT '场地描述',
`venue_images` varchar(500) COMMENT '场地图片',
`venue_manager_id` bigint(20) COMMENT '场地管理员ID',
`venue_manager_name` varchar(30) COMMENT '场地管理员姓名',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(4) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_venue_code` (`venue_code`),
KEY `idx_venue_type` (`venue_type`),
KEY `idx_venue_status` (`venue_status`),
KEY `idx_venue_manager` (`venue_manager_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='场地信息表';
```
#### 4.1.2 场地预约表 (hq_venue_reservation)
```sql
CREATE TABLE `hq_venue_reservation` (
`id` bigint(20) NOT NULL COMMENT '预约ID',
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
`venue_id` bigint(20) NOT NULL COMMENT '场地ID',
`venue_name` varchar(100) NOT NULL COMMENT '场地名称',
`applicant_id` bigint(20) NOT NULL COMMENT '申请人ID',
`applicant_name` varchar(30) NOT NULL COMMENT '申请人姓名',
`applicant_phone` varchar(20) NOT NULL COMMENT '联系方式',
`reservation_date` date NOT NULL COMMENT '预约日期',
`start_time` datetime NOT NULL COMMENT '开始时间',
`end_time` datetime NOT NULL COMMENT '结束时间',
`reservation_purpose` varchar(200) NOT NULL COMMENT '预约用途',
`participant_count` int(11) NOT NULL COMMENT '参与人数',
`special_requirements` text COMMENT '特殊需求',
`reservation_status` char(1) NOT NULL DEFAULT '0' COMMENT '预约状态(0-待审批 1-已批准 2-已拒绝)',
`approver_id` bigint(20) COMMENT '审批人ID',
`approver_name` varchar(30) COMMENT '审批人姓名',
`approve_time` datetime COMMENT '审批时间',
`approve_remark` varchar(500) COMMENT '审批意见',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(4) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
PRIMARY KEY (`id`),
KEY `idx_venue_id` (`venue_id`),
KEY `idx_applicant_id` (`applicant_id`),
KEY `idx_reservation_date` (`reservation_date`),
KEY `idx_reservation_status` (`reservation_status`),
KEY `idx_time_range` (`start_time`, `end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='场地预约表';
```
### 4.2 字典数据
#### 4.2.1 场地类型字典 (sys_dict_type: hq_venue_type)
```sql
INSERT INTO sys_dict_data VALUES (NULL, 1, '会议室', 'meeting_room', 'hq_venue_type', '', '', 'Y', '0', 'admin', sysdate(), '', NULL, '会议室');
INSERT INTO sys_dict_data VALUES (NULL, 2, '教室', 'classroom', 'hq_venue_type', '', '', 'Y', '0', 'admin', sysdate(), '', NULL, '教室');
INSERT INTO sys_dict_data VALUES (NULL, 3, '运动场', 'sports_field', 'hq_venue_type', '', '', 'Y', '0', 'admin', sysdate(), '', NULL, '运动场');
INSERT INTO sys_dict_data VALUES (NULL, 4, '礼堂', 'auditorium', 'hq_venue_type', '', '', 'Y', '0', 'admin', sysdate(), '', NULL, '礼堂');
INSERT INTO sys_dict_data VALUES (NULL, 5, '实验室', 'laboratory', 'hq_venue_type', '', '', 'Y', '0', 'admin', sysdate(), '', NULL, '实验室');
INSERT INTO sys_dict_data VALUES (NULL, 6, '其他', 'other', 'hq_venue_type', '', '', 'Y', '0', 'admin', sysdate(), '', NULL, '其他');
```
#### 4.2.2 预约状态字典 (sys_dict_type: hq_reservation_status)
```sql
INSERT INTO sys_dict_data VALUES (NULL, 1, '待审批', '0', 'hq_reservation_status', '', 'warning', 'Y', '0', 'admin', sysdate(), '', NULL, '待审批');
INSERT INTO sys_dict_data VALUES (NULL, 2, '已批准', '1', 'hq_reservation_status', '', 'success', 'Y', '0', 'admin', sysdate(), '', NULL, '已批准');
INSERT INTO sys_dict_data VALUES (NULL, 3, '已拒绝', '2', 'hq_reservation_status', '', 'danger', 'Y', '0', 'admin', sysdate(), '', NULL, '已拒绝');
```
---
## 🔐 权限设计
### 5.1 角色权限
#### 5.1.1 普通用户
- **数据权限**: 只能查看自己的预约记录
- **操作权限**:
- `hq:venue:list` - 查看场地列表
- `hq:venue:detail` - 查看场地详情
- `hq:venue:reservation:add` - 新增预约
- `hq:venue:reservation:edit` - 编辑自己的预约(审批前)
- `hq:venue:reservation:cancel` - 取消自己的预约(审批前)
- `hq:venue:reservation:view` - 查看自己的预约
#### 5.1.2 场地管理员
- **数据权限**:
- 查看自己负责场地的所有预约记录
- 查看自己申请的预约记录
- **操作权限**: 继承普通用户权限 +
- `hq:venue:reservation:approve` - 审批预约
- `hq:venue:reservation:viewAll` - 查看负责场地的所有预约
- `hq:venue:statistics:view` - 查看场地使用统计
#### 5.1.3 系统管理员
- **数据权限**: 查看所有数据
- **操作权限**: 所有权限 +
- `hq:venue:add` - 新增场地
- `hq:venue:edit` - 编辑场地
- `hq:venue:delete` - 删除场地
- `hq:venue:manager:set` - 设置场地管理员
### 5.2 菜单权限配置
```sql
-- 后勤管理菜单
INSERT INTO sys_menu VALUES(2100, '后勤管理', 0, 5, 'hq', NULL, '', 1, 0, 'M', '0', '0', '', 'logistics', 'admin', sysdate(), '', NULL, '后勤管理目录');
-- 场地管理菜单
INSERT INTO sys_menu VALUES(2110, '场地管理', 2100, 1, 'venue', 'hq/venue/index', '', 1, 0, 'C', '0', '0', 'hq:venue:list', 'venue', 'admin', sysdate(), '', NULL, '场地管理菜单');
-- 场地管理按钮权限
INSERT INTO sys_menu VALUES(2111, '场地查询', 2110, 1, '', '', '', 1, 0, 'F', '0', '0', 'hq:venue:query', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES(2112, '场地新增', 2110, 2, '', '', '', 1, 0, 'F', '0', '0', 'hq:venue:add', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES(2113, '场地修改', 2110, 3, '', '', '', 1, 0, 'F', '0', '0', 'hq:venue:edit', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES(2114, '场地删除', 2110, 4, '', '', '', 1, 0, 'F', '0', '0', 'hq:venue:remove', '#', 'admin', sysdate(), '', NULL, '');
-- 场地预约菜单
INSERT INTO sys_menu VALUES(2120, '场地预约', 2100, 2, 'reservation', 'hq/venue/reservation', '', 1, 0, 'C', '0', '0', 'hq:venue:reservation:list', 'calendar', 'admin', sysdate(), '', NULL, '场地预约菜单');
-- 预约按钮权限
INSERT INTO sys_menu VALUES(2121, '预约查询', 2120, 1, '', '', '', 1, 0, 'F', '0', '0', 'hq:venue:reservation:query', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES(2122, '预约新增', 2120, 2, '', '', '', 1, 0, 'F', '0', '0', 'hq:venue:reservation:add', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES(2123, '预约修改', 2120, 3, '', '', '', 1, 0, 'F', '0', '0', 'hq:venue:reservation:edit', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES(2124, '预约审批', 2120, 4, '', '', '', 1, 0, 'F', '0', '0', 'hq:venue:reservation:approve', '#', 'admin', sysdate(), '', NULL, '');
-- 场地统计菜单
INSERT INTO sys_menu VALUES(2130, '使用统计', 2100, 3, 'statistics', 'hq/venue/statistics', '', 1, 0, 'C', '0', '0', 'hq:venue:statistics:view', 'chart', 'admin', sysdate(), '', NULL, '场地使用统计');
```
---
## 📊 统计报表需求
### 6.1 场地使用率统计
**统计维度**:
- 按时间统计(日、周、月、年)
- 按场地类型统计
- 按场地统计
**统计指标**:
- 预约次数
- 预约时长
- 使用率 = 实际使用时长 / 可用时长 × 100%
- 平均预约时长
### 6.2 预约申请量统计
**统计维度**:
- 按时间统计
- 按申请人统计
- 按审批状态统计
**统计指标**:
- 预约申请总数
- 审批通过率
- 平均审批时长
- 热门时间段分析
---
## ✅ 验收标准
### 7.1 功能验收标准
#### 7.1.1 场地管理
- ✅ 能够新增、编辑、删除场地信息
- ✅ 能够设置场地管理员
- ✅ 能够上传场地图片
- ✅ 支持场地搜索和筛选
- ✅ 场地状态管理正常
#### 7.1.2 预约功能
- ✅ 用户能够正常提交预约申请
- ✅ 时间冲突能够正确检测并提醒
- ✅ 预约信息能够正确保存
- ✅ 预约状态流转正常
#### 7.1.3 审批功能
- ✅ 场地管理员能够查看负责场地的预约
- ✅ 审批操作能够正确执行
- ✅ 审批记录能够正确保存
- ✅ 权限控制正确有效
### 7.2 性能验收标准
- ✅ 页面加载时间 < 3 秒
- ✅ 查询响应时间 < 2 秒
- ✅ 并发用户支持 > 100 人
- ✅ 数据库响应时间 < 1 秒
### 7.3 安全验收标准
- ✅ 数据权限隔离正确
- ✅ 操作权限控制有效
- ✅ 输入数据验证完整
- ✅ 敏感信息保护到位
---
## 📅 开发计划
### 8.1 开发阶段
#### 第一阶段:基础框架(预计 3 天)
- 数据库表结构设计
- 基础实体类和 Mapper 创建
- 权限菜单配置
#### 第二阶段:后端开发(预计 5 天)
- 场地管理 CRUD 接口
- 预约管理 CRUD 接口
- 审批流程接口
- 统计报表接口
#### 第三阶段:前端开发(预计 7 天)
- 场地列表和详情页面
- 预约申请和管理页面
- 审批管理页面
- 统计报表页面
#### 第四阶段:测试和优化(预计 3 天)
- 功能测试
- 性能测试
- 安全测试
- 问题修复和优化
### 8.2 里程碑节点
- **第 1 周末**:数据库设计和后端基础框架完成
- **第 2 周末**:后端接口开发完成
- **第 3 周末**:前端页面开发完成
- **第 4 周初**:系统测试和验收完成
---
## 📝 附录
### 9.1 相关文档
- 《校园管理系统开发规范》
- 《数据库设计规范》
- 《API 接口规范》
- 《前端开发规范》
### 9.2 技术参考
- Spring Boot 官方文档
- Vue 3 官方文档
- Element Plus 组件库
- MyBatis-Plus 文档
### 9.3 变更记录
| 版本 | 变更时间 | 变更人 | 变更内容 |
| ---- | ---------- | ------ | ------------ |
| v1.0 | 2025-07-01 | system | 初始版本创建 |
---
## 🤝 确认签字
### 需求方确认
- **确认人**: ******\_\_\_\_******
- **确认时间**: ******\_\_\_\_******
- **签字**: ******\_\_\_\_******
### 开发方确认
- **确认人**: ******\_\_\_\_******
- **确认时间**: ******\_\_\_\_******
- **签字**: ******\_\_\_\_******
---
**文档结束**