添加 IntelliJ IDEA 项目配置文件
This commit is contained in:
@@ -1,37 +1,351 @@
|
||||
# Mini Program 微信小程序矩阵
|
||||
# Mini Program - 活牛采购智能数字化系统小程序矩阵
|
||||
|
||||
## 技术栈
|
||||
- 微信小程序原生开发
|
||||
- Taro多端框架(可选)
|
||||
- WeUI / Vant Weapp UI组件库
|
||||
## 📱 项目概述
|
||||
|
||||
活牛采购智能数字化系统小程序矩阵基于uni-app框架开发,支持微信小程序、支付宝小程序、H5等多端发布。系统包含四个独立的小程序应用,分别服务于不同角色用户,实现活牛采购全流程的移动端操作。
|
||||
|
||||
**核心特性:**
|
||||
- 🎯 **多角色支持**:客户端、供应商、司机、内部员工四大角色
|
||||
- 🔄 **跨平台兼容**:支持微信、支付宝、H5等多平台
|
||||
- 📡 **实时同步**:WebSocket实时数据更新
|
||||
- 📍 **位置服务**:GPS定位和轨迹跟踪
|
||||
- 📸 **媒体支持**:图片、视频上传和播放
|
||||
- 💼 **离线缓存**:关键数据本地缓存
|
||||
|
||||
## 🛠 技术栈
|
||||
|
||||
| 类别 | 技术选型 | 版本 | 说明 |
|
||||
|------|----------|------|------|
|
||||
| **跨端框架** | uni-app | ^3.0.0 | 跨平台开发框架 |
|
||||
| **前端框架** | Vue 3 | ^3.3.0 | 响应式前端框架 |
|
||||
| **开发语言** | TypeScript | ^5.0.0 | 类型安全开发 |
|
||||
| **状态管理** | Pinia | ^2.1.0 | 状态管理库 |
|
||||
| **UI组件库** | uni-ui | ^1.4.0 | uni-app官方组件库 |
|
||||
| **HTTP客户端** | uni.request | 内置 | 网络请求封装 |
|
||||
| **地图服务** | 腾讯地图 | latest | 位置和导航服务 |
|
||||
| **构建工具** | Vite | ^4.4.0 | 快速构建工具 |
|
||||
| **代码规范** | ESLint + Prettier | latest | 代码质量保证 |
|
||||
|
||||
## 📂 项目结构
|
||||
|
||||
## 项目结构
|
||||
```
|
||||
mini_program/
|
||||
├── app-one/ # 小程序项目1
|
||||
│ ├── pages/ # 页面文件
|
||||
│ ├── components/ # 自定义组件
|
||||
│ ├── utils/ # 工具函数
|
||||
│ ├── app.js # 小程序入口
|
||||
│ ├── app.json # 小程序配置
|
||||
│ └── app.wxss # 全局样式
|
||||
├── app-two/ # 小程序项目2
|
||||
├── common/ # 公共资源
|
||||
│ ├── components/ # 公共组件
|
||||
│ ├── utils/ # 公共工具
|
||||
│ └── api/ # 公共API
|
||||
├── docs/ # 开发文档
|
||||
└── README.md
|
||||
├── client-mp/ # 客户端小程序
|
||||
│ ├── src/
|
||||
│ │ ├── pages/ # 页面文件
|
||||
│ │ │ ├── index/ # 首页
|
||||
│ │ │ ├── order/ # 订单相关
|
||||
│ │ │ ├── profile/ # 个人中心
|
||||
│ │ │ └── auth/ # 认证相关
|
||||
│ │ ├── components/ # 组件
|
||||
│ │ ├── stores/ # 状态管理
|
||||
│ │ ├── utils/ # 工具函数
|
||||
│ │ ├── api/ # API接口
|
||||
│ │ ├── static/ # 静态资源
|
||||
│ │ ├── App.vue # 应用入口
|
||||
│ │ └── main.ts # 主文件
|
||||
│ ├── manifest.json # 应用配置
|
||||
│ ├── pages.json # 页面配置
|
||||
│ └── package.json # 依赖配置
|
||||
├── supplier-mp/ # 供应商小程序
|
||||
│ └── ...
|
||||
├── driver-mp/ # 司机小程序
|
||||
│ └── ...
|
||||
├── staff-mp/ # 内部员工小程序
|
||||
│ └── ...
|
||||
├── common/ # 公共资源
|
||||
│ ├── components/ # 公共组件
|
||||
│ ├── utils/ # 公共工具
|
||||
│ ├── api/ # 公共API
|
||||
│ ├── types/ # 类型定义
|
||||
│ └── styles/ # 公共样式
|
||||
├── docs/ # 开发文档
|
||||
└── README.md # 项目文档
|
||||
```
|
||||
|
||||
## 小程序类型
|
||||
- 电商小程序
|
||||
- 工具类小程序
|
||||
- 内容类小程序
|
||||
- 服务类小程序
|
||||
## 🚀 快速开始
|
||||
|
||||
## 开发规范
|
||||
1. 遵循微信小程序开发规范
|
||||
2. 组件化开发
|
||||
3. 代码复用和模块化
|
||||
4. 性能优化
|
||||
### 环境要求
|
||||
- Node.js >= 16.0.0
|
||||
- HBuilderX >= 3.8.0 或 VS Code + uni-app插件
|
||||
- 微信开发者工具
|
||||
- 支付宝小程序开发工具(可选)
|
||||
|
||||
### 安装依赖
|
||||
```bash
|
||||
cd mini_program/client-mp
|
||||
npm install
|
||||
|
||||
# 安装其他小程序依赖
|
||||
cd ../supplier-mp && npm install
|
||||
cd ../driver-mp && npm install
|
||||
cd ../staff-mp && npm install
|
||||
```
|
||||
|
||||
### 开发模式
|
||||
```bash
|
||||
# 客户端小程序
|
||||
cd client-mp
|
||||
npm run dev:mp-weixin # 微信小程序
|
||||
npm run dev:mp-alipay # 支付宝小程序
|
||||
npm run dev:h5 # H5
|
||||
|
||||
# 其他小程序类似
|
||||
```
|
||||
|
||||
### 构建发布
|
||||
```bash
|
||||
# 生产环境构建
|
||||
npm run build:mp-weixin
|
||||
npm run build:mp-alipay
|
||||
npm run build:h5
|
||||
```
|
||||
|
||||
## 📱 小程序功能模块
|
||||
|
||||
### 1. 客户端小程序 (Client MP)
|
||||
**目标用户**:采购人、采购企业
|
||||
**核心功能**:
|
||||
- 📋 **订单管理**:创建采购订单、查看订单状态
|
||||
- 🚛 **运输跟踪**:实时查看运输进度和位置
|
||||
- ✅ **验收确认**:到货验收、质量确认
|
||||
- 💰 **支付结算**:查看结算单、在线支付
|
||||
- 📊 **数据统计**:采购数据分析和报表
|
||||
|
||||
### 2. 供应商小程序 (Supplier MP)
|
||||
**目标用户**:牲畜供应商
|
||||
**核心功能**:
|
||||
- 📦 **订单接收**:接收和确认采购订单
|
||||
- 🐄 **牲畜管理**:牲畜信息录入和管理
|
||||
- 📋 **检疫证明**:上传检疫合格证明
|
||||
- 🚚 **装车管理**:装车过程记录和监控
|
||||
- 📸 **现场拍照**:装车现场照片和视频
|
||||
|
||||
### 3. 司机小程序 (Driver MP)
|
||||
**目标用户**:运输司机
|
||||
**核心功能**:
|
||||
- 🚛 **车辆登记**:车辆信息和证件管理
|
||||
- 📍 **位置上报**:实时GPS位置上报
|
||||
- 📱 **状态更新**:运输状态实时更新
|
||||
- 🎥 **视频上报**:运输过程视频记录
|
||||
- 📄 **单据管理**:运输单据电子化管理
|
||||
|
||||
### 4. 内部员工小程序 (Staff MP)
|
||||
**目标用户**:企业内部员工
|
||||
**核心功能**:
|
||||
- 👥 **用户管理**:用户信息查看和管理
|
||||
- 📊 **数据监控**:业务数据实时监控
|
||||
- ⚠️ **异常处理**:异常情况处理和跟进
|
||||
- 📋 **审核管理**:订单和流程审核
|
||||
- 📈 **统计报表**:业务统计和分析
|
||||
|
||||
## 🔧 开发规范
|
||||
|
||||
### 命名规范
|
||||
- **页面文件**:kebab-case(如 `order-list.vue`)
|
||||
- **组件名**:PascalCase(如 `OrderCard.vue`)
|
||||
- **变量名**:camelCase(如 `orderInfo`)
|
||||
- **常量名**:UPPER_SNAKE_CASE(如 `API_BASE_URL`)
|
||||
|
||||
### 目录规范
|
||||
- `pages/`:页面文件,按功能模块分组
|
||||
- `components/`:组件文件,按类型分组
|
||||
- `stores/`:状态管理,按业务模块分组
|
||||
- `api/`:接口定义,按业务模块分组
|
||||
- `utils/`:工具函数,按功能分组
|
||||
|
||||
### 代码规范
|
||||
- 使用TypeScript进行类型约束
|
||||
- 使用Composition API编写组件
|
||||
- 遵循ESLint和Prettier规范
|
||||
- 组件props必须定义类型
|
||||
- 使用defineEmits定义事件
|
||||
|
||||
## 🌐 API接口
|
||||
|
||||
### 接口配置
|
||||
```typescript
|
||||
// 环境配置
|
||||
const config = {
|
||||
development: {
|
||||
baseURL: 'http://localhost:3001/api',
|
||||
wsURL: 'ws://localhost:3001'
|
||||
},
|
||||
production: {
|
||||
baseURL: 'https://api.niumall.com/api',
|
||||
wsURL: 'wss://api.niumall.com'
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 请求封装
|
||||
```typescript
|
||||
// 统一请求封装
|
||||
interface RequestOptions {
|
||||
url: string
|
||||
method?: 'GET' | 'POST' | 'PUT' | 'DELETE'
|
||||
data?: any
|
||||
header?: Record<string, string>
|
||||
}
|
||||
|
||||
const request = (options: RequestOptions) => {
|
||||
return uni.request({
|
||||
...options,
|
||||
header: {
|
||||
'Authorization': `Bearer ${getToken()}`,
|
||||
'Content-Type': 'application/json',
|
||||
...options.header
|
||||
}
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
## 📍 位置服务
|
||||
|
||||
### GPS定位
|
||||
```typescript
|
||||
// 获取当前位置
|
||||
const getCurrentLocation = () => {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.getLocation({
|
||||
type: 'gcj02',
|
||||
success: resolve,
|
||||
fail: reject
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 实时位置上报
|
||||
const startLocationTracking = () => {
|
||||
setInterval(async () => {
|
||||
try {
|
||||
const location = await getCurrentLocation()
|
||||
await reportLocation(location)
|
||||
} catch (error) {
|
||||
console.error('位置上报失败:', error)
|
||||
}
|
||||
}, 10000) // 每10秒上报一次
|
||||
}
|
||||
```
|
||||
|
||||
## 📸 媒体处理
|
||||
|
||||
### 图片上传
|
||||
```typescript
|
||||
// 选择并上传图片
|
||||
const uploadImage = () => {
|
||||
uni.chooseImage({
|
||||
count: 9,
|
||||
success: (res) => {
|
||||
res.tempFilePaths.forEach(filePath => {
|
||||
uni.uploadFile({
|
||||
url: `${config.baseURL}/upload`,
|
||||
filePath,
|
||||
name: 'file',
|
||||
header: {
|
||||
'Authorization': `Bearer ${getToken()}`
|
||||
},
|
||||
success: (uploadRes) => {
|
||||
console.log('上传成功:', uploadRes)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
## 💾 数据缓存
|
||||
|
||||
### 本地存储
|
||||
```typescript
|
||||
// 缓存管理
|
||||
class CacheManager {
|
||||
static set(key: string, value: any, expire?: number) {
|
||||
const data = {
|
||||
value,
|
||||
expire: expire ? Date.now() + expire : null
|
||||
}
|
||||
uni.setStorageSync(key, JSON.stringify(data))
|
||||
}
|
||||
|
||||
static get(key: string) {
|
||||
try {
|
||||
const data = JSON.parse(uni.getStorageSync(key))
|
||||
if (data.expire && Date.now() > data.expire) {
|
||||
this.remove(key)
|
||||
return null
|
||||
}
|
||||
return data.value
|
||||
} catch {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
static remove(key: string) {
|
||||
uni.removeStorageSync(key)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 🔐 权限管理
|
||||
|
||||
### 登录状态管理
|
||||
```typescript
|
||||
// 登录状态检查
|
||||
const checkAuth = () => {
|
||||
const token = CacheManager.get('token')
|
||||
if (!token) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/auth/login'
|
||||
})
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// 页面访问权限
|
||||
const checkPagePermission = (userRole: string, requiredRole: string[]) => {
|
||||
return requiredRole.includes(userRole)
|
||||
}
|
||||
```
|
||||
|
||||
## 🧪 测试策略
|
||||
|
||||
### 单元测试
|
||||
- 工具函数测试
|
||||
- 组件功能测试
|
||||
- API接口测试
|
||||
- 状态管理测试
|
||||
|
||||
### 真机测试
|
||||
- 多设备兼容性测试
|
||||
- 网络环境测试
|
||||
- 性能压力测试
|
||||
- 用户体验测试
|
||||
|
||||
## 📦 发布部署
|
||||
|
||||
### 微信小程序发布
|
||||
1. 使用微信开发者工具打开项目
|
||||
2. 点击「上传」按钮上传代码
|
||||
3. 登录微信公众平台提交审核
|
||||
4. 审核通过后发布上线
|
||||
|
||||
### 支付宝小程序发布
|
||||
1. 使用支付宝小程序开发工具打开项目
|
||||
2. 点击「上传」按钮上传代码
|
||||
3. 登录支付宝开放平台提交审核
|
||||
4. 审核通过后发布上线
|
||||
|
||||
## 🤝 贡献指南
|
||||
|
||||
1. **Fork** 仓库
|
||||
2. **创建**特性分支 (`git checkout -b feature/AmazingFeature`)
|
||||
3. **提交**更改 (`git commit -m 'Add some AmazingFeature'`)
|
||||
4. **推送**到分支 (`git push origin feature/AmazingFeature`)
|
||||
5. **开启** Pull Request
|
||||
|
||||
---
|
||||
|
||||
**🎯 让移动办公更便捷,让业务管理更高效!**
|
||||
Reference in New Issue
Block a user