# 校园物品报修管理与处理统计系统 **Repository Path**: 1091198228/School-Asset-Maintenance-System ## Basic Information - **Project Name**: 校园物品报修管理与处理统计系统 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-31 - **Last Updated**: 2026-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 校园物品报修管理与处理情况统计系统 基于Django框架开发的完整校园物品报修管理系统,支持学生报修、维修处理、统计分析等功能。 ## 目录 - [系统功能](#系统功能) - [技术栈](#技术栈) - [快速开始](#快速开始) - [安装部署](#安装部署) - [项目结构](#项目结构) - [使用说明](#使用说明) - [API接口](#api接口) - [生产环境配置](#生产环境配置) - [常见问题](#常见问题) ## 系统功能 ### 核心功能模块 1. **用户管理** - 学生注册/登录 - 管理员审核账号 - 角色权限区分(学生、维修人员、管理员) - 登录安全防护(失败次数限制) 2. **报修管理** - 学生提交报修申请(物品类型、位置、故障描述、图片上传、紧急程度) - 报修单状态管理(待受理/维修中/已完成/已驳回) - 报修单列表查看与筛选 3. **维修处理** - 维修人员接单 - 填写维修记录 - 上传维修完成凭证 - 更改报修单状态 - 驳回不合理申请 4. **统计分析** - 管理员全局统计(按时间、楼栋、物品类型、维修人员统计) - 维修人员个人工作统计 - 完成率统计 - ECharts可视化图表(折线图、柱状图、饼图) 5. **消息通知** - 报修单状态变更自动通知提交人 - 导航栏红点徽标提示未读消息数量 - 消息列表管理 6. **基础管理** - 首页公告配置 - 故障类型管理 - 楼栋管理 - 物品分类管理 - 人员管理 ## 技术栈 - **后端框架**:Django 4.2 LTS - **数据库**:SQLite(开发)/ MySQL(生产可切换) - **前端框架**:Bootstrap 5 + jQuery - **图表库**:ECharts 5 - **表单渲染**:django-crispy-forms + crispy-bootstrap5 - **文件存储**:本地文件系统 ## 快速开始 ### 一键初始化(推荐) ```bash # 1. 安装依赖 pip install -r requirements.txt # 2. 一键初始化数据库(包含迁移、创建管理员、初始化数据) python init_db.py # 3. 启动服务 python manage.py runserver ``` 初始化完成后,使用以下账号登录: | 角色 | 用户名 | 密码 | |------|--------|------| | 管理员 | admin | admin123 | | 维修员 | repair001 | repair123 | | 学生 | student001 | d!F;C+2w} | 访问地址:http://127.0.0.1:8000 ## 安装部署 ### 1. 环境要求 - Python 3.8+ - pip ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` ### 3. 数据库迁移 ```bash python manage.py makemigrations python manage.py migrate ``` ### 4. 创建超级管理员 ```bash # 方式一:使用脚本创建(推荐) python create_admin.py # 方式二:使用Django命令 python manage.py createsuperuser ``` ### 5. 初始化基础数据 ```bash python init_data.py ``` 这将创建: - 8个楼栋数据 - 8个物品分类 - 7个故障类型 - 测试维修人员和学生账号 ### 6. 运行开发服务器 ```bash python manage.py runserver ``` 访问:http://127.0.0.1:8000 ### 7. 填充测试数据 ```bash python manage.py fill_test_data ``` ### 7. 访问Admin后台 访问:http://127.0.0.1:8000/admin ## 项目结构 ``` repair_system/ ├── manage.py # Django项目管理脚本 ├── requirements.txt # Python依赖包列表 ├── README.md # 项目说明文档 ├── init_db.py # 一键初始化数据库脚本 ├── init_data.py # 初始化基础数据脚本 ├── create_admin.py # 创建管理员脚本 ├── config/ # 项目配置目录 │ ├── settings.py # Django配置文件 │ ├── urls.py # 根URL配置 │ └── wsgi.py # WSGI部署配置 ├── apps/ # 应用模块目录 │ ├── users/ # 用户管理应用 │ │ ├── models.py # 用户模型(含角色、状态) │ │ ├── views.py # 用户视图 │ │ ├── forms.py # 用户表单 │ │ └── urls.py # 用户URL配置 │ ├── repairs/ # 报修管理应用 │ │ ├── models.py # 报修单模型 │ │ ├── views.py # 报修视图 │ │ ├── forms.py # 报修表单 │ │ └── urls.py # 报修URL配置 │ ├── maintenance/ # 维修处理应用 │ │ ├── models.py # 维修记录模型 │ │ ├── views.py # 维修视图(含统计) │ │ ├── forms.py # 维修表单 │ │ └── urls.py # 维修URL配置 │ ├── statistics/ # 统计分析应用 │ │ ├── views.py # 统计视图 │ │ ├── utils.py # 统计工具函数 │ │ └── urls.py # 统计URL配置 │ ├── notifications/ # 消息通知应用 │ │ ├── models.py # 通知模型 │ │ ├── views.py # 通知视图 │ │ ├── services.py # 通知服务 │ │ ├── context_processors.py # 模板上下文处理器 │ │ └── urls.py # 通知URL配置 │ └── base_data/ # 基础数据管理应用 │ ├── models.py # 基础数据模型 │ ├── views.py # 基础数据视图 │ └── urls.py # 基础数据URL配置 ├── templates/ # 模板文件目录 │ ├── base.html # 基础模板 │ ├── users/ # 用户模板 │ ├── repairs/ # 报修模板 │ ├── maintenance/ # 维修模板 │ ├── statistics/ # 统计模板 │ ├── notifications/ # 通知模板 │ └── base_data/ # 基础数据模板 ├── static/ # 静态文件目录 │ ├── css/ # 样式文件 │ │ └── style.css # 自定义样式 │ └── js/ # JavaScript文件 │ ├── main.js # 主JS文件 │ └── echarts.min.js # ECharts图表库 └── utils/ # 工具函数目录 ├── decorators.py # 自定义装饰器 ├── helpers.py # 辅助函数 └── login_security.py # 登录安全防护 ``` ## 使用说明 ### 角色权限 1. **学生** - 提交报修申请 - 查看我的报修单 - 查看报修详情 - 接收状态变更通知 - 查看首页公告 2. **维修人员** - 查看待受理报修单 - 接单处理 - 填写维修记录 - 上传完成凭证 - 驳回不合理申请 - 查看个人工作统计 3. **管理员** - 用户审核 - 用户管理 - 基础数据管理(楼栋、物品分类、故障类型) - 首页公告配置 - 查看所有报修单 - 统计分析报表 ### 报修流程 ``` 学生提交报修 → 管理员审核账号(首次) → 维修人员接单 → 维修完成 → 系统通知学生 ↓ 维修人员驳回 → 系统通知学生 ``` 1. 学生提交报修申请 2. 管理员审核学生账号(首次注册) 3. 维修人员查看待受理列表 4. 维修人员接单(状态变为"维修中") 5. 维修人员完成维修并上传凭证 6. 系统自动通知学生 ## API接口 ### 消息通知 | 接口 | 方法 | 说明 | |------|------|------| | `/notifications/list/` | GET | 消息列表 | | `/notifications/read//` | POST | 标记已读 | | `/notifications/unread-count/` | GET | 未读数量(AJAX) | ### 统计分析(管理员) | 接口 | 方法 | 说明 | |------|------|------| | `/statistics/dashboard/` | GET | 统计仪表盘 | | `/statistics/chart/status/` | GET | 状态分布 | | `/statistics/chart/urgency/` | GET | 紧急程度分布 | | `/statistics/chart/building/` | GET | 楼栋统计 | | `/statistics/chart/type/` | GET | 物品类型统计 | ### 统计分析(维修人员) | 接口 | 方法 | 说明 | |------|------|------| | `/maintenance/statistics/` | GET | 个人统计仪表盘 | | `/maintenance/chart/status/` | GET | 个人状态分布 | | `/maintenance/chart/urgency/` | GET | 个人紧急程度分布 | | `/maintenance/chart/building/` | GET | 个人楼栋统计 | | `/maintenance/chart/type/` | GET | 个人物品类型统计 | ## 生产环境配置 ### 切换MySQL数据库 修改 `config/settings.py`: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'repair_system', 'USER': 'your_user', 'PASSWORD': 'your_password', 'HOST': 'localhost', 'PORT': '3306', } } ``` 安装MySQL驱动: ```bash pip install mysqlclient ``` ### 安全设置 ```python DEBUG = False ALLOWED_HOSTS = ['yourdomain.com'] SECURE_SSL_REDIRECT = True SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True # 修改密钥(使用环境变量) import os SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY') ``` ### 静态文件收集 ```bash python manage.py collectstatic ``` ## 常见问题 ### Q: 忘记管理员密码怎么办? A: 运行 `python create_admin.py` 重新创建管理员账号。 ### Q: 如何添加新的楼栋/物品分类? A: 管理员登录后,在"系统管理"菜单中进行管理,或访问Admin后台。 ### Q: 报修单可以上传多少张图片? A: 每个报修单最多上传3张图片,每张图片最大5MB。 ### Q: 消息通知红点多久更新一次? A: 每30秒自动更新一次,页面切换到后台时会暂停更新以节省资源。 ### Q: 如何修改登录失败次数限制? A: 在 `config/settings.py` 中修改缓存配置的 `TIMEOUT` 值。 ## 开发者信息 - 开发框架:Django 4.2 LTS - 前端框架:Bootstrap 5 - 数据库:SQLite / MySQL - 图表库:ECharts 5 ## 许可证 MIT License