# 前端开发规范

## 1. 组件库规范

### 1.1 统一使用 Ant Design Vue
- **强制要求**: 所有页面必须使用 Ant Design Vue 组件
- **禁止**: 不得使用 Element Plus 或其他 UI 组件库
- **原因**: 项目只安装了 ant-design-vue，使用其他组件库会导致页面加载失败

### 1.2 常用组件对照表
| Element Plus | Ant Design Vue |
|-------------|----------------|
| el-card | a-card |
| el-table | a-table |
| el-button | a-button |
| el-form | a-form |
| el-input | a-input |
| el-select | a-select |
| el-dialog | a-modal |
| el-tree | a-tree |
| el-tag | a-tag |
| el-switch | a-switch |
| el-icon | @ant-design/icons-vue |

## 2. API 路径规范

### 2.1 统一前缀
- 所有后端 API 必须以 `/api/v1` 开头
- 网关路由配置为 `/api/v1/**`

### 2.2 模块路径规范
| 模块 | 前端 API 路径 | 后端 Controller 路径 |
|-----|-------------|-------------------|
| 项目管理 | /api/v1/mdm/projects | @RequestMapping("/api/v1/mdm/projects") |
| 设备管理 | /api/v1/mdm/equipments | @RequestMapping("/api/v1/mdm/equipments") |
| 访客管理 | /api/v1/mdm/visitors | @RequestMapping("/api/v1/mdm/visitors") |
| 巡检管理 | /api/v1/mdm/inspections | @RequestMapping("/api/v1/mdm/inspections") |
| 工单管理 | /api/v1/ops/work-orders | @RequestMapping("/api/v1/ops/work-orders") |
| 消息通知 | /api/v1/ops/notifications | @RequestMapping("/api/v1/ops/notifications") |

### 2.3 常见问题
- **问题**: 前端调用 `/api/v1/asset/equipments`，后端只有 `/api/v1/mdm/equipments`
- **解决**: 统一使用 `/api/v1/mdm` 前缀，避免模块间混淆

## 3. 依赖管理规范

### 3.1 新增依赖流程
1. 安装依赖: `npm install package-name --save`
2. 重启开发服务器: 必须重启才能识别新安装的包
3. 验证: 确保页面能正常加载

### 3.2 常用依赖
- 图表库: `echarts` (工单统计页面使用)
- 日期处理: `dayjs`
- 图标: `@ant-design/icons-vue`

## 4. 页面开发检查清单

### 4.1 开发前检查
- [ ] 确认使用的组件库是 Ant Design Vue
- [ ] 确认 API 路径与后端一致
- [ ] 确认所需的依赖已安装

### 4.2 开发后检查
- [ ] 页面能正常加载无报错
- [ ] API 调用返回 200
- [ ] Console 无错误信息
- [ ] 所有服务正常运行

## 5. 服务启动检查

### 5.1 服务端口
| 服务 | 端口 | 说明 |
|-----|-----|-----|
| ether-gateway | 8080 | API 网关 |
| ether-auth | 8081 | 认证服务 |
| ether-mdm | 8082 | 主数据管理 |
| ether-ops | 8083 | 运维服务 |
| ether-ui-admin | 5173 | 前端开发服务器 |

### 5.2 启动顺序
1. 启动后端服务（任意顺序）
2. 启动前端开发服务器
3. 验证所有服务正常运行

### 5.3 检查命令
```bash
# 检查服务状态
for port in 8080 8081 8082 8083; do
  pid=$(lsof -ti:$port 2>/dev/null)
  if [ -n "$pid" ]; then
    echo "Port $port: Running"
  else
    echo "Port $port: NOT RUNNING"
  fi
done
```

## 6. 问题解决方案记录

### 6.1 设备管理 404 错误
**问题**: 前端调用 `/api/v1/asset/equipments` 返回 404
**原因**: 设备管理页面错误地导入了 `api/asset/equipment` 而不是 `api/mdm/equipment`
**解决**: 修改导入路径
```typescript
// 错误
import { equipmentApi } from '../../../api/asset/equipment';

// 正确
import { equipmentApi } from '../../../api/mdm/equipment';
```

### 6.2 访客管理 404 错误
**问题**: 前端调用 `/api/v1/mdm/visitors/*` 返回 404
**原因**: 后端 `VisitorController` 使用 `/mdm/visitors` 路径，缺少 `/api/v1` 前缀
**解决**: 修改后端 Controller
```java
// 错误
@RequestMapping("/mdm/visitors")

// 正确
@RequestMapping("/api/v1/mdm/visitors")
```

### 6.3 工单统计 echarts 错误
**问题**: `Failed to resolve import "echarts"`
**原因**: 项目未安装 echarts 依赖
**解决**: 安装依赖并重启开发服务器
```bash
npm install echarts --save
# 必须重启开发服务器
```

### 6.4 角色管理组件错误
**问题**: 页面使用 Element Plus 组件导致加载失败
**原因**: 项目只安装了 Ant Design Vue
**解决**: 将 Element Plus 组件替换为 Ant Design Vue 组件

### 6.5 巡检管理 404 错误
**问题**: 前端调用 `/api/v1/mdm/inspections/*` 返回 404
**原因**: 后端 `InspectionController` 缺少 `/api/v1` 前缀
**解决**: 修改后端 Controller 路径

## 7. 最佳实践

1. **前后端路径保持一致**: 开发前确认 API 路径，避免路径不匹配
2. **统一技术栈**: 使用项目已安装的组件库和依赖
3. **及时测试**: 开发完成后立即测试，发现问题及时修复
4. **记录问题**: 将遇到的问题和解决方案记录到本文档
5. **服务监控**: 定期检查服务状态，确保所有服务正常运行
