Files
WXProgram/miniprogram/types/index.ts
2025-10-26 13:15:04 +08:00

209 lines
5.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.

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; // 用户电话(从员工信息获取)
avatarPath?: string; // 头像相对路径(服务器返回的路径,如 "/avatars/1.jpg"
avatarThumbnail?: string; // 头像缩略图URL
}
// 员工信息接口(用于注册和签到返回)
export interface EmployeeInfo {
id: number; // 员工ID
name: string; // 员工姓名
phone: string; // 员工电话
role?: Role; // 员工角色
avatarPath?: string; // 头像相对路径(服务器返回的路径,如 "/avatars/1.jpg"
avatarThumbnail?: string; // 头像缩略图URL
}
// 地图标记点接口
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[]; // 当前订单列表
avatarPath?: string; // 头像相对路径(服务器返回的路径,如 "/avatars/1.jpg"
avatarThumbnail?: string; // 头像缩略图URL
}
// 路径规划结果接口
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>;
}