Files
MES/yawei-mes/mes-ui/MOBILE_ADAPTATION.md
2026-04-02 10:39:03 +08:00

293 lines
7.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 移动端适配说明文档
## 概述
本项目已完成移动端适配的基础架构搭建支持PC端和移动端自动识别和路由跳转。
## 技术栈
- **UI组件库**: Vant 2.12.54 (移动端) + Element UI 2.15.12 (PC端)
- **框架**: Vue 2.6.12
- **路由**: Vue Router 3.4.9
- **状态管理**: Vuex 3.6.0
## 目录结构
```
mes-ui/src/
├── views/
│ ├── mobile/ # 移动端页面目录
│ │ ├── layout/ # 移动端布局
│ │ │ ├── MobileLayout.vue # 主布局
│ │ │ └── components/
│ │ │ ├── MobileNavBar.vue # 顶部导航栏
│ │ │ └── MobileTabBar.vue # 底部标签栏
│ │ ├── home/ # 首页
│ │ │ └── index.vue
│ │ ├── workOrder/ # 工单模块
│ │ │ ├── list.vue # 工单列表
│ │ │ ├── detail.vue # 工单详情
│ │ │ └── pickManage.vue # 领料管理
│ │ ├── report/ # 报工模块
│ │ │ ├── list.vue # 报工列表
│ │ │ └── form.vue # 报工表单
│ │ ├── profile/ # 个人中心
│ │ │ └── index.vue
│ │ └── components/ # 移动端公共组件
│ │ └── MobileWorkOrderCard.vue # 工单卡片
│ └── mes/ # PC端页面原有
├── router/
│ ├── index.js # 主路由
│ └── mobile.js # 移动端路由模块
├── utils/
│ └── device.js # 设备检测工具
└── api/ # API接口PC和移动端共用
```
## 核心功能
### 1. 设备自动检测
系统会自动检测用户设备类型PC或移动端并在登录后自动跳转到对应界面。
**检测规则**:
- User Agent 包含移动设备标识
- 或屏幕宽度 <= 768px
**实现文件**: `src/utils/device.js`
### 2. 路由自动保护
路由守卫会自动检查设备类型和访问路径是否匹配:
- 移动设备访问PC页面 → 自动重定向到移动端首页
- PC设备访问移动页面 → 自动重定向到PC端首页
**实现文件**: `src/permission.js`
### 3. 登录后自动跳转
用户登录成功后,系统会根据设备类型自动跳转:
- 移动设备 → `/mobile/home`
- PC设备 → `/index`
**实现文件**: `src/views/login.vue`
## 移动端路由
所有移动端路由以 `/mobile` 开头:
| 路径 | 页面 | 显示TabBar |
|------|------|-----------|
| `/mobile/home` | 首页 | 是 |
| `/mobile/workOrder` | 工单列表 | 是 |
| `/mobile/workOrder/detail/:id` | 工单详情 | 否 |
| `/mobile/workOrder/pickManage/:workOrderId` | 领料管理 | 否 |
| `/mobile/report` | 报工列表 | 是 |
| `/mobile/report/add/:workOrderEntryId` | 报工表单 | 否 |
| `/mobile/report/add/continuous/:workOrderId` | 连续制造报工 | 否 |
| `/mobile/profile` | 个人中心 | 是 |
## 已完成功能
### ✅ 第一阶段:基础架构
1. 添加 Vant UI 组件库依赖
2. 配置 Babel 支持 Vant 按需引入
3. 创建设备检测工具
4. 创建移动端路由模块
5. 创建移动端布局组件(顶部导航栏 + 底部标签栏)
6. 修改登录逻辑支持设备检测
7. 修改路由守卫支持设备类型保护
### ✅ 第二阶段:工单模块
1. 移动端首页(快捷入口、待办事项、数据统计)
2. 工单列表页面(搜索、筛选、下拉刷新、上拉加载)
3. 工单卡片组件
4. 工单详情页面(基本信息、报工排产、领料记录)
5. 占位页面(报工列表、报工表单、领料管理、个人中心)
## 待开发功能
### 🔲 第三阶段:完善工单模块
- 报工表单页面
- 领料管理页面
- 工单状态操作(开始、暂停、关闭)
### 🔲 第四阶段:其他模块
- 仓库模块
- 质检模块
- 设备模块
- 其他业务模块...
## 安装和运行
### 1. 安装依赖
```bash
cd mes-ui
npm install
```
### 2. 启动开发服务器
```bash
npm run dev
```
### 3. 访问地址
- PC端: http://localhost:80
- 移动端: 使用手机浏览器访问或使用浏览器开发者工具切换到移动设备模式
### 4. 测试移动端
**方法一:使用浏览器开发者工具**
1. 打开 Chrome 浏览器
2. 按 F12 打开开发者工具
3. 点击设备切换按钮(或按 Ctrl+Shift+M
4. 选择移动设备型号(如 iPhone 12
5. 刷新页面
**方法二:使用真机测试**
1. 确保手机和电脑在同一局域网
2. 获取电脑IP地址如 192.168.1.100
3. 在手机浏览器访问 http://192.168.1.100:80
## API接口复用
移动端和PC端共用相同的后端API接口无需修改后端代码。
**示例**:
```javascript
// PC端和移动端都使用相同的API
import { listWorkOrder, getWorkOrder } from '@/api/mes/production/workOrder'
// 获取工单列表
listWorkOrder({ pageNum: 1, pageSize: 10 })
// 获取工单详情
getWorkOrder(workOrderId)
```
## 开发指南
### 添加新的移动端页面
1.`src/views/mobile/` 下创建页面组件
2.`src/router/mobile.js` 中添加路由配置
3. 根据需要设置 `meta.showTabBar` 控制是否显示底部标签栏
**示例**:
```javascript
// src/router/mobile.js
{
path: 'newPage',
component: () => import('@/views/mobile/newModule/newPage'),
name: 'MobileNewPage',
meta: {
title: '新页面',
showTabBar: false, // 不显示底部标签栏
requiresAuth: true
}
}
```
### 使用 Vant 组件
Vant 组件已配置按需引入,直接在组件中导入使用即可:
```vue
<script>
import { Button, Cell, Toast } from 'vant'
export default {
components: {
[Button.name]: Button,
[Cell.name]: Cell
},
methods: {
showToast() {
Toast('提示信息')
}
}
}
</script>
```
### 调用API接口
移动端直接复用PC端的API接口
```javascript
import { listWorkOrder } from '@/api/mes/production/workOrder'
export default {
methods: {
async loadData() {
try {
const response = await listWorkOrder(this.queryParams)
this.list = response.rows
} catch (error) {
this.$toast.fail('加载失败')
}
}
}
}
```
## 注意事项
1. **样式隔离**: 移动端页面使用 Vant 组件PC端页面使用 Element UI两者样式互不影响
2. **路由命名**: 移动端路由名称建议以 `Mobile` 开头,便于区分
3. **响应式设计**: 移动端页面应适配 320px - 768px 宽度的设备
4. **触摸优化**: 确保可点击元素最小尺寸为 44px × 44px
5. **性能优化**: 使用虚拟滚动、图片懒加载等技术优化性能
## 常见问题
### Q: 如何手动切换PC/移动模式?
A: 可以使用设备检测工具手动设置:
```javascript
import { setDeviceType } from '@/utils/device'
// 切换到移动模式
setDeviceType('mobile')
location.reload()
// 切换到PC模式
setDeviceType('pc')
location.reload()
```
### Q: 移动端页面如何访问Vuex状态
A: 移动端和PC端共用同一个Vuex store直接访问即可
```javascript
computed: {
userName() {
return this.$store.state.user.name
}
}
```
### Q: 如何调试移动端页面?
A:
1. 使用Chrome开发者工具的设备模拟功能
2. 使用真机 + Chrome远程调试
3. 使用 vconsole 在移动端显示控制台
## 更新日志
### 2026-03-07
- ✅ 完成移动端基础架构搭建
- ✅ 完成设备自动检测和路由保护
- ✅ 完成移动端布局组件(导航栏 + 标签栏)
- ✅ 完成移动端首页
- ✅ 完成工单列表和详情页面
- ✅ 完成工单卡片组件
## 联系方式
如有问题,请联系开发团队。