203 lines
5.0 KiB
TypeScript
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>;
|
|
} |