import axiosInstance from '../../utils/axios';

// 我的任务 VO
export interface MyTaskVO {
  id?: number;
  workId?: number; // 作业ID
  nodeId?: number; // 节点ID
  orderNo?: string; // 作业编号
  name?: string; // 作业名称
  workerUserName?: string; // 负责人名称
  responsible?: string; // 负责人（兼容字段）
  responsibleName?: string; // 负责人名称（兼容字段）
  currentNodeId?: string; // 当前节点ID
  currentNodeName?: string; // 当前任务名称
  workTime?: number | Date | string; // 任务开始时间
  taskStartTime?: number | Date | string; // 任务开始时间（兼容字段）
  approvalStatus?: string; // 任务状态（审批状态）
  taskStatus?: string; // 任务状态（兼容字段）
  status?: string | number; // 作业状态（兼容字段）
  urgencyLevel?: string; // 紧急程度
  initiatorName?: string; // 发起人
  initiationTime?: number | Date; // 发起时间
  description?: string; // 作业内容
  cancellationReason?: string; // 取消原因
  cancellationTime?: number | Date | string; // 取消时间
  completionTime?: number | Date | string; // 完成时间
  [key: string]: any;
}

// 分页参数类型
export interface MyTaskPageParam {
  pageNo?: number;
  pageSize?: number;
  key?: string; // 搜索关键字（兼容）
  orderNo?: string; // 作业编号
  name?: string; // 作业名称
  status?: string;
  [key: string]: any;
}

// 分页响应类型
export interface PageResponse<T> {
  list: T[];
  total: number;
}

// 我的任务节点详情 VO
export interface MyTaskNodeDetailVO {
  id?: number; // 节点ID
  nodeId?: number; // 节点ID（兼容字段）
  workId?: number; // 作业ID
  nodeName?: string; // 节点名称
  type?: string; // 节点类型（如：review-审核, isolation-隔离/方案, releaseIsolation-解除隔离等）
  nodeType?: string; // 节点类型（兼容字段）
  workName?: string; // 作业名称
  name?: string; // 作业名称（兼容字段）
  orderNo?: string; // 作业编号
  workerUserName?: string; // 负责人
  workTime?: number | Date | string; // 时间
  formId?: number; // 表单ID
  formData?: any; // 表单数据
  formConfig?: any; // 表单配置
  formFields?: any; // 表单字段
  fields?: any; // 表单字段（兼容字段）
  conf?: any; // 表单配置（兼容字段）
  data?: string; // 节点数据（JSON字符串）
  [key: string]: any;
}

// 盲板/拆除时的附件项（前端组数据用）
export interface AttachmentItem {
  name?: string;
  url?: string;
}

// 更新节点审批状态参数
export interface UpdateNodeApprovalParam {
  nodeId: number; // 节点ID
  approvalStatus: 'approved' | 'rejected'; // 节点状态：approved（通过）、rejected（驳回）
  approvalOpinion?: string; // 审批意见
  formData?: string; // 表单内容（JSON字符串）
  /** 盲板/拆除时的设备编号，与 formData 同级 */
  deviceNumber?: string;
  /** 盲板/拆除时的附件，与 formData 同级（后端要求传字符串，如 JSON 字符串） */
  attachments?: string;
}

// 我的任务 API
export const myTaskApi = {
  // 获取我的任务列表（分页）
  getMyWorkPage: (params?: MyTaskPageParam) => {
    return axiosInstance.get<PageResponse<MyTaskVO>>('/iscs/workflow-work/getMyWorkPage', { params });
  },
  
  // 获取我的任务节点详情
  getMyWorkNodeDetail: (nodeId: number) => {
    return axiosInstance.get<MyTaskNodeDetailVO>(`/iscs/workflow-work/getMyWorkNodeDetail?nodeId=${nodeId}`);
  },
  
  // 更新节点审批状态
  updateNodeApproval: (params: UpdateNodeApprovalParam) => {
    return axiosInstance.post('/iscs/workflow-work/updateNodeApproval', params);
  },
};

// 任务管理 API
export const taskManagementApi = {
  // 获取任务管理列表（分页）
  getAdminWorkPage: (params?: MyTaskPageParam) => {
    return axiosInstance.get<PageResponse<MyTaskVO>>('/iscs/workflow-work/getAdminWorkPage', { params });
  },
  
  // 获取任务管理节点详情（与我的任务使用相同的接口）
  getAdminWorkNodeDetail: (nodeId: number) => {
    return axiosInstance.get<MyTaskNodeDetailVO>(`/iscs/workflow-work/getMyWorkNodeDetail?nodeId=${nodeId}`);
  },
  
  // 更新节点审批状态（任务管理）
  updateNodeApproval: (params: UpdateNodeApprovalParam) => {
    return axiosInstance.post('/iscs/workflow-work/updateNodeApproval', params);
  },
};