# dehaze-front-vue
**Repository Path**: earthy-zinc/dehaze-front-vue
## Basic Information
- **Project Name**: dehaze-front-vue
- **Description**: 🔥基于 vue3 + vite4 + typescript + element-plus 构建的图像去雾系统前端页面
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-09-21
- **Last Updated**: 2025-09-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 图像去雾系统, Vue, TypeScript
## README
## 📢 项目介绍
基于深度学习的在线实时响应的图像去雾系统,主要功能是改善受到雾霾影响的图像质量,从⽽实现图像去雾的⽬标。采用 Vue3 + Vite4+ TypeScript5 + Element-Plus + Pinia 等最新主流技术栈构建。
详细介绍请见`./doc`文件夹。
## 💻 技术栈
* 前端框架:Vue3 + Vite(快速构建) + TypeScript(类型安全)
* UI库:Element-Plus(组件丰富)
* 状态管理:Pinia(模块化状态管理)
* 路由:Vue Router(动态路由+静态路由分离)
* 构建工具:Vite5 + ESLint + Prettier(代码规范)
* 其他:Unocss(原子化CSS)、WebSocket(实时去雾进度同步)
## 🪄 目录结构
* 分层清晰:
* views - 存放页面组件
* components - 封装复用组件
* api - 统一接口管理
* 模块化设计:
* store/modules - 划分用户、权限、设置等独立模块
* enums - 集中管理枚举类型
* typings - 定义类型声明文件
* 功能模块化:
* compare - 目录实现图像对比功能
* dataset - 管理数据集
* evaluation - 展示算法评估指标
* 组件复用:
* Waterfall - 实现瀑布流布局
* Magnifier - 封装画布缩放功能
* DraggableLine - 实现对比图层拖拽
## 🛞 系统功能
| 模块 | 功能描述 |
|-------|---------------------------------------------|
| 用户系统 | 支持角色/权限管理、多级部门树、WebSocket保持登录状态 |
| 数据集管理 | 瀑布流展示+懒加载、图片MD5校验、图片数量统计 |
| 算法处理 | 支持多种去雾算法、实时对比(CSS clip-path)、指标可视化(ECharts) |
| 可视化对比 | 重叠对比(拖拽分隔线)、放大镜细节查看(Canvas)、亮度对比度调节 |
| 系统配置 | 主题色切换、暗黑模式、布局模式(侧边/顶部/混合)、水印开关 |
## 🚨 系统亮点
1. **⽤户登录与注册:** 利⽤ Pinia 和浏览器 localStorage 持久化保存⽤户 Token、⻆⾊权限以及其他个性化设置。
2. **axios ⼆次封装:** 通过请求、响应拦截器拦截未登录、越权等⾮法请求,同时设计了⾼效的 API 接⼝代码结构和模块划分,提⾼了开发效率和可维护性。
3. **菜单展示:** 通过结合使⽤ VueRouter 和 Pinia,在登陆后动态获取⽤户菜单,对不同⽤户展示不同的操作菜单,实现静态路由和动态路由的分离。
4. **响应式布局:** 利⽤ CSS 变量、弹性盒⼦、相对单位,通过组件化管理 Vue 不同布局⻚⾯,使项⽬同时⽀持电脑端和移动端的显示,⽤同⼀套代码实现多种⻚⾯布局模式的切换,满⾜不同⽤户需求。
5. **图⽚上传:** 前端针对图⽚⼤⼩、后缀、MD5 进⾏校验,减轻后端服务器压⼒,实现极速上传,针对多图⽚通过并发请求,上传过程中利⽤进度条可视化上传流程,提⾼⽤户体验。
6. **⾼效数据集图⽚浏览:** 采⽤缩略图、瀑布流布局以及懒加载技术展示⼤规模数据集图⽚。将初始位置设置在屏幕之外,防⽌懒加载失效,在优化传输速度的同时确保⽤户体验
7. **图像重叠对⽐:** 利⽤ CSS clip-path 实现原图和算法效果图重叠对⽐,并通过可拖拽线条直观调整两图像之间⽐例,增强对⽐效果
8. **图像细节展示增强:** 基于 Canvas 实现图⽚放⼤镜功能,并通过滑块实时调整亮度对⽐度,进⼀步突出图像细节
9. **实时去雾进度推送:** 通过 websocket 长连接获取去雾进度,并实时更新到页面上,提⾼用户体验
10. **组件分层管理:** 将前端组件分为基础组件、业务组件、布局组件,更易理解项目结构,提⾼可维护性
11. **组件的封装和复⽤:** 将复杂组件如瀑布流、懒加载、放⼤镜进⾏封装,将逻辑抽离为 Hooks,提升代码重⽤性和可维护性
12. **良好代码规范:** 使用 ESLint + Prettier + Stylelint 统一代码风格,集成 husky + lint-staged + commitizen 规范化git提交
## 🌺 环境准备
| 环境 | 名称版本 | 备注 |
|------------------|:------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| **开发工具** | VSCode | [下载地址](https://code.visualstudio.com/Download) |
| **运行环境** | Node 16+ | [下载地址](http://nodejs.cn/download) |
| **VSCode插件(必装)** | 1. `Vue Language Features (Volar) `
2. `TypeScript Vue Plugin (Volar) `
3. 禁用 Vetur |  |
## 🚀 项目启动
```bash
# 克隆代码
git clone https://gitee.com/earthy-zinc/dehaze_front.git
# 切换目录
cd dehaze_front
# 安装 pnpm
npm install pnpm -g
# 安装依赖
pnpm install
# 启动运行
pnpm run dev
```
## 🌺 项目部署
```bash
# 项目打包
pnpm run build:prod
# 上传文件至远程服务器
将打包生成在 `dist` 目录下的文件拷贝至 `/usr/share/nginx/html` 目录
# nginx.cofig 配置
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
```
## 后续优化方向
1. 图片零延迟拖拽上传
2. Electron桌面端与系统文件系统集成
3. 增加微前端架构支持(qiankun)
4. 采用Monorepo模块化架构
5. 提高最终性能指标 Lighthouse评分 > 92,TTI < 2.5s,长列表渲染FPS ≥ 55
6. 整体代码质量中,单元测试覆盖率 ≥ 80%,SonarQube漏洞率 ≤ 0.1%,API类型安全覆盖率 100%