Files
WXProgram/miniprogram/pages/index/modules/deliveryPersonModule.ts

132 lines
3.4 KiB
TypeScript
Raw Normal View History

// 员工模块 - 处理所有员工(管理员和货运人员)管理、位置跟踪、交互
import employeeService from '../../../services/employeeService';
2025-10-19 23:38:54 +08:00
// getApp是微信小程序全局函数无需导入
2025-10-16 21:32:16 +08:00
import { showToast } from '../../../utils/helpers';
import { DataModule } from './dataModule';
export class EmployeeModule {
2025-10-16 21:32:16 +08:00
private pageContext: any;
private dataModule: DataModule;
constructor(pageContext: any, dataModule: DataModule) {
this.pageContext = pageContext;
this.dataModule = dataModule;
}
/**
*
2025-10-16 21:32:16 +08:00
*/
async loadAllEmployees(): Promise<void> {
2025-10-16 21:32:16 +08:00
try {
// 获取所有员工数据
const allEmployees = await employeeService.getEmployees();
2025-10-16 21:32:16 +08:00
console.log('所有员工数据加载完成,数量:', allEmployees.length);
2025-10-16 21:32:16 +08:00
} catch (error) {
console.error('加载员工数据失败:', error);
showToast('加载员工数据失败');
2025-10-16 21:32:16 +08:00
}
}
2025-10-19 23:38:54 +08:00
2025-10-16 21:32:16 +08:00
/**
*
*/
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<string, string> = {
'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<string, string> = {
'pending': '未分配',
'assigned': '已分配',
'in_transit': '配送中',
'delivered': '已完成',
'cancelled': '已取消'
};
return statusMap[status] || status;
}
}