{"id":14989372,"url":"https://github.com/esunr/dormitorymanagement","last_synced_at":"2025-04-06T08:13:14.585Z","repository":{"id":43212681,"uuid":"239693854","full_name":"EsunR/DormitoryManagement","owner":"EsunR","description":"基于Vue的宿舍管理系统","archived":false,"fork":false,"pushed_at":"2024-08-09T09:44:39.000Z","size":5851,"stargazers_count":279,"open_issues_count":5,"forks_count":61,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-06T08:13:08.949Z","etag":null,"topics":["element-ui","koa","vue","vue-admin","vue-router","vuex"],"latest_commit_sha":null,"homepage":"https://www.esunr.xyz/dormitory","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EsunR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-11T06:37:58.000Z","updated_at":"2025-04-02T01:51:46.000Z","dependencies_parsed_at":"2024-08-09T11:04:24.075Z","dependency_job_id":"c60383a4-fcd4-48d9-8916-772bfe4cd937","html_url":"https://github.com/EsunR/DormitoryManagement","commit_stats":{"total_commits":37,"total_committers":2,"mean_commits":18.5,"dds":"0.027027027027026973","last_synced_commit":"a15b3b8d56fd4f5b391acd870f3aa8f479c3f243"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EsunR%2FDormitoryManagement","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EsunR%2FDormitoryManagement/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EsunR%2FDormitoryManagement/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EsunR%2FDormitoryManagement/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EsunR","download_url":"https://codeload.github.com/EsunR/DormitoryManagement/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247451665,"owners_count":20940944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["element-ui","koa","vue","vue-admin","vue-router","vuex"],"created_at":"2024-09-24T14:18:15.466Z","updated_at":"2025-04-06T08:13:14.564Z","avatar_url":"https://github.com/EsunR.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e 当前项目处于佛系维护状态，有 bug 可以反馈在 issues 中。如果这个项目拯救了你的毕设或者大作业的话，赏个星星吧。\n\n# 0. 概览\n\n基于 Koa 以及 VueJS 的宿舍管理系统。\n\n![](./demo/screen-shot_01.png)\n\n![](./demo/screen-shot_02.png)\n\n![](./demo/screen-shot_03.png)\n\n![](./demo/screen-shot_04.png)\n\n## 更新记录：\n\n### 2023.05.09\n\n新增功能：\n\n- 【楼层管理】添加『入住人员信息』模块，显示入住学生、性别、院系、专业的人数，可用饼图表示\n- 【用户信息】学生用户添加性别、院系、专业字段\n- 【楼层管理】每层楼显示空余床位和已入住人数\n- 【宿舍信息】宿舍信息显示空余床位，新增修改床位数的功能\n- 【学生信息】如果是超级管理员，会有『更换寝室』按钮，可以修改学生宿舍\n- 【管理员系统】新增『来访人员登记』模块，可以添加来访人员记录，仅提供新增功能，记录信息包含姓名、电话号、身份证、性别等，登记日期自动生成\n\n代码：\n\n- 支持使用环境变量修改服务端配置，将 `server/.env.template` 重命名为 `.env` 文件即可应用配置\n- 升级 Vue 版本为 2.7\n- 升级 echarts，移除 v-charts，使用 vue-echarts 作为 Vue 图表组件\n- 新增 `npm run db:init` 指令，快捷初始化数据库\n\n# 1. 需求分析\n\n主要需求：\n\n- 学生信息录入、修改、删除、查询\n- 宿舍管理评分\n- 学生早起率、懒床率\n- 学生宿舍打扫频率\n- 学生晚归情况\n- 楼层管理\n\n考虑到实用性，该系统需要拆分为两大子系统，一个是学生端系统，一个是后台管理端系统。学生端系统主要提供给学生使用，负责一些宿舍记录及个人信息记录的基本操作；后台管理模块则是主要负责对所有学生信息的整理，提供宿舍管理、楼层管理、数据查看等权限，提供给宿舍管理员使用的。\n\n## 1.1 学生系统\n\n学生系统拥有以下功能：\n\n- 创建账户\n- 分配宿舍\n- 填写个人信息\n- 修改个人信息\n- 起床打卡（用于统计懒床率）\n- 归宿登记（用于统计晚归情况）\n- 打扫记录（用于统计宿舍打扫频率）\n- 查看宿日常数据\n\n## 1.2 管理系统\n\n管理系统拥有以下功能：\n\n- 楼层管理\n- 宿舍评价\n- 宿舍信息管理\n- 学生信息查看\n- 保洁人员管理\n- 统计学生早起率\n- 统计学生宿舍打扫频率\n- 统计学生晚归\n\n超级管理员在享有上述管理员同等权限的同时额外拥有如下功能：\n\n- 创建管理员\n- 创建宿舍楼\n- 为宿舍楼分配管理员\n- 为宿舍楼分配保洁人员\n\n# 3. 技术分析\n\n前端：\n\n- Vue 作为基础框架\n- vue-router 控制路由（hash 模式）\n- vuex 状态管理\n- axios 接入数据\n- [Vue-element-admin](https://github.com/PanJiaChen/vue-element-admin) 作为基础框架\n\n后台（Nodejs）：\n\n- Koa 作为基础框架\n- koa-router —— 服务端路由控制\n- koa-static —— 读取静态文件\n- koa-jwt —— JWT 登录校验\n- koa-body —— http body 数据处理\n- koa-compress —— Gzip 压缩\n- koa-cors —— CORS 解决跨域问题\n- sequelize —— ORM\n\n数据库：\n\n- MySQL\n\n数据库设计一览：\n\n![](./demo/db-design.png)\n\n# 4. 目录介绍\n\nclinet 目录下为前端的项目文件， server 为后台目录下的文件\n\n## 4.1 Clinet 目录\n\n### 4.1.1 根目录\n\n**public :**\n\nHTML 模板和静态资源，参考 [vue-cli 官方文档](https://cli.vuejs.org/zh/guide/html-and-static-assets.html)\n\n**src :**\n\n源码目录\n\n**.eslint\\* :**\n\nEslint 代码规范规则相关\n\n**.prettierrc.js :**\n\nPrettier 代码格式化相关\n\n**vue.config.js :**\n\nwebpack 规则，无需修改\n\n### 4.1.2 src 源码目录（重点）\n\n**api：**\n\n抽离出的单独的请求文件，请求后台的 url\n\n**assets：**\n\n前端的静态文件资源\n\n**components：**\n\n前端的页面的组件，重点组件有：\n\n- GroupSelector：级联选择器组件\n- RecordTable：记录表格组件\n- RoomSelector：房间级联选择器组件\n\n**filter：**\n\nVue 过滤器，详见 [Vue 官方文档](https://cn.vuejs.org/v2/guide/filters.html)\n\n**icons：**\n\nicon 图标文件\n\n**layout：**\n\n最外层的整体布局组件\n\n**router：**\n\n前端路由系统，详见 Vue-Router 文档\n\n**store：**\n\n前端状态管理系统，详见 Vuex 文档\n\n**utils：**\n\n页面中的某会被复用的方法，如计算日期、格式化日期的方法，会被抽离到 utils 中，再在各个页面中被引入\n\n**views（重点）：**\n\n每个页面的代码都在这里\n\n**App.vue：**\n\n最外层容器页面\n\n**main.js：**\n\n入口文件\n\n**settings.js：**\n\n配置文件（无需更改）\n\n## 4.2 server 目录\n\nserver 目录下的 static 文件为静态文件目录，前端 Vue 源码编译好之后会自动存放到 static 目录下。src 为源码目录，以下介绍为 src 目录下的文件：\n\n**app.js：**\n\n入口文件，所有的框架在此引入\n\n**config.js：**\n\n配置文件，除了数据库相关的文件，其余配置项不要更改\n\n**utils：**\n\n后台某些会被复用的方法，会被抽离到 utils 中，再在各个页面中被引入\n\n**struct：**\n\n全局中新建的结构体（非重要，涉及 Javascript 面向对象设计）\n\n**routes：**\n\n后台路由\n\n**model：**\n\n后台 Model 层（定义数据库表结构）\n\n**db：**\n\n数据库连接与生成的方法\n\n**controller：**\n\n后台的 Controller 层\n\n**middle：**\n\nKoa 中间件，详见 Koa 中间件机制。\n\n# 5. 项目启用方式\n\n预先准备 Node 环境，**避免各种奇怪的问题，建议使用 16.x 版本**，建议[使用 volta 管理 node 版本](https://blog.esunr.xyz/2023/07/d99593770741.html#1-Volta)。\n\n## 5.1 运行后台\n\n数据库中创建表 \"dormitory\"（如下为 Navicat 数据库管理工具）：\n\n![](./demo/db.png)\n\n\u003e 如果 mysql 低版本选择 utf8，高版本选择 utf8mb4\n\n复制 `server/.env.template` 重命名为 `.env`，修改相关配置。\n\n使用命令行工具移动至 server 目录下，运行：\n\n```js\n## 安装依赖\n$ npm install\n\n## 初始化数据库（该指令执行后会强行覆盖数据库中已有的数据，仅运行一次即可！）\n$ npm run db:init\n\n## 运行项目\n$ npm run start\n```\n\n看到以下输出，即为成功：\n\n![](./demo/server-start.png)\n\n浏览器访问 `http://localhost:8080`\n\n预置账号：\n\n- 管理员（admin 123456）\n- 超级管理员（superAdmin 123456）\n- 学生用户1（student1 123456）\n- 学生用户2（student2 123456）\n\n\u003e 初始化的数据可以在 `db_generator.js` 中的 `createDefaultData` 方法中修改\n\n## 5.2 前端文件\n\n按照上述步骤已经可以正常运行项目，如果需要修改与调试前端页面请按照以下步骤：\n\n\u003e 首先要确保已经在 `/clinet` 目录下运行过 `npm install` 安装好了前端依赖\n\n1. 在 `/server` 目录下运行 `npm run dev` 开启后台开发模式\n2. 在 `/client` 目录下运行 `npm run dev` 开启前端开发模式\n3. 修改 `/clinet` 目录下的任意文件\n4. 修改完成后，在 `/client` 目录下运行 `npm run build:prod`\n\n\u003e 构建时会出现警告，如 `$weight: Passing a number without unit % (0) is deprecated.` 无视即可，不影响功能\n\n# 6. API 文档\n\n共计 32 个接口，接口文档：https://documenter.getpostman.com/view/6817046/SzKWuHJh\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesunr%2Fdormitorymanagement","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesunr%2Fdormitorymanagement","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesunr%2Fdormitorymanagement/lists"}