添加管理员逻辑
This commit is contained in:
213
README.md
213
README.md
@@ -41,11 +41,110 @@
|
||||
- **位置历史记录**: 记录货运人员位置历史轨迹
|
||||
- **位置列表更新机制**: 系统通过WebSocket被动接收服务器推送的位置列表更新,不主动请求刷新
|
||||
|
||||
### 🐛 问题修复记录
|
||||
|
||||
#### 2024年12月19日修复
|
||||
|
||||
**1. TypeError错误修复**
|
||||
- **问题**: `mainPageModule.ts`中`MainPageModule`接口声明了`cleanup()`方法但类实现中缺失该方法
|
||||
- **错误表现**: 页面销毁时调用`detached`生命周期方法触发TypeError
|
||||
- **修复方案**: 在`MainPageModule`类中添加`cleanup()`方法实现,包含资源清理日志和调用`locationModule.cleanup()`
|
||||
|
||||
**2. 签退后签到按钮不显示问题**
|
||||
- **问题**: 用户签退后签到按钮不再显示
|
||||
- **根本原因**: 签退后调用`refreshAllData()`方法触发登录状态检查,导致`authStatus.hasWxCode`被重置为`false`
|
||||
- **修复方案**: 移除签退后调用`refreshAllData()`的逻辑,确保签退后用户状态更新为`signed_out`且`authStatus.hasWxCode`保持`true`
|
||||
- **显示条件**: 签到按钮显示需要满足:已获取微信code、用户状态为registered/signed_out且非游客角色
|
||||
|
||||
**3. 管理界面跳转导致页面销毁问题**
|
||||
- **问题**: 点击管理按钮跳转后,返回时页面状态丢失
|
||||
- **根本原因**: `goToManagementPage()`方法使用`wx.redirectTo()`跳转,导致当前页面被销毁触发`detached`生命周期清理资源
|
||||
- **修复方案**: 将跳转方式改为`wx.navigateTo()`,保持页面栈状态
|
||||
- **效果**: 用户返回时页面状态和登录数据得以保留,签到按钮正常显示
|
||||
|
||||
### 🔧 系统管理功能
|
||||
- **API配置管理**: 可以配置API服务器地址等参数
|
||||
- **调试信息显示**: 显示系统运行状态和调试信息
|
||||
- **模块化架构**: 基于模块化设计,便于功能扩展和维护
|
||||
|
||||
### 👑 管理员管理逻辑
|
||||
|
||||
#### 管理员界面 (admin-dashboard)
|
||||
- **功能菜单**: 提供6个核心管理功能入口
|
||||
- 员工管理 (👥): 管理员工信息
|
||||
- 订单管理 (📦): 处理订单分配
|
||||
- 仓库管理 (🏭): 管理库存信息
|
||||
- 数据统计 (📊): 查看业务数据
|
||||
- 系统设置 (⚙️): 系统配置管理
|
||||
- 地图监控 (🗺️): 实时位置监控
|
||||
- **系统概览**: 显示员工总数、订单总数、仓库数量等关键指标
|
||||
- **权限验证**: 自动验证用户是否为管理员角色
|
||||
|
||||
#### 员工管理 (employee-management)
|
||||
**核心方法**:
|
||||
- `loadEmployees()`: 加载员工列表,支持搜索过滤
|
||||
- `submitAddForm()`: 提交添加员工表单,包含表单验证
|
||||
- `deleteEmployee()`: 删除员工,包含确认对话框
|
||||
- `validateForm()`: 验证员工信息(姓名、手机号、角色)
|
||||
- `getFilteredEmployees()`: 根据关键词过滤员工列表
|
||||
|
||||
**功能特性**:
|
||||
- **双标签页设计**: 员工列表页和添加员工页
|
||||
- **实时搜索**: 支持按姓名、手机号、角色搜索
|
||||
- **表单验证**: 手机号格式验证、必填项检查
|
||||
- **权限控制**: 过滤当前登录用户,防止误删
|
||||
- **角色管理**: 支持管理员和配送员角色分配
|
||||
|
||||
#### 订单管理 (order-management)
|
||||
**核心方法**:
|
||||
- `refreshData()`: 刷新订单和员工数据
|
||||
- `createOrder()`: 创建新订单,包含完整表单验证
|
||||
- `assignOrder()`: 指派订单给合适的货运人员
|
||||
- `updateOrderStatus()`: 更新订单状态
|
||||
- `filterOrders()`: 按状态过滤订单列表
|
||||
|
||||
**功能特性**:
|
||||
- **多状态管理**: 支持pending/assigned/in_transit/delivered/cancelled状态
|
||||
- **智能指派**: 自动筛选空闲状态的货运人员
|
||||
- **订单详情**: 显示订单起点、终点、货物信息
|
||||
- **实时更新**: 下拉刷新获取最新数据
|
||||
- **批量操作**: 支持批量指派和状态更新
|
||||
|
||||
#### 仓库管理 (warehouse-management)
|
||||
**核心方法**:
|
||||
- `loadWarehouses()`: 加载仓库列表
|
||||
- `submitAddForm()`: 提交添加仓库表单
|
||||
- `deleteWarehouse()`: 删除仓库,包含确认对话框
|
||||
- `filterWarehouses()`: 按名称、地址、联系人搜索仓库
|
||||
- `getWarehouseInventoryStatus()`: 获取库存状态评估
|
||||
|
||||
**功能特性**:
|
||||
- **库存监控**: 实时显示库存状态(充足/正常/偏低/不足)
|
||||
- **位置管理**: 支持仓库经纬度坐标管理
|
||||
- **容量管理**: 设置仓库最大容量限制
|
||||
- **状态管理**: 支持营业中/已关闭/维护中状态
|
||||
- **联系人管理**: 仓库联系人和电话信息
|
||||
|
||||
#### 员工界面 (employee-dashboard)
|
||||
**功能菜单**:
|
||||
- 我的订单 (📦): 查看分配订单
|
||||
- 位置上报 (📍): 上报当前位置
|
||||
- 工作安排 (📅): 查看工作计划
|
||||
- 个人信息 (👤): 个人资料管理
|
||||
- 消息通知 (📨): 查看系统消息
|
||||
- 帮助中心 (❓): 使用帮助文档
|
||||
|
||||
**工作统计**:
|
||||
- 今日订单数量
|
||||
- 已完成订单数量
|
||||
- 待处理订单数量
|
||||
|
||||
#### 权限控制机制
|
||||
- **角色验证**: 管理员界面自动验证用户角色
|
||||
- **访问限制**: 非管理员用户自动跳转回首页
|
||||
- **数据隔离**: 员工列表过滤当前登录用户
|
||||
- **功能权限**: 不同角色显示不同的功能菜单
|
||||
|
||||
## 技术架构
|
||||
|
||||
### 模块化架构设计
|
||||
@@ -92,19 +191,52 @@
|
||||
- 响应: `{ user: UserInfo, token: string, openid: string, session_key: string }`
|
||||
|
||||
2. **用户签到** - `POST /user/signin`
|
||||
- 请求: `{ userId: number }`
|
||||
- 响应: `{ success: boolean, userInfo: UserInfo, message?: string }`
|
||||
- **请求参数**: `{ latitude: number, longitude: number, timestamp: number }`
|
||||
- **成功响应**:
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"userInfo": {
|
||||
"id": 123,
|
||||
"name": "张三",
|
||||
"phone": "13800138000",
|
||||
"role": "DELIVERY_PERSON",
|
||||
"openid": "oK4fS5ABCDEF123456"
|
||||
}
|
||||
}
|
||||
```
|
||||
- **失败响应**:
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"message": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
3. **用户签退** - `POST /user/signout`
|
||||
- 请求: `{ userId: number }`
|
||||
- 响应: `{ success: boolean, message?: string }`
|
||||
- **请求参数**: `{ userId: number }`
|
||||
- **成功响应**:
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "签退成功"
|
||||
}
|
||||
```
|
||||
- **失败响应**:
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"message": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
4. **获取用户状态** - `GET /user/status`
|
||||
- 响应: `{ status: 'signed_in' | 'signed_out' | 'registered' | 'unregistered'; lastSignInTime?: string; lastSignOutTime?: string }`
|
||||
|
||||
5. **用户注册** - `POST /user/register`
|
||||
- 请求: `{ name: string, phone: string }`
|
||||
- 响应: `{ success: boolean, employeeInfo: EmployeeInfo, message?: string }`
|
||||
5.2. **用户注册** - `POST /user/register`
|
||||
- **请求参数**: `{ name: string, phone: string }`
|
||||
- **服务器响应**: `{ success: boolean, userInfo: UserInfoResponse, message?: string }`
|
||||
- **说明**: 服务器采用统一的DTO响应格式,包含success字段和userInfo对象
|
||||
|
||||
6. **获取用户信息** - `GET /user/info`
|
||||
- 响应: `UserInfo`
|
||||
@@ -300,36 +432,63 @@
|
||||
}
|
||||
```
|
||||
|
||||
3. **签到响应**
|
||||
```json
|
||||
{
|
||||
"success": boolean, // 签到是否成功
|
||||
"message": "string", // 签到结果消息
|
||||
"userInfo": { // 更新后的用户信息
|
||||
"id": number,
|
||||
"name": "string",
|
||||
"avatarUrl": "string",
|
||||
"nickName": "string",
|
||||
"phone": "string",
|
||||
"role": "string",
|
||||
"lastSignInTime": number
|
||||
}
|
||||
}
|
||||
```
|
||||
3. **签到响应(服务器DTO格式)**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"userInfo": {
|
||||
"id": 123,
|
||||
"name": "张三",
|
||||
"phone": "13800138000",
|
||||
"role": "DELIVERY_PERSON"
|
||||
},
|
||||
"message": "签到成功"
|
||||
}
|
||||
```
|
||||
|
||||
4. **前端转换后的签到响应格式**
|
||||
```json
|
||||
{
|
||||
"success": true, // 签到是否成功
|
||||
"employeeInfo": { // 员工信息
|
||||
"id": number,
|
||||
"name": "string",
|
||||
"phone": "string",
|
||||
"role": "string"
|
||||
},
|
||||
"message": "签到成功" // 签到结果消息
|
||||
}
|
||||
```
|
||||
|
||||
5. **签退响应(服务器DTO格式)**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "签退成功"
|
||||
}
|
||||
```
|
||||
|
||||
6. **前端转换后的签退响应格式**
|
||||
```json
|
||||
{
|
||||
"success": true, // 签退是否成功
|
||||
"message": "签退成功" // 签退结果消息
|
||||
}
|
||||
```
|
||||
|
||||
**重要说明**: 服务器现在采用统一的DTO响应格式,包含success字段和message字段。前端代码已适配新的DTO格式,直接使用服务器返回的success和message字段。签到和注册接口返回userInfo对象,前端转换为employeeInfo格式以保持兼容性。
|
||||
|
||||
4. **注册响应**
|
||||
```json
|
||||
{
|
||||
"success": boolean, // 注册是否成功
|
||||
"message": "string", // 注册结果消息
|
||||
"userInfo": { // 注册后的用户信息
|
||||
"id": number,
|
||||
"name": "string",
|
||||
"avatarUrl": "string",
|
||||
"nickName": "string",
|
||||
"phone": "string",
|
||||
"role": "string"
|
||||
}
|
||||
},
|
||||
"message": "string" // 注册结果消息
|
||||
}
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user