import request from '@/utils/request' // ==================== 维保工单类型 ==================== export type TaskType = 'PREVENTIVE' | 'CORRECTIVE' | 'EMERGENCY' export type TaskPriority = 'LOW' | 'MEDIUM' | 'HIGH' | 'URGENT' export type TaskStatus = 'PENDING' | 'ASSIGNED' | 'IN_PROGRESS' | 'COMPLETED' | 'VERIFIED' | 'CANCELLED' export type TriggerType = 'PLAN' | 'INSPECTION' | 'FAULT' | 'MANUAL' export interface PartsUsed { partsId?: string partsName: string quantity: number unitPrice: number totalPrice: number } export interface MaintenanceTask { id?: string taskNo?: string planId?: string equipmentId: string equipmentName?: string projectId?: string taskType: TaskType triggerType?: TriggerType priority: TaskPriority status: TaskStatus title: string description?: string assignedTo?: string assignedVendor?: string assignedDate?: string actualStart?: string actualEnd?: string actualHours?: number faultCause?: string solution?: string result?: string partsUsed?: PartsUsed[] laborCost?: number partsCost?: number totalCost?: number completedBy?: string completedDate?: string verifiedBy?: string verifiedDate?: string rating?: number remark?: string photos?: string[] signature?: string createdBy?: string createdAt?: string updatedAt?: string } export interface MaintenanceTaskForm { id?: string planId?: string equipmentId: string taskType: TaskType triggerType?: TriggerType priority: TaskPriority title: string description?: string assignedTo?: string assignedVendor?: string remark?: string } export interface CompleteTaskData { actualHours?: number faultCause?: string solution?: string result?: string partsUsed?: PartsUsed[] laborCost?: number partsCost?: number photos?: string[] signature?: string completedBy?: string } export interface VerifyTaskData { verifiedBy: string remark?: string rating?: number } // ==================== 维保工单 API ==================== // 获取维保工单列表 export function getMaintenanceTasks(projectId?: string) { return request.get(`/api/ops/maintenance-tasks`, { params: { projectId } }) } // 根据状态获取维保工单列表 export function getMaintenanceTasksByStatus(status: TaskStatus) { return request.get(`/api/ops/maintenance-tasks`, { params: { status } }) } // 获取维保工单详情 export function getMaintenanceTask(id: string) { return request.get(`/api/ops/maintenance-tasks/${id}`) } // 创建维保工单 export function createMaintenanceTask(data: MaintenanceTaskForm) { return request.post('/api/ops/maintenance-tasks', data) } // 更新维保工单 export function updateMaintenanceTask(id: string, data: Partial) { return request.put(`/api/ops/maintenance-tasks/${id}`, data) } // 删除维保工单 export function deleteMaintenanceTask(id: string) { return request.delete(`/api/ops/maintenance-tasks/${id}`) } // 状态流转 API export function assignTask(id: string, assignedTo: string, assignedDate?: string) { return request.post(`/api/ops/maintenance-tasks/${id}/assign`, { assignedTo, assignedDate }) } export function startTask(id: string) { return request.post(`/api/ops/maintenance-tasks/${id}/start`) } export function completeTask(id: string, data: { result?: string; actualHours?: number; cost?: number; completedBy?: string }) { return request.post(`/api/ops/maintenance-tasks/${id}/complete`, data) } export function completeTaskWithDetails(id: string, data: CompleteTaskData) { return request.post(`/api/ops/maintenance-tasks/${id}/complete-details`, data) } export function verifyTask(id: string, data: VerifyTaskData) { return request.post(`/api/ops/maintenance-tasks/${id}/verify`, data) } export function cancelTask(id: string) { return request.post(`/api/ops/maintenance-tasks/${id}/cancel`) } export function rateTask(id: string, rating: number) { return request.post(`/api/ops/maintenance-tasks/${id}/rate`, null, { params: { rating } }) } // 获取工单统计 export function getMaintenanceTaskStats() { return request.get<{ total: number pending: number assigned: number inProgress: number completed: number verified: number cancelled: number completedToday: number createdToday: number overdue: number avgCompleteHours: number avgRating: number byPriority: Record byTriggerType: Record }>('/api/ops/maintenance-tasks/stats') } // ==================== 常量选项 ==================== export const TASK_TYPE_OPTIONS = [ { value: 'PREVENTIVE', label: '预防性维护' }, { value: 'CORRECTIVE', label: '纠正性维护' }, { value: 'EMERGENCY', label: '紧急维修' } ] export const TRIGGER_TYPE_OPTIONS = [ { value: 'PLAN', label: '计划触发' }, { value: 'INSPECTION', label: '巡检触发' }, { value: 'FAULT', label: '故障触发' }, { value: 'MANUAL', label: '手动创建' } ] export const TASK_PRIORITY_OPTIONS = [ { value: 'LOW', label: '低' }, { value: 'MEDIUM', label: '中' }, { value: 'HIGH', label: '高' }, { value: 'URGENT', label: '紧急' } ] export const TASK_STATUS_OPTIONS = [ { value: 'PENDING', label: '待分配' }, { value: 'ASSIGNED', label: '已派单' }, { value: 'IN_PROGRESS', label: '执行中' }, { value: 'COMPLETED', label: '已完成' }, { value: 'VERIFIED', label: '已验收' }, { value: 'CANCELLED', label: '已取消' } ] // 状态颜色映射 export const STATUS_COLOR_MAP: Record = { 'PENDING': 'default', 'ASSIGNED': 'blue', 'IN_PROGRESS': 'orange', 'COMPLETED': 'green', 'VERIFIED': 'cyan', 'CANCELLED': 'red' } // 优先级颜色映射 export const PRIORITY_COLOR_MAP: Record = { 'LOW': 'green', 'MEDIUM': 'blue', 'HIGH': 'orange', 'URGENT': 'red' }