// 员工模块 - 处理所有员工(管理员和货运人员)管理、位置跟踪、交互 import employeeService from '../../../services/employeeService'; import { Role } from '../../../utils/roleUtils'; // getApp是微信小程序全局函数,无需导入 import { showToast } from '../../../utils/helpers'; import { DataModule } from './dataModule'; export class EmployeeModule { private pageContext: any; private dataModule: DataModule; constructor(pageContext: any, dataModule: DataModule) { this.pageContext = pageContext; this.dataModule = dataModule; } /** * 加载所有员工数据(包括管理员和货运人员) */ async loadAllEmployees(): Promise { try { // 获取所有员工数据 const allEmployees = await employeeService.getEmployees(); console.log('所有员工数据加载完成,数量:', allEmployees.length); } catch (error) { console.error('加载员工数据失败:', error); showToast('加载员工数据失败'); } } /** * 获取员工角色对应的图标 */ private getEmployeeIcon(role: string): string { console.log(`获取员工图标,角色: ${role}`); // 根据角色使用不同的图标 let iconPath = ''; switch (role) { case Role.ADMIN: // 管理员使用皇冠图标 iconPath = '/images/crown.png'; console.log('使用管理员图标(👑)'); break; case Role.DELIVERY_PERSON: // 货运人员使用货车图标 iconPath = '/images/truck.png'; console.log('使用货运人员图标(🚚)'); break; default: // 默认使用货车图标 iconPath = '/images/truck.png'; console.log('使用默认图标(🚚)'); break; } console.log(`最终使用图标路径: ${iconPath}`); return iconPath; } /** * 显示货运人员详情面板 */ showDeliveryPersonPanel(person: any, position: { x: number, y: number }): void { // 关闭其他面板 this.pageContext.hideAllPanels(); this.dataModule.setCurrentDeliveryPerson(person); this.dataModule.setPanelPosition(position); this.dataModule.toggleDeliveryPersonModal(true, 'bottom'); } /** * 隐藏货运人员详情面板 */ hideDeliveryPersonPanel(): void { this.dataModule.toggleDeliveryPersonModal(false); this.dataModule.setCurrentDeliveryPerson(null); } /** * 展开货运人员详情面板 */ expandDeliveryPersonPanel(): void { this.dataModule.toggleDeliveryPersonModal(true, 'full'); } /** * 收起货运人员详情面板 */ collapseDeliveryPersonPanel(): void { this.dataModule.toggleDeliveryPersonModal(true, 'bottom'); } /** * 处理货运人员标记点点击 */ onDeliveryPersonMarkerClick(person: any, position: { x: number, y: number }): void { console.log('货运人员被点击:', person); // 显示货运人员详情面板 this.showDeliveryPersonPanel(person, position); } /** * 获取货运人员状态文本 */ getDeliveryPersonStatusText(status: string): string { const statusMap: Record = { 'idle': '空闲', 'busy': '忙碌', 'offline': '离线' }; return statusMap[status] || status; } /** * 获取货运人员状态颜色 */ getDeliveryPersonStatusColor(status: string): string { switch (status) { case 'idle': return '#52c41a'; // 绿色 case 'busy': return '#faad14'; // 橙色 case 'offline': return '#d9d9d9'; // 灰色 default: return '#d9d9d9'; // 灰色 } } /** * 获取货运人员当前订单信息 */ getCurrentOrderInfo(person: any): string { if (!person.currentOrder) { return '暂无订单'; } const order = person.currentOrder; return `订单 #${order.id} - ${this.getOrderStatusText(order.status)}`; } /** * 获取订单状态文本 */ private getOrderStatusText(status: string): string { const statusMap: Record = { 'pending': '未分配', 'assigned': '已分配', 'in_transit': '配送中', 'delivered': '已完成', 'cancelled': '已取消' }; return statusMap[status] || status; } }