255 lines
7.0 KiB
JavaScript
255 lines
7.0 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.DataModule = void 0;
|
|
/**
|
|
* 页面数据管理模块
|
|
* 负责管理index页面的所有数据状态
|
|
*/
|
|
class DataModule {
|
|
constructor(pageContext) {
|
|
this.pageContext = pageContext;
|
|
}
|
|
/**
|
|
* 初始化页面数据
|
|
*/
|
|
async initializeData() {
|
|
// 检查是否已静默登录,如果是则尝试获取真实位置
|
|
let initialLongitude = 102.833722;
|
|
let initialLatitude = 24.880095;
|
|
const app = getApp();
|
|
if (app.globalData.isLoggedIn) {
|
|
try {
|
|
// 导入地图服务
|
|
const mapService = require('../../../services/mapService').default;
|
|
const location = await mapService.getCurrentLocation();
|
|
if (location && !isNaN(location.latitude) && !isNaN(location.longitude)) {
|
|
initialLongitude = location.longitude;
|
|
initialLatitude = location.latitude;
|
|
console.log('[DATA MODULE] 静默登录后使用真实位置:', location);
|
|
}
|
|
}
|
|
catch (error) {
|
|
console.warn('[DATA MODULE] 获取真实位置失败,使用默认位置:', error);
|
|
}
|
|
}
|
|
this.pageContext.setData({
|
|
// 地图相关数据
|
|
longitude: initialLongitude,
|
|
latitude: initialLatitude,
|
|
scale: 13,
|
|
markers: [],
|
|
polyline: null,
|
|
showRoute: false,
|
|
routeDistance: 0,
|
|
routeDuration: 0,
|
|
currentRoute: null,
|
|
// 用户相关数据
|
|
userInfo: null,
|
|
isLoggedIn: false,
|
|
showUserPanel: false,
|
|
// 订单相关数据
|
|
pendingOrders: [],
|
|
showOrderPanel: false,
|
|
currentOrder: null,
|
|
// 货运人员相关数据
|
|
showDeliveryPersonModal: false,
|
|
deliveryPersonModalState: 'bottom',
|
|
currentDeliveryPerson: null,
|
|
// 仓库相关数据
|
|
showWarehouseModal: false,
|
|
warehouseModalState: 'bottom',
|
|
currentWarehouse: null,
|
|
// 面板位置数据
|
|
currentPanelPosition: { x: 0, y: 0 },
|
|
// 对话框相关数据
|
|
showNickNameDialog: false,
|
|
tempNickName: ''
|
|
});
|
|
}
|
|
/**
|
|
* 更新用户信息
|
|
*/
|
|
updateUserInfo(userInfo) {
|
|
this.pageContext.setData({
|
|
userInfo,
|
|
isLoggedIn: !!userInfo
|
|
});
|
|
// 更新按钮显示状态
|
|
if (this.pageContext.updateButtonDisplayStatus) {
|
|
this.pageContext.updateButtonDisplayStatus();
|
|
}
|
|
}
|
|
/**
|
|
* 设置登录状态
|
|
*/
|
|
setLoginStatus(isLoggedIn) {
|
|
this.pageContext.setData({
|
|
isLoggedIn
|
|
});
|
|
}
|
|
/**
|
|
* 设置地图缩放级别
|
|
*/
|
|
setMapScale(scale) {
|
|
this.pageContext.setData({
|
|
scale
|
|
});
|
|
}
|
|
/**
|
|
* 更新用户位置信息
|
|
*/
|
|
updateUserLocation(latitude, longitude) {
|
|
this.pageContext.setData({
|
|
latitude,
|
|
longitude
|
|
});
|
|
}
|
|
/**
|
|
* 更新地图标记点
|
|
*/
|
|
updateMarkers(markers) {
|
|
// 验证每个标记点的坐标
|
|
const validatedMarkers = markers.map((marker) => {
|
|
// 检查经纬度是否为有效数字
|
|
if (isNaN(marker.longitude) || isNaN(marker.latitude)) {
|
|
// 为无效坐标设置默认值
|
|
return {
|
|
...marker,
|
|
longitude: 102.833722, // 默认经度
|
|
latitude: 24.880095 // 默认纬度
|
|
};
|
|
}
|
|
else {
|
|
return marker;
|
|
}
|
|
});
|
|
// 执行更新
|
|
this.pageContext.setData({ markers: validatedMarkers });
|
|
}
|
|
/**
|
|
* 更新待分配订单列表
|
|
*/
|
|
updatePendingOrders(orders) {
|
|
this.pageContext.setData({ pendingOrders: orders });
|
|
}
|
|
/**
|
|
* 设置当前选中订单
|
|
*/
|
|
setCurrentOrder(order) {
|
|
this.pageContext.setData({ currentOrder: order });
|
|
}
|
|
/**
|
|
* 设置当前选中货运人员
|
|
*/
|
|
setCurrentDeliveryPerson(person) {
|
|
this.pageContext.setData({ currentDeliveryPerson: person });
|
|
}
|
|
/**
|
|
* 设置当前选中仓库
|
|
*/
|
|
setCurrentWarehouse(warehouse) {
|
|
this.pageContext.setData({ currentWarehouse: warehouse });
|
|
}
|
|
/**
|
|
* 设置面板位置
|
|
*/
|
|
setPanelPosition(position) {
|
|
this.pageContext.setData({ currentPanelPosition: position });
|
|
}
|
|
/**
|
|
* 显示/隐藏用户面板
|
|
*/
|
|
toggleUserPanel(show) {
|
|
this.pageContext.setData({ showUserPanel: show });
|
|
}
|
|
/**
|
|
* 显示/隐藏订单面板
|
|
*/
|
|
toggleOrderPanel(show) {
|
|
this.pageContext.setData({ showOrderPanel: show });
|
|
}
|
|
/**
|
|
* 显示/隐藏仓库弹窗
|
|
*/
|
|
toggleWarehouseModal(show, state = 'bottom') {
|
|
this.pageContext.setData({
|
|
showWarehouseModal: show,
|
|
warehouseModalState: state
|
|
});
|
|
}
|
|
/**
|
|
* 显示/隐藏货运人员弹窗
|
|
*/
|
|
toggleDeliveryPersonModal(show, state = 'bottom') {
|
|
this.pageContext.setData({
|
|
showDeliveryPersonModal: show,
|
|
deliveryPersonModalState: state
|
|
});
|
|
}
|
|
/**
|
|
* 显示/隐藏昵称修改对话框
|
|
*/
|
|
toggleNickNameDialog(show, tempNickName = '') {
|
|
this.pageContext.setData({
|
|
showNickNameDialog: show,
|
|
tempNickName
|
|
});
|
|
}
|
|
/**
|
|
* 更新路线信息
|
|
*/
|
|
updateRouteInfo(polyline, distance, duration) {
|
|
this.pageContext.setData({
|
|
polyline,
|
|
routeDistance: distance,
|
|
routeDuration: duration,
|
|
showRoute: true
|
|
});
|
|
}
|
|
/**
|
|
* 清除路线信息
|
|
*/
|
|
clearRouteInfo() {
|
|
this.pageContext.setData({
|
|
polyline: null,
|
|
showRoute: false,
|
|
routeDistance: 0,
|
|
routeDuration: 0,
|
|
currentRoute: null
|
|
});
|
|
}
|
|
/**
|
|
* 获取当前数据状态
|
|
*/
|
|
getData() {
|
|
return this.pageContext.data;
|
|
}
|
|
/**
|
|
* 重置所有数据到初始状态
|
|
*/
|
|
resetAllData() {
|
|
this.initializeData();
|
|
}
|
|
/**
|
|
* 获取位置模块(用于其他模块访问位置模块)
|
|
*/
|
|
getLocationModule() {
|
|
// 通过页面上下文获取位置模块
|
|
if (this.pageContext.data.mainPageModule) {
|
|
return this.pageContext.data.mainPageModule.getLocationModule();
|
|
}
|
|
return null;
|
|
}
|
|
/**
|
|
* 获取地图模块(用于其他模块访问地图模块)
|
|
*/
|
|
getMapModule() {
|
|
// 通过页面上下文获取地图模块
|
|
if (this.pageContext.data.mainPageModule) {
|
|
return this.pageContext.data.mainPageModule.getMapModule();
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
exports.DataModule = DataModule;
|