// 货运人员模块 - 专门处理货运人员相关功能 import { showToast } from '../../utils/helpers'; import { DataModule } from './dataModule'; export class DeliveryPersonModule { private pageContext: any; private dataModule: DataModule; constructor(pageContext: any, dataModule: DataModule) { this.pageContext = pageContext; this.dataModule = dataModule; } /** * 处理货运人员标记点点击 */ onDeliveryPersonMarkerClick(deliveryPerson: any, position: { x: number, y: number }): void { console.log('货运人员被点击:', deliveryPerson); // 显示货运人员详情面板(包含订单列表) this.showDeliveryPersonPanel(deliveryPerson, position); } /** * 显示货运人员详情面板 */ private showDeliveryPersonPanel(deliveryPerson: any, position: { x: number, y: number }): void { console.log('显示货运人员详情面板:', deliveryPerson); // 设置当前货运人员 this.dataModule.setCurrentDeliveryPerson(deliveryPerson); // 显示面板 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'); } /** * 获取货运人员信息摘要 */ getDeliveryPersonSummary(deliveryPerson: any): string { return `${deliveryPerson.name || '货运人员'} - ${deliveryPerson.role || 'DRIVER'}`; } /** * 获取货运人员状态文本 */ 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; } /** * 清理资源 */ cleanup(): void { console.log('清理货运人员模块资源'); } }