添加管理员逻辑

This commit is contained in:
2025-10-19 23:38:54 +08:00
parent 118ec38550
commit 5ee4e077fb
46 changed files with 5263 additions and 883 deletions

213
README.md
View File

@@ -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" // 注册结果消息
}
```