地图订单修改
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { UserInfo, Marker } from '../../../types';
|
||||
import { avatarCache } from '../../../utils/avatarCache';
|
||||
import { API_BASE_URL } from '../../../services/apiService';
|
||||
|
||||
/**
|
||||
* 页面数据管理模块
|
||||
@@ -203,19 +204,22 @@ export class DataModule {
|
||||
const processedPerson = { ...person };
|
||||
if (person.avatarPath) {
|
||||
try {
|
||||
// 只有在用户已签到的情况下才使用头像缓存
|
||||
const app = getApp<any>();
|
||||
const isSignedIn = app.globalData.userInfo && app.globalData.userInfo.status === 'signed_in';
|
||||
|
||||
if (isSignedIn) {
|
||||
processedPerson.avatarPath = await avatarCache.getAvatarPath(person.avatarPath);
|
||||
} else {
|
||||
// 未签到状态,直接使用原始路径
|
||||
processedPerson.avatarPath = person.avatarPath;
|
||||
// 将相对路径转换为完整URL
|
||||
let avatarUrl = person.avatarPath;
|
||||
if (!avatarUrl.startsWith('http')) {
|
||||
avatarUrl = `${API_BASE_URL}${avatarUrl}`;
|
||||
}
|
||||
|
||||
// 使用头像缓存获取本地图片路径
|
||||
processedPerson.avatarPath = await avatarCache.getAvatarPath(avatarUrl);
|
||||
} catch (error) {
|
||||
console.error('处理货运人员头像缓存失败:', error);
|
||||
// 如果头像缓存失败,使用默认头像
|
||||
processedPerson.avatarPath = '/images/user-avatar.png';
|
||||
}
|
||||
} else {
|
||||
// 如果没有头像路径,使用默认头像
|
||||
processedPerson.avatarPath = '/images/user-avatar.png';
|
||||
}
|
||||
|
||||
this.pageContext.setData({ currentDeliveryPerson: processedPerson });
|
||||
|
||||
@@ -170,13 +170,14 @@ export class LocationModule {
|
||||
zIndex: 30,
|
||||
data: {
|
||||
userId: user.userId,
|
||||
name: user.name || user.userName || `用户${user.userId}`,
|
||||
role: userRole,
|
||||
avatarPath: user.avatarPath || undefined,
|
||||
latitude: latitude, // 直接使用纬度字段
|
||||
longitude: longitude, // 直接使用经度字段
|
||||
timestamp: user.timestamp || lastUpdateTime,
|
||||
lastUpdateTime: lastUpdateTime,
|
||||
currentLocation: {
|
||||
address: user.address || '位置信息获取中...',
|
||||
longitude: longitude,
|
||||
latitude: latitude
|
||||
}
|
||||
status: user.status || 'online'
|
||||
}
|
||||
};
|
||||
|
||||
@@ -294,20 +295,20 @@ export class LocationModule {
|
||||
// 优先使用传入的用户数据中的头像信息
|
||||
if (userData) {
|
||||
// 尝试使用avatarPath(相对路径)
|
||||
if (userData.avatarPath) {
|
||||
if (userData.avatarPath && userData.avatarPath !== 'null') {
|
||||
console.log(`📸 [LocationModule] 使用用户数据中的avatarPath: ${userData.avatarPath}`);
|
||||
const fullAvatarUrl = `${API_BASE_URL}${userData.avatarPath}`;
|
||||
return await avatarCache.getAvatarPath(fullAvatarUrl);
|
||||
}
|
||||
|
||||
// 尝试使用avatarUrl(完整URL)
|
||||
if (userData.avatarUrl) {
|
||||
if (userData.avatarUrl && userData.avatarUrl !== 'null') {
|
||||
console.log(`📸 [LocationModule] 使用用户数据中的avatarUrl: ${userData.avatarUrl}`);
|
||||
return await avatarCache.getAvatarPath(userData.avatarUrl);
|
||||
}
|
||||
|
||||
// 尝试使用avatar(兼容字段)
|
||||
if (userData.avatar) {
|
||||
if (userData.avatar && userData.avatar !== 'null') {
|
||||
console.log(`📸 [LocationModule] 使用用户数据中的avatar: ${userData.avatar}`);
|
||||
return await avatarCache.getAvatarPath(userData.avatar);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ import userService from '../../../services/userService';
|
||||
import { showToast } from '../../../utils/helpers';
|
||||
import { Marker } from '../../../types';
|
||||
import { DataModule } from './dataModule';
|
||||
import warehouseService from '../../../services/warehouseService';
|
||||
import deliveryService from '../../../services/deliveryPersonService';
|
||||
|
||||
export class MapModule {
|
||||
private pageContext: any;
|
||||
@@ -152,15 +154,65 @@ export class MapModule {
|
||||
/**
|
||||
* 加载地图数据(仓库和货运人员)
|
||||
*/
|
||||
loadMapData(): void {
|
||||
// 这里会调用具体的服务来获取数据
|
||||
// 目前使用模拟数据
|
||||
const markers = this.generateInitialMarkers();
|
||||
async loadMapData(): Promise<void> {
|
||||
try {
|
||||
// 调用具体的服务来获取数据
|
||||
const warehouses = await warehouseService.getWarehouses();
|
||||
const deliveryPersons = await deliveryService.getDeliveryPersons();
|
||||
|
||||
// 生成标记点
|
||||
const markers = this.generateMarkersFromData(warehouses, deliveryPersons);
|
||||
|
||||
// 更新数据模块中的标记点
|
||||
this.dataModule.updateMarkers(markers);
|
||||
|
||||
console.log('地图数据加载完成');
|
||||
} catch (error) {
|
||||
console.error('加载地图数据失败:', error);
|
||||
// 如果API调用失败,使用空标记点
|
||||
this.dataModule.updateMarkers([]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 从数据生成标记点
|
||||
*/
|
||||
private generateMarkersFromData(warehouses: any[], deliveryPersons: any[]): Marker[] {
|
||||
const markers: Marker[] = [];
|
||||
|
||||
// 更新数据模块中的标记点
|
||||
this.dataModule.updateMarkers(markers);
|
||||
// 添加仓库标记点
|
||||
warehouses.forEach(warehouse => {
|
||||
if (warehouse.longitude && warehouse.latitude) {
|
||||
markers.push({
|
||||
id: warehouse.id,
|
||||
latitude: warehouse.latitude,
|
||||
longitude: warehouse.longitude,
|
||||
title: warehouse.name,
|
||||
iconPath: '/images/warehouse-marker.png',
|
||||
width: 30,
|
||||
height: 30,
|
||||
type: 'warehouse'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
console.log('地图数据加载完成');
|
||||
// 添加货运人员标记点
|
||||
deliveryPersons.forEach(person => {
|
||||
if (person.longitude && person.latitude) {
|
||||
markers.push({
|
||||
id: person.id,
|
||||
latitude: person.latitude,
|
||||
longitude: person.longitude,
|
||||
title: person.name,
|
||||
iconPath: '/images/delivery-marker.png',
|
||||
width: 30,
|
||||
height: 30,
|
||||
type: 'employee'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return markers;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import mapService from '../../../services/mapService';
|
||||
import orderService from '../../../services/orderService';
|
||||
import { Order } from '../../../types';
|
||||
import { showToast } from '../../../utils/helpers';
|
||||
@@ -76,13 +77,8 @@ export class OrderModule {
|
||||
|
||||
console.log(`开始规划路线: 起点=${origin}, 终点=${destination}`);
|
||||
|
||||
// 这里应该调用地图服务的路线规划功能
|
||||
// 目前先模拟一个简单的路线规划结果
|
||||
const routeResult = {
|
||||
distance: 1500, // 1.5公里
|
||||
duration: 300, // 5分钟
|
||||
polyline: null // 路线数据
|
||||
};
|
||||
// 调用地图服务的路线规划功能
|
||||
const routeResult = await mapService.calculateRoute(origin, destination);
|
||||
|
||||
console.log('路线规划结果:', routeResult);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user