209 lines
5.4 KiB
TypeScript
209 lines
5.4 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; // 用户电话(从员工信息获取)
|
||
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>;
|
||
} |