Files
WXProgram/miniprogram/pages/index/modules/deliveryPersonModule.ts
2025-10-19 23:38:54 +08:00

132 lines
3.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 员工模块 - 处理所有员工(管理员和货运人员)管理、位置跟踪、交互
import employeeService from '../../../services/employeeService';
// 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<void> {
try {
// 获取所有员工数据
const allEmployees = await employeeService.getEmployees();
console.log('所有员工数据加载完成,数量:', allEmployees.length);
} catch (error) {
console.error('加载员工数据失败:', error);
showToast('加载员工数据失败');
}
}
/**
* 显示货运人员详情面板
*/
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;
}
}