Files
ar-inspection/plus-ui/README.md
2025-11-13 17:11:19 +08:00

406 lines
9.9 KiB
Markdown

# AR智能巡检平台 - Web管理端
## 项目简介
AR智能巡检平台 Web管理端是基于 Vue3 + TypeScript + Element Plus 开发的现代化前端应用,为电力设施巡检管理提供可视化的操作界面。
## 技术栈
- **框架**: Vue 3.5.13
- **开发语言**: TypeScript 5.8.3
- **构建工具**: Vite 6.3.2
- **UI 框架**: Element Plus 2.9.8
- **状态管理**: Pinia 3.0.2
- **路由管理**: Vue Router 4.5.0
- **HTTP 客户端**: Axios 1.8.4
- **表格组件**: vxe-table 4.13.7
- **图表库**: ECharts 5.6.0
- **CSS 预处理**: Sass 1.87.0
- **样式引擎**: UnoCSS 66.5.2
- **国际化**: Vue I18n 11.1.3
## 核心功能模块
### 1. 巡检管理
- 巡检任务列表与详情
- 任务创建与分配
- 巡检进度实时监控
- 巡检路线管理
### 2. 设备管理
- 设备台账管理
- AR 点位配置
- 设备信息查询
- 设备状态监控
### 3. 缺陷管理
- 缺陷记录查看
- 缺陷处理流程
- 缺陷统计分析
- 缺陷图片浏览
### 4. 数据统计
- 巡检完成率图表
- 缺陷趋势分析
- 设备健康度统计
- 可视化报表展示
### 5. 系统管理
- 用户管理
- 角色权限配置
- 部门组织管理
- 菜单配置
- 字典管理
- 操作日志
## 快速开始
### 环境要求
- Node.js >= 18.18.0
- npm >= 8.9.0
推荐使用以下浏览器:
- Chrome >= 87
- Edge >= 88
- Safari >= 14
- Firefox >= 78
### 安装依赖
```bash
# 使用国内镜像源安装依赖(推荐)
npm install --registry=https://registry.npmmirror.com
# 或使用默认源
npm install
```
### 开发环境运行
```bash
# 启动开发服务器
npm run dev
# 默认访问地址: http://localhost:80
# 后端接口代理: http://localhost:8080
```
### 构建部署
```bash
# 构建生产环境
npm run build:prod
# 构建开发环境
npm run build:dev
# 预览生产构建
npm run preview
```
## 项目结构
```
plus-ui/
├── public/ # 静态资源
├── src/
│ ├── api/ # API 接口定义
│ │ ├── login.ts # 登录接口
│ │ ├── menu.ts # 菜单接口
│ │ ├── system/ # 系统管理接口
│ │ ├── monitor/ # 监控模块接口
│ │ ├── tool/ # 工具模块接口
│ │ └── workflow/ # 工作流接口
│ ├── assets/ # 资源文件
│ │ ├── icons/ # 图标
│ │ ├── images/ # 图片
│ │ └── styles/ # 样式
│ ├── components/ # 全局组件
│ │ ├── IconSelect/ # 图标选择器
│ │ └── ... # 其他组件
│ ├── directive/ # 自定义指令
│ │ ├── permission/ # 权限指令
│ │ └── common/ # 通用指令
│ ├── hooks/ # 组合式函数
│ ├── lang/ # 国际化语言包
│ │ ├── zh_CN.ts # 简体中文
│ │ └── en_US.ts # 英文
│ ├── layout/ # 布局组件
│ ├── plugins/ # 插件封装
│ │ ├── auth.ts # 权限插件
│ │ ├── cache.ts # 缓存插件
│ │ ├── modal.ts # 弹窗插件
│ │ └── tab.ts # 标签页插件
│ ├── router/ # 路由配置
│ │ └── index.ts # 路由主文件
│ ├── store/ # Pinia 状态管理
│ │ ├── modules/
│ │ │ ├── app.ts # 应用配置
│ │ │ ├── user.ts # 用户信息
│ │ │ ├── permission.ts # 权限菜单
│ │ │ ├── settings.ts # 系统设置
│ │ │ └── tagsView.ts # 标签视图
│ │ └── index.ts
│ ├── types/ # TypeScript 类型定义
│ │ ├── axios.d.ts # Axios 类型
│ │ ├── global.d.ts # 全局类型
│ │ └── router.d.ts # 路由类型
│ ├── utils/ # 工具函数
│ │ ├── request.ts # Axios 封装
│ │ ├── auth.ts # 认证工具
│ │ └── ... # 其他工具
│ ├── views/ # 页面视图
│ │ ├── index.vue # 首页
│ │ ├── login.vue # 登录页
│ │ ├── system/ # 系统管理
│ │ ├── monitor/ # 监控管理
│ │ └── ... # 其他页面
│ ├── App.vue # 根组件
│ ├── main.ts # 入口文件
│ ├── permission.ts # 路由权限控制
│ └── settings.ts # 全局配置
├── vite/ # Vite 插件配置
│ └── plugins/
├── .env.development # 开发环境变量
├── .env.production # 生产环境变量
├── eslint.config.ts # ESLint 配置
├── tsconfig.json # TypeScript 配置
├── vite.config.ts # Vite 配置
└── package.json # 项目依赖
```
## 环境配置
### 开发环境 (.env.development)
```bash
# 应用标题
VITE_APP_TITLE = AR智能巡检平台
# 开发环境标识
VITE_APP_ENV = 'development'
# 后端接口地址(通过 Vite 代理)
VITE_APP_BASE_API = '/dev-api'
# 应用访问路径
VITE_APP_CONTEXT_PATH = '/'
# 应用端口
VITE_APP_PORT = 80
# 接口加密功能开关
VITE_APP_ENCRYPT = true
# 客户端 ID
VITE_APP_CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'
# WebSocket 开关
VITE_APP_WEBSOCKET = false
# SSE 推送开关
VITE_APP_SSE = true
```
### 生产环境 (.env.production)
修改生产环境配置,确保后端接口地址正确:
```bash
VITE_APP_BASE_API = 'https://your-api-domain.com'
```
## 开发指南
### API 接口开发
1.`src/api/` 目录下创建对应的接口文件
2. 定义 TypeScript 类型接口
3. 使用 Axios 封装好的 request 方法
示例:
```typescript
// src/api/inspection/task.ts
import request from '@/utils/request';
import { InspectionTaskVO, InspectionTaskForm } from './types';
// 获取巡检任务列表
export function listInspectionTask(query: any) {
return request({
url: '/inspection/task/list',
method: 'get',
params: query
});
}
// 创建巡检任务
export function addInspectionTask(data: InspectionTaskForm) {
return request({
url: '/inspection/task',
method: 'post',
data: data
});
}
```
### 页面开发
1.`src/views/` 目录下创建页面组件
2. 使用 Composition API 编写逻辑
3. 使用 Element Plus 组件构建 UI
示例:
```vue
<template>
<div class="app-container">
<el-form :model="queryParams" inline>
<el-form-item label="任务名称">
<el-input v-model="queryParams.taskName" placeholder="请输入任务名称" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleQuery">查询</el-button>
</el-form-item>
</el-form>
<el-table :data="taskList">
<el-table-column prop="taskName" label="任务名称" />
<el-table-column prop="status" label="状态" />
</el-table>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue';
import { listInspectionTask } from '@/api/inspection/task';
const taskList = ref([]);
const queryParams = ref({
taskName: ''
});
const handleQuery = async () => {
const res = await listInspectionTask(queryParams.value);
taskList.value = res.rows;
};
onMounted(() => {
handleQuery();
});
</script>
```
### 状态管理
使用 Pinia 进行状态管理:
```typescript
// src/store/modules/inspection.ts
import { defineStore } from 'pinia';
export const useInspectionStore = defineStore('inspection', {
state: () => ({
currentTask: null,
taskList: []
}),
actions: {
setCurrentTask(task: any) {
this.currentTask = task;
}
}
});
```
### 权限控制
使用权限指令控制按钮显示:
```vue
<el-button v-hasPermi="['inspection:task:add']" type="primary">
新增任务
</el-button>
```
## 代码规范
### ESLint & Prettier
```bash
# 代码检查
npm run lint:eslint
# 自动修复
npm run lint:eslint:fix
# 代码格式化
npm run prettier
```
### TypeScript 规范
- 所有组件使用 `<script setup lang="ts">`
- 定义明确的类型接口
- 避免使用 `any` 类型
- 导出的函数和变量添加类型注解
### 组件规范
- 组件文件名使用 PascalCase
- 单文件组件使用完整的 `<template>` `<script>` `<style>` 结构
- Props 定义使用 TypeScript 接口
- 使用 Composition API
## 常见问题
### 1. 启动报错
确保 Node.js 版本 >= 18.18.0,建议使用 nvm 管理 Node 版本。
### 2. 接口跨域
开发环境已配置代理,无需担心跨域问题。生产环境需要后端配置 CORS。
### 3. 构建失败
删除 `node_modules``package-lock.json`,重新安装依赖:
```bash
rm -rf node_modules package-lock.json
npm install --registry=https://registry.npmmirror.com
```
### 4. 端口冲突
修改 `.env.development` 中的 `VITE_APP_PORT` 配置。
## 性能优化
- 使用 Vite 的代码分割和懒加载
- 图片资源使用 WebP 格式
- 组件按需引入
- 路由懒加载
- 使用 UnoCSS 减少 CSS 体积
## 浏览器兼容性
支持现代浏览器和 IE11+(需要 polyfill)
## 技术文档
- [Vue 3 官方文档](https://cn.vuejs.org/)
- [Element Plus 文档](https://element-plus.org/zh-CN/)
- [Vite 文档](https://cn.vitejs.dev/)
- [TypeScript 文档](https://www.typescriptlang.org/zh/)
- [Pinia 文档](https://pinia.vuejs.org/zh/)
## License
MIT License
---
> 基于 [RuoYi-Vue-Plus](https://gitee.com/dromara/RuoYi-Vue-Plus) 前端脚手架开发