Files
2025-10-19 23:38:54 +08:00

203 lines
5.0 KiB
TypeScript

export interface IAppOption {
globalData: {
userInfo: WechatMiniprogram.UserInfo | null;
isLoggedIn: boolean;
openid?: string;
session_key?: string;
};
// 声明应用实例上的方法
onLaunch(): void;
showAuthModal(): Promise<boolean>;
doGlobalLogin(): Promise<boolean>;
getWxLoginCode(): Promise<string | null>;
doGlobalLogout(): void;
// 其他可能的方法...
}
// 搜索结果接口
export interface SearchResult {
id: string;
name: string;
address: string;
longitude: number;
latitude: number;
phone: string;
}
// 导入角色枚举
import { Role } from '../utils/roleUtils';
// 用户信息接口
export interface UserInfo {
id: number; // 用户ID
role: Role; // 用户角色
token?: string; // 认证token
openid?: string; // 微信openid
session_key?: string; // 微信会话密钥
name?: string; // 用户姓名(从员工信息获取)
phone?: string; // 用户电话(从员工信息获取)
}
// 员工信息接口(用于注册和签到返回)
export interface EmployeeInfo {
id: number; // 员工ID
name: string; // 员工姓名
phone: string; // 员工电话
role?: Role; // 员工角色
}
// 地图标记点接口
export interface Marker {
id: number;
title: string; // 添加缺失的title属性
longitude: number;
latitude: number;
iconPath: string;
width?: number;
height?: number;
zIndex?: number;
type?: string; // 标记点类型:'employee' | 'warehouse' | 'user' | 'order' 等
data?: any; // 附加数据
callout?: {
content: string;
color?: string;
fontSize?: number;
borderRadius?: number;
bgColor?: string;
padding?: number;
display?: 'BYCLICK' | 'ALWAYS';
};
}
// 仓库信息接口
export interface WarehouseInfo {
id: number;
name: string;
address: string;
contact?: string;
phone?: string;
description?: string;
status?: 'open' | 'closed' | 'maintenance';
capacity: number; // 仓库容量(吨)
currentStock?: number; // 当前库存(吨)
longitude: number;
latitude: number;
}
// 订单接口
export interface Order {
id: number;
startPoint: { // 起点(仓库)
id: number;
name: string;
longitude: number;
latitude: number;
};
endPoint: { // 终点(定位点)
name: string;
longitude: number;
latitude: number;
};
status: 'pending' | 'assigned' | 'in_transit' | 'delivered';
goodsType: string;
goodsWeight: number; // 货物重量(公斤)
createTime: number;
assignTime?: number;
deliveryTime?: number;
deliveryPersonId?: number; // 货运人员ID
}
// 货运人员接口
export interface DeliveryPerson {
id: number;
name: string;
phone: string;
status: 'idle' | 'busy' | 'offline';
currentLocation: { // 当前位置
longitude: number;
latitude: number;
};
currentOrders: Order[]; // 当前订单列表
}
// 路径规划结果接口
export interface RoutePlanResult {
polyline: string; // 路径的坐标点集合
distance: number; // 距离(米)
duration: number; // 预计时间(秒)
}
// 实时位置数据接口
export interface LocationData {
userId: number; // 用户ID
longitude: number; // 经度
latitude: number; // 纬度
timestamp: number; // 时间戳
}
// 高德地图逆地理编码响应接口
export interface AMapRegeoResponse {
regeocode: {
addressComponent: {
city: string;
district: string;
province: string;
street: string;
township: string;
};
};
status: string;
}
// 页面组件接口定义
export interface IndexPageComponent {
data: {
longitude: number;
latitude: number;
scale: number;
markers: Marker[];
userInfo: UserInfo | null;
authStatus: {
hasWxCode: boolean;
userStatus: 'unknown' | 'registered' | 'unregistered' | 'signed_in' | 'signed_out';
};
showUserPanel: boolean;
showOrderPanel: boolean;
currentOrder: any;
currentDeliveryPerson: any;
currentWarehouse: any;
currentPanelPosition: { x: number; y: number };
polyline: any;
pendingOrders: any[];
currentRoute: any;
showRoute: boolean;
routeDistance: number;
routeDuration: number;
showWarehouseModal: boolean;
showDeliveryPersonModal: boolean;
warehouseModalState: 'bottom' | 'full';
deliveryPersonModalState: 'bottom' | 'full';
showSignOutButton: boolean;
showSignInButton: boolean;
showRegisterButton: boolean;
showAuthButton: boolean;
};
setData(data: Partial<IndexPageComponent['data']>): void;
mainPageModule?: any;
}
// 登录模块接口定义
export interface LoginModule {
processUserInfo(userInfo: UserInfo): Promise<UserInfo>;
updatePageAfterLogin(userInfo: UserInfo): void;
checkLoginStatus(): boolean;
logout(): Promise<void>;
showManualLoginModal(): Promise<boolean>;
handleLoginFailure(resolve: (value: boolean) => void): Promise<void>;
showCloseAppOption(resolve: (value: boolean) => void): void;
handleSignIn(): Promise<boolean>;
}