import { requestClient } from '#/api/request'; export namespace OpsCleaningApi { /** 保洁员状态枚举 */ export enum CleanerStatus { BUSY = 'BUSY', // 忙碌 IDLE = 'IDLE', // 空闲 OFFLINE = 'OFFLINE', // 离线 PAUSED = 'PAUSED', // 暂停中 } /** 通知类型枚举 */ export enum NotifyType { VIBRATE = 'VIBRATE', // 震动 VOICE = 'VOICE', // 语音 } /** 升级优先级请求 */ export interface UpgradePriorityReq { orderId: number; // 工单ID reason: string; // 升级原因 } /** 工牌通知请求 */ export interface DeviceNotifyReq { cleanerId: number; // 保洁员ID type: NotifyType; // 通知类型 content?: string; // 语音内容(仅语音通知需要) } /** 保洁员状态信息 */ export interface CleanerStatusItem { userId: number; // 用户ID userName: string; // 用户名称 avatar?: string; // 头像 status: CleanerStatus; // 状态 currentAreaId?: number; // 当前区域ID currentAreaName?: string; // 当前区域名称 batteryLevel: number; // 电量(0-100) lastHeartbeatTime: string; // 最后心跳时间 todayCompletedCount?: number; // 今日完成工单数 todayWorkMinutes?: number; // 今日工作时长(分钟) } /** 保洁员状态列表查询参数 */ export interface CleanerListQuery { areaId?: number; // 区域ID(可选) status?: CleanerStatus; // 状态筛选(可选) } /** 保洁员状态列表响应 */ export interface CleanerListResp { list: CleanerStatusItem[]; } /** 工单时间轴节点 */ export interface TimelineItem { status: string; // 状态 statusName: string; // 状态名称 time: string; // 时间 operator?: string; // 操作人 description?: string; // 描述 extra?: Record; // 额外信息(如RSSI值、信标ID等) } /** 工单时间轴响应 */ export interface OrderTimelineResp { orderId: number; currentStatus: string; timeline: TimelineItem[]; } /** 保洁员工牌实时状态 */ export interface BadgeRealtimeStatus { cleanerId: number; // 保洁员ID deviceId: number; // 设备ID deviceKey: string; // 设备Key status: CleanerStatus; // 设备状态 batteryLevel: number; // 电量 lastHeartbeatTime: string; // 最后心跳时间 rssi?: number; // 信号强度 isInArea: boolean; // 是否在区域内 areaId?: number; // 当前区域ID areaName?: string; // 当前区域名称 } } // ==================== 保洁专属接口 ==================== /** 升级工单优先级 (P0 插队) */ export function upgradePriority(data: OpsCleaningApi.UpgradePriorityReq) { return requestClient.post('/ops/clean/order/upgrade-priority', data); } /** 发送工牌通知 (语音/震动) */ export function sendDeviceNotify(data: OpsCleaningApi.DeviceNotifyReq) { return requestClient.post('/ops/clean/device/notify', data); } /** 查询保洁员实时状态列表 */ export function getCleanerStatusList(params?: OpsCleaningApi.CleanerListQuery) { return requestClient.get( '/ops/clean/cleaner/list', { params }, ); } /** 获取工单时间轴 */ export function getOrderTimeline(orderId: number) { return requestClient.get( `/ops/clean/order/timeline/${orderId}`, ); } /** 获取保洁员工牌实时状态 */ export function getBadgeRealtimeStatus(cleanerId: number) { return requestClient.get( `/ops/clean/badge/realtime/${cleanerId}`, ); } /** 手动完成工单(兜底操作) */ export function manualCompleteOrder(orderId: number, remark?: string) { return requestClient.post('/ops/clean/order/manual-complete', { orderId, remark, }); }