# AssetManagementSystem **Repository Path**: LAsanchen/asset-management-system ## Basic Information - **Project Name**: AssetManagementSystem - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-23 - **Last Updated**: 2026-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 资产管理系统 (Asset Management System) 企业级资产管理系统的完整前后端实现。后端基于 C++17 + Crow 框架提供高性能 REST API,前端基于 Vue 3 + TypeScript + Element Plus 提供现代化管理界面。 --- ## 目录 - [项目概述](#项目概述) - [技术栈](#技术栈) - [功能特性](#功能特性) - [快速开始](#快速开始) - [环境要求](#环境要求) - [后端启动](#后端启动) - [前端启动](#前端启动) - [API 文档](#api-文档) - [认证](#认证) - [资产管理](#资产管理) - [其他管理模块](#其他管理模块) - [前端界面](#前端界面) - [项目结构](#项目结构) - [构建部署](#构建部署) --- ## 项目概述 本系统旨在帮助企业高效管理 IT 资产的全生命周期,涵盖资产登记、分类管理、部门管理、员工管理、位置跟踪、供应商管理、软件许可证管理、维护记录和资产分配等功能。 **核心目标:** - 资产全生命周期跟踪(采购、入库、使用、维护、报废) - 资产与员工、部门、位置的关联管理 - 软件许可证用量跟踪 - 维护记录管理 - 完整的操作审计日志 --- ## 技术栈 ### 后端 | 技术 | 描述 | |------|------| | **C++17** | 核心开发语言 | | **CrowCpp** | HTTP 框架 (v1.x) | | **SOCI** | 数据库访问层 (v4.x) | | **SQLite3** | 数据库引擎 | | **nlohmann/json** | JSON 序列化/反序列化 | | **JWT** | 基于 JSON Web Token 的身份认证 | | **BCrypt** | 密码加密存储 | | **CMake** | 构建系统 | | **CTest** | 单元测试框架 | ### 前端 | 技术 | 描述 | |------|------| | **Vue 3** | 渐进式 JavaScript 框架 (Composition API) | | **TypeScript** | 类型安全的 JavaScript 超集 | | **Vite** | 下一代前端构建工具 | | **Element Plus** | 企业级 UI 组件库 | | **Pinia** | Vue 状态管理 | | **Vue Router** | 前端路由 | | **Axios** | HTTP 客户端 | | **VueUse** | Vue 组合式 API 工具集 | --- ## 功能特性 ### 已完成功能 - [x] **用户认证** — JWT 登录/刷新/登出,密码 BCrypt 加密 - [x] **资产管理** — 资产的增删改查,支持分类、状态、型号、序列号 - [x] **分类管理** — 资产分类的增删改查 - [x] **部门管理** — 部门信息的增删改查 - [x] **员工管理** — 员工信息的增删改查 - [x] **位置管理** — 位置(楼栋/楼层/房间)的增删改查 - [x] **供应商管理** — 供应商信息的增删改查 - [x] **许可证管理** — 软件许可证的增删改查,支持类型(永久/订阅/试用) - [x] **维护记录** — 资产维护记录的增删改查(维修/检查/升级/清洁) - [x] **资产分配** — 资产分配与归还管理 - [x] **审计日志** — 所有操作的审计追踪(只读) - [x] **分页查询** — 所有列表接口支持分页 - [x] **数据初始化** — 自动建表和种子数据 - [x] **前后端分离** — 前端 SPA + 后端 REST API ### 待开发功能 - [ ] 资产二维码/条形码生成 - [ ] 批量导入/导出(CSV/Excel) - [ ] 角色权限管理 - [ ] 资产折旧计算 - [ ] 报表与数据可视化 - [ ] 邮件/消息通知 --- ## 快速开始 ### 环境要求 - **编译器**: GCC >= 11 或 Clang >= 14(支持 C++17) - **CMake**: >= 3.16 - **Node.js**: >= 18 - **npm**: >= 8 ### 后端启动 ```bash # 1. 进入项目目录 cd asset_management_system # 2. 创建构建目录并配置 cmake -B build -DCMAKE_BUILD_TYPE=Release # 3. 编译 cmake --build build -j$(nproc) # 4. 配置文件(config.json 自动复制到 build/src/) # 默认监听 0.0.0.0:8080,SQLite 数据库文件为 asset_mgmt.db # 5. 运行服务端 ./build/src/asset_mgmt_server ``` 服务端启动后默认监听 `http://0.0.0.0:8080`。 **默认管理员账号:** - 用户名:`admin` - 密码:`admin123` ### 前端启动 ```bash # 1. 进入前端目录 cd frontend # 2. 安装依赖 npm install # 3. 开发模式启动(热更新) npm run dev # 4. 生产构建 npm run build ``` 前端开发服务器默认运行在 `http://0.0.0.0:3000`,自动代理 `/api` 请求到后端 `http://127.0.0.1:8080`。 --- ## API 文档 所有 API 端点统一前缀:`/api/v1` ### 认证 **登录** ``` POST /api/v1/auth/login Content-Type: application/json { "username": "admin", "password": "admin123" } ``` 成功响应: ```json { "access_token": "eyJhbGciOiJ...", "refresh_token": "eyJhbGciOiJ...", "expires_in": 3600, "user": { "id": "1", "username": "admin", "role": "1" } } ``` **刷新令牌** ``` POST /api/v1/auth/refresh Content-Type: application/json { "refresh_token": "eyJhbGciOiJ..." } ``` ### 资产管理 **资产列表**(分页) ``` GET /api/v1/assets?page=1&per_page=20 Authorization: Bearer ``` **单一资产** ``` GET /api/v1/assets/{id} Authorization: Bearer ``` **创建资产** ``` POST /api/v1/assets Authorization: Bearer Content-Type: application/json { "asset_tag": "AST-001", "name": "MacBook Pro 16", "category_id": 1, "status": "in_stock", "model": "MacBook Pro 2024", "serial_number": "SN-2024-001" } ``` **更新资产** ``` PUT /api/v1/assets/{id} Authorization: Bearer Content-Type: application/json { "name": "MacBook Pro 16 (Updated)", "status": "in_use" } ``` **删除资产** ``` DELETE /api/v1/assets/{id} Authorization: Bearer ``` ### 其他管理模块 | 模块 | 端点 | 说明 | |------|------|------| | 分类 | `/api/v1/categories` | CRUD | | 部门 | `/api/v1/departments` | CRUD | | 员工 | `/api/v1/employees` | CRUD | | 位置 | `/api/v1/locations` | CRUD | | 供应商 | `/api/v1/vendors` | CRUD | | 许可证 | `/api/v1/licenses` | CRUD | | 维护记录 | `/api/v1/maintenance` | CRUD | | 分配记录 | `/api/v1/assignments` | CRUD | | 审计日志 | `/api/v1/audit-logs` | 只读 | 所有 CRUD 模块遵循相同的 RESTful 模式: - `GET /api/v1/{entity}` — 列表(支持 `?page=&per_page=` 分页) - `GET /api/v1/{entity}/{id}` — 详情 - `POST /api/v1/{entity}` — 创建 - `PUT /api/v1/{entity}/{id}` — 更新 - `DELETE /api/v1/{entity}/{id}` — 删除 **分页响应格式:** ```json { "data": [ ... ], "pagination": { "page": 1, "per_page": 20, "total": 50 } } ``` --- ## 前端界面 前端提供完整的现代化管理界面: | 页面 | 说明 | |------|------| | **登录页** | 账号密码登录,JWT 自动存储 | | **控制台** | 8 个统计卡片展示各模块数据总量 | | **资产管理** | 资产信息列表、创建、编辑、删除 | | **分类管理** | 资产分类维护 | | **部门管理** | 部门信息维护 | | **员工管理** | 员工信息维护,含状态标签 | | **位置管理** | 位置(楼栋/楼层/房间)维护 | | **供应商管理** | 供应商信息维护 | | **许可证管理** | 软件许可证维护,含类型选择 | | **维护记录** | 资产维护历史记录 | | **分配管理** | 资产分配与归还记录 | | **审计日志** | 操作审计(只读) | **通用实体页面** — 所有 CRUD 模块共享同一个 `EntityPage.vue` 组件,通过配置驱动渲染,大幅减少代码重复。 --- ## 项目结构 ``` asset_management_system/ ├── CMakeLists.txt # 根构建配置 ├── config.json # 后端配置文件 ├── src/ │ ├── main.cpp # 程序入口 │ ├── domain/ │ │ ├── entities/ # 领域实体(Asset, Category, Department 等) │ │ ├── repositories/ # 仓储接口 │ │ └── value_objects/ # 值对象 │ ├── application/ │ │ └── usecases/ # 用例层(业务逻辑) │ ├── infrastructure/ │ │ ├── database/ # 数据库实现(SOCI) │ │ ├── auth/ # 认证实现(JWT, BCrypt) │ │ └── persistence/ # 仓储实现 │ └── interfaces/ │ └── controllers/ # HTTP 控制器 ├── tests/ │ └── tests.cpp # 单元测试(CTest) ├── frontend/ │ ├── src/ │ │ ├── api/ # API 封装层 │ │ │ ├── request.ts # Axios 实例(JWT 拦截器) │ │ │ └── entities.ts # 通用 CRUD API │ │ ├── stores/ │ │ │ └── auth.ts # Pinia 认证状态管理 │ │ ├── router/ │ │ │ └── index.ts # 路由配置 │ │ ├── layouts/ │ │ │ ├── MainLayout.vue # 主布局(侧边栏 + 顶栏 + 内容区) │ │ │ └── components/ │ │ │ ├── SidebarMenu.vue │ │ │ └── HeaderBar.vue │ │ ├── views/ │ │ │ ├── login/LoginPage.vue │ │ │ ├── dashboard/DashboardPage.vue │ │ │ └── entity/EntityPage.vue # 通用 CRUD 页面 │ │ └── types/ │ │ ├── entity.ts # 类型定义 │ │ ├── entityConfig.ts # 10 个实体的配置数据 │ │ └── ... │ ├── vite.config.ts │ ├── tsconfig.json │ └── package.json └── README.md ``` --- ## 构建部署 ### Docker 部署(推荐) ```bash # 构建后端镜像 docker build -t asset-mgmt-backend -f Dockerfile.backend . # 构建前端镜像 docker build -t asset-mgmt-frontend -f Dockerfile.frontend . # 启动(使用 docker-compose) docker-compose up -d ``` ### 手动部署 ```bash # 后端 cmake -B build -DCMAKE_BUILD_TYPE=Release cmake --build build -j$(nproc) cp config.json build/src/ ./build/src/asset_mgmt_server # 监听 0.0.0.0:8080 # 前端 cd frontend npm install npm run build # 输出到 dist/ ``` 运行单元测试: ```bash cmake --build build -j$(nproc) --target asset_mgmt_tests ./build/tests/asset_mgmt_tests ``` --- ## 许可证 本项目仅供学习和参考。