202 lines
5.4 KiB
Markdown
202 lines
5.4 KiB
Markdown
# KVM主控操作平台 - 前端
|
|
|
|
基于 Vue 3 + Ant Design Vue + Pinia 的虚拟化管理后台前端项目。
|
|
|
|
## 技术栈
|
|
|
|
- **Vue 3** - 渐进式 JavaScript 框架
|
|
- **Vite** - 下一代前端构建工具
|
|
- **Ant Design Vue** - 企业级 UI 组件库
|
|
- **Pinia** - Vue 状态管理
|
|
- **Vue Router** - Vue 官方路由管理器
|
|
- **Axios** - HTTP 客户端
|
|
- **ECharts** - 数据可视化图表库
|
|
|
|
## 项目结构
|
|
|
|
```
|
|
frontend/
|
|
├── src/
|
|
│ ├── api/ # API 接口封装
|
|
│ │ ├── request.js # Axios 封装
|
|
│ │ ├── userApi.js # 用户相关 API
|
|
│ │ ├── vmApi.js # 虚拟机相关 API
|
|
│ │ └── ...
|
|
│ ├── stores/ # Pinia 状态管理
|
|
│ │ ├── userStore.js # 用户状态
|
|
│ │ └── vmStore.js # 虚拟机状态
|
|
│ ├── router/ # 路由配置
|
|
│ │ └── index.js # 路由定义和权限守卫
|
|
│ ├── views/ # 页面组件
|
|
│ │ ├── auth/ # 认证页面(登录、注册)
|
|
│ │ ├── Dashboard.vue # 仪表盘
|
|
│ │ ├── vm/ # 虚拟机管理
|
|
│ │ ├── image/ # 镜像管理
|
|
│ │ ├── network/ # 网络管理
|
|
│ │ ├── volume/ # 数据卷管理
|
|
│ │ ├── portGroup/ # 安全组管理
|
|
│ │ └── user/ # 用户管理
|
|
│ ├── layouts/ # 布局组件
|
|
│ │ └── DefaultLayout.vue # 默认布局
|
|
│ ├── components/ # 公共组件
|
|
│ │ └── common/ # 通用组件
|
|
│ ├── composables/ # 组合式函数
|
|
│ │ ├── useTable.js # 表格相关
|
|
│ │ ├── useForm.js # 表单相关
|
|
│ │ └── useAuth.js # 认证相关
|
|
│ ├── styles/ # 全局样式
|
|
│ │ ├── main.css # 主样式
|
|
│ │ ├── variables.css # CSS 变量
|
|
│ │ └── dark.css # 深色模式
|
|
│ ├── App.vue # 根组件
|
|
│ └── main.js # 入口文件
|
|
├── public/ # 静态资源
|
|
├── .env.example # 环境变量示例
|
|
├── vite.config.js # Vite 配置
|
|
└── package.json # 项目依赖
|
|
```
|
|
|
|
## 开发指南
|
|
|
|
### 环境要求
|
|
|
|
- Node.js >= 16.0.0
|
|
- npm >= 7.0.0
|
|
|
|
### 安装依赖
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### 开发环境运行
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
访问 http://localhost:5173
|
|
|
|
### 构建生产版本
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
### 预览生产构建
|
|
|
|
```bash
|
|
npm run preview
|
|
```
|
|
|
|
## 环境变量配置
|
|
|
|
复制 `.env.example` 为 `.env` 并配置:
|
|
|
|
```env
|
|
# API地址
|
|
VITE_API_BASE_URL=http://localhost:3000/api
|
|
|
|
# 应用配置
|
|
VITE_APP_TITLE=KVM主控操作平台
|
|
VITE_APP_VERSION=1.0.0
|
|
```
|
|
|
|
## 功能特性
|
|
|
|
### 已实现功能
|
|
|
|
1. **用户认证**
|
|
- 用户登录/注册
|
|
- JWT Token 管理
|
|
- 权限控制(管理员/普通用户)
|
|
|
|
2. **仪表盘**
|
|
- 资源统计卡片
|
|
- 资源使用情况图表
|
|
- 虚拟机状态分布图表
|
|
- 最近操作记录
|
|
|
|
3. **虚拟机管理**
|
|
- 虚拟机列表(搜索、分页)
|
|
- 虚拟机详情
|
|
- 创建虚拟机
|
|
- 虚拟机操作(启动、停止、重启、删除等)
|
|
|
|
4. **镜像管理**
|
|
- 镜像列表(搜索、筛选)
|
|
- 镜像操作(创建、编辑、删除、重新下载)
|
|
|
|
5. **网络管理**
|
|
- 网络列表(搜索、筛选)
|
|
- 网络操作(创建、编辑、删除)
|
|
|
|
6. **数据卷管理**
|
|
- 数据卷列表(搜索、筛选)
|
|
- 数据卷操作(创建、挂载、卸载、扩容、删除)
|
|
|
|
7. **安全组管理**
|
|
- 安全组列表
|
|
- 安全组规则管理
|
|
- 安全组绑定/解绑
|
|
|
|
8. **用户管理**(仅管理员)
|
|
- 用户列表
|
|
- 创建/编辑用户
|
|
- 修改密码
|
|
- 删除用户
|
|
|
|
### UI 特性
|
|
|
|
- **深色模式**:默认深色主题,符合运维场景
|
|
- **玻璃态效果**:卡片和面板使用玻璃态设计
|
|
- **响应式设计**:支持桌面、平板、移动端
|
|
- **信息密度高**:优先展示关键信息
|
|
- **流畅交互**:微动画和过渡效果
|
|
|
|
## API 接口
|
|
|
|
所有 API 接口统一使用 `/api` 前缀,认证方式为 Bearer Token。
|
|
|
|
详细 API 文档请参考:`本网站API文档(封装功能API和用户功能).md`
|
|
|
|
## 权限控制
|
|
|
|
- **路由守卫**:根据用户角色控制页面访问
|
|
- **菜单过滤**:普通用户隐藏管理员菜单
|
|
- **按钮控制**:根据权限显示/隐藏操作按钮
|
|
|
|
## 样式规范
|
|
|
|
- 主色:`#10b981`(翠绿色)
|
|
- 深色背景:`#1a1a2e`
|
|
- 玻璃态效果:`backdrop-filter: blur(12px)`
|
|
- 圆角:`12px`
|
|
- 间距:使用 8px 基准网格
|
|
|
|
详细样式规范请参考:`UI设计规范.md`
|
|
|
|
## 开发规范
|
|
|
|
1. **组件命名**:使用 PascalCase
|
|
2. **文件命名**:使用 PascalCase(组件)或 camelCase(工具函数)
|
|
3. **API 调用**:统一使用封装的 API 函数
|
|
4. **状态管理**:使用 Pinia stores
|
|
5. **路由**:使用 Vue Router,配置权限守卫
|
|
6. **样式**:优先使用 CSS 变量,支持深色模式
|
|
|
|
## 注意事项
|
|
|
|
1. 所有 API 请求都需要携带 JWT Token(除登录/注册接口)
|
|
2. Token 过期会自动跳转到登录页
|
|
3. 管理员可以访问所有功能,普通用户受限
|
|
4. 删除操作需要二次确认
|
|
5. 列表页面支持搜索和分页
|
|
|
|
## 问题反馈
|
|
|
|
如有问题,请查看:
|
|
- 架构文档:`架构文档.md`
|
|
- API 文档:`本网站API文档(封装功能API和用户功能).md`
|
|
- UI 规范:`UI设计规范.md`
|