// 获取任务列表请求参数
export interface TaskListReqParams {
  prj_id: string // 项目编号
  draft: boolean // 是否是副本
}

// 获取任务动态列表请求参数
export interface TaskLogsReqParams {
  page_index: number // 页码
  page_size: number // 每页条数
  task_id: string // 任务编号
}

// 添加任务信息请求参数
export interface AddTaskReqParams {
  draft?: boolean // 是否是副本
  prj_id: string // 项目编号
  task_pid?: string // 一级任务id，为空时表示本身是一级任务
  name: string // 任务名称
  handler_id: string // 负责人id
  begin_at: string // 计划开始时间（YYYY-MM-DD)
  end_at?: string // 计划结束时间（YYYY-MM-DD）
}

// 修改任务信息请求参数
export interface ModifyTaskReqParams {
  draft: boolean // 是否是副本
  task_id: string // 任务编号
  name?: string // 任务名称
  handler_id?: string // 负责人id
  begin_at?: string // 计划开始时间（YYYY-MM-DD)
  end_at?: string // 计划结束时间（YYYY-MM-DD）
  description?: string
  progress?: number
}

// 删除任务请求参数
export interface RemoveTaskReqParams {
  draft: boolean // 是否是副本
  task_id: string // 任务编号
}

// 调整任务排序请求参数
export interface SortTaskReqParams {
  draft: boolean // 是否是副本
  prj_id: string // 项目编号
  task_pid?: string // 任务编号
  task_ids: string[] // 调整后的任务id数组
}

// 中止任务项请求参数
export interface CancelTaskReqParams {
  task_id: string // 任务编号
}

// 中止任务项返回参数
export interface CancelTaskResParams {
  seq_no: string // 申请单id
}

// 审核立项任务请求参数
export interface CheckStartTaskReqParams {
  id: string // 任务编号
  pass: boolean // 是否通过
  comment: string // 审核意见
}

export interface ReviewFlow {
  id: string
  type_id: string // 类型：10=互校 20=二审 100=终审
  handlers: object[]
  duration: number // 审核时限（天）
  status: number // 审核状态：0=未开始，10=申请审核中，20=审核中，30=审核未通过，100=已审核
}

export interface Outcomes {
  id: string
  name: string
  handler_id: string // 负责人id
  handler_name: string // 负责人名称
  status?: number // 状态：0=未开始，10=进行中，20=已超时，30=延期完成，100=已按时完成。默认为0
  plan_time: string // 计划交付时间（YYYY-MM-DD）
  complete_at?: string // 实际交付时间（YYYY-MM-DD）
  need_review: boolean // 是否需要审核
  review_flow: ReviewFlow[] // 需要审核时的审核流程
}

// 任务列表返回具体参数
export interface Task {
  task_id: string // 任务编号
  name: string // 任务名称
  progress: number // 进度百分比（%）
  status: number // 状态，0=未开始，1=进行中，2=按计划完成，3=延期完成，100=已超时
  handler_id: string // 负责人id
  handler_name: string // 负责人名称
  begin_at: string // 计划开始时间（YYYY-MM-DD）
  end_at?: string // 计划结束时间（YYYY-MM-DD）
  sub_tasks?: Task[] // 二级子任务
  outcomes?: Outcomes[]
  completed_at?: string //  实际完成时间
  change_marker?: 0 | 1 | 2 | 3
}

export interface TaskLog {
  id: string // 项目编号
  handler_id: string // 操作人id
  handler_name: string // 操作人姓名
  handled_at: string // 操作时间
  comment: number // 内容
  old_value?: string // 旧值
  new_value?: string // 新值
  attachments?: string[] // 附件列表，列表中的内容为oss object name
}

// 任务列表返回参数
export interface TaskListResParams extends BaseResParams {
  status: number // 状态：10=新建 20=申请修改中 30=修改中 40=审核中 90=审核通过 100=审核未通过
  tasks: Task[]
  ui_status: UiStatus
  works?: { id: string; name: string }[]
}

export interface UiStatus {
  name?: string
  progress?: string
  status?: string
  handler_name?: string
  begin_at?: string
  end_at?: string
  alter?: boolean
}

// 添加任务成功返回参数
export interface AddTaskResParams extends BaseResParams {
  id: string // 任务编号
}

// 计划详情请求参数
export type PlanDetailReqParams = TaskListReqParams

// 任务详情请求参数
export interface TaskDetailReqParams {
  draft: boolean // 是否是副本
  task_id: string // 任务编号
}

// 任务详情返回参数
export interface TaskDetailResParams extends Task, BaseResParams {
  updated_at: string // 修改时间（YYYY-MM-DD)
  created_at: string // 创建时间（YYYY-MM-DD)
  completed_at: string // 任务完成时间（YYYY-MM-DD）
  creator_id: string // 创建人id
  creator_name: string // 创建人姓名
  description: string // 任务描述
  prj_id: string
  works?: { id: string; name: string }[]
}

// 任务详情返回参数
export interface PlanDetailResParams extends BaseResParams {
  status: number // 状态：10=新建 20=申请修改中 30=修改中 40=审核中 90=审核通过 100=审核未通过
  tasks: Task[]
}

// 项目列表返回参数
export interface TasLogsResParams extends BaseResParams {
  page_count: number // 当前页数量
  page_no: number // 当前页码
  total: number // 总数
  list: TaskLog[]
}

export interface Checker {
  isCreated?: boolean // 是否为新增 web自定义参数
  name: string // 页码
  handlers: string[] // 审核人账号id
  due_day: number // 超时时限（天）超时后产生提醒
}

// 获取任务动态列表请求参数
export interface GetTaskFlowsResParams {
  checkers: Checker[]
}

// 设置任务动态列表请求参数
export interface SetTaskFlowsReqParams {
  draft: boolean
  task_id: string
  checkers: Checker[]
}

export interface GetPlanLogsReqParams {
  /**
   * 查询起始时间，YYYY-MM-DD格式
   */
  begin_at?: Date
  /**
   * 查询结束时间，YYYY-MM-DD格式
   */
  end_at?: Date
  /**
   * 页码，从1开始
   */
  page_no: number
  /**
   * 每页条数
   */
  page_size: number
  /**
   * 项目id
   */
  prj_id?: string
  /**
   * 任务id
   */
  task_id: string
}

/**
 * 回复消息内容
 */
export interface GetPlanLogsResParams {
  /**
   * 列表
   */
  list: PlanLogList[]
  /**
   * 总页数
   */
  page_count: number
  /**
   * 页码
   */
  page_no: number
  /**
   * 总条目数
   */
  total: number
}

export interface PlanLogList {
  /**
   * 内容，含html标签，可表示富文本
   */
  content: string
  /**
   * 账号id
   */
  creator_id?: string
  /**
   * 账号名称
   */
  creator_name?: string
  /**
   * id
   */
  id: string
  /**
   * 项目id
   */
  prj_id: string
  /**
   * 任务id
   */
  t: string
  /**
   * 任务id
   */
  task_id?: string
  /**
   * 时间
   */
  ts: string
}


import { CallbackDataParams } from "echarts/types/dist/shared.js"


export interface ToolTipFormatterParams extends CallbackDataParams {
  axisDim: string
  axisIndex: number
  axisType: string
  axisId: string
  axisValue: string
  axisValueLabel: string
  componentIndex: number
}
