# 移动端 H5 项目 基于 Vue 3 + Vite + Vant 的纯 H5 移动端应用,功能与 Web 端(art-design-pro)完全一致,仅展示形式适配移动端。 ## 技术栈 - **框架**: Vue 3 - **构建工具**: Vite - **UI 组件库**: Vant 4(自动引入) - **状态管理**: Pinia - **路由**: Vue Router - **HTTP 客户端**: Axios - **样式**: SCSS - **日期处理**: dayjs ## 项目结构 ``` mobile-h5/ ├── src/ │ ├── api/ # API 接口(与 Web 端共享) │ ├── assets/ # 静态资源 │ │ ├── img/ # 图片资源(logo、头像、背景图等) │ │ └── styles/ # 样式文件 │ ├── router/ # 路由配置 │ ├── store/ # 状态管理(与 Web 端共享) │ │ └── modules/ # Store 模块 │ ├── utils/ # 工具函数(与 Web 端共享) │ │ └── http/ # HTTP 请求封装 │ ├── views/ # 页面 │ │ ├── login/ # 登录页 ✅ │ │ ├── dashboard/ # 仪表盘 ✅ │ │ ├── plans/ # 计划管理 ✅ │ │ ├── inventory/ # 出入库管理 ✅ │ │ ├── weighing/ # 地磅单管理 ✅ │ │ ├── master-data/ # 基础资料 ✅ │ │ └── user/ # 用户管理 ✅ │ ├── App.vue # 根组件 │ └── main.ts # 入口文件 ├── index.html ├── package.json ├── vite.config.ts └── tsconfig.json ``` ## 资源文件 已复制的资源文件: - `logo-sx.png` - Logo - `favicon.ico` - 网站图标 - `avatar11.png` - 默认头像 - `sx1.jpg` - 登录页背景图 ## 安装依赖 ```bash cd mobile-h5 npm install ``` ## 开发 ```bash npm run dev ``` 访问 http://localhost:5174 ## 构建 ```bash npm run build ``` 构建产物在 `dist` 目录。 ## 功能模块 ### ✅ 已完成 1. **登录页面** - 用户名/密码登录 - 使用背景图片 `sx1.jpg` - Logo 显示 2. **仪表盘** - 今日入库/出库统计 - 功能菜单导航 - 用户信息显示 3. **计划管理** - 计划列表(卡片式展示) - 新增/编辑计划 - 查看关联数据 - 生成出入库单 - 删除计划 - 搜索功能 4. **出入库管理** - 出入库记录列表(卡片式展示) - 新增/编辑记录 - 查看关联数据 - 生成地磅单 - 删除记录 - 搜索功能 5. **地磅单管理** - 地磅单列表(卡片式展示) - 新增/编辑地磅单 - 毛重/皮重/净重计算 - 自动填充时间 - 作废功能 - 删除功能 - 搜索功能 6. **基础资料** - 往来单位管理(标签页) - 货物管理(标签页) - 新增/编辑/删除功能 - 搜索功能 7. **用户管理** - 用户列表(卡片式展示) - 新增/编辑用户 - 删除用户 - 角色管理(管理员/操作员) ## 移动端适配特点 ### 布局方式 - 使用卡片式布局替代表格 - 列表使用 `van-list` 组件支持下拉加载 - 表单使用底部弹窗(`van-popup`)展示 ### 组件使用 - **列表**: `van-list` + 卡片式布局 - **表单**: `van-form` + `van-field` - **选择器**: `van-picker`(公司、货物选择) - **日期选择**: 原生 `input type="date"`(移动端原生体验更好) - **弹窗**: `van-popup`(底部弹出) - **按钮**: `van-button` - **标签**: `van-tag` - **搜索**: `van-search` - **反馈**: `Toast`、`Dialog`、`Notify` ### 交互优化 - 点击卡片查看详情 - 底部弹窗编辑表单 - 下拉刷新和上拉加载 - 触摸友好的按钮尺寸 ## 与 Web 端的差异 | 功能 | Web 端 | 移动端 | |------|--------|--------| | UI 框架 | Element Plus | Vant 4 | | 列表展示 | 表格(el-table) | 卡片列表 | | 表单弹窗 | 居中对话框 | 底部弹窗 | | 日期选择 | el-date-picker | 原生 input[type="date"] | | 消息提示 | ElMessage | Toast | | 确认对话框 | ElMessageBox | Dialog | ## 开发说明 ### 组件自动引入 所有 Vant 组件已配置自动引入,可直接使用: ```vue ``` ### API 调用 API 文件已从 Web 端复制,可直接使用: ```typescript import { UserService } from '@/api/usersApi' import { weighingApi } from '@/api/weighingApi' import { planApi } from '@/api/plansApi' ``` ### 状态管理 Store 文件已从 Web 端复制,可直接使用: ```typescript import { useUserStore } from '@/store/modules/user' const userStore = useUserStore() const userInfo = userStore.getUserInfo ``` ### 路由跳转 ```typescript import { useRouter } from 'vue-router' const router = useRouter() router.push('/plans') ``` ## 注意事项 1. **功能一致性**: 所有功能逻辑与 Web 端保持一致 2. **数据格式**: API 接口、数据格式与 Web 端完全相同 3. **权限控制**: 用户角色判断与 Web 端一致 4. **移动端优化**: 仅展示形式适配移动端,功能逻辑不变 ## 环境变量 创建 `.env` 文件(参考 `.env.example`): ```env VITE_API_BASE_URL=http://localhost:8000 ``` ## 浏览器支持 - iOS Safari 12+ - Android Chrome 80+ - 微信内置浏览器 - 其他现代移动浏览器 ## 后续优化建议 1. 添加下拉刷新功能 2. 优化长列表性能(虚拟滚动) 3. 添加离线缓存 4. 优化图片加载 5. 添加骨架屏加载效果